A skill is a signed SKILL.md bundle following the agentskills.io open standard — Claude Code auto-discovers them from ~/.claude/skills/, and the same format ships to any coding agent the creator supports (Cursor, Codex, Windsurf, OpenClaw — adapted per the README). Two paths: the /mm-publish skill (recommended — your agent runs every step), or the raw CLI (full manual control). The web is where you create the draft and edit metadata after publish; the actual sign-and-publish always runs from your machine.
Install the CLI, install the bundled skills, create your draft on the web at /sell/new (pick Skill pack), then run /mm-publish --pack-id <uuid> in your agent. The skill detects the SKILL.md in your directory, asks for any missing manifest fields, signs, and publishes into the draft you created. You only confirm decisions — the agent runs every command. Drafts are always created on the web; the skill never creates them.
The skill confirms the price before signing — you pick Free / $0.99 / $2.99 / $4.99 / $7.99 / $9.99 (or a custom $10–$999 if you're a verified creator). After publish, the browser tab on /sell/<uuid>automatically detects the publish and switches to a "Live" confirmation with three buttons: Edit metadata (/sell/<uuid>/edit), Ship new version (/sell/<uuid>/versions), Back to dashboard. Slug is the only locked field.
Metadata edits never need a republish. Two ways:
/sell/<uuid>/edit. Title, description, tags, cover, supported agents, price, README — all editable.mm edit <uuid> --title "New title". Pass any combination of --title, --description, --price, --category, --tags, --agents, --cover-quote, --cover-image-url, --readme.When the skill contents actually change (edits to SKILL.md, new bundled files), bump version.number in manifest.json, add a version.changelog, and run /mm-publish --pack-id <uuid> again. The skill auto-detects that the pack is already published and switches to republish mode (asks for the changelog, skips re-prompting price/title/etc unless you say so).
Price is set at publish time. The CLI prompts you interactively, or you can pass --price <dollars> directly:
Already-purchased entitlements are unaffected by post-publish price changes — buyers paid the price recorded on their purchase row at the time of checkout.
The CLI path gives you full control over the bundle structure and signing. Use this if you're assembling a skill from scratch or want to sign it yourself before submitting. mm publish detects the SKILL.md at the root of your directory and switches to the skill-bundle path automatically — same command, different layout.
You need a SKILL.md at the root. Anything else in the directory rides along as bundled files (helper scripts, JSON config, reference docs, etc.). Caps: ≤500 KB total, ≤20 files. Allowed extensions: .md, .txt, .json, .yaml, .yml, .mdc, .sh, .bash, .py, .js, .ts, .mjs.
One-time setup. Your private key stays on your machine. The public key is registered with MemoryMarket when you publish.
Required frontmatter: description (1–1024 chars). Optional: name (the registry rewrites this to your pack slug at publish — your local file is untouched), allowed-tools (which Claude Code tools the skill can invoke), hooks, model. Body is the instruction text Claude reads when the skill activates.
allowed-tools tokens: Bash, WebFetch, WebSearch, Write, Edit, Read, Glob, Grep. The granular form Tool(args) — e.g. Bash(git add *) — is accepted when the base token is in the list. MCP tools (mcp__*) and custom tokens are not supported.
From your skill directory. mm publish reads SKILL.md, signs every file with Ed25519, normalizes the name: field to your pack slug, runs a server-side credential scan, and uploads. Tampered bundles are rejected on install.
Buyers install with mm install @you/my-skill. Files land in ~/.claude/skills/<slug>/ (user scope) or ./.claude/skills/<slug>/(project scope) — the SKILL.md format's standard home. Claude Code auto-discovers from this directory on next restart with no managed block written and no rules file touched. If the skill declares inline commands or hooks, the CLI lists them and asks the buyer to confirm before any file is written.
The install destination is fixed, but the skill itself isn't tied to one agent. SKILL.md is an open format and the files ship verbatim — MemoryMarket does not transform content per agent. Two levers let you support buyers on other coding agents:
supported_agents field on your pack (editable on /sell/<uuid>/edit or via mm edit <uuid> --agents claude-code,cursor,codex) renders as agent chips on your pack's detail page and on the /skills browse cards. This is display-only — you declare which agents you've tested against.~/.cursor/rules/<name>.mdc; Codex users do whatever their workflow needs. The buyer follows your README from the install location. Same pattern as SkillHub and awesome-claude-skills.Free skills publish immediately. Paid skills require a connected Stripe Express account. Set that up at Sell → Onboarding. The CLI surfaces a clear error if you try to publish a paid skill without Stripe Connect.
During beta, 100% of each sale (minus Stripe's processing fee) goes to the creator. The platform fee rises to 2% in the volume phase and 15% at GA. Promotions between phases are announced in advance.
Your skill is live at memorymarket.co/pack/you/my-skill and installable via:
For metadata changes (title, description, price, etc.), use /sell → click Edit on the pack row, or run mm edit <uuid> --title "...". To ship a new version of the skill contents, bump the version in manifest.json, add a changelog, re-sign, and re-publish via /mm-publish or mm publish. Buyers can run mm update to pull the latest version.