From citadel
Creates new skills from the user's repeating patterns via an interview-driven process: discovers the task, analyzes failure modes, generates a SKILL.md, installs it, tests it, and teaches usage.
How this skill is triggered — by the user, by Claude, or both
Slash command
/citadel:create-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Use when:**
Use when:
Do NOT use when:
Output: A complete .claude/skills/{name}/SKILL.md in the project directory, tested and working.
Ask these three questions and wait for answers before proceeding.
Q1: "What do you keep repeating?" Listen for: trigger, steps in order, scope, frequency. If vague, probe: "Walk me through the last time you did this."
Q2: "What mistakes happen when you do it manually?" Listen for: forgotten steps, ordering mistakes, convention drift, edge cases. These become guardrails and quality gates.
Q3: "What does 'done right' look like?" Listen for: observable outputs, quality signals, anti-patterns. These become quality gates and exit protocol.
Internal working material — do not show to user.
2a. Identity statement: "You are a {role} that {does what} to ensure {outcome}." Must distinguish this skill from all others.
2b. Trigger keywords (5-10): Specific enough to avoid false matches. Check existing .claude/skills/ for conflicts.
2c. Protocol steps: Transform "what I do" into numbered steps where:
Bad: "3. Review the code for issues." Good: "3. Read every function. For each, check: (a) return type explicit, (b) error cases handled, (c) no input mutations. List violations with line numbers."
2d. Quality gates: Yes/no verifiable questions, no subjective criteria. Map each to a user "done right" criterion or common mistake.
2e. Pitfalls: From Q2. Become warnings or guard clauses in the protocol.
Every section required. File MUST be under 500 lines.
---
name: {kebab-case-name}
description: >-
{One to three sentences. Start with verb. Use when X; do NOT use for Y.}
user-invocable: true
auto-trigger: false
trigger_keywords:
- {keyword 1}
- {keyword 2}
---
# /{name} — {Readable Title}
## Orientation
**Use when:**
- {condition}
**Do NOT use when:**
- {exclusion}
**What this skill needs:**
- {required input}
## Protocol
### Step 1: {VERB — Name}
{Exact instructions. What to read, what to produce. No vague directives.}
### Step 2: {VERB — Name}
{Continue...}
## Quality Gates
- [ ] {Verifiable gate}
## Exit Protocol
{Exact output format}
Writing rules:
.claude/skills/{name}/.claude/harness.json (create with {} if missing)
b. Add skill name to registeredSkills array
c. Update registeredSkillCount to match array length/reload-skills if the running Claude Code version supports it; the skill is live without a session restart. If unsupported, tell the user a fresh session is required before /{name} resolves.A. How to invoke:
/{name} or /{name} [target]/do {natural language matching trigger keywords}B. How it works (30-second version):
C. How to modify:
.claude/skills/{name}/SKILL.md### Step N in Protocoltrigger_keywords in frontmatterDisclosure: "Creating skill '{name}'. Will create skills/{name}/SKILL.md."
Reversibility: green — creates skills/{name}/SKILL.md only; undo by deleting the directory.
Trust gates:
.claude/skills/{name}/SKILL.mdSKILL CREATED
Name: {name}
Path: .claude/skills/{name}/SKILL.md
Invoke: /{name} [target]
Route via: /do {example natural language}
What it does:
{One sentence description}
Steps: {N} steps
Quality gates: {N} gates
Lines: {line count}/500
Tested on: {target description}
Test result: PASS
Trigger keywords: {comma-separated list}
Reversibility: green — delete skills/{name}/ to undo
Try it now: /{name} {suggested first target}
npx claudepluginhub sethgammon/citadel --plugin citadelGuides users from manually repeating processes to creating formal Skills with decision trees for simple/complex paths and placement decisions.
Creates new skills or modifies existing ones by packaging workflows into reusable skill format. Uses TDD-style validation to ensure skills are correctly activated.
Capture this session's repeatable process into a reusable skill. Call at end of a process you want to automate.