agentleFS
nimadorostkarnimadorostkar/Claude-Skills-collection/skills/agent-tooling/skill-authoring/SKILL.md

skill-authoring

Skill33 starsChanged 22 days agoMITView on GitHub

Use when writing a new skill for an AI agent. Covers scoping, description writing for reliable triggering, progressive disclosure, and the difference between a skill and a prompt. Trigger on "write a skill for", "turn this prompt into a skill", "create a skill.md", "how do i write a skill description". Do not use for auditing an existing skill or library — see the skill-review skill; for workflows the user invokes by name, see the slash-commands skill.

We split this skill into the rules it gives an agent

3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 74 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write a skill that loads at the right time and materially changes the agent's behavior when it does.

    line 14
  2. Distinctive:

    Keep the main body focused.

    line 56
  3. Distinctive:

    Write the constraints as constraints.

    line 58

“Common” is measured: kept by at least 6 in 10 of the 74 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

Skill Authoring

Purpose

Write a skill that loads at the right time and materially changes the agent's behavior when it does. A skill that never triggers is dead weight; a skill that triggers constantly is a system prompt with extra steps.

When to Use

  • Creating a new skill.
  • A skill that does not activate when it should, or activates when it should not.
  • Converting a recurring prompt into a reusable capability.
  • Reviewing a skill before publishing it.

Capabilities

  • Scoping: what belongs in a skill and what does not.
  • Description writing, which is what determines triggering.
  • Structuring the body for an agent to act on.
  • Progressive disclosure through supporting files.
  • Testing that the skill triggers on real requests.

Inputs

  • The capability the skill should provide.
  • The requests that should trigger it, phrased as a user would phrase them.
  • The requests that should not trigger it.

Outputs

  • A SKILL.md with valid frontmatter and an actionable body.
  • A description that triggers reliably on the intended requests.
  • Supporting files for detail that is not always needed.

Workflow

  1. Scope it to one capability — A skill that covers "backend development" is too broad to trigger precisely and too shallow to be useful. A skill about API design is neither.
  2. Write the description last, and carefully — It is the only part the agent sees before deciding whether to load the skill. It must state what the skill does and when to use it, using the words a user would actually use.
  3. Write the body as instructions, not as an essay — The agent will act on it. Concrete steps, explicit constraints, worked examples. Prose about the philosophy of the domain is not actionable.
  4. Move detail into supporting files — The main file is loaded whenever the skill triggers, so it should be the part that is always needed. Reference material goes in adjacent files the agent reads on demand.
  5. Test the triggering — With real phrasings, including the ones that should not trigger it. A skill that fires on every mention of "code" is a nuisance.

Best Practices

  • The description is the skill's entire interface. Include the domain terms, the tools, and the user-facing verbs — a user asking to "make the query faster" will not say "database performance optimization".
  • Name the negative cases in the description when there is a near neighbor: "Use for API design. Do not use for GraphQL schema design — see the graphql skill."
  • A skill that only restates what the model already does well adds tokens and no capability. The test is whether behavior changes when it loads.
  • Keep the main body focused. If it exceeds roughly 500 lines, the detail belongs in supporting files.
  • Worked examples do more than instructions. One good example of the output shape is worth three paragraphs describing it.
  • Write the constraints as constraints. "Prefer X" is advice; "Never do Y; always do Z" is a rule the agent will follow.

Examples

A description that triggers, and one that does not:

# Too vague: what is a "database helper"? A user will never phrase a request
# in a way that matches this.
description: A helpful skill for database stuff.

# Precise, with the user's own vocabulary and an explicit boundary.
description: >
  Use when a database query is slow or a table needs an index. Covers reading
  EXPLAIN output, composite and partial index design, N+1 detection, and lock
  contention. Trigger on "slow query", "add an index", "the page is slow and
  it's the database", or a pasted EXPLAIN plan. Do not use for schema design
  from scratch — see the data-modeling skill.

Progressive disclosure — the main file stays small:

skills/database-performance/
  SKILL.md                    ~200 lines, always loaded when triggered
  references/
    explain-plans.md          read only when analyzing a plan
    index-types.md            read only when choosing an index type
    lock-modes.md             read only when diagnosing contention
  scripts/
    slow_query_report.py      executed, not read into context

In the body: "For the meaning of each node type in an execution plan, read references/explain-plans.md." The agent loads it when the task requires it, and not otherwise.

Testing that it triggers:

Should trigger:
  "this endpoint takes 3 seconds and I think it's the database"    -> yes
  "add an index to the orders table"                               -> yes
  "why is this query slow"                                         -> yes
  [pastes an EXPLAIN ANALYZE output with no question]              -> yes

Should NOT trigger:
  "design a schema for a booking system"      -> data-modeling
  "the frontend feels slow"                   -> web-performance
  "write a SQL query to find duplicates"      -> sql

Notes

  • Triggering is determined entirely by the description. If a skill is not loading, the fix is always in the description — never in the body.
  • The most common authoring mistake is writing the skill as documentation for a human. The reader is an agent that will follow instructions literally; write instructions, not explanation.
  • A skill with no constraints and no examples rarely changes behavior. The value is in the specifics.

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.