skills/speccy/SKILL.md
Deep-dive interview skill for creating comprehensive specifications. Reviews existing code and docs, then interviews the user through multiple rounds of targeted questions covering technical implementation, UI/UX, concerns, and tradeoffs. Produces a structured spec in specs/. Use when starting a new feature, system, or major change that needs a spec.
npx skillsauth add slamb2k/mad-skills speccyInstall 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.
When this skill is invoked, IMMEDIATELY output the banner below before doing anything else. Pick ONE tagline at random — vary your choice each time. CRITICAL: Reproduce the banner EXACTLY character-for-character. The first line of the art has 4 leading spaces — you MUST preserve them.
{tagline}
⠀ ██╗███████╗██████╗ ███████╗ ██████╗ ██████╗██╗ ██╗
██╔╝██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝╚██╗ ██╔╝
██╔╝ ███████╗██████╔╝█████╗ ██║ ██║ ╚████╔╝
██╔╝ ╚════██║██╔═══╝ ██╔══╝ ██║ ██║ ╚██╔╝
██╔╝ ███████║██║ ███████╗╚██████╗╚██████╗ ██║
╚═╝ ╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝
Taglines:
After the banner, display parsed input:
┌─ Input ────────────────────────────────────────
│ {Field}: {value}
│ Flags: {parsed flags or "none"}
└────────────────────────────────────────────────
Pre-flight results:
── Pre-flight ───────────────────────────────────
✅ {dep} {version or "found"}
⚠️ {dep} not found → {fallback detail}
❌ {dep} missing → stopping
──────────────────────────────────────────────────
Stage/phase headers: ━━ {N} · {Name} ━━━━━━━━━━━━━━━━━━━━━━━━━
Status icons: ✅ done · ❌ failed · ⚠️ degraded · ⏳ working · ⏭️ skipped
Interview the user through multiple rounds of targeted questions to build
a comprehensive specification, then write it directly using the spec template
in references/spec-template.md.
Interview prompts and question guidelines: references/interview-guide.md
Spec template and writing guidelines: references/spec-template.md
Before starting, check all dependencies in this table:
| Dependency | Type | Check | Required | Resolution | Detail |
|-----------|------|-------|----------|------------|--------|
| prime | skill | ls .claude/skills/prime/SKILL.md ~/.claude/skills/prime/SKILL.md ~/.claude/plugins/marketplaces/slamb2k/skills/prime/SKILL.md 2>/dev/null | no | fallback | Context loading; falls back to manual project scan |
For each row, in order:
Before gathering context, check if the user is on a stale branch:
CURRENT=$(git branch --show-current)
if [ "$CURRENT" != "main" ] && [ "$CURRENT" != "master" ]; then
git fetch origin main --quiet 2>/dev/null
BEHIND=$(git rev-list --count HEAD..origin/main 2>/dev/null || echo 0)
if [ "$BEHIND" -gt 5 ]; then
echo "⚠️ Branch '$CURRENT' is $BEHIND commits behind main."
echo " Consider running /sync before building from this spec."
fi
fi
This is advisory only (specs don't modify code) — do not block, continue regardless of the result.
Before asking any questions, build a thorough understanding of the project:
/prime to load domain-specific context
(CLAUDE.md, specs, memory). If /prime is unavailable, fall back to
the manual scan below.CLAUDE.md if present (project conventions, structure, domain)specs/ directory for existing specificationsGroup gaps into interview categories:
Conduct multiple rounds of questions using AskUserQuestion. Continue until
all knowledge gaps are resolved.
(Recommended) to its label.
At least one question per round should have a recommendation where possible.Each round follows this pattern:
Stop interviewing when ALL of the following are true:
When complete, briefly present a Decision Summary — a numbered list of all decisions made across all rounds — and confirm with the user before proceeding to spec generation.
Once the interview is complete and decisions are confirmed:
Create specs/ directory if it doesn't exist:
mkdir -p specs
Read the spec template from references/spec-template.md
Generate the spec by filling the template with:
Write the spec file to specs/{name}.md where {name} is a
kebab-case slug derived from the GOAL (e.g., specs/user-auth.md,
specs/payment-integration.md). Use the Write tool directly.
The specs/ directory is the standard location — /build and /prime
both scan it automatically.
After the spec is created, report to the user:
┌─ Speccy · Report ──────────────────────────────
│
│ ✅ Spec complete
│
│ 📄 File: {spec file path}
│ 📋 Sections: {count}
│ 💬 Rounds: {interview rounds conducted}
│ ❓ Questions: {total questions asked}
│
│ 📝 Key decisions
│ • {decision 1}
│ • {decision 2}
│ • {decision 3}
│
│ 🔗 Links
│ Spec: {spec file path}
│
│ ⚡ Next steps
│ 1. Review the spec: {path}
│ 2. Run `/build {spec path}` to implement (reads the file automatically)
│
└─────────────────────────────────────────────────
Then write a pending-build marker so the next session knows about this spec:
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/marketplaces/slamb2k}"
node -e "require('$PLUGIN_ROOT/hooks/lib/state.cjs').savePendingBuild(process.cwd(), '{spec file path}')"
This marker is picked up by the session-guard hook on the next session start
(including after /clear), which surfaces the build command automatically.
Then display the build command:
⚡ To implement, run: /build {spec file path}
(You can /clear first — the spec is saved and the next session will remind you)
The spec file persists on disk, so the user can /clear the conversation
to free context before running /build. This is the recommended flow for
large specs — clearing context gives /build maximum working room.
IMPORTANT: After generating the spec, STOP. Do NOT enter plan mode,
do NOT start implementing directly, do NOT invoke /build yourself, and
do NOT offer to execute the plan. The spec file is the handoff artifact —
the user controls when and how to invoke /build.
testing
Run the full OMC idea-to-merged-PR pipeline — cancel + deep-interview + ralplan + autopilot + mad-skills:ship — in a single invocation. Explicit-only; this skill never auto-activates. Only run when the user literally types /launch. Do not invoke on phrases like "launch this", "ship it", "full pipeline", or similar — none of those should trigger this skill.
testing
Ship changes through the full PR lifecycle. Use after completing feature work to commit, push, create PR, wait for checks, and merge. Handles the entire workflow: syncs with main, creates feature branch if needed, groups commits logically with semantic messages, creates detailed PR, monitors CI, fixes issues, squash merges, and cleans up. Invoke when work is ready to ship.
development
Generate container-based release pipelines that build once and promote immutable artifacts through environments (dev → staging → prod). Detects your stack, interviews for infrastructure choices, then outputs deterministic CI/CD files (Dockerfile, workflows, deployment manifests) that run without an LLM. Use when setting up deployment pipelines, containerizing an app, creating release workflows, or connecting CI to container-friendly infrastructure (Azure Container Apps, AWS Fargate, Google Cloud Run, Kubernetes, Dokku, Coolify, CapRover, etc.).
development
Initialize any project directory with a standard scaffold for AI-assisted development. Creates specs/ and context/ directories, a project CLAUDE.md with development workflow and guardrails, .gitignore, and branch protection. Recommends claude-mem for persistent memory. Idempotent — safe to run on existing projects. Triggers: "init project", "setup brace", "brace", "initialize", "bootstrap", "scaffold".