Meta-skill for creating Claude Code skills. TRIGGERS - create skill, YAML frontmatter, validate skill, TodoWrite templates, bundled resources (scripts/references/assets), progressive disclosure, allowed-tools, skill architecture. Use when creating, validating, or structuring skills.
/plugin marketplace add terrylica/cc-skills/plugin install skill-architecture@cc-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/SYNC-TRACKING.mdreferences/advanced-topics.mdreferences/bash-compatibility.mdreferences/creation-workflow.mdreferences/error-message-style.mdreferences/evolution-log.mdreferences/path-patterns.mdreferences/progressive-disclosure.mdreferences/scripts-reference.mdreferences/security-practices.mdreferences/structural-patterns.mdreferences/token-efficiency.mdreferences/validation-reference.mdreferences/workflow-patterns.mdComprehensive guide for creating effective Claude Code skills following Anthropic's official standards with emphasis on security, CLI-specific features, and progressive disclosure architecture.
⚠️ Scope: Claude Code CLI Agent Skills (
~/.claude/skills/), not Claude.ai API skills
MANDATORY: Select and load the appropriate template into TodoWrite before any skill work.
For detailed context on each step, see Skill Creation Process (Detailed Tutorial) below.
1. Gather requirements (ask user for functionality, examples, triggers)
2. Identify reusable resources (scripts, references, assets needed)
3. Run init script to create skill directory structure
4. Create bundled resources first (scripts/, references/, assets/)
5. Write SKILL.md with YAML frontmatter (name, description with triggers)
6. Add TodoWrite task templates section to SKILL.md
7. Add Post-Change Checklist section to SKILL.md
8. Validate with quick_validate.py
9. Validate links (relative paths only): uv run scripts/validate_links.py <skill-path>
10. Test skill on real example
11. Register skill in project CLAUDE.md
12. Verify against Skill Quality Checklist below
1. Read current SKILL.md and understand structure
2. Identify what needs changing (triggers, workflow, resources)
3. Make targeted changes to SKILL.md
4. Update any affected references/ or scripts/
5. Validate with quick_validate.py
6. Validate links (relative paths only): uv run scripts/validate_links.py <skill-path>
7. Test updated behavior
8. Update project CLAUDE.md if description changed
9. Verify against Skill Quality Checklist below
1. Read current SKILL.md to understand skill purpose
2. Determine resource type (script, reference, or asset)
3. Create resource in appropriate directory
4. Update SKILL.md to document new resource
5. Validate with quick_validate.py
6. Validate links (relative paths only): uv run scripts/validate_links.py <skill-path>
7. Test resource integration
8. Verify against Skill Quality Checklist below
1. Read current SKILL.md structure
2. Add TodoWrite Task Templates section (scenario-specific)
3. Add Post-Change Checklist section
4. Create references/evolution-log.md (reverse chronological - newest on top)
5. Create references/config-reference.md (if skill manages external config)
6. Update description with self-evolution triggers
7. Validate with quick_validate.py
8. Validate links (relative paths only): uv run scripts/validate_links.py <skill-path>
9. Test self-documentation on sample change
10. Verify against Skill Quality Checklist below
1. Check YAML frontmatter syntax (no colons in description)
2. Verify trigger keywords in description match user queries
3. Check skill location (~/.claude/skills/ or project .claude/skills/)
4. Validate with quick_validate.py for errors
5. Validate links: uv run scripts/validate_links.py <skill-path>
6. Test with explicit trigger phrase
7. Document findings in skill if new issue discovered
8. Verify against Skill Quality Checklist below
After ANY skill work, verify:
/Users/<user> or /home/<user> (use $HOME)/tmp in Python (use tempfile.TemporaryDirectory)command -v or PATH)/usr/bin/env bash << 'NAME_EOF'declare -A (associative arrays) - use parallel indexed arraysgrep -P (Perl regex) - use grep -E with awk\!= in conditionals - use != directlyPREFLIGHT_EOF)After modifying THIS skill (skill-architecture):
CRITICAL: Skills must actively evolve. Don't wait for explicit requests—upgrade skills when insights emerge.
Watch for these improvement signals:
| Signal | Example | Action |
|---|---|---|
| Friction | Step feels awkward or unclear | Rewrite for clarity |
| Missing edge case | Workflow fails on valid input | Add handling + document |
| Better pattern | Discover more elegant approach | Update + log why |
| User confusion | Same question asked repeatedly | Add clarification or FAQ |
| Tool evolution | Underlying tool gains features | Update to leverage them |
| Repeated manual steps | Same code written each time | Create script in scripts/ |
When improvement opportunity identified:
Rationale: Small immediate updates compound. Waiting means insights are forgotten. 30 seconds now saves 5 minutes later.
After completing any skill-assisted task, ask:
"Did anything about this skill feel suboptimal? If I encountered this again, what would help?"
If answer exists → update the skill NOW.
Skills are modular, self-contained packages that extend Claude's capabilities with specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains—transforming Claude from general-purpose to specialized agent with procedural knowledge no model fully possesses.
Note: Use TodoWrite templates above for execution. This section provides detailed context for each phase.
Clearly understand concrete examples of how the skill will be used. Ask users:
Skip only when usage patterns are already clearly understood.
Analyze each example to identify what resources would be helpful:
Example 1 - PDF Editor:
scripts/rotate_pdf.pyExample 2 - Frontend Builder:
assets/hello-world/ templateExample 3 - BigQuery:
references/schema.mdRun the marketplace init script (don't copy, use from marketplace):
plugins/marketplaces/anthropic-agent-skills/skill-creator/scripts/init_skill.py <skill-name> --path ~/.claude/skills/
Creates: skill directory + SKILL.md template + example resource directories
Writing Style: Imperative/infinitive form (verb-first), not second person
SKILL.md must include:
Start with resources (scripts/, references/, assets/), then update SKILL.md
For local development (validation only, no zip creation):
plugins/marketplaces/anthropic-agent-skills/skill-creator/scripts/quick_validate.py <path/to/skill-folder>
For distribution (validates AND creates zip):
plugins/marketplaces/anthropic-agent-skills/skill-creator/scripts/package_skill.py <path/to/skill-folder>
Validates: YAML frontmatter, naming, description, file organization
Note: Use quick_validate.py for most workflows. Only use package_skill.py when actually distributing the skill to others.
skill-name/
├── SKILL.md # Required: YAML frontmatter + instructions
├── scripts/ # Optional: Executable code (Python/Bash)
├── references/ # Optional: Documentation loaded as needed
│ └── evolution-log.md # Recommended: Change history (self-evolving)
└── assets/ # Optional: Files used in output
---
name: skill-name-here
description: What this does and when to use it (max 1024 chars for CLI)
allowed-tools: Read, Grep, Bash # Optional, CLI-only feature
---
Field Requirements:
| Field | Rules |
|---|---|
name | Lowercase, hyphens, numbers. Max 64 chars. Unique. |
description | WHAT it does + WHEN to use. Max 1024 chars (CLI) / 200 (API). Include triggers! |
allowed-tools | CLI-only. Comma-separated list restricts tools. Optional. |
Good vs Bad Descriptions:
✅ Good: "Extract text and tables from PDFs, fill forms, merge documents. Use when working with PDF files or when user mentions forms, contracts, document processing."
❌ Bad: "Helps with documents" (too vague, no triggers)
YAML Description Pitfalls:
| Pitfall | Problem | Fix |
|---|---|---|
| Multiline syntax | > or | not supported | Single line only |
| Colons in text | CRITICAL: requires breaks YAML | Use CRITICAL - requires |
| Quoted strings | Valid but not idiomatic | Unquoted preferred (match anthropics/skills) |
# ❌ BREAKS - colon parsed as YAML key:value
description: ...CRITICAL: requires flag
# ✅ WORKS - dash instead of colon
description: ...CRITICAL - requires flag
Validation: GitHub renders frontmatter - invalid YAML shows red error banner.
Skills use progressive loading to manage context efficiently:
*Scripts can execute without reading into context.
Skills can include scripts/, references/, and assets/ directories. See Progressive Disclosure for detailed guidance on when to use each.
CLI skills support allowed-tools restriction for security. See Security Practices for details.
See Structural Patterns for detailed guidance on:
This skill follows common user conventions:
uv run script.py with PEP 723 inline dependenciesSee Scripts Reference for marketplace script usage.
For detailed information, see:
Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.