Createskill
Systematic skill creation framework for building consistent, well-structured Claude Code skills.
Context Detection
This skill activates when:
- User wants to create a new skill
- User asks to validate, update, or fix an existing skill
- User mentions skill structure, compliance, or canonicalization
- User is working in
/home/vincent/.config/claude/skills/ directory
- User asks about skill creation best practices or framework
TitleCase Naming Convention
All naming must use TitleCase (PascalCase).
| Component |
Format |
Example |
| Skill directory |
TitleCase |
Golang, Homelab, Createskill |
| Workflow files |
TitleCase.md |
Create.md, UpdateInfo.md |
| Reference docs |
TitleCase.md |
Guide.md, Reference.md |
| Tool files |
TitleCase.sh |
ManageTool.sh |
Wrong (NEVER use):
createskill, create-skill, CREATE_SKILL
create.md, update-info.md, SYNC_REPO.md
Workflow Routing
When executing a workflow, output this notification directly:
Running the **WorkflowName** workflow from the **Createskill** skill...
| Workflow |
Trigger |
File |
| CreateSkill |
"create a new skill" |
workflows/CreateSkill.md |
| ValidateSkill |
"validate skill", "check skill" |
workflows/ValidateSkill.md |
Skill Structure Requirements
Required Components
Every skill must have:
SKILL.md - Main skill file with:
- YAML frontmatter (name, description)
- Clear purpose and scope
- Workflow routing table
- Usage examples
workflows/ directory - Contains workflow markdown files
tools/ directory - Contains tool scripts (optional)
YAML Frontmatter Format
---
name: SkillName
description: Single-line description. USE WHEN triggers go here.
---
Critical Rules:
name must be TitleCase
description must be ONE LINE (no newlines)
- Include "USE WHEN" triggers in description
Markdown Body Structure
Required sections in order:
- # [Skill Name] - H1 heading matching the name
- Brief overview - What this skill does
- Workflow Routing - Table of workflows
- Examples - Usage examples (at least one)
Examples
Example 1: Create a new skill from scratch
User: "Create a skill for managing my Docker containers"
→ Invokes CreateSkill workflow
→ Creates skill directory with TitleCase naming
→ Creates SKILL.md with proper frontmatter
→ Creates workflows/ and tools/ directories
→ Generates USE WHEN triggers based on purpose
Example 2: Validate an existing skill
User: "Validate the golang skill"
→ Invokes ValidateSkill workflow
→ Checks SKILL.md structure and naming
→ Verifies TitleCase naming throughout
→ Verifies USE WHEN triggers are clear
→ Reports any compliance issues
Best Practices
Naming
- Use TitleCase for all directories and files
- Keep names descriptive but concise
- Match skill directory name to YAML
name field
Description Field
- Keep it to ONE LINE only
- Include clear USE WHEN triggers
- Focus on when to invoke the skill, not just what it does
Workflows
- Name workflows with clear action verbs (Create, Update, Validate)
- Keep workflows focused on single tasks
- Use TitleCase.md naming
Tools
- Prefer shell scripts for tools (simplicity, portability)
- Use Python only when complexity requires it (complex parsing, data structures)
- Avoid TypeScript - not preferred for skill tools
- Name tools with TitleCase.sh or TitleCase.py
- Keep tools focused and single-purpose
Dependency Management:
- For shell scripts with dependencies: Use
nix-shell shebang for maximum portability#!/usr/bin/env nix-shell
#! nix-shell -i bash -p jq curl
- For Python scripts with dependencies: Use
uv shebang for isolated environments#!/usr/bin/env -S uv run --quiet --script
# /// script
# dependencies = ["requests", "click"]
# ///
- This makes scripts portable without requiring global installation of dependencies
Examples
- Provide at least one concrete example
- Show the trigger phrase and expected behavior
- Demonstrate the value of the skill
Integration
This skill works with your existing skills:
- References
.config/claude/skills/ directory structure
- Follows patterns from CORE, golang, nix, homelab, notes skills
- Validates against established conventions
1---2name: createskill-23description: Skill creation framework for creating, validating, updating, or canonicalizing skills. USE WHEN user wants to create a new skill, validate skill structure, update existing skill, or fix skill compliance.4---5
6# Createskill
7
8Systematic skill creation framework for building consistent, well-structured Claude Code skills.
9
10### Context Detection
11
12**This skill activates when:**
13- User wants to create a new skill
14- User asks to validate, update, or fix an existing skill
15- User mentions skill structure, compliance, or canonicalization
16- User is working in `/home/vincent/.config/claude/skills/` directory
17- User asks about skill creation best practices or framework
18
19## TitleCase Naming Convention
20
21**All naming must use TitleCase (PascalCase).**
22
23| Component | Format | Example |
24|-----------|--------|---------|
25| Skill directory | TitleCase | `Golang`, `Homelab`, `Createskill` |
26| Workflow files | TitleCase.md | `Create.md`, `UpdateInfo.md` |
27| Reference docs | TitleCase.md | `Guide.md`, `Reference.md` |
28| Tool files | TitleCase.sh | `ManageTool.sh` |
29
30**Wrong (NEVER use):**
31- `createskill`, `create-skill`, `CREATE_SKILL`
32- `create.md`, `update-info.md`, `SYNC_REPO.md`
33
34## Workflow Routing
35
36**When executing a workflow, output this notification directly:**
37
38```
39Running the **WorkflowName** workflow from the **Createskill** skill...
40```
41
42| Workflow | Trigger | File |
43|----------|---------|------|
44| **CreateSkill** | "create a new skill" | `workflows/CreateSkill.md` |
45| **ValidateSkill** | "validate skill", "check skill" | `workflows/ValidateSkill.md` |
46
47## Skill Structure Requirements
48
49### Required Components
50
51Every skill must have:
52
531. **SKILL.md** - Main skill file with:
54 - YAML frontmatter (name, description)
55 - Clear purpose and scope
56 - Workflow routing table
57 - Usage examples
58
592. **workflows/** directory - Contains workflow markdown files
60
613. **tools/** directory - Contains tool scripts (optional)
62
63### YAML Frontmatter Format
64
65```yaml
66---
67name: SkillName
68description: Single-line description. USE WHEN triggers go here.
69---
70```
71
72**Critical Rules:**
73- `name` must be TitleCase
74- `description` must be ONE LINE (no newlines)
75- Include "USE WHEN" triggers in description
76
77### Markdown Body Structure
78
79Required sections in order:
80
811. **# [Skill Name]** - H1 heading matching the name
822. **Brief overview** - What this skill does
833. **Workflow Routing** - Table of workflows
844. **Examples** - Usage examples (at least one)
85
86## Examples
87
88**Example 1: Create a new skill from scratch**
89```
90User: "Create a skill for managing my Docker containers"
91→ Invokes CreateSkill workflow
92→ Creates skill directory with TitleCase naming
93→ Creates SKILL.md with proper frontmatter
94→ Creates workflows/ and tools/ directories
95→ Generates USE WHEN triggers based on purpose
96```
97
98**Example 2: Validate an existing skill**
99```
100User: "Validate the golang skill"
101→ Invokes ValidateSkill workflow
102→ Checks SKILL.md structure and naming
103→ Verifies TitleCase naming throughout
104→ Verifies USE WHEN triggers are clear
105→ Reports any compliance issues
106```
107
108## Best Practices
109
110### Naming
111- Use TitleCase for all directories and files
112- Keep names descriptive but concise
113- Match skill directory name to YAML `name` field
114
115### Description Field
116- Keep it to ONE LINE only
117- Include clear USE WHEN triggers
118- Focus on when to invoke the skill, not just what it does
119
120### Workflows
121- Name workflows with clear action verbs (Create, Update, Validate)
122- Keep workflows focused on single tasks
123- Use TitleCase.md naming
124
125### Tools
126- **Prefer shell scripts** for tools (simplicity, portability)
127- **Use Python** only when complexity requires it (complex parsing, data structures)
128- **Avoid TypeScript** - not preferred for skill tools
129- Name tools with TitleCase.sh or TitleCase.py
130- Keep tools focused and single-purpose
131
132**Dependency Management:**
133- **For shell scripts with dependencies:** Use `nix-shell` shebang for maximum portability
134 ```bash
135 #!/usr/bin/env nix-shell
136 #! nix-shell -i bash -p jq curl
137 ```
138- **For Python scripts with dependencies:** Use `uv` shebang for isolated environments
139 ```python
140 #!/usr/bin/env -S uv run --quiet --script
141 # /// script
142 # dependencies = ["requests", "click"]
143 # ///
144 ```
145- This makes scripts portable without requiring global installation of dependencies
146
147### Examples
148- Provide at least one concrete example
149- Show the trigger phrase and expected behavior
150- Demonstrate the value of the skill
151
152## Integration
153
154This skill works with your existing skills:
155- References `.config/claude/skills/` directory structure
156- Follows patterns from CORE, golang, nix, homelab, notes skills
157- Validates against established conventions