plugins/spec-tree/skills/bootstrapping/SKILL.md
ALWAYS invoke this skill when setting up a new spec tree or when /authoring detects an empty spx/ directory. NEVER create a spec tree from scratch without this skill.
npx skillsauth add outcomeeng/spx-claude bootstrappingInstall 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.
Interview the user to understand their product, then scaffold the initial spx/ directory with a product spec, project guide, and top-level node stubs. This is the entry point for new spec-tree projects.
<quick_start>
PREREQUISITE: Check for <SPEC_TREE_FOUNDATION> marker. If absent, invoke /understanding first.
This skill runs when:
/authoring detects no spx/ directory or an empty one/bootstrapping directly</quick_start>
<workflow> <step name="detect">Step 1: Check current state
Glob: "spx/*.product.md"
Glob: "spx/*-*.{enabler,outcome}/"
If a product spec already exists, this is not a bootstrap — redirect to /authoring.
If spx/ doesn't exist or contains no product spec, proceed.
Step 2: Interview the user
Use AskUserQuestion to gather product understanding. Adapt based on what's already known from the conversation.
Round 1 — Product identity:
Round 2 — Product hypothesis:
Round 3 — Scope:
For each candidate, ask whether it delivers user-facing value (outcome) or exists to serve other parts (enabler).
Decision gate: "Ready to scaffold, or want to refine?"
Skip questions where the conversation already provides the answer.
</step> <step name="plan">Step 3: Present the scaffold plan
Before creating anything, show the user what will be created:
Proposed structure:
spx/
├── {product-name}.product.md
├── CLAUDE.md
├── {NN}-{slug}.enabler/
│ ├── {slug}.md
│ └── tests/
├── {NN}-{slug}.outcome/
│ ├── {slug}.md
│ └── tests/
└── ...
Include:
Wait for user confirmation before creating files.
</step> <step name="scaffold">Step 4: Create the scaffold
Create spx/ directory if it doesn't exist.
Write spx/{product-name}.product.md using the template from ${SKILL_DIR}/../understanding/templates/product/product-name.product.md. Fill in:
Write spx/CLAUDE.md from the template at ${SKILL_DIR}/templates/spx-claude.md. Replace {product-name} with the actual product name.
For each top-level node:
spx/{NN}-{slug}.{enabler|outcome}/{slug}.md with hypothesis or enables statement and a placeholder assertiontests/ directoryStep 5: Report and recommend
Summarize what was created:
Recommend next steps:
/authoring"/decomposing"/testing"<failure_modes>
Failure 1: Bootstrapped over an existing tree
Agent ran bootstrapping in a project that already had spx/ with specs. The product spec was overwritten.
How to avoid: Step 1 checks for an existing product spec. If one exists, redirect to /authoring — this is not a bootstrap.
Failure 2: Too many top-level nodes
Agent accepted the user's list of 12 candidate nodes without pushing back. The tree started with too many siblings, making context loading expensive and structure unclear.
How to avoid: During the interview, if the user lists more than 7, ask which ones could be grouped under a parent. The ~7 children heuristic from decomposition-semantics.md applies at every level including the top.
Failure 3: All outcomes, no enablers
Agent created 5 outcome nodes but missed that 3 of them shared a database schema dependency. The shared concern should have been an enabler at a lower index.
How to avoid: After collecting candidate nodes, explicitly ask: "Do any of these share infrastructure or dependencies?" Extract shared concerns as enablers before assigning indices.
</failure_modes>
<success_criteria>
Bootstrapping is complete when:
spx/{product-name}.product.md created with hypothesis and scopespx/CLAUDE.md created from template with product name</success_criteria>
tools
ALWAYS invoke this skill when creating Excalidraw diagrams, visualizing workflows, architectures, or concepts. NEVER generate Excalidraw JSON without this skill.
development
ALWAYS invoke this skill when writing or fixing tests for TypeScript.
development
TypeScript code standards enforced across all skills. Loaded by other skills, not invoked directly.
development
TypeScript ADR conventions enforced across architect and auditor skills. Loaded by other skills, not invoked directly.