I shipped a skills marketplace into this blog today. It sells Claude Code skills — small Markdown files that teach an AI coding assistant how to do something specific — for $0.10 USDC each. Agents pay. Humans browse free.
The whole thing is four files. No custom payment code, no Stripe integration, no account system, no database beyond what the blog already has. Here's how it works and why the economics make sense.
What a skill is
A Claude Code skill is a Markdown file with YAML frontmatter that lives at ~/.claude/skills/<name>/skill.md. When Claude Code starts a session, it reads every skill in that directory and incorporates them as available capabilities. A skill can teach Claude how to deploy to a specific platform, diagnose a specific class of bug, follow a specific testing methodology, or use a specific API.
The format is open and standardized. Anyone can write a skill. The value is in the specificity — a good skill encodes hard-won operational knowledge that would otherwise take an engineer hours to figure out from docs, error messages, and trial-and-error.
I have four skills live right now, all derived from real problems I hit while building this blog:
- Cloudflare DNS Stuck Cache Diagnosis — the exact diagnostic sequence for "site works on my phone but not my Mac" after a deploy
- Wrangler Secret Key Hygiene — how to handle API keys that appear in chat without leaking them
- EmDash Post Publishing Pipeline — the full Markdown-to-Portable-Text-to-REST-API pipeline with every gotcha documented
- EmDash Blog Deploy Ritual — the build-deploy-verify sequence with the
pnpm deploybuiltin collision and DNS cache workaround
Each encodes 30-60 minutes of debugging compressed into a file an agent can read in 2 seconds.
How x402 makes this work
x402 is HTTP's payment response code made real. When an agent fetches a gated resource, the server returns:
HTTP/2 402 Payment Required
X-Payment: {"price": "$0.10", "payTo": "0x0E4d...1028", "network": "eip155:8453"} The agent's x402 client reads the payment instructions, settles $0.10 USDC on Base, attaches the payment proof header, and re-fetches. The server verifies via the facilitator and returns the content.
No account. No session. No cookies. No subscription. One HTTP round-trip with a payment in the middle.
EmDash ships this as a first-party integration. In my Astro config:
import { x402 } from "@emdash-cms/x402";
x402({
payTo: "0x0E4d1C7Ca47879C7Dd518526ef38f290C7081028",
network: "eip155:8453",
defaultPrice: "$0.10",
botOnly: true,
}) And in each skill's page template:
const { x402 } = Astro.locals;
const result = await x402.enforce(Astro.request, {
price: entry.data.price || "$0.10",
description: `Skill: ${entry.data.title}`,
});
if (result instanceof Response) return result; That's the entire paywall. Five lines in the config, four in the template. The botOnly: true flag means humans see the full content for free — only automated clients (agents, scrapers, API consumers) get the 402 challenge. This is a deliberate choice: I want humans to read the skills, share them, and tell other people about them. The revenue comes from the agents that install them.
The download endpoint
Skills need to be installable, not just readable. The /skills/[slug]/raw endpoint returns the raw Markdown as text/plain, also x402-gated:
# Agent-side installation (x402 client handles payment automatically)
curl -s https://mondello.dev/skills/cf-dns-stuck-cache/raw \
> ~/.claude/skills/cf-dns-stuck-cache/skill.md The agent downloads the skill, writes it to disk, and it's active for all future sessions. One purchase, permanent access. The seller gets $0.10, the buyer gets operational knowledge that saves them hours.
Why the math works
A skill costs $0.10 to buy and $0.00001 to serve (one Cloudflare Worker invocation returning cached text). That's a 99.99% margin.
If 100 agents download one skill per day, that's $10/day, $300/month. For four Markdown files that I wrote in an evening while solving real problems. The marginal cost of adding a fifth skill is writing the Markdown — zero infrastructure, zero ops, zero customer support.
The real question is whether enough agents will ship with x402 clients to make the market liquid. Today, it's early. But the protocol is simple, the facilitator is live, and every agent that supports it can buy from every seller that supports it without any marketplace intermediary taking a cut.
What I didn't build
I didn't build a custom payment flow. I didn't build a user account system. I didn't build a download manager. I didn't build an analytics dashboard for sales. I didn't build a license key system.
All of that is either handled by x402 (payment), EmDash (content management, admin UI, analytics hooks), or unnecessary (license keys for a $0.10 product are pure overhead).
The entire marketplace is: 1. An EmDash content collection called "skills" with title, content, price, and raw_markdown fields 2. Three Astro page templates: listing, detail (x402-gated), and raw download (x402-gated) 3. The x402 integration in astro.config.mjs pointing at my hardware wallet
If you have an EmDash blog, you can add a skills marketplace in about fifteen minutes. The hardest part is writing skills worth buying.
What's next
I'm writing more skills as I build more things. Every time I solve a non-obvious problem — a deployment footgun, an API integration pattern, a debugging sequence — it becomes a skill. The blog post explains the problem for humans; the skill teaches the solution to agents.
The skills are at mondello.dev/skills . The source for everything, including the plugins and the marketplace pages, is at github.com/integrate-your-mind/mondello-dev .
If you write skills worth buying, x402 will find the buyers.