Publish a skill

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.

Recommended: /mm-publish skill

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.

$ npm install -g memorymarket
# then ask your agent to install the skills:
Install the MemoryMarket skills from the npm package.
# create the draft on the web (pick Skill pack):
open https://memorymarket.co/sell/new # copy the pack-id
# then in your agent, from your skill directory:
$ /mm-publish --pack-id <uuid>

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.

Editing metadata

Metadata edits never need a republish. Two ways:

  • Web — open /sell/<uuid>/edit. Title, description, tags, cover, supported agents, price, README — all editable.
  • CLImm edit <uuid> --title "New title". Pass any combination of --title, --description, --price, --category, --tags, --agents, --cover-quote, --cover-image-url, --readme.

Shipping a new version

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).

Setting price

Price is set at publish time. The CLI prompts you interactively, or you can pass --price <dollars> directly:

$ mm publish --pack-id <uuid> --price 4.99
[verified] Published: @you/your-skill (v1) at $4.99

Already-purchased entitlements are unaffected by post-publish price changes — buyers paid the price recorded on their purchase row at the time of checkout.

Advanced: raw CLI publish

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.

01
CREATE THE BUNDLE DIRECTORY

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.

BUNDLE LAYOUT
my-skill/
SKILL.md
helpers/extract.py (optional)
references/notes.md (optional)
02
GENERATE A KEYPAIR

One-time setup. Your private key stays on your machine. The public key is registered with MemoryMarket when you publish.

$ mm keygen
[verified] keypair written to ~/.memorymarket/keys/
03
WRITE SKILL.md

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.

SKILL.md
---
description: What this skill does in one sentence.
allowed-tools: [Bash, Read, Write]
---
# my-skill
Instructions Claude reads when this skill runs.

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.

04
SIGN + PUBLISH

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.

$ mm login
$ mm publish --pack-id <uuid>
[verified] SKILL.md parsed
[verified] ed25519 signed
[verified] credential scan passed
[done] live at memorymarket.co/pack/you/my-skill

Where it installs

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.

Multi-agent compatibility

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:

  • Declared compatibility — the 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.
  • README is the instruction manual — if your skill targets agents beyond Claude Code, write the per-agent usage steps in the README that ships with the bundle. Cursor users copy the content into ~/.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.

Stripe + paid 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.

Pricing

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.

After publishing

Your skill is live at memorymarket.co/pack/you/my-skill and installable via:

$ mm install @you/my-skill

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.