skill-writer
Create and maintain well-structured Claude Code skills. Use when creating, updating, or improving skills in .claude/skills/.
When & Why to Use This Skill
The Skill Writer is a specialized utility designed to streamline the creation, maintenance, and optimization of custom agent capabilities within the Claude Code ecosystem. It enforces a standardized structure for skills located in the `.claude/skills/` directory, ensuring they are highly discoverable through semantic matching and provide actionable, high-quality code patterns. By guiding the development of modular and resource-backed instructions, it helps developers build more reliable, context-aware, and efficient AI coding assistants.
Use Cases
- Standardizing Team Workflows: Create and maintain consistent coding standards and architectural patterns across a development team by generating structured skill files that the AI can follow.
- Onboarding New Technologies: Quickly bootstrap agent skills for specific frameworks (e.g., FastAPI, HTMX, or SQLAlchemy) to improve Claude's accuracy and performance in those domains.
- Optimizing Agent Context: Refactor large, monolithic instruction sets into modular, resource-backed skills to improve token efficiency and ensure the AI only loads relevant information.
- Improving Skill Discovery: Fine-tune semantic matching descriptions and activation triggers to ensure the AI agent correctly identifies and applies the right skill for specific user prompts.
- Maintaining Documentation as Code: Keep technical references and code examples up-to-date within the agent's environment, ensuring the AI always suggests the latest best practices.
| name | skill-writer |
|---|---|
| description | Create and maintain well-structured Claude Code skills. Use when creating, updating, or improving skills in .claude/skills/. |
Skill Writer
Guide for creating and maintaining Agent Skills for Claude Code.
When to Use
- Creating a new skill
- Improving an existing skill
- Adding resources to a skill
Skill Structure
.claude/skills/[skill-name]/
├── SKILL.md # Main skill file (required)
└── resources/ # Supporting files (optional)
├── patterns.md # Code patterns
├── examples.md # Working examples
└── reference.md # API reference
SKILL.md Format
Frontmatter (Required)
---
name: skill-name # lowercase, hyphens, max 64 chars
description: Brief description of what this skill does and when to use it. Max 1024 chars.
---
Content Structure
# Skill Title
**Activation:** Keywords that trigger this skill
## Overview
Brief explanation of the skill's purpose.
## Key Patterns
Code patterns with examples.
## Common Tasks
Step-by-step for frequent operations.
## Resources
Link to resources/ files for deep dives.
Writing Effective Skills
1. Clear Activation Triggers
Include keywords in the description and first section:
**Activation:** FastAPI, SQLAlchemy, async Python, database operations
2. Concise Main File
- Keep SKILL.md under 500 lines
- Put detailed reference in resources/
- Focus on "what to do" not "what it is"
3. Working Examples
# GOOD: Complete, copy-paste ready
@router.get("/items/{id}")
async def get_item(
id: int,
db: Annotated[AsyncSession, Depends(get_db)],
) -> Item:
item = await db.get(Item, id)
if not item:
raise HTTPException(status_code=404)
return item
# BAD: Pseudocode
def get_item(id):
# query database
# return item
4. Progressive Disclosure
Main file → Quick patterns Resources → Deep dives, edge cases, full API
5. Actionable Instructions
# GOOD
Use `selectinload()` to eager-load relationships:
```python
stmt = select(User).options(selectinload(User.posts))
BAD
Consider using eager loading for better performance.
## Skill Activation
Claude Code activates skills automatically via **semantic matching** of the YAML frontmatter:
1. **name** - The skill identifier
2. **description** - Describes what the skill does and when to use it
When a user's prompt matches the description semantically, Claude loads and applies the skill.
**Best practices for descriptions:**
- Include specific keywords users would say
- Mention technologies/frameworks covered
- Keep under 1024 characters
Example:
```yaml
---
name: frontend-dev
description: Jinja2 SSR pages with HTMX for interactivity, Alpine.js for UI state, and Tailwind CSS for styling. React islands only for complex interactive components (SignalChainBuilder).
---
This activates when users mention "Jinja2 template", "HTMX", "Alpine.js", "Tailwind", etc.
Skill Creation Checklist
- Created
SKILL.mdwith frontmatter - Description includes trigger keywords
- Examples are complete and tested
- Under 500 lines (use resources/ for more)
- Tested activation with relevant prompts
Updating Existing Skills
- Read current SKILL.md
- Identify what's missing or outdated
- Update patterns to latest versions
- Add new examples if needed
- Update description in frontmatter if activation triggers changed
This Project's Skills
| Skill | Purpose | Key Technologies |
|---|---|---|
| backend-dev | API development | FastAPI, SQLAlchemy 2.0, Pydantic v2 |
| frontend-dev | UI development | Jinja2, HTMX, Alpine.js, Tailwind |
| frontend-design | UI design principles | Visual patterns, color, typography |
| ui-design-system | Design tokens and styling | Color palette, spacing, shadows |
| playwright | Browser automation | Playwright, MCP tools |
| screenshot-eval | Screenshot evaluation | Error detection, visual verification |
| pipeline-dev | Audio/video processing | NAM, Pedalboard, FFmpeg |
| testing | Test development | pytest, fixtures, mocking |
| docker-infra | Container management | Docker, Docker Compose |
| micro-task-workflow | Task execution patterns | Context budget, escape protocols |
| worktree-cli | Worktree management | Git worktrees, Docker isolation |
| skill-writer | Skill creation | This skill |