# Body Discipline Reference Source: agentskills.io — skill-authoring ## The core test For every sentence in the body, ask: **"Would the agent get this wrong without this instruction?"** If no — cut it. The agent already knows it from general training. Adding it wastes tokens and dilutes the signal of what matters. ## What belongs in the body Include content the agent lacks: - Project-specific conventions and domain procedures it cannot infer - Non-obvious edge cases and environment-specific gotchas - The specific tools or sequences to use (not the full range of options) - One default per decision point with one escape hatch Do not include: - Concepts the agent already knows (what JSON is, how HTTP works, what a CSV is) - Exhaustive option lists — pick a default; the agent doesn't benefit from choosing - Steps the agent handles independently — over-specifying leads to unproductive paths - Restatements of the description — it's already in context ## Calibrating control **Be prescriptive** when operations are fragile, consistency matters, or a specific sequence must be followed: ```markdown Run exactly: \`\`\`bash python scripts/migrate.py --verify --backup \`\`\` Do not modify the command or add additional flags. ``` **Give freedom** when multiple approaches are valid. Explaining *why* outperforms rigid directives — agents make better decisions when they understand the purpose. ## Defaults not menus Never present a list of equivalent options — pick one and mention the alternative briefly: ```markdown # Too many options Use pypdf, pdfplumber, PyMuPDF, or pdf2image... # Default with escape hatch Use pdfplumber for text extraction. For scanned PDFs requiring OCR, use pdf2image instead. ``` ## Gotchas sections Highest value content — environment-specific facts that defy reasonable assumptions. Place near the top of the body so the agent reads them before encountering the situation. ```markdown ## Gotchas - The `users` table uses soft deletes. Always include `WHERE deleted_at IS NULL`. - User ID is `user_id` in the database, `uid` in auth, `accountId` in billing. Same value. ``` Each entry must be a specific, surprising fact — not a general tip or reminder. ## Progressive disclosure Keep `SKILL.md` under 500 lines. When more content is needed, move it to `references/` and load conditionally: ```markdown If the API returns a non-200 status, read `references/api-errors.md`. ``` "If X, read Y" is more useful than "see references/ for details." The agent loads on demand rather than up front. ## Auditing guidance Flag as FAIL if: - A sentence answers "no" to the core test (would agent get this wrong without it?) — it is padding - Decision points present a menu of options with no default - Instructions repeat content already in the description - Prescriptive sequences are used where flexibility is fine, or vice versa Flag as SUGGESTION if: - A rationale is missing from an include/exclude rule (present but unexplained) - Gotchas are correct but placed late in the body rather than near the top - A conditional reference trigger is vague ("see references/") rather than specific ("If X, read Y")