skill-writer
Create and improve Claude Code skills. Use when drafting new skills, writing SKILL.md files, improving skill descriptions, or structuring skill directories. Triggers on requests to create skills, write skills, draft skills, improve skill triggering, or fix skills that aren't activating.
Best use case
skill-writer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create and improve Claude Code skills. Use when drafting new skills, writing SKILL.md files, improving skill descriptions, or structuring skill directories. Triggers on requests to create skills, write skills, draft skills, improve skill triggering, or fix skills that aren't activating.
Teams using skill-writer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/skill-writer/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How skill-writer Compares
| Feature / Agent | skill-writer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create and improve Claude Code skills. Use when drafting new skills, writing SKILL.md files, improving skill descriptions, or structuring skill directories. Triggers on requests to create skills, write skills, draft skills, improve skill triggering, or fix skills that aren't activating.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Writing Claude Code Skills Skills are directories that teach Claude how to perform specialized tasks. Claude discovers them automatically based on description matching—no manual invocation needed. ## File Structure ``` ~/.claude/skills/skill-name/ ├── SKILL.md # Required - frontmatter + instructions ├── reference.md # Optional - detailed docs loaded on-demand ├── examples.md # Optional - usage examples └── scripts/ # Optional - executable utilities ``` **Location determines scope:** - `~/.claude/skills/` - Personal, works across all projects - `.claude/skills/` - Project-specific, committed to repo ## SKILL.md Format ```yaml --- name: lowercase-with-hyphens description: What this does and when Claude should use it. Max 1024 chars. allowed-tools: [Read, Grep, Glob] # Optional - restrict available tools model: haiku # Optional - specify model --- # Skill Title Instructions in markdown... ``` ### Required Fields | Field | Rules | |-------|-------| | `name` | Lowercase, hyphens only, max 64 chars | | `description` | Max 1024 chars, this is how Claude decides to trigger | ### Optional Fields | Field | Purpose | |-------|---------| | `allowed-tools` | Restrict what Claude can do (e.g., read-only skills) | | `model` | Force a specific model for this skill | ## The Description is Everything Claude triggers skills via semantic matching against descriptions. A vague description means the skill won't fire. **Bad:** "Helps with documents" **Good:** "Extract text and tables from PDFs, fill PDF forms, merge PDF files. Use when working with PDF documents, document extraction, or form filling." A strong description answers: 1. **What specific actions does this skill enable?** (use concrete verbs: extract, create, validate, deploy) 2. **What words would naturally appear in a request?** (domain terms, file types, tool names) 3. **What are the boundaries?** (what this skill does NOT do, if ambiguous) ### Description Patterns That Work ```yaml # Action-focused description: Generate database migrations for PostgreSQL. Use when creating tables, adding columns, or modifying schemas. # Tool-focused description: Work with Axum web framework in Rust. Handles routing, extractors, state management, and middleware configuration. # Workflow-focused description: Deploy to production. Runs tests, builds assets, pushes to registry, and updates infrastructure. ``` ## Progressive Disclosure Keep `SKILL.md` under 500 lines. Put detailed reference material in separate files: ```markdown # Main Skill Content Core instructions here... For API reference, see [reference.md](reference.md). For examples, see [examples.md](examples.md). ``` Claude loads supporting files only when the task requires them—keeps context focused. **Rules:** - Keep references one level deep (A links to B, not B links to C) - Scripts in `scripts/` are executed, not loaded into context - Link supporting files explicitly so Claude knows they exist ## Writing Good Instructions **Assume Claude is smart.** Don't over-explain. Only add context Claude genuinely needs. **Use appropriate freedom levels:** - **High freedom** (text instructions): When multiple approaches are valid - **Medium freedom** (pseudocode): When preferred patterns exist - **Low freedom** (exact scripts): When operations are fragile or must be consistent **Structure instructions with:** - Clear headers for different concerns - Bullet points for steps/rules - Code blocks for exact commands or patterns - Examples showing expected input/output ## Testing Skills Before relying on a skill, test three scenarios: 1. **Normal case** - Typical request that should trigger it 2. **Edge case** - Unusual or incomplete input 3. **Out-of-scope** - Related request that should NOT trigger it If the skill isn't triggering: - Description is too vague—add specific verbs and domain terms - Conflicting with another skill—differentiate trigger terms If the skill triggers when it shouldn't: - Description is too broad—add boundaries - Add "Do NOT use for..." statements ## Skills vs Other Customization | Approach | Trigger | Use Case | |----------|---------|----------| | **Skills** | Auto (Claude chooses) | Specialized workflows with supporting files | | **Slash commands** | Manual (`/command`) | Guaranteed execution, simple prompts | | **CLAUDE.md** | Always loaded | Project-wide rules, always-on context | | **Subagents** | Delegated | Isolated context for research-heavy tasks | **Choose skills when:** - The workflow benefits from supporting files (docs, scripts, templates) - Claude should recognize when to apply it automatically - The task is domain-specific but recurs across projects **Choose slash commands when:** - You need guaranteed execution (skills might not trigger) - It's a simple prompt without supporting files - Terminal discoverability matters (`/` autocomplete) ## Common Patterns ### Read-Only Skills ```yaml allowed-tools: [Read, Grep, Glob, WebFetch] ``` Prevents accidental writes when skill is for analysis/research. ### Domain Expert Skills ```yaml --- name: sqlx-expert description: Work with SQLx in Rust. Handles queries, migrations, compile-time checking, and connection pooling. Use for database code in Rust projects using SQLx. --- # SQLx Patterns [Core patterns and gotchas] For migration guide, see [migrations.md](migrations.md). For query patterns, see [queries.md](queries.md). ``` ### Workflow Skills ```yaml --- name: deploy-production description: Deploy to production environment. Runs full test suite, builds release artifacts, and deploys to infrastructure. Use when shipping to prod. allowed-tools: [Read, Bash, Grep, Glob] --- # Production Deploy ## Pre-flight Checks - [ ] All tests pass - [ ] No uncommitted changes - [ ] On main branch ## Steps 1. Run test suite: `cargo test --release` 2. Build: `cargo build --release` 3. Deploy: `./scripts/deploy.sh` ``` ## Checklist for New Skills - [ ] Directory created in `~/.claude/skills/skill-name/` - [ ] `SKILL.md` has valid YAML frontmatter - [ ] `name` is lowercase-with-hyphens, max 64 chars - [ ] `description` is specific with action verbs and domain terms - [ ] Instructions are concise (Claude is smart) - [ ] Supporting files linked if over 500 lines - [ ] Tested with normal, edge, and out-of-scope requests
Related Skills
rust-github-ci
Set up GitHub Actions CI for Rust projects. Creates reusable workflows for clippy, rustfmt, tests, cargo-deny, and sqlx. Use when setting up CI, adding GitHub workflows, configuring Rust pipelines, or fixing CI issues in Rust projects.
jj
Use Jujutsu (jj) for version control. Covers workflow, commits, bookmarks, pushing to GitHub, absorb, squash, and stacked PRs. Use when working with jj, creating commits, pushing changes, or managing version control.
claude-code-automation
Run Claude Code programmatically in headless mode or via bidirectional stream-json protocol. Use when building agents, automating Claude, running headless Claude, implementing multi-turn conversations, or integrating Claude CLI into applications.
bake-site-compare
Compare production WordPress sites against their baked static versions to find differences. Use when testing Bake deployments, checking for missing assets, broken styles, console errors, or any visual/functional discrepancies between production and static sites. Triggers on requests to compare sites, verify bake output, check for differences, or test static deployments.
content-research-writer
Assists in writing high-quality content by conducting research, adding
backlog-writer
Guides authoring of a new spec document. Ensures every required section is present and meets minimum quality before the item enters the gate pipeline. Does not validate gates or make approval decisions.
content-research-writer
Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section. Transforms your writing process from solo effort to collaborative partnership.
test-writer
Write tests with TDD following structured patterns. Ensures consistent AAA structure, proper coverage targets, and framework-specific conventions. Without this skill, tests lack consistent naming, miss coverage targets, and skip anti-pattern checks.
technical-writer
Elite technical content evaluator and curriculum architect for reviewing technical training materials, documentation, and educational content. Use when evaluating course quality, reviewing technical docs, assessing pedagogical value, auditing exercises for actionability, grading educational content A-F, or identifying documentation wrappers disguised as courses.
ux-writer
Use this skill when crafting microcopy, UI text, or in-product writing—error messages, tooltips, button labels, empty states, onboarding flows, and confirmation dialogs. Trigger phrases: 'write microcopy for', 'write UI copy', 'write error messages', 'write onboarding text', 'button label for'. Do NOT use for marketing copy (use copywriter) or long-form documentation (use technical-writer).
copywriter
Use this skill when writing persuasive, conversion-focused copy—landing pages, product descriptions, ads, sales emails, or any content designed to move someone to action. Trigger phrases: 'write copy for my landing page', 'describe this product', 'write an ad for'. Do NOT use for informational content, technical documentation, or long-form editorial writing.
p-blog-writer
Write blog posts in {user_name}'s voice with theoretical depth and persuasive arguments. Iterative workflow: intake → outline → section-by-section expansion → polish. Adapts to tool announcements, opinion pieces, deep-dives, and tutorials. Use when the user says "/blog-writer", "write a blog post", "draft an article about", "help me write about", or wants to create blog content.