agentleFS
pahlevikunpahlevikun/levistack/skills/agent-authoring/create-skill/SKILL.md

create-skill

Skill0 starsChanged 18 days agoMITView on GitHub

Create, audit or improve agent skills (a folder with SKILL.md) for Claude Code, Cursor, Codex and the skills CLI. Use when asked to write or add a skill, fix a skill that never triggers, split an oversized SKILL.md, or review skill quality.

142 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use review-bugbot, migrate-to-skills and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • 0mlkrizzz655335vSkill

    review-bugbot

    缺陷导向代码审查。用 Bugbot 子代理找 bug。

    Also in 5 projects that use this

  • 32103210Skill

    migrate-to-skills

    Convert 'Applied intelligently' Cursor rules (.cursor/rules/*.mdc) and slash commands (.cursor/commands/*.md) to Agent Skills format (.cursor/skills/). Use when you want to migrate rules or commands to skills, convert .mdc rules to SKILL.md format, or consolidate commands into the skills directory.

    Also in 8 projects that use this

  • 32103210Skill

    update-cursor-settings

    Modify Cursor/VSCode user settings in settings.json. Use when you want to change editor settings, preferences, configuration, themes, font size, tab size, format on save, auto save, keybindings, or any settings.json values.

    Also in 8 projects that use this

  • PandelisZSkill

    update-cli-config

    View and modify Cursor CLI configuration settings in ~/.cursor/cli-config.json. Use when the user wants to change CLI settings, configure permissions, switch approval mode, enable vim mode, toggle display options, configure sandbox, or manage any CLI preferences.

    Also in 7 projects that use this

  • yawningwhaleAISkill

    build-premium-website

    Build a premium, animated marketing website (React + Vite + Tailwind + GSAP) for any industry. Use when the user asks to "build a website", "make a landing page for [business]", "build a marketing site", or wants a high-end animated company website. Adapts color, copy, services, and signature animation to the industry.

    Also in 6 projects that use this

  • yawningwhaleAISkill

    instantly-campaign

    Create a new Instantly cold-email campaign in the proven 5-email structure of the user's top-performing campaign (~16% reply rate). Use when the user wants to launch a new outbound campaign, write a cold email sequence, create an Instantly campaign, draft outreach for a new service or niche, or set up a sales sequence.

    Also in 5 projects that use this

  • +1 more from 32103210

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. 0 are common, 9 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 132 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Assume the model is smart: Add only what it lacks: your conventions, your commands, the traps.

    line 37
  2. Very specific:

    One job per skill: If the name needs "and", split it.

    line 38
  3. Distinctive:

    If the user supplied exact wording for the skill, use it verbatim.

    line 69
  4. Distinctive:

    Test: Run the real requests from step 1 plus one that should not trigger it.

    line 77
  5. Very specific:

    Eval fixtures: Add evals/evals.json with skill_name, at least two scenarios (happy path and boundary), and assertions.

    line 78
  6. Very specific:

    Catalog metadata: Add or update the skill entry in skills/catalog-metadata.json (related_skills, invokes, optional tags and capabilities).

    line 79
  7. Very specific:

    Keep SKILL.md to the steps that every run needs.

    line 96
  8. Very specific:

    Keep each fact in one place.

    line 97
  9. Distinctive:

    Remove a sentence when the model already does it by default.

    line 98
  10. Very specific:

    Never write into a tool's built-in folder (for example Cursor's skills-cursor).

    line 111
  11. Distinctive:

    Run the lint step above on the skill folder or the whole tree.

    line 115
  12. Distinctive:

    Write a first-person description ("I can help you ...") or one with no trigger.

    line 122
  13. Distinctive:

    Put the core rule only in a reference file the agent may skip.

    line 123
  14. Distinctive:

    Add time-sensitive facts without a date, or restate what the model already knows.

    line 125
  15. Very specific:

    Leave dynamic shell injection (a backticked command prefixed with !) in a published skill without guarding it.

    line 126
  16. Distinctive:

    No overlap with an existing skill, or the overlap was merged.

    line 142

“Common” is measured: kept by at least 6 in 10 of the 132 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Create a skill

A skill is a folder with a SKILL.md. Its name and description are always in context; its body loads when the task matches; references/, scripts/ and templates/ load only when the body points to them.

This skill covers skills only. For subagents use create-agent; for rules, hooks and slash commands use create-rule, create-hook and create-command; to convert a rule, command, agent, conversation, PDF or docs folder, or to merge existing skills, use convert-as-skill.

Principles

  1. The description is the router. The model loads a skill from its description alone. Say what it does, then Use when ... with the words a user would say.
  2. Assume the model is smart. Add only what it lacks: your conventions, your commands, the traps. Cut explanations of common knowledge.
  3. One job per skill. If the name needs "and", split it. If two skills overlap, merge them (convert-as-skill merge-skills).
  4. Match freedom to risk. Judgment calls get principles and criteria. Fragile steps (migrations, deploys) get exact commands or a script.
  5. Progressive disclosure. Aim for SKILL.md under 200 lines, never over 500. Depth goes in references/, one level deep.
  6. Test by using it. An untested description is a guess.

Is a skill the right tool?

NeedUse
A procedure or knowledge loaded only when relevantSkill
A fact or constraint true for every task in the repoRule or AGENTS.md (create-rule, create-agents-md)
Must happen every time, not model-decidedHook (create-hook)
Isolated context, restricted tools, another modelSubagent (create-agent)
A saved prompt you type as /nameCommand, or a skill with disable-model-invocation: true (create-command)

What do you want to do?

RequestGo to
New skillNew skill
Skill exists but never triggers, misfires, or is too bigAudit, then fix by symptom in format.md
Review a skill or a folder of skillsAudit
Turn a rule, command, agent, conversation, PDF or docs folder into a skill, or merge two skillsconvert-as-skill

New skill

  1. Gather requirements. Infer from the conversation first; ask only for what is missing:
    • the task and 2 or 3 real requests it must handle (these become the trigger words and the first tests);
    • where it lives (see Where it goes);
    • the knowledge the model would not already have;
    • an output format, if quality depends on one. If the user supplied exact wording for the skill, use it verbatim. Do not paraphrase or add headings around it.
  2. Check for overlap. List the skills in the target tree. Extend or merge before creating.
  3. Name it. Lowercase letters, digits and single hyphens, at most 64 characters, equal to the folder name. Prefer a verb phrase or a noun that says the job (review-diff, pdf-processing). Avoid helper, utils, tools.
  4. Pick the shape. One task under about 150 lines: templates/skill.md. Three or more distinct tasks: the router in templates/skill-router.md, with SKILL.md holding principles and routing.
  5. Write the description. Third person, at most 1024 characters, one quoted line. What it does, then Use when .... Front-load the keywords. Add "Not for ..." when a neighbor could be confused with it.
  6. Write the body in the order the agent acts: imperative steps, each with an observable result; one term per concept; one default approach plus at most one escape hatch; a template or an input/output pair when format matters; a verification step. Patterns are in patterns.md.
  7. Set invocation. disable-model-invocation: true for side effects or anything you only want on /name. user-invocable: false (Claude Code) for background knowledge. Leave the default otherwise.
  8. Lint. node <create-agent>/scripts/lint.mjs <skill-dir>, where <create-agent> is the sibling create-agent skill folder. If it is not installed, walk audit.md by hand.
  9. Test. Run the real requests from step 1 plus one that should not trigger it. Fix by symptom and re-run. See format.md.
  10. Eval fixtures. Add evals/evals.json with skill_name, at least two scenarios (happy path and boundary), and assertions. Visual skills may use evals/cases.json instead. Point to them from SKILL.md when you change behavior. node scripts/bootstrap-skill-evals.mjs seeds missing files.
  11. Catalog metadata. Add or update the skill entry in skills/catalog-metadata.json (related_skills, invokes, optional tags and capabilities). Run npm run sync:skill-metadata to merge the metadata: block into SKILL.md like product/infographic.

Pointers and the two loads

Everything you add to a skill spends one of two budgets. Know which one before you add it.

  • Context load: text that sits in the agent's window every turn, whether or not it is used. A skill description and a line in AGENTS.md are context load. Keep them short.
  • Reader load: the effort a person spends remembering which documents exist and when to open each. Spend it where human judgment matters. Cut it where it does not.

Also count the text loaded when the agent opens a reference. It is absent from the always-loaded description, but it still costs context on that run. Split references by task so the agent reads only the part it needs.

A pointer is a short line in always-loaded text that names material kept elsewhere and says when to open it. A skill description is a pointer. A good pointer says what the material is, then lists the distinct cases that should trigger it. Put the strongest trigger word first. If two phrases name the same case, keep one.

Material behind a pointer costs only the pointer's line until it is needed. Material with no pointer costs the reader's memory. So:

  • Keep SKILL.md to the steps that every run needs. Move detail that only some cases need into a references/ file, and point to it from the step that uses it.
  • Keep each fact in one place. If the environment already holds it (a script in package.json, a --help text), point to that instead of copying it.
  • Remove a sentence when the model already does it by default. It costs load and changes nothing.
  • End each step with a clear way to tell it is done. A vague finish ("understood") invites stopping early.

Where it goes

TargetPath
Claude Code, personal~/.claude/skills/<name>/SKILL.md
Claude Code, project.claude/skills/<name>/SKILL.md
Cursor, project.cursor/skills/<name>/SKILL.md (also reads .agents/skills/ and .claude/skills/)
Any agent.agents/skills/<name>/ or publish the repo and npx skills add <owner>/<repo>
A skill catalog like this oneskills/<group>/<name>/SKILL.md, plus the group's DESCRIPTION.md

Never write into a tool's built-in folder (for example Cursor's skills-cursor). Check which of the paths above the current project already uses and follow it. In a catalog repo, follow that repo's maintenance instructions (CLAUDE.md or AGENTS.md) for sync and validation.

Audit

  1. Run the lint step above on the skill folder or the whole tree.
  2. Walk audit.md for what a linter cannot judge: specific description, principles over platitudes, actionable steps, tested triggers.
  3. Report a score and findings by priority, each with a concrete fix: Broken (will not load or trigger), Weak (misroutes or wastes context), Polish.
  4. Apply only the fixes the user asked for. Keep the author's structure and voice.

Do not

  • Write a first-person description ("I can help you ...") or one with no trigger.
  • Put the core rule only in a reference file the agent may skip.
  • Chain references (SKILL.md to a file to another file), or use Windows-style paths.
  • Add time-sensitive facts without a date, or restate what the model already knows.
  • Leave dynamic shell injection (a backticked command prefixed with !) in a published skill without guarding it.

Related skills

  • create-agent: the job is a delegate with its own context and tools.
  • create-command: the job is a saved prompt you type as /name.
  • create-rule: the guidance must apply on every task.
  • create-hook: the job must run on an event.
  • convert-as-skill: the source material already exists.
  • find-skills: check whether a skill for this already exists before you write one.

Done when

  • name equals the folder; the description says what and when; the linter reports no errors.
  • SKILL.md is under 500 lines (ideally 200) and every linked file exists, one level deep.
  • It ran on at least one real request and triggered correctly, and did not trigger on the unrelated one.
  • No overlap with an existing skill, or the overlap was merged.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.