CreateSkill: Create and validate skills. USE WHEN create skill, new skill, skill structure, canonicalize. SkillSearch('createskill') for docs.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: CreateSkill description: Create and validate skills. USE WHEN create skill, new skill, skill structure, canonicalize. SkillSearch('createskill') for docs.
Customization
Before executing, check for user customizations at:
~/.claude/skills/CORE/USER/SKILLCUSTOMIZATIONS/CreateSkill/
If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
CreateSkill
MANDATORY skill creation framework for ALL skill creation requests.
Authoritative Source
Before creating ANY skill, READ: ~/.claude/skills/CORE/SkillSystem.md
Canonical example to follow: ~/.claude/skills/_BLOGGING/SKILL.md
TitleCase Naming Convention
All naming must use TitleCase (PascalCase).
| Component | Format | Example |
|---|---|---|
| Skill directory | TitleCase | Blogging, Daemon, CreateSkill |
| Workflow files | TitleCase.md | Create.md, UpdateDaemonInfo.md |
| Reference docs | TitleCase.md | ProsodyGuide.md, ApiReference.md |
| Tool files | TitleCase.ts | ManageServer.ts |
| Help files | TitleCase.help.md | ManageServer.help.md |
Wrong (NEVER use):
createskill,create-skill,CREATE_SKILLcreate.md,update-info.md,SYNC_REPO.md
Flat Folder Structure (MANDATORY)
CRITICAL: Keep folder structure FLAT - maximum 2 levels deep.
The Rule
Maximum depth: skills/SkillName/Category/
ALLOWED (2 levels max)
skills/SkillName/SKILL.md # Skill root
skills/SkillName/Workflows/Create.md # Workflow - one level deep - GOOD
skills/SkillName/Tools/Manage.ts # Tool - one level deep - GOOD
skills/SkillName/QuickStartGuide.md # Context file - in root - GOOD
skills/SkillName/Examples.md # Context file - in root - GOOD
FORBIDDEN (Too deep OR wrong location)
skills/SkillName/Resources/Guide.md # Context files go in root, NOT Resources/
skills/SkillName/Docs/Examples.md # Context files go in root, NOT Docs/
skills/SkillName/Workflows/Category/File.md # THREE levels - NO
skills/SkillName/Templates/Primitives/File.md # THREE levels - NO
skills/SkillName/Tools/Utils/Helper.ts # THREE levels - NO
Allowed Subdirectories
ONLY these subdirectories are allowed:
- Workflows/ - Execution workflows ONLY
- Tools/ - Executable scripts/tools ONLY
Context files (documentation, guides, references) go in the skill ROOT, NOT in subdirectories.
Why
- Discoverability - Easy to find files
- Simplicity - Less navigation overhead
- Speed - Faster file operations
- Consistency - Every skill follows same pattern
If you need to organize many workflows, use clear filenames instead of subdirectories:
- Good:
Workflows/CompanyDueDiligence.md - Bad:
Workflows/Company/DueDiligence.md
See: ~/.claude/skills/CORE/SkillSystem.md (Flat Folder Structure section)
Dynamic Loading Pattern (Large Skills)
For skills with SKILL.md > 100 lines: Use dynamic loading to reduce context on skill invocation.
How Loading Works
Session startup: Only frontmatter loads for routing Skill invocation: Full SKILL.md loads Context files: Load only when workflows reference them
The Pattern
SKILL.md = Minimal (30-50 lines) - loads on skill invocation
- YAML frontmatter with triggers
- Brief description
- Workflow routing table
- Quick reference
- Pointers to context files
Additional .md files = Context files - SOPs for specific aspects (loaded on-demand)
- These are Standard Operating Procedures, not just documentation
- They provide specific handling instructions
- Can reference Workflows/, Tools/, etc.
CRITICAL: NO Context/ Subdirectory
NEVER create Context/ or Docs/ subdirectories.
Additional .md files ARE the context files. They live directly in skill root.
WRONG:
skills/Art/
SKILL.md
Context/ # NEVER CREATE THIS
Aesthetic.md
CORRECT:
skills/Art/
SKILL.md
Aesthetic.md # Context file in skill root
Examples.md # Context file in skill root
Tools.md # Context file in skill root
The skill directory IS the context.
Example Structure
skills/Art/
SKILL.md # 40 lines - minimal routing
Aesthetic.md # Context file - SOP for aesthetic
Examples.md # Context file - SOP for examples
Tools.md # Context file - SOP for tools
Workflows/ # Workflows
Essay.md
Tools/ # CLI tools
Generate.ts
Minimal SKILL.md Template
---
name: SkillName
description: Brief. USE WHEN triggers.
---
# SkillName
Brief description.
## Workflow Routing
| Trigger | Workflow |
|---------|----------|
| "trigger" | `Workflows/WorkflowName.md` |
## Quick Reference
**Key points** (3-5 bullet points)
**Full Documentation:**
- Detail 1: `SkillSearch('skillname detail1')` -> loads Detail1.md
- Detail 2: `SkillSearch('skillname detail2')` -> loads Detail2.md
When To Use
Use dynamic loading for:
- SKILL.md > 100 lines
- Multiple documentation sections
- Extensive API reference
- Detailed examples
Don't use for:
- Simple skills (< 50 lines)
- Pure utility wrappers (use CORE/Tools.md instead)
Benefits
- Token Savings: 70%+ reduction on skill invocation (when full docs not needed)
- Organization: SKILL.md = routing, context files = SOPs for specific aspects
- Efficiency: Workflows load only what they actually need
- Maintainability: Easier to update individual sections
See: ~/.claude/skills/CORE/SkillSystem.md (Dynamic Loading Pattern section)
Voice Notification
When executing a workflow, do BOTH:
-
Send voice notification:
curl -s -X POST http://localhost:8888/notify \ -H "Content-Type: application/json" \ -d '{"message": "Running the WORKFLOWNAME workflow from the CreateSkill skill"}' \ > /dev/null 2>&1 & -
Output text notification:
Running the **WorkflowName** workflow from the **CreateSkill** skill...
Full documentation: ~/.claude/skills/CORE/SkillNotifications.md
Workflow Routing
| Workflow | Trigger | File |
|---|---|---|
| CreateSkill | "create a new skill" | Workflows/CreateSkill.md |
| ValidateSkill | "validate skill", "check skill" | Workflows/ValidateSkill.md |
| UpdateSkill | "update skill", "add workflow" | Workflows/UpdateSkill.md |
| CanonicalizeSkill | "canonicalize", "fix skill structure" | Workflows/CanonicalizeSkill.md |
Examples
Example 1: Create a new skill from scratch
User: "Create a skill for managing my recipes"
-> Invokes CreateSkill workflow
-> Reads SkillSystem.md for structure requirements
-> Creates skill directory with TitleCase naming
-> Creates SKILL.md, Workflows/, tools/
-> Generates USE WHEN triggers based on intent
Example 2: Fix an existing skill that's not routing properly
User: "The research skill isn't triggering - validate it"
-> Invokes ValidateSkill workflow
-> Checks SKILL.md against canonical format
-> Verifies TitleCase naming throughout
-> Verifies USE WHEN triggers are intent-based
-> Reports compliance issues with fixes
Example 3: Canonicalize a skill with old naming
User: "Canonicalize the daemon skill"
-> Invokes CanonicalizeSkill workflow
-> Renames workflow files to TitleCase
-> Updates routing table to match
-> Ensures Examples section exists
-> Verifies all checklist items
More by danielmiessler
View allCORE: Personal AI Infrastructure core. AUTO-LOADS at session start. The authoritative reference for how the PAI system works, how to use it, and all system-level configuration. USE WHEN any session begins, user asks about the system, identity, configuration, workflows, security, or any other question about how the PAI system operates.
Agents: Dynamic agent composition and management system. USE WHEN user says create custom agents, spin up custom agents, specialized agents, OR asks for agent personalities, available traits, agent voices. Handles custom agent creation, personality assignment, voice mapping, and parallel agent orchestration.
THEALGORITHM: Universal execution engine using scientific method to achieve ideal state. USE WHEN complex tasks, multi-step work, "run the algorithm", "use the algorithm", OR any non-trivial request that benefits from structured execution with ISC (Ideal State Criteria) tracking.
Prompting: Meta-prompting system for dynamic prompt generation using templates, standards, and patterns. USE WHEN meta-prompting, template generation, prompt optimization, or programmatic prompt composition.
