When writing or improving skill instructions, follow these principles from Anthropic's skill-creator methodology and Thariq Shihipar's "Lessons from Building Claude Code" (Mar 2026):
Core Principles
- Don't state the obvious. Claude is competent at programming and knows codebases. Focus on information that breaks Claude's default patterns — things it gets wrong without guidance. Test: "Would Claude do this wrong without being told?" If not, remove it.
- Explain the why, not just the what. Models with good theory of mind + clear reasoning outperform models with rigid constraints. Instead of "ALWAYS use 3 bullets", explain why bullets matter for the audience.
- Keep it lean. The context window is a public good. Remove instructions that don't improve output. If test transcripts show the agent wasting time on unproductive steps, cut them. SKILL.md should be under 500 lines.
- Cut intensifier-only lines. Stating a rule once is the instruction.
MANDATORY, CRITICAL, "not optional", and a third restatement add volume, not constraint — the model obeys specificity and code, not emphasis. Delete any line whose only content is shouting a rule stated elsewhere. Watch ## Best Practices / ## Tips sections: they collect default-restating filler ("be thorough", "keep it simple", "validate carefully"). Run the delete-test in Prompting/Standards.md § Signal-to-Noise on every line: cut it, and restore only if you can name the specific non-default behavior it forces.
- Generalize, don't overfit. Fix underlying patterns, not specific test failures. The skill will be used on many prompts beyond your test set.
- Bundle repeated work. If test agents all independently wrote similar helper scripts, add that script to Tools/ so every future invocation benefits.
- Set appropriate degrees of freedom. Match specificity to task fragility. Database migrations need exact commands; code reviews need general direction.
- Don't over-constrain. Skills are reused heavily. Avoid overly specific instructions. Provide needed information but leave flexibility for different contexts.
Description Best Practices
- Descriptions are for models, not humans. The description is injected into the system prompt. Claude reads it to decide whether to invoke the skill.
- Descriptions should be slightly pushy. Models tend to undertrigger. Name specific scenarios even if the user might not explicitly mention the skill.
- Include negative triggers for confusable skills. Add "NOT FOR" clauses when skills share vocabulary:
"NOT FOR web pentesting (use WebAssessment)".
- Undertriggering signals: Skill doesn't load when it should, users manually invoking it.
- Overtriggering signals: Skill loads for irrelevant queries, users disabling it.
Gotchas Section (MANDATORY)
Every skill MUST have a ## Gotchas section after the workflow routing table. Thariq: "The highest information density in any Skill comes from gotchas sections."
Populate with:
- API quirks Claude doesn't know about
- Common mistakes observed during usage
- Ordering/sequencing requirements that aren't obvious
- Edge cases that cause silent failures
Gotchas accumulate over time. After every skill failure, add the lesson.
Ideal-State Prompting (WHAT, not HOW) — MANDATORY authoring style
Write every new skill body and workflow ideal-state style: articulate WHAT a done deliverable looks like (as testable outcomes), the CONSTRAINTS, and the TOOLS — then trust the model to find HOW. Numbered step-lists that choreograph the model's reasoning for open-ended cognitive work are BPE-violating scaffolding: they cap a capable model and rot as models improve. Four keep-classes ARE legitimate HOW and belong in skills: safety-gate, verified-gotcha (this is what ## Gotchas is for), tool-contract (exact invocation recipes in Workflows), output-format-contract. Deterministic Tools (*.ts) are exempt. When writing or improving a skill, cut methodology narration and keep only the ideal state, the constraints, the tools, and the four keep-classes. Full standard: LIFEOS/DOCUMENTATION/Skills/SkillSystem.md § Authoring Standard.
BPE (Bitter-Pilled Engineering) Check
Before finalizing any skill, ask: "Would a smarter model make this skill unnecessary?"
- Anti-fragile (keep): Verification harnesses, data pipelines, tool wrappers, accumulated gotchas, deterministic scripts
- Fragile (question): CoT orchestrators, format parsers, retry cascades, elaborate reasoning scaffolding
Focus skills on knowledge Claude can't derive (failure modes, API quirks), tools Claude can't replicate (API calls, automation), and workflows that benefit from consistency.
Progressive Disclosure (from Anthropic)
Three levels of information loading — use this to manage large skills:
- Level 1 (YAML frontmatter): Always in system prompt. Triggering info only.
- Level 2 (SKILL.md body): Loaded when skill is invoked. Routing + key guidance.
- Level 3 (Reference files): Root-level
.md files or References/ subdirectory loaded on demand.
Tell Claude what files exist; it will read them when appropriate. SKILL.md should be under 500 lines — if over, extract detailed content to reference files.
Testing Best Practices (from Anthropic)
Three testing levels for skills:
- Manual testing — Run queries and observe behavior
- Scripted testing — Automate test cases (use TestSkill workflow)
- Programmatic testing — Build evaluation suites (use Evals skill)
Evaluation-driven development: Define what "this skill working" looks like before building the skill. Iterate on a single challenging task until Claude succeeds, then extract the winning approach.
On-Demand Hook Pattern (from Anthropic)
Skills can include hooks that activate only when invoked, remaining effective for the session:
/careful — Intercept dangerous commands (rm -rf, DROP TABLE, force-push)
/freeze — Block edits outside specific directories
/audit — Log all tool calls for session review
All guidance above derived from Thariq Shihipar's "Lessons from Building Claude Code" (Mar 2026), Anthropic's official skill guide, and platform documentation.