How to create a skill
A skill is a procedure an AI agent follows: commands, checks, and a defined output. Here is the format, what passes review, and a prompt you can hand to your own agent.
Let your agent write it
Paste this into Claude Code, Codex, Cursor or Gemini CLI, in the repo you want a skill for.
Write an agent skill I can publish, packaged as a folder I can zip.
A skill is a procedure another AI agent follows — commands to run, checks to make, and the shape of
the output — not an essay about a topic. Pick one job it does well.
Create this structure:
<skill-name>/
SKILL.md (required)
references/*.md (optional: rules, checklists, playbooks it should consult)
scripts/* (optional: scripts it can run)
templates/* (optional: output templates it can fill in)
SKILL.md must start with YAML frontmatter and nothing above it:
---
name: <kebab-case-name>
description: One sentence saying what it does AND when the agent should use it.
license: MIT
version: 1.0.0
---
Then the body, in this order:
# <Title>
## When to use
The situations that should trigger it, and when NOT to use it.
## Procedure
Numbered, concrete steps. Real commands in code fences. No hand-waving.
## Checklist
- [ ] Verifiable conditions that must hold before it declares success.
## Output format
Exactly what it should produce, with a short example.
Rules — a skill that breaks these gets rejected by the security scan:
1. No piping remote content into a shell (no `curl … | bash`, no `wget … | sh`).
2. No base64-decoded or otherwise encoded commands, and no `eval` of remote content.
3. No reading or transmitting secrets: no .env contents, SSH keys, cloud credentials,
keychain entries, or browser cookie/credential stores.
4. No literal API keys or tokens anywhere in the files.
5. No instruction to hide, conceal or omit anything from the user, and no attempt to
override the agent's system instructions or skip confirmation for risky actions.
6. Do not request blanket tool permissions. Never write `allowed-tools: Bash(*)` or
anything equivalent to bypassing permissions. If a step needs a command, name the
specific command in the procedure instead.
7. Network calls only to well-known, named hosts, and say why each one is needed.
8. No zero-width or bidirectional-override characters, and no instructions hidden in
HTML comments.
Write it as original work. Keep SKILL.md focused — a few hundred to a couple of thousand words is
usually right; push detail into references/ rather than padding the main file.
When you are done, tell me the folder path and give me the exact command to zip it.The folder
Only SKILL.md is required. Everything else is optional, and anything you include is stored alongside it and delivered in the buyer’s download.
my-skill/
SKILL.md required — the procedure itself
references/ rules, checklists, playbooks it consults
scripts/ scripts it can run
templates/ output templates it fills inFrontmatter
SKILL.md opens with YAML frontmatter, with nothing above it.
name— required- Kebab-case identifier, e.g. postgres-schema-design.
description— required- One line covering what it does and when to use it. This is what an agent matches against, so make it specific.
license— recommended- MIT, Apache-2.0, Proprietary — whatever you are actually granting.
version— recommended- Semver. Defaults to 1.0.0. Bump it when you change the skill.
What passes review
Every submission is scanned automatically and then read by a person. The scan is not a formality — it blocks a skill outright on anything in the second list.
Gets approved
- A procedure with real commands, checks and a defined output.
- One job, done properly, rather than a survey of a topic.
- Specific triggers in the description — when to use it, and when not to.
- Original work you hold the rights to license.
- Named hosts for any network call, with a reason.
Gets blocked
curl … | bash, encoded payloads,evalof remote content.- Reading or sending secrets — .env, SSH keys, cloud credentials, keychains, browser cookies.
- Literal API keys or tokens in any file.
- Prompt injection: hiding behaviour from the user, overriding system instructions, skipping confirmation.
- Blanket permissions such as
allowed-tools: Bash(*). - Zero-width or bidi characters, or instructions buried in HTML comments.
Packaging and publishing
- Zip the skill folder:
zip -r my-skill.zip my-skill. Up to 5 MB and 200 files. - Attach it on the publish page. We read the
SKILL.mdout of the archive — at the root or inside a single wrapper folder — and keep the supporting files. You can pasteSKILL.mdinstead if there is nothing to bundle. - Set a price, or leave it at zero. Free skills need no payment setup at all.
- It is scanned immediately and reviewed by a person. Approved skills get a public page, an install command, reviews, and a content hash pinning exactly what was reviewed.
What you earn and how payouts reach you is on the pricing page.
Got one ready?
Publishing is free, and review is quick.
Publish a skill