writing-skills

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "writing-skills" with this command: npx skills add zenobi-us/dotfiles/zenobi-us-dotfiles-writing-skills

Writing Skills

Overview

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

Personal skills live in agent-specific directories ($DOTFILE_REPO_ROOT/ai/files/skills )

Project skills live in .agents/skills/ .

You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes).

Core principle: If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.

REQUIRED BACKGROUND: You MUST understand superpowers:test-driven-development before using this skill. That skill defines the fundamental RED-GREEN-REFACTOR cycle. This skill adapts TDD to documentation.

Official guidance: Load the anthropic-best-practices resource from the writing-skills skill. This document provides additional patterns and guidelines that complement the TDD-focused approach in this skill.

What is a Skill?

A skill is a reference guide for proven techniques, patterns, or tools. Skills help future Claude instances find and apply effective approaches.

Skills are: Reusable techniques, patterns, tools, reference guides

Skills are NOT: Narratives about how you solved a problem once

First: Classify the Skill Type

Do this early, before writing sections.

Reference

Lookup material: APIs, syntax, command options, compatibility notes.

Workflow

Stepwise process to follow (often with gates/checklists).

Styleguide

Standards and conventions: naming, formatting, tone, structure.

Persona

Behavior profile for interaction style, priorities, and boundaries.

Technique/Pattern

Method or mental model for solving recurring problems.

If a skill spans multiple types, run this decision flow:

  • Ask intent first: Ask the user whether the multi-type scope is intentional, or whether they want to split the concept into separate focused skills.

  • If not splitting: Continue with one skill. Pick a primary type, make it explicit in the overview, and continue RED/GREEN/REFACTOR testing.

  • If splitting: Analyze the concept and propose multiple splice options (for example by audience, lifecycle phase, problem type, or artifact type).

  • Collaborate to choose: Work with the user to select the preferred split. Then produce temporary prompts for separate sessions, one prompt per new skill, each explicitly instructing the session to use this writing-skills skill.

TDD Mapping for Skills

For detailed TDD mapping table and concepts, load the tdd-mapping resource from the writing-skills skill.

Core concept: The entire skill creation process follows RED-GREEN-REFACTOR, adapting TDD's cycle to documentation.

When to Create a Skill

Create when:

  • Technique wasn't intuitively obvious to you

  • You'd reference this again across projects

  • Pattern applies broadly (not project-specific)

  • Others would benefit

Don't create for:

  • One-off solutions

  • Standard practices well-documented elsewhere

  • Project-specific conventions (put in CLAUDE.md)

Directory Structure

skills/ skill-name/ SKILL.md references/ extra-file.md scripts/ codified-helper.sh known-steps-cli.js assets/ possibly-a-circle-mask.png maybe-a-logo.png

Rule: A skill directory contains only SKILL.md .

Put everything else in categorized sibling folders:

  • references/ for heavy docs, guides, tables

  • scripts/ for executable helpers and generators

  • assets/ for diagrams, images, static files

Flat namespace - all skills in one searchable namespace

Keep inline in SKILL.md whenever possible:

  • Principles and concepts

  • Short code patterns (< 50 lines)

  • Decision criteria and anti-patterns

SKILL.md Structure

Frontmatter (YAML):

  • Only two fields supported: name and description

  • Max 1024 characters total

  • name : Use letters, numbers, and hyphens only (no parentheses, special chars). Must match the folder name.

  • description : Third-person, written as: {what it does}, {when to use it}, {what the result is}

  • Keep it concrete and searchable (symptoms, contexts, outcomes)

  • Avoid vague language and hype

  • Keep under 500 characters if possible


name: Skill-Name-With-Hyphens description: [what it does], [when to use it], [what the result is]

Skill Name

Overview

What is this? Core principle in 1-2 sentences.

When to Use

[Small inline flowchart IF decision non-obvious]

Bullet list with SYMPTOMS and use cases When NOT to use

Core Pattern (for techniques/patterns)

Before/after code comparison

Quick Reference

Table or bullets for scanning common operations

Implementation

Inline code for simple patterns Link to file for heavy reference or reusable tools

Common Mistakes

What goes wrong + fixes

Real-World Impact (optional)

Concrete results

Claude Search Optimization (CSO)

For comprehensive CSO guidance including description patterns, keyword coverage, and naming conventions, load the cso-guide resource from the writing-skills skill.

Key principles:

  • Description format: {what it does}, {when to use it}, {what the result is}

  • Write in third person for system prompt injection

  • Use concrete triggers, symptoms, and outcomes

  • Include searchable keywords: error messages, symptoms, tools

Flowchart Usage

Use flowcharts ONLY for:

  • Non-obvious decision points

  • Process loops where you might stop too early

  • "When to use A vs B" decisions

Never use flowcharts for:

  • Reference material → Tables, lists

  • Code examples → Markdown blocks

  • Linear instructions → Numbered lists

For graphviz style conventions, load the graphviz-conventions resource from the writing-skills skill.

Visualizing for your human partner: Use render-graphs.js from scripts/writing-skills/ to render flowcharts to SVG:

./scripts/writing-skills/render-graphs.js ./skills/some-skill # Each diagram separately ./scripts/writing-skills/render-graphs.js ./skills/some-skill --combine # All diagrams in one SVG

Code Examples

One excellent example beats many mediocre ones

Choose most relevant language:

  • Testing techniques → TypeScript/JavaScript

  • System debugging → Shell/Python

  • Data processing → Python

Good example:

  • Complete and runnable

  • Well-commented explaining WHY

  • From real scenario

  • Shows pattern clearly

  • Ready to adapt (not generic template)

Don't:

  • Implement in 5+ languages

  • Create fill-in-the-blank templates

  • Write contrived examples

You're good at porting - one great example is enough.

File Organization

Self-Contained Skill

skills/defense-in-depth/ SKILL.md

When: All content fits inline.

Skill with Reusable Tool

skills/condition-based-waiting/ SKILL.md scripts/condition-based-waiting/ example.ts

When: Tooling is reusable code.

Skill with Heavy Reference

skills/pptx/ SKILL.md references/pptx/ pptxgenjs.md ooxml.md scripts/pptx/ render-slides.js assets/pptx/ diagrams/

When: Reference material is too large for inline docs.

Invariant: skills/<skill-name>/ contains SKILL.md only.

The Iron Law (Same as TDD)

NO SKILL WITHOUT A FAILING TEST FIRST

This applies to NEW skills AND EDITS to existing skills.

Write skill before testing? Delete it. Start over. Edit skill without testing? Same violation.

No exceptions:

  • Not for "simple additions"

  • Not for "just adding a section"

  • Not for "documentation updates"

  • Don't keep untested changes as "reference"

  • Don't "adapt" while running tests

  • Delete means delete

REQUIRED BACKGROUND: The superpowers:test-driven-development skill explains why this matters. Same principles apply to documentation.

Testing All Skill Types

For comprehensive testing methodology by skill type, load the testing-methodology resource from the writing-skills skill.

Quick reference:

  • Discipline-enforcing skills: Test under pressure (time, sunk cost, exhaustion)

  • Technique skills: Test application scenarios and edge cases

  • Pattern skills: Test recognition and counter-examples

  • Reference skills: Test retrieval and correct application

Critical principle: Test before deploying. No exceptions.

Bulletproofing Skills Against Rationalization

For detailed strategies on closing loopholes and addressing rationalizations in discipline-enforcing skills, load the rationalization-patterns resource from the writing-skills skill.

Key principles:

  • Close every loophole explicitly - forbid specific workarounds

  • Address "spirit vs letter" arguments with foundational principles

  • Build rationalization tables from baseline testing

  • Create red flags lists for self-checking

  • Update description with violation symptoms

RED-GREEN-REFACTOR for Skills

Follow the TDD cycle:

RED: Write Failing Test (Baseline) - Run pressure scenario with subagent WITHOUT the skill. Document exact behavior, rationalizations, and which pressures triggered violations.

GREEN: Write Minimal Skill - Write skill addressing those specific rationalizations. Run same scenarios WITH skill. Agent should now comply.

REFACTOR: Close Loopholes - Agent found new rationalization? Add explicit counter. Re-test until bulletproof.

For complete testing methodology including pressure types and meta-testing techniques, load the testing-methodology resource from the writing-skills skill.

Anti-Patterns

❌ Narrative Example

"In session 2025-10-03, we found empty projectDir caused..." Why bad: Too specific, not reusable

❌ Multi-Language Dilution

example-js.js, example-py.py, example-go.go Why bad: Mediocre quality, maintenance burden

❌ Code in Flowcharts

step1 [label="import fs"]; step2 [label="read file"];

Why bad: Can't copy-paste, hard to read

❌ Generic Labels

helper1, helper2, step3, pattern4 Why bad: Labels should have semantic meaning

STOP: Before Moving to Next Skill

After writing ANY skill, you MUST STOP and complete the deployment process.

Do NOT:

  • Create multiple skills in batch without testing each

  • Move to next skill before current one is verified

  • Skip testing because "batching is more efficient"

Deploying untested skills = deploying untested code.

Skill Creation Checklist (TDD Adapted)

For the complete checklist with all RED-GREEN-REFACTOR phases and quality checks, load the skill-checklist resource from the writing-skills skill.

Use TodoWrite to create todos for EACH checklist item.

Quick summary:

  • RED Phase: Create pressure scenarios, run baseline WITHOUT skill

  • GREEN Phase: Write minimal skill, run scenarios WITH skill

  • REFACTOR Phase: Close loopholes, re-test until bulletproof

  • Deployment: Commit, consider PR for broadly useful skills

Discovery Workflow

How future Claude finds your skill:

  • Encounters problem ("tests are flaky")

  • Finds SKILL (description matches)

  • Scans overview (is this relevant?)

  • Reads patterns (quick reference table)

  • Loads example (only when implementing)

Optimize for this flow - put searchable terms early and often.

The Bottom Line

Creating skills IS TDD for process documentation.

Same Iron Law: No skill without failing test first. Same cycle: RED (baseline) → GREEN (write skill) → REFACTOR (close loopholes). Same benefits: Better quality, fewer surprises, bulletproof results.

If you follow TDD for code, follow it for skills. It's the same discipline applied to documentation.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

ast-grep-code-analysis

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

codemapper

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

subagent-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

test-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review