skill-creator
Use when creating new skills, updating existing skills, or understanding skill structure. Triggers: "create a skill", "write a skill", "new skill for", "skill that does", "how do skills work". Provides complete workflow from concept to deployment with progressive disclosure.
What this skill does
# Skill Creator
Create effective, well-structured skills for Claude Code and OpenCode.
## Quick Start
1. **Run init script**: `bash scripts/init_skill.sh <skill-name> [output-dir]`
2. **Edit SKILL.md**: Fill in frontmatter and instructions
3. **Add resources**: scripts/, references/, assets/ as needed
4. **Test**: Run skill in context to verify behavior
## Skill Anatomy
```
skill-name/
├── SKILL.md # Required - frontmatter + instructions
├── scripts/ # Executable code (Python/Bash)
├── references/ # Documentation loaded on-demand
└── assets/ # Templates, images, static files
```
**Frontmatter** (YAML) - only two fields:
- `name`: Lowercase, hyphens, max 64 chars (must match directory name)
- `description`: What it does + when to use it, max 1024 chars
For complete structure details, see [references/skill-anatomy.md](references/skill-anatomy.md).
## Core Workflow
### Step 1: Define Purpose
Answer these questions:
- What problem does this skill solve?
- What triggers should activate it? (error messages, keywords, scenarios)
- What does Claude need to know that isn't obvious?
### Step 2: Initialize Skill
```bash
# Create new skill with proper structure
bash scripts/init_skill.sh my-skill-name ~/.claude/skills
# Or manually:
mkdir -p ~/.claude/skills/my-skill-name
touch ~/.claude/skills/my-skill-name/SKILL.md
```
### Step 3: Write Frontmatter
```yaml
---
name: my-skill-name
description: |
Use when [specific triggers and symptoms].
Provides [what it does] for [use case].
---
```
**Critical**: Description is the PRIMARY trigger mechanism. Include:
- Concrete triggers ("Use when...")
- Problem symptoms (error messages, scenarios)
- Keywords Claude might search for
### Step 4: Write Body
**Keep SKILL.md lean** (<500 lines, ~1500-2000 words):
- Overview: Core principle in 1-2 sentences
- Quick reference: Table/bullets for scanning
- Workflow steps: What to do, in order
- Pointers to references/ for detailed content
### Step 5: Add Resources (Optional)
| Type | Location | When to Use |
|------|----------|-------------|
| Scripts | `scripts/` | Deterministic operations, reusable code |
| References | `references/` | Detailed docs, API specs, schemas |
| Assets | `assets/` | Templates, images, static files |
### Step 6: Test and Iterate
1. Use the skill in a real scenario
2. Note what's unclear or missing
3. Update and re-test
4. Repeat until bulletproof
## Progressive Disclosure
Skills use three-level loading to conserve context:
| Level | What Loads | When |
|-------|------------|------|
| Metadata | name + description (~100 words) | Always in context |
| SKILL.md body | Instructions (<5k words) | When skill triggers |
| Resources | scripts/, references/, assets/ | When explicitly needed |
**Key principle**: Only load what's needed. Reference files from SKILL.md clearly:
```markdown
For API details, see [references/api.md](references/api.md).
For form handling, see [references/forms.md](references/forms.md).
```
## Description Writing
The description field is CRITICAL for skill discovery.
**Pattern**: `Use when [triggers] - [what it provides]`
```yaml
# Bad - vague, no triggers
description: Helps with testing
# Bad - implementation details, not triggers
description: Uses Jest and React Testing Library
# Good - specific triggers + value
description: |
Use when tests fail intermittently, have race conditions, or
timing dependencies - provides condition-based polling patterns
that replace arbitrary timeouts.
```
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Everything in SKILL.md | Move detailed content to references/ |
| Vague description | Add specific triggers and symptoms |
| No "Use when" triggers | Description must tell Claude WHEN to use it |
| Deeply nested references | Keep references one level from SKILL.md |
| Missing cross-references | Point to references/ files explicitly |
## Resources
- [references/skill-anatomy.md](references/skill-anatomy.md) - Complete structure documentation
- [references/best-practices.md](references/best-practices.md) - Anthropic guidelines and patterns
- [references/examples.md](references/examples.md) - Annotated skill examples
- [scripts/init_skill.sh](scripts/init_skill.sh) - Skill scaffolding script
- [assets/skill-template.md](assets/skill-template.md) - Copy-paste starter template
## Checklist
Before deploying a skill:
- [ ] `name` in frontmatter matches directory name
- [ ] `description` starts with "Use when..." and includes triggers
- [ ] SKILL.md body is <500 lines
- [ ] Detailed content moved to references/
- [ ] References/ files linked from SKILL.md
- [ ] Tested in real scenario
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.