Skip to content

/writing-skills

Use when creating new skills, editing existing skills, or verifying skills work before deployment - applies TDD to process documentation by testing with subagents before writing, iterating until bulletproof against rationalization

shell
$ npx -y skills add ed3dai/ed3d-plugins --skill writing-skills --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/writing-skills
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when creating new skills, editing existing skills, or verifying skills work before deployment - applies TDD to process documentation by testing with subagents before writing, iterating until bulletproof against rationalization

SKILL.md

writing-skills.SKILL.md
name: writing-skills
description: Use when creating new skills, editing existing skills, or verifying skills work before deployment - applies TDD to process documentation by testing with subagents before writing, iterating until bulletproof against rationalization
user-invocable: false

Writing Skills

**REQUIRED BACKGROUND:** Read ed3d-extending-claude:writing-claude-directives for foundational guidance on token efficiency, discovery optimization, and compliance techniques. This skill focuses on TDD methodology specific to skill creation.

Core Principle

**Writing skills IS Test-Driven Development applied to process documentation.**

Write test cases (pressure scenarios), watch them fail (baseline behavior), write the skill, watch tests pass, refactor (close loopholes).

**Iron Law:** No skill without a failing test first. Same as TDD for code.

TDD Mapping

| TDD Concept | Skill Creation | |-------------|----------------| | Test case | Pressure scenario with subagent | | Production code | SKILL.md document | | RED | Agent violates rule without skill | | GREEN | Agent complies with skill present | | Refactor | Close loopholes, re-test |

When to Create a Skill

**Create when:**

  • Technique wasn't intuitively obvious
  • You'd reference this across projects
  • Pattern applies broadly
  • Others would benefit

**Don't create for:**

  • One-off solutions
  • Standard practices documented elsewhere
  • Project-specific conventions (use CLAUDE.md)

Skill Types

**Technique:** Concrete method with steps (condition-based-waiting, root-cause-tracing)

**Pattern:** Mental model for problems (flatten-with-flags, test-invariants)

**Reference:** API docs, syntax guides, tool documentation

Directory Structure

skills/
  skill-name/
    SKILL.md              # Main reference (required)
    supporting-file.*     # Only if needed

**Separate files for:** Heavy reference (100+ lines), reusable tools/scripts

**Keep inline:** Principles, code patterns (<50 lines), everything else

SKILL.md Template

---
name: Skill-Name-With-Hyphens
description: Use when [triggers/symptoms] - [what it does, third person]
---

# Skill Name

## Overview
Core principle in 1-2 sentences.

## When to Use
Symptoms and use cases. When NOT to use.

## Core Pattern
Before/after comparison or key technique.

## Quick Reference
Table or bullets for scanning.

## Common Mistakes
What goes wrong + fixes.

RED-GREEN-REFACTOR Cycle

RED: Baseline Test

Run pressure scenario WITHOUT skill: 1. Create combined pressures (time + sunk cost + exhaustion) 2. Document exact violations and rationalizations verbatim 3. Identify failure patterns

GREEN: Write Minimal Skill

1. Address specific baseline failures identified in RED 2. Run scenarios WITH skill 3. Verify compliance

REFACTOR: Close Loopholes

1. Find NEW rationalizations from testing 2. Add explicit counters 3. Re-test until bulletproof

**REQUIRED:** Use ed3d-extending-claude:testing-skills-with-subagents for complete methodology.

Testing by Skill Type

| Type | Test Approach | Success Criteria | |------|---------------|------------------| | Discipline | Pressure scenarios, combined stressors | Follows rule under maximum pressure | | Technique | Application scenarios, edge cases | Successfully applies to new scenario | | Pattern | Recognition + counter-examples | Knows when/how and when NOT to apply | | Reference | Retrieval + application tests | Finds and correctly uses information |

Common Rationalizations to Block

| Excuse | Reality | |--------|---------| | "Obviously clear" | Clear to you ≠ clear to agents. Test. | | "Just a reference" | References have gaps. Test retrieval. | | "Testing is overkill" | Untested skills have issues. Always. | | "Too simple" | Simple things break. Test anyway. | | "No time" | Fixing broken skills wastes more time. |

**All mean: Test before deploying.**

Anti-Patterns

  • **Narrative example:** "In session 2025-10-03, we found..." (too specific, not reusable)
  • **Multi-language dilution:** example-js.js, example-py.py (mediocre quality, maintenance burden)
  • **Code in flowcharts:** Can't copy-paste, hard to read
  • **Generic labels:** helper1, step3 (labels need semantic meaning)

Skill Creation Checklist

**IMPORTANT:** Use TaskCreate to track each item (or TodoWrite in older Claude Code versions).

**RED Phase:**

  • [ ] Create pressure scenarios (3+ combined pressures for discipline skills)
  • [ ] Run WITHOUT skill - document baseline failures verbatim
  • [ ] Identify rationalization patterns

**GREEN Phase:**

  • [ ] Name uses letters, numbers, hyphens only
  • [ ] Description starts with "Use when...", third person
  • [ ] Address specific baseline failures
  • [ ] One excellent example (not multi-language)
  • [ ] Run WITH skill - verify compliance

**REFACTOR Phase:**

  • [ ] Identify new rationalizations
  • [ ] Add explicit counters
  • [ ] Re-test until bulletproof

**Deployment:**

  • [ ] Commit and push
  • [ ] Consider contributing via PR
Read more
Read it on GitHub ↗
Ships withed3d-plugins

This is my collection of plugins that I use on a day-to-day basis for getting stuff done with Claude Code. Most of these are development-oriented in some way or another, but also often end up being useful for other things.

Get the whole plugin, auto-invoked