Writing skills
Skill augments-labs/sdlc-skills/skills/common/writing-skills
Use when creating or editing a skill in this library — the lean format, progressive disclosure to sibling files, and how to prove a skill actually works. Fires on add a skill for X and this skill isn't triggering, even if nobody says authoring. For AUTHORING skills, not for using them.From its SKILL.md
npx -y skills add augments-labs/sdlc-skills --skill writing-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.3 KB, as published. Nobody here has run it
Writing Skills
Skills are tools, not pipelines. Each one loads into context every time it fires, so every line costs tokens on every use. Write the minimum that changes behavior; push the rest to sibling files.
When to use
- Creating or editing a skill under
skills/<phase>/<name>/. - Skip when you're using a skill — this is only for authoring.
Skill types
Match the form to the need (see references/reference.md for how much detail each needs):
- Instruction — a prose procedure. Most skills.
- Template — ships a
{{placeholder}}file to copy (likeassets/skill-template.md). - Script — bundles a tested, deterministic script when prose would be error-prone.
- Reference — a doc loaded on demand for lookup; large is fine, it isn't always-loaded.
The format (non-negotiable)
-
Frontmatter:
name(kebab-case, matches the directory) anddescription(capability + "Use when…" trigger, ≤1024 chars, third person, never a workflow summary). -
Body under 500 lines and 5000 tokens — the ceilings every compliant agent assumes. Aim well under: most capability skills land near 80–120 lines, and a body past ~200 should have to justify itself. Intent + procedure only; cut marketing ("why this matters") and long worked examples.
Aim under the target by removing content, never by compressing prose. Dropping articles and verbs until a sentence reads as a noun stack —
Bind exact source/contracts/external inputs and a stable-ID surface— buys line count and costs comprehension: an agent that must decompress an instruction before acting is likelier to act on the wrong reading. If a body needs 140 clear lines, take them. -
Progressive disclosure, split by what the agent does with the file. A file it fills in and emits — a document template — goes to
assets/. A file it reads to decide or check — a rubric, a checklist, a reviewer brief, a worked example, a lookup table — goes toreferences/. Bundled executable code goes toscripts/.SKILL.mdnames each file and says when to open it; it never inlines them. -
Complexity gate up top. State when to skip the skill. Ceremony must scale down with task size.
-
Lint-clean markdown. Fill-in placeholders use
{{double-curly}}—<angle>brackets render as HTML and trip linters. Fence code blocks with a language. Blank lines around lists.
Discipline skills are the exception
A few skills exist to hold an agent to a discipline it is tempted to skip under pressure—for example routing, TDD, YAGNI, verifying completion, systematic debugging, and receiving review. For these only:
- Keep the rationalization table (each tempting excuse → its rebuttal) and red-flag list in the body, never a sibling — a tempted agent won't choose to load a sibling file, and the counter must be in context when the temptation hits. You cannot lazy-load willpower.
- They run longer than a capability skill, and that is expected. Each extra line still has to earn its place by passing a pressure test (
references/testing.md), not by sounding good. - Everything else (capability, template, reference, meta) has no temptation to counter — keep it lean.
Procedure
- Confirm it should be a skill—and whether it is one. Write one only if an agent reliably gets this wrong without guidance. Plain prompt text or a one-off? Do not. An exact fragile sequence belongs in a tested script. Split activities only when each is independently invokable; otherwise keep one cohesive skill.
- Choose the phase folder (
planning…maintenance) orcommon/, createskills/<phase>/<name>/, and copyassets/skill-template.mdto start. - Write
descriptionas a trigger first. Test it: does it say when, not how? If it lists steps, rewrite. - Write the body: When to use (incl. Skip), Procedure (numbered), Common mistakes.
- Move anything heavy to a sibling file —
assets/if the agent fills it in,references/if the agent reads it. - Verify the shape (below), then prove the behavior at the failure surface —
trigger, artifact/side effect, or pressured discipline. Read
references/testing.md; an agent explaining the rule is not evidence that it follows it.
Available scripts
scripts/check-skill.sh— checks one skill directory against the Agent Skills standard: frontmatter,namecharset and length,descriptionlimit, body ceilings, reference resolution, and whether bundled scripts answer--help. Read-only, and portable to any skill directory, including outside this repository. Run it in Verify before done;--helplists the checks and exit codes.
Verify before done
-
Run the conformance check and read what it returns:
bash scripts/check-skill.sh path/to/skillExit 0 conforms; exit 1 lists what fails. It replaces hand-counting lines and eyeballing paths — both of which this library got wrong before it existed.
-
Markdown lints clean · description states triggers, not a summary.
-
A skill library will usually add house rules on top — no external references, no vendor model names, manifest registration. Run its gate too; conforming to the standard is necessary, not sufficient.
-
The targeted before/after proof observes behavior, reports every run, and does not turn unchanged skills into a costly coverage exercise.
Common mistakes
- A body that reads like documentation — it reloads into context every invocation.
- A description that summarizes the workflow → the model follows the summary and skips the skill body.
- Inlining templates/examples that belong in sibling files.
- No complexity gate → ceremony on trivial tasks (the #1 complaint about heavy skill libraries).
- Shipping a skill you never watched fail without — you don't know it prevents the right failure.
See references/reference.md for examples and reasoning, and references/testing.md for proving a skill actually changes behavior.