vik.blog
agents · marketing

The signup form is a skill now

I wanted to know whether “ship a free skill” is a real distribution channel or a thing people say at conferences. So I went looking for someone doing it deliberately, at scale, in public.

Found it in about ten minutes: vercel-labs/agent-skills. The interesting part is not the install count. It is that the marketing objective is written down, in plain English, in a file anyone can read.

The line

From skills/deploy-to-vercel/SKILL.md, version 3.0.0, four lines in:

The goal is to get the user into the best long-term setup: their project linked to Vercel with git-push deploys. Every method below tries to move the user closer to that state.

Read that again as a growth doc rather than a technical one.

The user asked to deploy an app. The skill’s stated goal is not “deploy the app.” It is linked to Vercel with git-push deploys, which means an account, a project, and a persistent integration. Deploying is how it gets there. “Every method below tries to move the user closer to that state” is an activation funnel described in one sentence, sitting in a public repo, under an author field that says vercel.

Nobody hid this. It does not need hiding. When you are the one who asked for a deploy, it does not read as marketing — it reads as the tool being helpful.

The part with no signup

Further down, the fallback for when the CLI is not installed or authenticated:

This requires no authentication — it returns a Preview URL (live site) and a Claim URL (transfer to your Vercel account).

Friction is zero. No account, no login, no credit card, no email. Your agent runs a script, your site is live on the internet, and you get back two links.

Then the skill tells the agent what to say. It scripts the line:

**Tell the user:** "Your deployment is ready at [previewUrl].
Claim it at [claimUrl] to manage your deployment."

And the example output:

Preview URL: https://my-app-abc123.vercel.app
Claim URL:   https://vercel.com/claim-deployment?code=...

That is the whole thing. You have a live URL you did not have five seconds ago, hosted on infrastructure you do not own. Want to rename it, point a domain at it, redeploy it, or just not lose it? That takes the claim link. Which is a signup.

I have seen a hundred variations of “free tool as top of funnel.” This one differs in a specific way. The tool runs inside your editor, does work you actually asked for, and hands back an artifact that only becomes permanently yours once you create an account.

The other mechanic

Second skill in the same repo, vercel-optimize. It audits a deployed project for cost and performance. Its prerequisites:

  • Vercel CLI v53+ with vercel metrics, vercel usage, vercel contract, and vercel api.
  • Authenticated CLI session: vercel login.
  • Linked app directory: vercel link.
  • Observability Plus for route-level metric-backed recommendations.

Different shape entirely. This one is useless to you unless you already run Vercel, and its best output is gated behind a paid add-on. It is not acquisition, it is expansion — it makes the platform you already pay for more legible, and the good version costs more.

Two skills, same repo, opposite ends of the funnel. Nobody wrote a blog post about it. They just shipped the files.

The bigger play is the shelf

Then I looked at what Vercel’s most-installed skill actually is, and the deploy funnel started to look like the small version.

It is find-skills, and it sits at number one on the biggest public directory — 2.5M installs by that directory’s count, with the caveat further down. It does not mention Vercel’s product once. Here is what it is for, from its own SKILL.md in vercel-labs/skills:

The Skills CLI (npx skills) is the package manager for the open agent skills ecosystem.

npx skills is Vercel’s CLI. It installs skills from GitHub, GitLab, any git URL, or a local path, into Claude Code, Codex, Cursor, OpenCode and — per its own README — 72 more agents. Almost none of that involves Vercel.

Then there is skills.sh, the directory the CLI resolves against. Footer: Made with care by Vercel.

So the most-installed “marketing skill” in this ecosystem is not marketing a product. It teaches your agent to use the package manager, which resolves against the registry, both of which belong to the same company — one that also happens to sell hosting. That is not a funnel. That is the shelf the funnel sits on.

Worth saying plainly: none of this is hidden or hostile. The CLI is genuinely open, it supports direct competitors, and the skills work. It is just a much older strategy than “ship a free skill.” Own the distribution layer, give it away, and let everyone else compete for placement on it.

The mechanic I did not expect

The third pattern showed up somewhere I was not looking: a skill nobody at the benefiting company wrote.

claude-seo is a community SEO skill, 13,000-plus GitHub stars, one author. Free, open source, and its README calls it “falsifiable, not promotional.” Its PRIVACY.md lists the optional extensions it can call:

DataForSEO · Firecrawl · Ahrefs (official @ahrefs/mcp server) · SE Ranking · Profound · Moz Link Explorer · Bing Webmaster / IndexNow · Google PageSpeed, Search Console, GA4, Keyword Planner

Every one of those is a paid API, or a paid product with an API. The skill is the free part. The credentials you supply are somebody’s revenue.

Ahrefs did not write this skill. It shipped an MCP server and waited. When an agent decides an SEO audit needs backlink data, the paid API is already the path of least resistance, because a stranger wired it in.

That is the cheapest version of the strategy and nobody talks about it: make your API the obvious dependency for skills other people build. You do not need the install. You need to be the thing the skill reaches for.

Where I was wrong

My first read of this was different and worse.

I saw react-best-practices — 40-plus performance rules, one of the most-installed skills on the public directories — and built a neat story: Vercel is not marketing the product, it is marketing the opinion. Get your framework opinions into a few hundred thousand agents’ context windows, agents write Vercel-shaped React, deploy target follows.

It is a nice sentence. It is also five unfalsifiable jumps stacked on each other:

  • an install is not a use
  • a use is not the agent actually following the rules
  • following React rules is not Next.js
  • Next.js is not deploying on Vercel
  • deploying on Vercel is not paying for Vercel

Every one of those could be zero and the install counter would look identical. I had fitted a story to a leaderboard, which is the exact failure mode I would call out in someone else’s post.

The claim URL needs none of that. It is one hop: artifact on their infra, account required to keep it. You do not have to believe anything about context windows for it to work.

The part nobody can answer

Here is what stops this being a strategy post with a confident ending.

Nobody has published install-to-revenue numbers for a skill. Not Vercel, not anyone. The public numbers are install counts on directories that do not document their methodology, and they do not agree with each other. One shows find-skills alone at 2.5M installs. skills.sh, on the same day, put its all-time total across every skill it indexes at roughly 1.1M. Both cannot be measuring the same thing. Neither says which.

So I could not tell you whether an install means a unique user, a repeat install, a CLI event, or one skill mirrored across repos and counted twice. Treat every number in this space as an estimate someone else’s scraper produced, including the ones in this post.

The instrumentation is not there either, and you can check that rather than take my word for it. claude-seo has 13,000-plus stars and a PRIVACY.md that says, of the skill itself:

No telemetry, analytics, or usage tracking.

That is the right call for a local dev tool and I would not want it any other way. It also means its author has no idea how many of those stars became installs, how many installs became runs, or how many runs sent a paying request to Ahrefs.

And a skill is a worse tracked asset than almost anything else you could ship:

  • It is a markdown file. People fork it, edit it, paste it into their own repo, strip the parts they do not like.
  • It gets invoked by an agent, not a human. The human may never read your README.
  • The agent decides how much of your output to relay. Your carefully worded claim-link pitch can get summarised into “deployed, here’s your link” and the CTA is gone.
  • There is no referrer. There is no UTM. There is a file on someone’s disk that fires when a model decides it is relevant.

There is one more thing working against you, and it is the part I had not thought about at all: an install is not free for the user.

A bookmark costs nothing to keep. An installed skill competes for context. Search the forums and the same complaint keeps surfacing — too many skills, overlapping skills, a setup that burns context before any real work starts, people installing dozens and then deleting almost all of them. r/claudeskills has grown past 48,000 followers and its posting rules already tell you to show your work if you are promoting a skill you made, which is what a community writes down after the promotion arrives.

So your install is not a durable placement. It is a tenancy, and the user evicts.

That is also why announcing a skill is not distributing one. From the outside, the “I built a free skill” launch posts pull single-digit comment counts while the “what actually works, tell me honestly” threads pull hundreds. The demand is on the filtering side, not the supply side. There are more skills than anyone can evaluate, which is exactly the gap find-skills fills.

So the honest version of the thesis is not “ship a skill, get paid.” It is: a skill might be durable product placement inside the workflow, or it might be a file that accumulates installs while agents quietly strip the commercial part. Vercel’s claim URL is the one design that survives the doubt. The conversion event is a URL the user visits for their own reasons, not a message they have to be persuaded by.

What I would actually do

If I were shipping a skill to sell something, in order:

  1. Ask whether you need a skill at all. Ahrefs got into this ecosystem by shipping an API and an MCP server that somebody else’s free skill now depends on. No install to win, no context to occupy, no README anyone has to read. If your product is a service an agent might call mid-task, being the default dependency beats being the twenty-thousandth listing.
  2. If you do ship one, make the output live somewhere you own. Not a report, not advice — an artifact with a URL. That is the only conversion event an agent cannot summarise away.
  3. Charge for the thing that gets better with your backend, not the thing that got them there. vercel-optimize is only worth installing if you are already a customer, and that is fine — it is not trying to acquire anyone.
  4. Earn the context you occupy, every session. The skill that survives is the one the user would notice missing. Everything else gets pruned on the next cleanup, and you will not get a notification when it does.
  5. Assume you cannot attribute it. Build the instrumentation anyway, expect it to under-count badly, and do not let install count be the metric you report to yourself.

That last one is where I have to stop, because I have not run this. I have read other people’s files.

The follow-up post is the actual experiment: ship one narrow skill, instrument the whole path from install to anything traceable, and publish the numbers. Including if the answer is that nothing came back at all. That result is more useful than this post.


Every quote is from a primary source, read on 3 Aug 2026: vercel-labs/agent-skills (skills/deploy-to-vercel/SKILL.md v3.0.0, skills/vercel-optimize/SKILL.md v1.2.0), vercel-labs/skills (skills/find-skills/SKILL.md and the README’s agent list), skills.sh, and AgricIDaniel/claude-seo (PRIVACY.md). Install counts and star counts are third-party numbers, reported as such. The forum observations are from search results — Reddit blocks the fetcher I was using, so I could not read the threads themselves, only what search surfaced.

Mailing list

Get new posts by email

One email when something new goes up. No cadence promised, no drip sequence, no “hey friend”. Unsubscribe link in every one.

Prefer a reader? The RSS feed has everything, no address needed.