Skill name+description pairs are preloaded into every session, costing ~6,200 tokens across 39 skills before any skill is invoked. The authoring rules mandated that growth: skill-author:104 and description-quality.md:21 both required padding, while skill-author:102 (the deflating rule) had no FAIL condition behind it. Gates (blocking, no baseline file): - description 250 chars SUGGESTION / 400 FAIL, measured on the folded YAML value - body-only 600 words SUGGESTION / 900 FAIL, independent of the unchanged whole-file 2770-word / 500-line spec backstop - every boundary-clause routing target must resolve to a real skill or agent; catches skill-improve, neuledge-context and gitea-labels - agents take the description gates but deliberately no body gate; a test pins that absence Vale: DescriptionOpener widened to ^This\b, new CompositionNote rule banning architecture notes from descriptions. 10 hits, 0 false positives. Kyberforge's own four skills retrofitted: descriptions 3,364 -> 938 chars (-72%), bodies 8,306 -> 2,487 words (-70%), all via the apm-workflow dispatch pattern. Fixes the skill-improve dangling route and the agent-author misroute to manual review. Also fixes a pre-existing false positive where any line-initial 'read ' was flagged as interactive input, which had already caused two scripts to be rewritten around it. Refs: ADR-0020
references/
Additional documentation agents load on demand. Files here extend SKILL.md without bloating its core context.
When to add a reference file
The SKILL.md body carries the decision procedure only. Everything else lives here: lookup tables, spec restatements, output schemas, templates, example blocks, rationale prose, and anything only one branch reaches.
Two triggers make a reference file mandatory rather than optional:
- The body is over its 600-word target (900 is a hard failure), counting the
body only — everything after the frontmatter's closing
---. - The skill has two or more mutually exclusive flows. The body then keeps only
a dispatch table plus the gates common to every branch, and each flow gets
its own self-contained file here (e.g.
create.md,improve.md).
How to reference from SKILL.md
Load conditionally — tell the agent exactly when to read each file:
If the API returns a non-200 status, read `references/api-errors.md`.
Avoid generic "see references/ for details" — the agent loads context on demand, so give it a precise trigger condition.
File conventions
- One topic per file — focused files mean less unnecessary context loaded
- Kebab-case filenames (e.g.
api-errors.md,output-formats.md) - Keep files under 200 lines where possible
If no reference files are needed
Delete this README and the references/ directory entirely.