--- description: Generate a new Claude Skill with proper structure and YAML frontmatter using official documentation as reference argument-hint: [skill-name] [description] --- # /create-skill ## Purpose Generate a new Claude Skill with proper structure and YAML frontmatter using official documentation as reference ## Contract **Inputs:** - `$1` — SKILL_NAME (lowercase, kebab-case, max 64 characters) - `$2` — DESCRIPTION (what the skill does and when to use it, max 1024 characters) - `--personal` — create in ~/.claude/skills/ (default) - `--project` — create in .claude/skills/ **Outputs:** `STATUS= PATH=` ## Instructions 1. **Validate inputs:** - Skill name: lowercase letters, numbers, hyphens only (max 64 chars) - Description: non-empty, max 1024 characters, no angle brackets (< or >) - Description should include both WHAT the skill does and WHEN to use it - If user provides additional frontmatter properties, validate against allowed list: - **Allowed:** name, description, license, allowed-tools, metadata - **Warning** (not error) for unexpected properties like version, author, tags - Inform user that unexpected properties may cause issues during packaging 2. **Determine target directory:** - Personal (default): `~/.claude/skills/{{SKILL_NAME}}/` - Project: `.claude/skills/{{SKILL_NAME}}/` 3. **Check if skill already exists:** - If exists: output `STATUS=EXISTS PATH=` and stop 4. **Analyze what bundled resources this skill needs:** Based on the skill name and description, intelligently determine which bundled resources would be valuable: **Create scripts/ directory when:** - Skill involves file manipulation (PDF, images, documents, etc.) - Skill requires deterministic operations (data processing, conversions) - Same code would be rewritten repeatedly - Examples: pdf-editor, image-processor, data-analyzer, file-converter **Create references/ directory when:** - Skill needs reference documentation (API docs, schemas, specifications) - Detailed information would make SKILL.md too long (>5k words) - Domain knowledge needs to be documented (company policies, standards) - Examples: api-client, database-query, brand-guidelines, coding-standards **Create assets/ directory when:** - Skill uses templates or boilerplate code - Skill needs brand assets (logos, fonts, images) - Skill creates documents from templates (presentations, reports) - Examples: frontend-builder, brand-guidelines, document-generator, presentation-maker **Questions to ask user for clarification (only if unclear):** - "Will this skill need to run any scripts repeatedly?" (→ scripts/) - "Does this skill need reference documentation like API docs or schemas?" (→ references/) - "Will this skill use templates or assets like logos/fonts/boilerplate?" (→ assets/) **Communicate the decision:** After analysis, inform the user which directories will be created and why: - Example: "Based on the description, I'll create scripts/ for PDF manipulation utilities and references/ for schema documentation." - Be transparent about the reasoning - It's better to include a directory with placeholders than to omit one that might be needed 5. **Create skill directory structure based on analysis:** Always create: ``` {{SKILL_NAME}}/ └── SKILL.md (required) ``` Conditionally create based on Step 4 analysis: ``` ├── scripts/ (if determined needed) │ └── example.py (executable placeholder with TODO) ├── references/ (if determined needed) │ └── README.md (documentation placeholder with guidance) └── assets/ (if determined needed) └── README.md (asset placeholder with examples) ``` 6. **Generate SKILL.md using this template:** ```markdown --- name: {{SKILL_NAME}} description: {{DESCRIPTION}} # Optional fields (uncomment if needed): # allowed-tools: ["Read", "Write", "Bash"] # Restrict to specific tools # metadata: # category: "development" # version: "1.0.0" # For tracking in your project # license: "MIT" # For shared skills --- # {{Title Case Skill Name}} ## Overview [TODO: 1-2 sentences explaining what this skill does and why it's valuable] ## When to Use [TODO: Specific triggers and scenarios where this skill should be invoked] ## Structuring This Skill Choose an organizational pattern: **Workflow-Based** (sequential) - TDD workflows, git commits, deployments - Structure: Overview → Step 1 → Step 2 → Step 3... **Task-Based** (operations) - File tools, API operations, data transforms - Structure: Overview → Quick Start → Operation A → Operation B... **Reference-Based** (guidelines) - Brand standards, coding rules, checklists - Structure: Overview → Guidelines → Specifications → Examples **Capabilities-Based** (integrated) - Product management, debugging, systems - Structure: Overview → Core Capabilities → Feature 1 → Feature 2... Patterns can be mixed. Delete this section after choosing. [TODO: Delete this "Structuring This Skill" section after choosing your approach] ## Instructions [TODO: Provide clear, step-by-step guidance using imperative/infinitive language] [TODO: Reference any bundled resources (scripts, references, assets) so Claude knows how to use them] Example structure: 1. First major step 2. Second major step 3. Third major step ## Bundled Resources [TODO: Document bundled resources. Delete unused subsections.] **scripts/** - Executable code run directly (not loaded into context) - Example: `scripts/process_data.py` - Processes CSV and generates reports **references/** - Documentation loaded into context when needed - Example: `references/api_docs.md` - API endpoint documentation **assets/** - Files used in output (not loaded into context) - Example: `assets/template.pptx` - Presentation template ## Examples [TODO: Show concrete examples with realistic user requests] ``` User: "Help me [specific task]" Claude: [How the skill responds] ``` ## Progressive Disclosure Keep SKILL.md <5k words. Move detailed info to references/. Three-level loading: 1. Metadata (~100 words) - Always in context 2. SKILL.md - Loaded when triggered 3. Bundled resources - Loaded as needed ``` 7. **Create bundled resource placeholders (based on Step 4 analysis):** For each directory determined in Step 4, create appropriate placeholder files: **scripts/** → Create `scripts/example.py` (executable Python template with TODO comment) **references/** → Create `references/README.md` (documentation template explaining purpose) **assets/** → Create `assets/README.md` (asset placeholder explaining common types) Make scripts executable: `chmod +x scripts/*.py` 8. **Follow official guidelines:** - Name: lowercase, numbers, hyphens only (max 64 chars) - Description: Include triggers and use cases (max 1024 chars) - Instructions: Clear, step-by-step guidance - Keep skills focused on single capabilities - Make descriptions specific with trigger keywords 9. **Output:** - Print: `STATUS=CREATED PATH={{full_path}}` - Summarize what was created and why (list directories + reasoning) - Remind user to populate placeholders and complete [TODO] items ## Constraints - Skills are model-invoked (Claude decides when to use them) - Description must be specific enough for Claude to discover when to use it - One skill = one capability (stay focused) - Use forward slashes in all file paths - Valid YAML syntax required in frontmatter ## Frontmatter Properties **Required:** - `name` - Lowercase hyphen-case identifier (max 64 chars, matches directory name) - `description` - What it does + when to use it (max 1024 chars, no angle brackets) **Optional:** - `allowed-tools: ["Read", "Write", "Bash"]` - Restrict Claude to specific tools - `metadata: {category: "dev", version: "1.0"}` - Custom tracking fields - `license: "MIT"` - License for shared skills **Prohibited** (causes warnings): - `version`, `author`, `tags` - Use metadata or description instead ## Examples **Simple workflow skill:** ```bash /create-skill commit-helper "Generate clear git commit messages from diffs. Use when writing commits or reviewing staged changes." ``` *Claude will determine: No bundled resources needed - just workflow guidance* **File manipulation skill:** ```bash /create-skill pdf-processor "Extract text and tables from PDF files. Use when working with PDFs, forms, or document extraction." ``` *Claude will determine: Needs scripts/ directory for PDF manipulation utilities* **API integration skill:** ```bash /create-skill api-client "Make REST API calls and handle responses. Use for API testing and integration work with the company API." ``` *Claude will determine: Needs references/ directory for API documentation and schemas* **Image processing skill:** ```bash /create-skill image-processor "Resize, rotate, and convert images. Use when editing images or batch processing files." ``` *Claude will determine: Needs scripts/ directory for image manipulation operations* **Brand guidelines skill:** ```bash /create-skill brand-guidelines "Apply company brand guidelines to designs. Use when creating presentations, documents, or marketing materials." ``` *Claude will determine: Needs references/ for guidelines + assets/ for logos, fonts, templates* **Frontend builder skill:** ```bash /create-skill frontend-builder "Build responsive web applications with React. Use when creating new frontend projects or components." --project ``` *Claude will determine: Needs scripts/ for build tools + assets/ for boilerplate templates* **Database query skill:** ```bash /create-skill database-query "Query and analyze database tables. Use when working with SQL, BigQuery, or data analysis tasks." --project ``` *Claude will determine: Needs references/ for schema documentation* **How Claude determines what's needed:** - Mentions "PDF", "images", "documents", "convert" → scripts/ - Mentions "API", "database", "guidelines", "standards" → references/ - Mentions "templates", "boilerplate", "brand", "presentations" → assets/ - Simple workflow/process skills → SKILL.md only **Adding optional frontmatter properties:** After creating a skill, you can manually edit SKILL.md to add optional frontmatter properties: ```markdown --- name: database-query description: Query and analyze database tables. Use when working with SQL, BigQuery, or data analysis tasks. allowed-tools: ["Bash", "Read", "Grep"] metadata: category: "data" version: "1.0.0" team: "analytics" license: "MIT" --- ``` ## Post-Creation Workflow **1. Edit** - Complete [TODO] placeholders, populate bundled resources, add concrete examples **2. Test** - Restart Claude Code, test with trigger queries matching description **3. Validate** - Check frontmatter properties, description clarity, no sensitive data **4. Iterate** - Use on real tasks, update based on struggles/feedback **Optional:** - Package for distribution: Use packaging tools or `/create-plugin` - Share with team: Distribute .zip or via plugin marketplace ## Example: Well-Structured Skill Here's an example of a production-quality skill to demonstrate best practices: **artifacts-builder** - A skill for creating complex React/TypeScript artifacts with shadcn/ui ``` artifacts-builder/ ├── SKILL.md (focused, ~75 lines) └── scripts/ ├── init-artifact.sh (323 lines - initializes React+Vite+shadcn project) ├── bundle-artifact.sh (54 lines - bundles to single HTML) └── shadcn-components.tar.gz (pre-packaged shadcn/ui components) ``` **SKILL.md structure:** ```markdown --- name: artifacts-builder description: Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts. license: Complete terms in LICENSE.txt --- # Artifacts Builder To build powerful frontend claude.ai artifacts, follow these steps: 1. Initialize the frontend repo using `scripts/init-artifact.sh` 2. Develop your artifact by editing the generated code 3. Bundle all code into a single HTML file using `scripts/bundle-artifact.sh` 4. Display artifact to user 5. (Optional) Test the artifact **Stack**: React 18 + TypeScript + Vite + Parcel (bundling) + Tailwind CSS + shadcn/ui ## Design & Style Guidelines VERY IMPORTANT: To avoid what is often referred to as "AI slop", avoid using excessive centered layouts, purple gradients, uniform rounded corners, and Inter font. ## Quick Start ### Step 1: Initialize Project Run the initialization script to create a new React project: ```bash bash scripts/init-artifact.sh cd ``` This creates a fully configured project with: - ✅ React + TypeScript (via Vite) - ✅ Tailwind CSS 3.4.1 with shadcn/ui theming system - ✅ Path aliases (`@/`) configured - ✅ 40+ shadcn/ui components pre-installed - ✅ All Radix UI dependencies included - ✅ Parcel configured for bundling - ✅ Node 18+ compatibility ### Step 2: Develop Your Artifact To build the artifact, edit the generated files. See **Common Development Tasks** below for guidance. ### Step 3: Bundle to Single HTML File To bundle the React app into a single HTML artifact: ```bash bash scripts/bundle-artifact.sh ``` This creates `bundle.html` - a self-contained artifact with all JavaScript, CSS, and dependencies inlined. ### Step 4: Share Artifact with User Finally, share the bundled HTML file in conversation with the user so they can view it as an artifact. ### Step 5: Testing/Visualizing the Artifact (Optional) Note: This is a completely optional step. Only perform if necessary or requested. ## Reference - **shadcn/ui components**: https://ui.shadcn.com/docs/components ``` **What makes this skill excellent:** 1. **Clear, specific description** - States exactly what it does (React artifacts with shadcn/ui) and when NOT to use it (simple HTML) 2. **Task-Based organizational pattern** - Uses numbered steps (Quick Start → Step 1, 2, 3...) for clear workflow 3. **Practical scripts/** - Contains executable utilities that prevent rewriting the same setup code: - `init-artifact.sh` - Automates 20+ setup steps (Vite, Tailwind, shadcn/ui, dependencies) - `bundle-artifact.sh` - Bundles multi-file React app into single HTML - `shadcn-components.tar.gz` - Pre-packaged components (saves installation time) 4. **Focused SKILL.md** - Only ~75 lines, moves implementation details to scripts 5. **Domain-specific guidance** - Includes "Design & Style Guidelines" section with specific advice 6. **Optional license field** - Uses `license: Complete terms in LICENSE.txt` since Apache 2.0 is verbose 7. **Progressive disclosure** - Metadata (~50 words), SKILL.md core workflow (<2k words), scripts executed without loading 8. **Explicit references** - Points to external docs (shadcn/ui) rather than duplicating them **Claude Code would create scripts/ automatically for this skill because:** - Description mentions "tools", "React", "Tailwind CSS", "shadcn/ui" (technical setup) - Name "builder" implies construction/automation - Description emphasizes "elaborate, multi-component" (complexity requiring tooling) ## Reference Based on official Claude Code Agent Skills documentation: - Personal skills: `~/.claude/skills/` - Project skills: `.claude/skills/` - Changes take effect on next Claude Code restart - Test by asking questions matching the description triggers