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.

12 stars

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

$curl -o ~/.claude/skills/skill-writer/SKILL.md --create-dirs "https://raw.githubusercontent.com/coreyja/dotfiles/main/.claude/skills/skill-writer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/skill-writer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How skill-writer Compares

Feature / Agentskill-writerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

12
from coreyja/dotfiles

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

12
from coreyja/dotfiles

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

12
from coreyja/dotfiles

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

12
from coreyja/dotfiles

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

16
from plurigrid/asi

Assists in writing high-quality content by conducting research, adding

backlog-writer

16
from woojubb/robota

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

15
from Zerone-Agent/agent-use-skills

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

14
from nguyenthienthanh/aura-frog

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

13
from tae0y/python-project-template

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

13
from NickCrew/Claude-Cortex

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

13
from NickCrew/Claude-Cortex

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

12
from jackchuka/skills

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.