Installs into .claude/skills of the current project.
Are you the author of Skill Creator?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/softspark-skill-creator)
---
name: skill-creator
description: "Creates new skills from templates via guided workflow. Triggers: new skill, create skill, skill scaffold, skill template."
effort: high
disable-model-invocation: true
argument-hint: "[skill name or description]"
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
---
# Skill Creator
$ARGUMENTS
Create a new skill following the Agent Skills standard.
## Workflow
1. **Capture intent** -- ask: what should the skill do? Who invokes it?
2. **Classify** -- task, hybrid, or knowledge? (see Classification Guide below)
3. **Interview** -- gather: framework, tools, scope, output format, constraints
4. **Write SKILL.md** -- frontmatter + body, under 500 lines
5. **Create supporting files** -- reference/, templates/, scripts/ as needed
6. **Test and iterate** -- invoke, observe, refine
## Frontmatter Reference
This table describes Claude Code skill fields. ai-toolkit requires `name` and
`description` for portable catalog entries even though Claude Code can infer them.
Only set `model` or `effort` when the skill deliberately needs an approved
override. Omission inherits the session choice in Claude Code. Check supported
effort levels for the selected model; these fields do not configure Codex or
Copilot reasoning. Refer to `kb/reference/model-compatibility.md` for the current
client/API boundaries and verify actual account availability before pinning IDs.
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | yes | Lowercase, hyphens only, max 64 chars |
| `description` | string | yes | Third person, max 1024 chars, include key terms |
| `effort` | low/medium/high/xhigh/max | no | Override effort for the invoking turn; supported levels depend on the model |
| `disable-model-invocation` | bool | no | `true` = only user can trigger (task skills) |
| `user-invocable` | bool | no | `false` = knowledge skill, Claude auto-loads |
| `allowed-tools` | string or YAML list | no | Pre-approve tools for the invoking turn; does not restrict the available tools |
| `disallowed-tools` | string or YAML list | no | Remove tools for the invoking turn |
| `model` | string | no | Override the model for the invoking turn, or use `inherit` |
| `context` | string | no | `fork` to run in isolated subagent |
| `agent` | string | no | Agent type to use when `context: fork` |
| `argument-hint` | string | no | Shown in autocomplete, e.g. `"[target]"` |
| `arguments` | string or YAML list | no | Named positional arguments, substituted as `$name` in the body |
| `when_to_use` | string | no | Additional trigger context appended to the description |
| `background` | bool | no | With `context: fork`, `false` waits for the subagent result; default `true` |
| `hooks` | object | no | Hooks registered at invocation and retained for the session; `once` limits a handler to one run |
| `paths` | string or YAML list | no | File globs limiting automatic activation |
| `shell` | bash/powershell | no | Shell for dynamic context commands |
| `metadata` | object | no | Custom metadata for external tooling |
| `license` | string | no | Skill license |
| `compatibility` | string | no | Runtime requirements, up to 500 characters |
`disallowedTools`, `maxTurns`, `memory`, and `skills` belong to agent frontmatter,
not skill frontmatter. Put them on the agent referenced by a forked skill.
Direct claude.ai skill uploads and the Skills API accept only `name`, `description`,
`license`, `compatibility`, `metadata`, and `allowed-tools`; Claude Code plugin
skills support the full table. See the
[official skill reference](https://code.claude.com/docs/en/skills#frontmatter-reference)
(reviewed 2026-09-23).
## Classification Guide
| Type | When to use | Key fields |
|------|-------------|------------|
| **Task** | User-triggered actions with side effects (build, deploy, commit) | `disable-model-invocation: true`, `allowed-tools` |
| **Hybrid** | Both user and Claude invoke (review, analyze) | defaults |
| **Knowledge** | Domain patterns Claude auto-loads (clean-code, api-patterns) | `user-invocable: false` |
## Writing Guidelines
- **Description**: third person ("Generates...", "Provides..."), **min 50 chars**, include searchable key terms **and a trigger hint** (e.g., "Use when..."). Short descriptions cause over-triggering — adjacent skills fight for the same query.
- **Name**: lowercase, hyphens, max 64 chars -- match the directory name
- **Length**: SKILL.md under 500 lines; use `reference/` for overflow
- **Be concise**: Claude is smart -- give structure, not lectures
- **Degrees of freedom**: be specific on format/constraints, flexible on implementation
- **File references**: max 1 level deep (e.g., `reference/details.md`)
- **Use `$ARGUMENTS`**: place it early so user input is visible
- **Tables over prose**: for options, patterns, mappings
## Mandatory Sections (meta-architect audit criteria)
Every SKILL.md must contain all five, or it will lower the toolkit quality score:
1. **Description ≥50 chars** with trigger hint in frontmatter
2. **At least one concrete example** — fenced code block or `## Example` section
3. **Hard rules** using uppercase markers: `MUST`, `NEVER`, `CRITICAL`, `MANDATORY`, or `DO NOT`
4. **"When NOT to Use" section** — list 2-3 adjacent skills and the boundary between them
5. **Under 500 lines** — split into `reference/` if needed
These map directly to the mutation strategies in `meta-architect.md`:
`add_example`, `add_constraint`, `add_edge_case`, `restructure`.
### Rules vs Gotchas — different semantic buckets
Split the "hard rules" criterion into two sections when both apply:
- **`## Rules`** — prescriptive process constraints (always-true MUST / NEVER): *"MUST form a testable hypothesis before changing code"*, *"NEVER force-push main"*. Required in every skill.
- **`## Gotchas`** — environment-specific traps the agent would miss without being told, taken from [Anthropic's best practices](https://agentskills.io/skill-creation/best-practices.md#gotchas-sections). Example from their docs: *"The `users` table uses soft deletes. Queries must include `WHERE deleted_at IS NULL` or results will include deactivated accounts."* Add this section only when real domain traps exist — do not pad with a `(none)` placeholder.
## Directory Structure
```
skill-name/
SKILL.md # Main instructions (required, <500 lines)
reference/ # Detailed docs (loaded on-demand)
templates/ # Reusable templates for output
scripts/ # Executable helper scripts
```
Only create subdirectories when the skill needs them. Most skills are a single SKILL.md.
## SKILL.md Template
```markdown
---
name: {name}
description: "{Third-person description, min 50 chars, with trigger hint like 'Use when...'}"
argument-hint: "[hint]"
allowed-tools: Read, Grep, Glob
---
# {Title}
$ARGUMENTS
{One-line purpose statement.}
## Usage
\`\`\`
/{name} [arguments]
\`\`\`
## What This Command Does
1. **Step one**
2. **Step two**
3. **Step three**
## Example
\`\`\`
/{name} example-argument
\`\`\`
{Expected observable behavior.}
## Rules
- **MUST** {non-negotiable rule 1}
- **NEVER** {forbidden action}
- **CRITICAL**: {safety constraint}
## Gotchas
- {environment-specific trap the agent would miss — concrete, not general}
- {non-obvious behavior of a tool, API, or data layout}
## When NOT to Use
- For {adjacent use case} -- use `/{other-skill}` instead
- For {another case} -- use `/{another-skill}`
- If {precondition} is not met
```
Leave out `## Gotchas` entirely when the skill has no domain-specific traps — it is not mandatory, and a stub with nothing concrete is worse than no section.
## Quality Checklist
Before finalizing, verify:
- [ ] Description ≥50 chars, third-person, with trigger hint
- [ ] At least one concrete code-fenced example
- [ ] `## Rules` section with prescriptive MUST / NEVER / CRITICAL / MANDATORY
- [ ] `## Gotchas` section when the domain has real environment-specific traps (otherwise omit)
- [ ] `## When NOT to Use` section naming 2-3 adjacent skills
- [ ] SKILL.md under 500 lines
- [ ] No time-sensitive information (versions, dates)
- [ ] Consistent terminology throughout
- [ ] File references max 1 level deep
- [ ] Workflows have numbered steps
- [ ] Frontmatter fields match classification type
- [ ] `$ARGUMENTS` is present for task/hybrid skills
- [ ] `allowed-tools` is minimal (principle of least privilege)
## Evaluation
After creating the skill, test it:
1. Invoke with a representative prompt
2. Check output matches expected structure
3. Verify dynamic injection (`$ARGUMENTS`) works
4. Test with varied argument patterns
5. Confirm `allowed-tools` are sufficient but not excessive
6. Iterate: tighten instructions where output diverges
## Installation
After creating the skill:
1. Verify the skill directory exists under `app/skills/{name}/`
2. Update `skills-catalog.md` if it exists
3. Update `ARCHITECTURE.md` skill counts if referenced
4. Run `validate.sh` if available
5. Run `evaluate-skills.sh` if available
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Description too vague | Add specific terms: "Python", "REST API", "migration" |
| SKILL.md too long | Move details to `reference/` subdirectory |
| Missing `$ARGUMENTS` | Add after the H1 heading for task/hybrid skills |
| Over-specifying steps | Give structure, let Claude fill details |
| Wrong classification | Task = side effects, Knowledge = patterns, Hybrid = both |
Files in this skill
SKILL.md7.9 KB
templates/dashboard/index.html6.3 KB
templates/reasoning-engine/assets/example.json299 B