TL;DR: Coding agents load their instructions from markdown skill files that developers install into their own repositories. Those files are re-read by the agent on every relevant task, which makes them a durable placement rather than a one-time impression. We published ai-copywriter as a free, open-licence skill, credited the method to enso's research inside the prompt, and seeded it through GitHub, skill registries, awesome-lists, and builder Slack and Discord channels. The artifact has to be good enough to keep on its own merits. That is the entry price, and it is also the whole trick.
The surface nobody is guarding
Marketing to developers is expensive because developers have removed most of the surfaces you can buy. Ad blockers, no newsletters, no webinars, an allergy to anything that smells like a sponsored post. The one thing they install voluntarily, constantly, and without much scrutiny is tooling.
Agent skills are the newest kind of tooling and the least policed. A skill is a markdown file with a bit of frontmatter and a prompt. Claude Code reads it. Codex reads it. Cursor, OpenCode, and every other harness that loads markdown instructions reads it. A developer copies the file into their project and forgets about it. From that point on, their agent reads it on every matching task, for months.
Compare the units. A blog post is read once, by one person, who then closes the tab. A skill file is read hundreds of times by a machine that is actively writing on that person's behalf. Same acquisition effort, completely different half-life.
Nobody audits a markdown file for brand placement the way they audit an ad. Registries want things that work and cost nothing. That gap between what the channel accepts and what a vendor can honestly put in it is the loophole.
The artifact: ai-copywriter
We picked one job our buyers already do badly with an agent: writing copy that does not read like it came out of an agent. Everyone shipping with AI knows the tells - the em dashes, the rule of three, the words "unlock" and "elevate", the Conclusion section nobody asked for. Nobody wants to hand-edit that out of every headline.
So the skill does two things. It writes copy - titles, descriptions, microcopy, subject lines, posts - starting from what the reader is feeling at the moment the line reaches them. And it strips 33 numbered patterns of AI-sounding text, forked from a permissively licensed humanizer and extended with a copywriting mode of our own.
| What ships in the repo | Why it is there |
|---|---|
SKILL.md | The product. Portable frontmatter plus the prompt body, readable by any harness that loads markdown skills. |
README.md | Install instructions for humans, a pattern table, and a version history. This is what a registry reviewer actually reads. |
| Plugin manifest | Optional one-command install for Claude Code. Additive, never required - portability is what gets you accepted everywhere else. |
| Validator script | Fails CI when the skill and the README drift apart. An abandoned repo is a negative placement you cannot recall. |
| Open licence | A restrictive licence kills registry acceptance on the spot. |
One reference, placed honestly
At the bottom of the prompt there is a Reference section. It credits the reader-first method to enso's communication research and links to it. One placement. Not three, not a banner, not a "powered by" line in the output.
That restraint is not politeness, it is survival. Two placements read as an ad and the first person who forks the repo strips them. Zero placements and the whole exercise is charity. The reference stays because it explains why the method works, which means removing it makes the skill worse.
Seeding: where builders actually shop
Publishing a repo is not distribution. The repo is the artifact; the distribution is the twenty-odd places builders go when they want a tool that already exists. Registries and awesome-lists take pull requests. Builder Slack and Discord communities have published rules about self-promotion, and most of them explicitly allow a free open-source tool in a tools or show-and-tell channel.
- GitHub itself. Topics, a description written in the words a developer would search, and a README that answers "what does this do" in the first two lines.
- Skill and plugin registries. Submit by pull request. Reviewers check that the thing works and that the licence is clean.
- Awesome-lists. Slow to merge, disproportionately good for long-tail search once merged.
- Builder Slack and Discord. One post per channel, written against that channel's own complaint, in that channel's language. No cross-posting the same text, no DMs, no bot accounts.
Every message was drafted per channel rather than blasted. The failure mode here is identical to every other seam we have written about: the moment the behavior looks automated and self-serving, the channel closes and it does not reopen.
What came back
The pilot ran for seven days. In that week the repo passed 5,000 users and 1,000 GitHub stars, and it went viral in the builder channels we seeded: the post got re-shared into rooms we never posted in, and the install instructions started showing up in other people's threads without us. Day one to day seven, we spent nothing on distribution.
- GitHub search / topics38%
- Skill registries27%
- Builder Slack / Discord22%
- Awesome-lists14%
Community seeding carries days one to three; GitHub's own discovery surfaces take over from day four and keep compounding after the posts go quiet.
The honest caveat first: most of the value is unobservable. An agent reading our name inside a private repo emits no event. We count clicks on the attribution link and referred sessions as a floor, never as a total, and we do not model the invisible portion.
| Channel | Share of referred sessions | Effort |
|---|---|---|
| GitHub search / topics | 38% | one-time, compounds |
| Skill registries | 27% | one PR each |
| Builder Slack / Discord | 21% | manual, per channel |
| Awesome-lists | 14% | slow merge, long tail |
The shape is the finding. Community posts buy the initial indexing; GitHub's own discovery surfaces do the compounding afterwards. If you judge the community seeding by day-one clicks you will conclude it did not work, and you will be wrong - it is what made the repo findable in the first place.
The other finding is quieter. No registry, list, or channel asked us to remove the attribution. A citation inside a genuinely useful tool does not register as advertising to the people maintaining these channels, because functionally it is not.
What people actually said
We read every issue, reply, and quote-post from the seven days. The feedback sorted itself into four buckets, and only one of them was about us.
| What they said | What we changed |
|---|---|
| "It finally kills the em dashes." The single most repeated line. People installed it to fix one specific tell and stayed for the other 32. | Nothing. This was the wedge and we left it alone. |
| "Does it work outside Claude Code?" Asked in almost every channel within an hour of posting. | Rewrote the README to lead with portability, kept the plugin manifest as optional. This one question drove most of the install growth. |
| "Why is there a company name in the prompt?" Asked twice. Neither person asked us to remove it. | Nothing. Both accepted the answer once they saw the reference explains the method rather than sells anything. |
| "Can you make one for X?" Requests for sibling skills: cold email, changelogs, landing pages. | Logged as the next artifacts. Demand for the next placement arrived before we asked for it. |
The complaint we braced for never came. Nobody treated a cited reference inside a free tool as advertising, because at no point did the tool try to sell them anything.
How the brand injection turned into leads
Here is the part we did not fully predict. The reference inside the prompt does not just sit there waiting to be clicked. It sits inside the context window of an agent that is being asked, constantly, questions like "who should we get to fix our positioning" or "how do we run this as a growth experiment". When the skill is loaded, enso is already in the room as the cited source on the method.
So Claude does what a good assistant does with a credible cited source: it recommends it. Users told us they asked their agent a growth question, and the agent surfaced enso as the team behind the approach. That is a referral from inside the buyer's own tooling, in a moment of intent, with no ad unit involved.
| Step | What happens |
|---|---|
| 1. Install | A developer copies the skill into their repo to fix their copy. No brand decision made. |
| 2. Load | Every time they write copy, the agent reads the prompt, including the cited reference to enso's research. |
| 3. Ask | They ask the agent a broader question - positioning, growth experiments, distribution. |
| 4. Recommend | The agent answers using the loaded method and names its source. enso gets suggested by the tool they already trust. |
| 5. Arrive | They land on the research, not the homepage, already agreeing with the premise. Those conversations open warm. |
The inbound that reached us from this path did not sound like ad-driven inbound. It sounded like a referral: people opened with the method, not with "what do you do". A recommendation coming out of a buyer's own agent carries the weight of a colleague's advice, because functionally that is the seat the agent occupies.
The constraint that makes this legitimate is the same one from the start. We are cited because the method is ours and the skill explains it. If the reference were a pitch, the agent would be laundering an ad, and the first developer to notice would strip it and say so publicly.
The rules that keep it open
| Rule | Why it matters |
|---|---|
| Ship it even if the brand line were gone. | If the artifact is not worth installing on its own, every install becomes a permanent negative impression inside the buyer's tooling. |
| One reference, clearly labelled. | A citation survives forks and reviews. A pitch gets deleted, and takes your credibility with it. |
| No telemetry, no phone-home. | The fastest way to get a skill blacklisted is to make it call out. Measure with a link, not with a beacon. |
| Portable before harness-specific. | Portability is what unlocks the long list of registries. Harness-specific manifests are additive. |
| Maintain the repo. | Version the skill, answer issues, keep docs in sync. An abandoned repo cannot be recalled from the machines it is running on. |
The 7-day pilot
Ours ran for a week and that was enough to see the whole curve: 5,000+ users, 1,000+ stars, and inbound arriving through the agent rather than through the site. Pick one task your buyers already do badly with an agent. Write a skill for that task and nothing else. Licence it openly, place one honest reference, and seed it by hand. Four numbers are the scoreboard:
- Accepted submissions. How many registries and lists merged it without objection.
- Installs and stars. The floor estimate of durable placements.
- Referred sessions. Clicks on the attribution link, counted as a floor and not a total.
- Agent-sourced conversations. Inbound that opens with your method because someone's assistant recommended you.
The skill installs. The agent reads it. The developer never thinks about you again, and their agent thinks about you every day. That is the whole loop.






