.claude/skills/scaffolding/SKILL.md
Component scaffolding toolkit for creating skills, agents, commands, and hooks within the unified wicked-garden plugin. Generates complete, valid structures that pass validation out-of-the-box. Use when creating new domain components, setting up boilerplate, or ensuring proper structure from the start.
npx skillsauth add mikeparcewski/wicked-garden scaffoldInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Quick-start generator for wicked-garden domain components.
Generates production-ready component structures within the unified plugin:
All scaffolded components pass validation immediately.
python .claude/skills/scaffolding/scripts/scaffold.py
# Interactive prompts:
# > Component type? (skill/agent/command/hook)
# > Domain? (crew, engineering, platform, ...)
# > Name? (kebab-case)
# > Description?
# Result:
# Skill created: skills/crew/my-skill/
# Namespace: wicked-garden:crew:my-skill
# Skill
python .claude/skills/scaffolding/scripts/scaffold.py skill \
--name my-skill \
--domain crew \
--description "What this skill does"
# Agent
python .claude/skills/scaffolding/scripts/scaffold.py agent \
--name my-agent \
--domain platform \
--description "What this agent does" \
--tools "Read,Write,Bash"
# Command
python .claude/skills/scaffolding/scripts/scaffold.py command \
--name my-command \
--domain engineering \
--description "What this command does"
# Hook
python .claude/skills/scaffolding/scripts/scaffold.py hook \
--event PreToolUse \
--script validate-tool-use \
--description "Validates tool usage"
Components are placed in domain-specific subdirectories:
wicked-garden/ # Plugin root
├── skills/{domain}/{name}/ # Skills
│ └── SKILL.md
├── agents/{domain}/{name}.md # Agents
├── commands/{domain}/{name}.md # Commands
├── hooks/scripts/{name}.py # Hook scripts
└── hooks/hooks.json # Hook bindings (updated)
wicked-garden:{domain}:{command} (colon-separated)wicked-garden:{domain}/{agent} (slash for agent path)wicked-garden:{domain}:{skill} (colon-separated)When scaffolding a command, the tool checks if agents/{domain}/*.md exists:
command-with-agent.md template with Task(subagent_type=...) dispatchcommand.md templateThis ensures new commands follow the delegation standard from the start.
---
name: {skill-name}
description: |
What this skill does (capabilities).
Use when [trigger conditions and keywords].
---
# {Skill Title}
Brief introduction to the skill's purpose.
## Purpose
What problem this skill solves.
## Usage
### Example 1
\`\`\`python
# Code example
\`\`\`
## Patterns
Common patterns this skill enables:
- Pattern 1
- Pattern 2
## References
- Related docs
- Source files
---
description: What this agent specializes in
tools: ["Read", "Write", "Bash"]
---
# {Agent Name}
You are {agent-name}, specialized in {domain}.
## Expertise
Your core capabilities:
- Capability 1
- Capability 2
- Capability 3
## Working Style
How you approach tasks:
1. Step 1
2. Step 2
3. Step 3
## Quality Standards
What defines success:
- Standard 1
- Standard 2
## Constraints
What you avoid:
- Constraint 1
- Constraint 2
{
"hooks": [
{
"event": "{event}",
"script": "scripts/{script-name}.py",
"description": "{description}",
"enabled": true
}
]
}
#!/usr/bin/env python3
"""
{Event} hook for {plugin-name}.
Exit codes:
0 - Success, continue
2 - Blocking error (message sent to Claude)
Other - Non-blocking error (logged)
"""
import sys
import json
import os
def main():
# Read hook data from stdin
try:
data = json.loads(sys.stdin.read())
except json.JSONDecodeError:
print("Error: Invalid JSON input", file=sys.stderr)
sys.exit(1)
# Hook logic here
# Access: data['tool'], data['arguments'], data['context']
# Example validation
if data.get('tool') == 'Bash':
command = data.get('arguments', {}).get('command', '')
if 'rm -rf /' in command:
print("Blocked dangerous command: rm -rf /")
sys.exit(2) # Block execution
# Allow execution
sys.exit(0)
if __name__ == "__main__":
main()
The 16 domains in wicked-garden:
Workflow & Intelligence: crew, smaht, mem, search, jam, kanban Specialist Disciplines: engineering, product, platform, qe, data, delivery, agentic, persona
Domains are discovered dynamically from commands/ — new domains are valid immediately.
Available in all .tpl files:
| Variable | Description | Example |
|----------|-------------|---------|
| {name} | Component name (kebab-case) | risk-assessor |
| {Name} | Component name (Title Case) | Risk Assessor |
| {NAME} | Component name (UPPER_CASE) | RISK_ASSESSOR |
| {description} | Brief description | Assess project risks |
| {domain} | Domain name | qe |
claude-code-, anthropic-, official-)wicked- for marketplace consistencyscripts/commands/ for user-facing operationsskills/ for Claude expertiseagents/ for specialized subagents${CLAUDE_PLUGIN_ROOT} for paths"$VAR"python scripts/scaffold.py plugin \
--name wicked-perf-analyzer \
--description "Performance analysis and optimization" \
--with-commands analyze,optimize \
--with-skills analysis,optimization \
--with-agents optimizer \
--author "Your Name"
# Result:
# plugins/wicked-perf-analyzer/
# ├── .claude-plugin/plugin.json
# ├── commands/
# │ ├── analyze.md
# │ └── optimize.md
# ├── agents/
# │ └── optimizer.md
# ├── skills/
# │ ├── analysis/SKILL.md
# │ └── optimization/SKILL.md
# ├── scripts/
# │ └── setup.sh
# └── README.md
python scripts/scaffold.py skill \
--name validation-patterns \
--plugin wicked-memory \
--description "Input validation patterns for cache keys"
# Result:
# plugins/wicked-memory/skills/validation-patterns/
# └── SKILL.md
python scripts/scaffold.py hook \
--name PreToolUse \
--plugin wicked-crew \
--description "Validate tool use before execution" \
--script validate-tool-use.py
# Result:
# plugins/wicked-crew/hooks/
# ├── hooks.json (updated)
# └── scripts/
# └── validate-tool-use.py
.something-wicked/wicked-feature-dev/specs/something-wicked-v2/requirements.md (FR-005).something-wicked/wicked-feature-dev/specs/something-wicked-v2/design.md (tools/ section)CLAUDE.md (Naming Conventions section)CLAUDE.md (Component Patterns section)AGENTS.md before CLAUDE.md (general → specific). AGENTS.md is read-only.development
--- name: large-scale-migration description: How to execute a LARGE MECHANICAL change across any codebase with LEVERAGE instead of an agent-grind or hand-edits — a cross-cutting migration, refactor, rename, dialect/framework/DB port, library adoption, or bulk transform. The map→transform→gate pattern: a deterministic transform driven by a source-of-truth map, proven by a differential-equivalence gate. Use when the work is "migrate all X to Y", "rename Z everywhere", "port to a new DB/dialect/fra
testing
v11 LLM-based work-shape classifier. Replaces the regex archetype detector with the model's own reasoning. Reads the user's prompt, picks the right archetype(s) from the catalog, identifies signals (blast_radius, novelty, reversibility, etc.), and persists to SessionState so subsequent turns steer correctly. Use when: the prompt_submit hook emitted a `<wg classify-due />` directive, OR explicitly invoked at session start, OR when re-classifying after the user changes scope mid-session.
tools
v11 work-shape archetype runner. When a prompt has been routed to one of the 9 archetypes (triage, explore, specify, decide, ship, review, incident, build, migrate), this skill is the entry point. It picks the right per-archetype playbook from refs/ and executes the phase shape declared in `.claude-plugin/archetypes.json`. Use when: a `<wg archetype="X">` or `<wg archetypes>` system-reminder tag appears, an explicit "let's run the X archetype" request, or when one of the per-archetype slash commands resolves to this skill.
development
Show or set the session intent variable. Intent gates how loud the framework is — simple-edit (silent), feature/research (synthesis directive), rigor (full crew context). Auto-detected on turn 1; this skill overrides explicitly. Sticky for the session. Use when: "set intent", "intent override", "/wicked-garden:intent", "make the framework quiet", "force rigor", "what's my intent".