mitodl/agent-kit/creating-skills
Claude Code and agent skill by mitodl/agent-kit
- community
Checking that the SKILL.md file is still in the repository.
Create a new Agent Skill for this repository. Use this skill when asked to capture a workflow, convention, or repeated correction as a reusable skill — covers file naming, frontmatter fields, category placement, progressive disclosure, and updating the index.
Install
npx vskill@latest install mitodl/agent-kit/creating-skillsSKILL.md
Creating a New Skill
Skills follow the Agent Skills open standard.
1. Choose a category
Place the skill under the most specific matching category in skills/:
| Category | When to use | |
|---|---|---|
python/ | Python tooling, packaging, dependency management | |
dagster/ | Dagster pipelines, code locations, dg usage | |
infrastructure/ | Pulumi IaC, secrets, Vault, Kubernetes config | |
containers/ | Docker builds, image conventions | |
workflow/ | Cross-cutting process conventions; meta-skills |
If no category fits, create a new one and add a README.md for it.
2. Create the skill directory
The directory name becomes the skill's name. Use lowercase letters and hyphens only.
The name in SKILL.md frontmatter must exactly match the directory name.
3. Write SKILL.md
Description guidelines (most important field)
The description is what the agent uses to decide whether to activate the skill. Make it trigger-friendly:
- State both what the skill covers and when to use it.
- Include the specific tool names, command names, or scenario keywords an agent
would encounter when the skill is relevant.
- Bad: "Conventions for X." — too vague, won't trigger reliably.
- Good: "Apply X conventions. Use this skill when doing Y or Z — covers A, B, C."
4. Apply progressive disclosure
Keep SKILL.md under ~500 lines. If the skill has deep reference material (e.g., a detailed API reference, form templates, domain-specific lookup tables), move it to a references/ subdirectory and link to it from SKILL.md:
In SKILL.md, reference the file by relative path:
4b. Stay portable across agent platforms
Skills install on every platform agent-kit apply detects (Claude Code, Pi, Copilot, OpenCode), so don't make a Claude Code tool a hard requirement. When a step benefits from delegation, a structured question tool, or a built-in command, write it as a condition with a fallback in the same paragraph: "if a subagent facility is available, run one per batch in parallel; otherwise run the batches sequentially", "otherwise ask in chat". The fallback must do the same work, not a reduced version. Stock Pi has none of these tools; see Platform capabilities for the optional Pi extensions that add them. just check-skills flags a Claude-only mention with no fallback beside it.
4c. Never put body text on a command line
If the skill posts text to GitHub — an issue, a PR, a comment, a discussion, a review reply — write that text to a file and pass the path. Both halves matter:
- Use the file flag, not the string flag.
ghtakes--body-file; the
scripts in skills/process/ take --comment-file / --body-file, and - reads stdin. A body inlined as --body "..." has its backticks and $ expanded by the shell before the command runs, so a reply citing some_function posts with the identifier silently missing. Bodies routinely carry pasted errors, shell snippets, and backticked identifiers, so this is the common case rather than the edge one.
- Name the file with `mktemp`, never a fixed path. Several agents run the
same skill at once across different checkouts on one machine. A shared /tmp/<skill>-body.md means one of them publishes another's draft under its own title.
Writing a new script that posts text? Give it a file or stdin input from the start, and build any JSON payload with jq --arg / --rawfile rather than interpolating the text into the jq program.
5. Update the indexes
After creating the skill, update two places:
- Category README (
skills/<category>/README.md) — add a row to the table. - Top-level skills README (
skills/README.md) — add a row to the All Skills table.
6. Validate
If skills-ref is not installed, manually verify:
namematches the directory namedescriptionis non-empty and under 1024 charactersSKILL.mdis the correct filename (uppercase)
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/workflow/creating-skills/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mitodl/agent-kit/creating-skills)