skill

Writing Skills

Use when creating new skills, editing existing skills, or verifying skills work before deployment

obra202,621+ installsVetted

About

# Writing Skills

## Overview

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

**Personal skills live in your runtime's skills directory** (`~/.claude/skills/` on Claude Code) — see [codex-tools.md](../using-superpowers/references/codex-tools.md) or [gemini-tools.md](../using-superpowers/references/gemini-tools.md) for the path on those runtimes. Codex, Copilot CLI, and Gemini CLI all also recognize `~/.agents/skills/` as a cross-runtime alias.

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:** For Anthropic's official skill authoring best practices, see anthropic-best-practices.md. 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 agents find and apply effective approaches.

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

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

## TDD Mapping for Skills

| TDD Concept | Skill Creation | |-------------|----------------| | **Test case** | Pressure scenario with subagent | | **Production code** | Skill document (SKILL.md) | | **Test fails (RED)** | Agent violates rule without skill (baseline) | | **Test passes (GREEN)** | Agent complies with skill present | | **Refactor** | Close loopholes while maintaining compliance | | **Write test first** | Run baseline scenario BEFORE writing skill | | **Watch it fail** | Document exact rationalizations agent uses | | **Minimal code** | Write skill addressing those specific violations | | **Watch it pass** | Verify agent now complies | | **Refactor cycle** | Find new rationalizations → plug → re-verify |

The entire skill creation process follows RED-GREEN-REFACTOR.

## 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 your instructions file) - Mechanical constraints (if it's enforceable with regex/validation, automate it—save documentation for judgment calls)

## Skill Types

### Technique Concrete method with steps to follow (condition-based-waiting, root-cause-tracing)

### Pattern Way of thinking about problems (flatten-with-flags, test-invariants)

### Reference API docs, syntax guides, tool documentation (office docs)

## Directory Structure

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

**Flat namespace** - all skills in one searchable namespace

**Separate files for:** 1. **Heavy reference** (100+ lines) - API docs, comprehensive syntax 2. **Reusable tools** - Scripts, utilities, templates

**Keep inline:** - Principles and concepts - Code patterns (< 50 lines) - Everything else

## SKILL.md Structure

**Frontmatter (YAML):** - Two required fields: `name` and `description` (see [agentskills.io/specification](https://agentskills.io/specification) for all supported fields) - Max 1024 characters total - `name`: Use letters, numbers, and hyphens only (no parentheses, special chars) - `description`: Third-person, describes ONLY when to use (NOT what it does) - Start with "Use when..." to focus on triggering conditions - Include specific symptoms, situations, and contexts - **NEVER summarize the skill's process or workflow** (see SDO section for why) - Keep under 500 characters if possible

```markdown --- name: Skill-Name-With-Hyphens description: Use when [specific triggering conditions and symptoms] ---

# 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 ```

## Skill Discovery Optimization (SDO)

**Critical for discovery:** Future agents need to FIND your skill

### 1. Rich Description Field

**Purpose:** Your agent reads the description

Install

Run this command

npx skills add obra/superpowers

Works with

claude appclaude codeclaude apicursorcodexwindsurfclinezed

Manual steps

Install with `npx skills add obra/superpowers`, or clone the repository and copy the `skills/writing-skills` folder into your Claude skills directory.

View source

Frequently asked questions

What is the Writing Skills skill?

Use when creating new skills, editing existing skills, or verifying skills work before deployment

How do I install Writing Skills?

Run this in your terminal:

npx skills add obra/superpowers
Which AI tools does Writing Skills work with?

It works with claude_app, claude_code, claude_api, cursor, codex, windsurf, cline, zed.

Who made Writing Skills?

obra.

Is Writing Skills free?

Yes, it is free to use.

Related assets

More curated picks in Content Creation.

All Writing Skills alternatives →

Audit before you install

Run any source through our checks - AI visibility, security, performance, and stack detection.

More in Content Creation