Complete spec workflow - generates Run ID, creates isolated worktree, brainstorms requirements, writes lean spec documents that reference constitutions, validates architecture quality, and reports completion
A specification defines WHAT to build and WHY. It is NOT an implementation plan.
Core principle: Reference constitutions, link to docs, keep it lean. The /plan command handles task decomposition.
Spec = Requirements + Architecture Plan = Tasks + Dependencies
Use this skill when:
/spectacular:spec slash commandDo NOT use for:
/spectacular:plan instead"I'm using the writing-specs skill to create a feature specification."
Before starting the spec workflow, detect the workspace mode:
# Detect workspace mode
REPO_COUNT=$(find . -maxdepth 2 -name ".git" -type d 2>/dev/null | wc -l | tr -d ' ')
if [ "$REPO_COUNT" -gt 1 ]; then
echo "Multi-repo workspace detected ($REPO_COUNT repos)"
WORKSPACE_MODE="multi-repo"
WORKSPACE_ROOT=$(pwd)
# List detected repos
find . -maxdepth 2 -name ".git" -type d | xargs -I{} dirname {} | sed 's|^\./||'
else
echo "Single-repo mode"
WORKSPACE_MODE="single-repo"
fi
Single-repo mode (current behavior):
specs/{runId}-{feature}/spec.md at repo root.worktrees/{runId}-main/@docs/constitutions/current/Multi-repo mode (new behavior):
./specs/{runId}-{feature}/spec.md at WORKSPACE rootAll specifications MUST follow: @docs/constitutions/current/
First action: Generate a unique run identifier for this spec.
# Generate 6-char hash from feature name + timestamp
TIMESTAMP=$(date +%s)
RUN_ID=$(echo "{feature-description}-$TIMESTAMP" | shasum -a 256 | head -c 6)
echo "RUN_ID: $RUN_ID"
CRITICAL: Execute this entire block as a single multi-line Bash tool call. The comment on the first line is REQUIRED - without it, command substitution $(...) causes parse errors.
Store for use in:
specs/{run-id}-{feature-slug}/Announce: "Generated RUN_ID: {run-id} for tracking this spec run"
Announce: "Creating isolated worktree for this spec run..."
Multi-repo mode: Skip worktree creation. Specs live at workspace root, not inside any repo.
if [ "$WORKSPACE_MODE" = "multi-repo" ]; then
echo "Multi-repo mode: Specs stored at workspace root, no worktree needed"
mkdir -p specs/${RUN_ID}-${FEATURE_SLUG}
# Skip to Step 1 (brainstorming)
fi
Single-repo mode: Continue with worktree creation as normal.
Create worktree for isolated development:
Create branch using git-spice:
using-git-spice skill to create branch {runId}-main from current branch{runId}-main (e.g., abc123-main)Create worktree:
# Create worktree at .worktrees/{runId}-main/
git worktree add .worktrees/${RUN_ID}-main ${RUN_ID}-main
Error handling:
git worktree remove .worktrees/{runId}-main or use a different feature name."Working directory context:
.worktrees/{runId}-main/Announce: "Worktree created at .worktrees/{runId}-main/ - all work will happen in isolation"
REQUIRED: Each worktree needs dependencies installed before work begins.
Check CLAUDE.md for setup commands:
Look for this pattern in the project's CLAUDE.md:
## Development Commands
### Setup
- **install**: `bun install`
- **postinstall**: `npx prisma generate`
If setup commands found, run installation:
# Navigate to worktree
cd .worktrees/${RUN_ID}-main
# Check if dependencies already installed (handles resume)
if [ ! -d node_modules ]; then
echo "Installing dependencies..."
{install-command} # From CLAUDE.md (e.g., bun install)
# Run postinstall if defined
if [ -n "{postinstall-command}" ]; then
echo "Running postinstall (codegen)..."
{postinstall-command} # From CLAUDE.md (e.g., npx prisma generate)
fi
else
echo "Dependencies already installed"
fi
If setup commands NOT found in CLAUDE.md:
Error and instruct user:
Setup Commands Required
Worktrees need dependencies installed to run quality checks and codegen.
Please add to your project's CLAUDE.md:
## Development Commands
### Setup
- **install**: `bun install` (or npm install, pnpm install, etc.)
- **postinstall**: `npx prisma generate` (optional - for codegen)
Then re-run: /spectacular:spec {feature-description}
Announce: "Dependencies installed in worktree - ready for spec generation"
Context: All brainstorming happens in the context of the worktree (.worktrees/{runId}-main/)
Announce: "I'm brainstorming the design using Phases 1-3 (Understanding, Exploration, Design Presentation)."
Create TodoWrite checklist:
Brainstorming for Spec:
- [ ] Phase 1: Understanding (purpose, constraints, criteria)
- [ ] Phase 2: Exploration (2-3 approaches proposed)
- [ ] Phase 3: Design Presentation (design validated)
- [ ] Proceed to Step 2: Generate Specification
Goal: Clarify scope, constraints, and success criteria.
Constitution compliance:
Goal: Propose and evaluate 2-3 architectural approaches.
Goal: Present detailed design incrementally and validate.
After Phase 3: Mark TodoWrite complete and proceed immediately to Step 2.
Announce: "Generating the specification document..."
Task:
.worktrees/{run-id}-main/specs/{run-id}-{feature-slug}/spec.md/spectacular:plan's job)Spec frontmatter must include:
---
runId: {run-id}