skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
What this skill does
# Skill Creator for Claude Code
Guide for creating skills in Claude Code's skill directory.
## About Skills
Skills are modular packages providing specialized knowledge, workflows, and tools. Transform Claude from general to specialized agent with procedural knowledge.
### What Skills Provide
1. Specialized workflows - Multi-step procedures
2. Tool integrations - File formats, APIs
3. Domain expertise - Schemas, business logic
4. Bundled resources - Scripts, references, assets
## Core Principles
### Concise is Key
Context window is public good. Only add what Claude doesn't know. Challenge each piece: "Does Claude need this?"
Default: Claude is smart. Add only non-obvious info.
### Set Appropriate Degrees of Freedom
**High freedom (text)**: Multiple valid approaches, context-dependent
**Medium freedom (pseudocode/params)**: Preferred pattern, some variation
**Low freedom (scripts)**: Fragile operations, consistency critical
### Critical Structure Requirements
**MANDATORY:** Every skill MUST be structured as a directory, NOT a single file.
**Required structure:**
- Directory named `skill-name/` (lowercase letters, numbers, hyphens only)
- Containing `SKILL.md` file (UPPERCASE, exactly this filename)
**Correct examples:**
- ✅ `git-commit/SKILL.md`
- ✅ `pdf-processing/SKILL.md`
- ✅ `data-analyzer/SKILL.md`
**Wrong examples:**
- ❌ `git-commit.md` (single file, not directory)
- ❌ `git-commit/skill.md` (lowercase)
- ❌ `git-commit/README.md` (wrong filename)
### Anatomy
```
skill-name/
├── SKILL.md (required - UPPERCASE)
│ ├── YAML frontmatter (name, description)
│ └── Markdown instructions
├── reference.md (optional - root-level docs)
├── examples.md (optional - root-level docs)
├── scripts/ (optional)
│ └── helper.py - Executable code
└── templates/ (optional)
└── template.txt - Files used in output
```
#### SKILL.md (required)
- **Frontmatter** (YAML): `name` and `description` - triggers when Claude uses skill
- **Body** (Markdown): Instructions for using skill
#### Bundled Resources (optional)
**Scripts** (`scripts/`) - Executable code for deterministic/repeated tasks
- Token efficient, deterministic
- May execute without loading to context
- Examples: `scripts/rotate_pdf.py`, `scripts/fill_form.py`
**Reference docs** (root-level `.md` files) - Docs loaded as needed
- Database schemas, API docs, detailed workflows
- Keeps SKILL.md lean
- Load only when Claude determines needed
- Examples: `reference.md`, `api_docs.md`, `workflows.md`
- **Note:** These are individual files at root, NOT in a `references/` subdirectory
**Templates** (`templates/`) - Files used in output, not loaded to context
- Templates, boilerplate code, starter files
- Used in final output by copying/modifying
- Examples: `templates/starter-project/`, `templates/document.docx`
#### What NOT to Include
No auxiliary docs:
- README.md
- INSTALLATION_GUIDE.md
- QUICK_REFERENCE.md
- CHANGELOG.md
Only info needed for AI agent to work.
### Progressive Disclosure
Three-level loading:
1. **Metadata** - Always in context (~100 words)
2. **SKILL.md body** - When triggered (<5k words)
3. **Bundled resources** - As needed (unlimited)
Keep SKILL.md <500 lines. Split when approaching limit.
**Pattern: High-level guide with references**
```markdown
## Quick start
[core example]
## Advanced
- **Forms**: See ./forms.md
- **API**: See ./api-reference.md
```
## Skill Creation Process
1. Understand skill with concrete examples
2. Plan reusable contents (scripts, references, assets)
3. Initialize skill (run init_skill.py)
4. Edit skill (implement resources, write SKILL.md)
5. Iterate based on usage
### Step 1: Understanding with Concrete Examples
Skip if usage patterns clear.
Ask for concrete examples:
- "What functionality should skill support?"
- "Examples of usage?"
- "What triggers this skill?"
Avoid overwhelming - ask most important questions first.
Conclude when functionality clear.
### Step 2: Planning Reusable Contents
Analyze each example:
1. How to execute from scratch?
2. What scripts/references/assets help?
**Example: pdf-editor**
- Query: "Rotate this PDF"
- Analysis: Same code each time → `scripts/rotate_pdf.py`
**Example: frontend-webapp-builder**
- Query: "Build todo app"
- Analysis: Same boilerplate → `templates/hello-world/` starter project
**Example: big-query**
- Query: "How many users logged in today?"
- Analysis: Re-discovering schemas → `schema.md` (root-level reference)
Output: List of reusable resources needed.
### Step 3: Initialize Skill
Skip if skill exists.
Run init script from repo root:
```bash
python3 ./skills/skill-creator/scripts/init_skill.py <skill-name> --path <output-directory>
```
Example:
```bash
python3 ./skills/skill-creator/scripts/init_skill.py brainwriting --path ./.claude/skills
```
Creates:
- Skill directory
- SKILL.md template with frontmatter
- Example resource directories
- Example files (customize/delete)
### Step 4: Edit Skill
#### Learn Patterns
Consult:
- **Multi-step processes**: workflows.md
- **Output formats**: output-patterns.md
#### Start with Resources
Implement resources first: scripts, reference docs, templates.
May need user input (brand assets, docs).
Test scripts - run to verify no bugs.
Delete unused example files.
#### Update SKILL.md
**Writing**: Use imperative/infinitive form.
**Frontmatter**:
- `name`: Skill name
- `description`: What it does + when to use. Specific, comprehensive, direct. Claude uses this to choose from 100+ skills.
**Body**: Instructions for using skill and resources.
Script will:
1. **Validate** skill (YAML, structure, naming, descriptions)
Default priority:
1. `./.claude/skills/` (project-local)
2. `~/.claude/skills/` (user-global)
3. Custom path if specified
Validation checks:
- YAML frontmatter format, required fields
- Naming conventions, directory structure
- Description quality
- File organization, resource references
If validation fails, fix errors and re-run.
### Step 6: Iterate
Test skill on real tasks.
Notice struggles → identify improvements → implement → test.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.