Spec Chef
Transform implicit stakeholder knowledge into explicit artifacts through systematic gap detection and constrained questioning.
Why This Works
Stakeholders know more than they've written. Documentation has gaps because writers assume context their readers don't have.
- Detects gaps in existing docs
- Orders questions by dependency
- Constrains choices to 2-4 options
- Codifies immediately before stakeholders forget
- Separates concerns across distinct artifacts
The Protocol
Phase 1: Analyze
Terminology check: When working with multi-author documentation or inconsistent domain vocabulary, extract domain terminology first:
- Scan for domain nouns, verbs, and concepts
- Flag ambiguities:
| Problem |
Example |
Risk |
| Same word, different concepts |
"account" = Customer AND User |
Specs describe wrong entity |
| Different words, same concept |
"purchase", "order", "transaction" |
Inconsistent specs, duplicated logic |
| Vague or overloaded terms |
"process the request" |
Undefined behaviors slip through |
- Select ONE canonical term per concept; list aliases to avoid
- State relationships with explicit cardinality
- Write
UBIQUITOUS_LANGUAGE.md and index it in project documentation
Skip when domain vocabulary is already consistent.
Gap detection: Read existing documentation. Identify gaps using these categories:
| Gap Type |
Signal |
What's Missing |
Questions to Surface |
| Missing personas |
"users" without specifics |
WHO specifically, their constraints, what they know |
Who is the PRIMARY user? What's their time budget? Who is explicitly NOT a user? |
| Undefined behaviors |
"handles errors gracefully" |
HOW specifically, what the user sees |
What exactly appears on screen? Can it be undone? What state is preserved? |
| Implicit assumptions |
Decisions without rationale |
WHY this choice, what alternatives were rejected |
What constraints drove this? Is this revisitable or locked? |
| Missing edge cases |
Happy path only |
What happens when things go wrong |
Invalid input? Timeout? User abandons mid-flow? Abuse/spam? |
| No success criteria |
No way to know "done" |
How do we know it worked |
What's MVP vs nice-to-have? What would make this a failure? |
| Unclear scope |
No explicit "NOT building" |
What are we NOT building |
What's explicitly out of scope? What's deferred to later? |
Detection technique -- for each documentation section ask:
- Could two engineers interpret this differently? (ambiguity gap)
- Does this assume knowledge not stated? (assumption gap)
- What questions would a new team member ask? (context gap)
- What could go wrong that isn't mentioned? (edge case gap)
- How would we demo this? (behavior gap)
- Who decides if this is done? (success gap)
Phase 2: Map Dependencies
Order questions into tiers. Later tiers depend on earlier answers.
Complete each tier before starting the next.
Tier 0: Foundation (identity, scale, privacy)
|
Tier 1: User Model (accounts, sessions, discovery)
|
Tier 2: Incentives (motivation, feedback, rewards)
|
Tier 3: Lifecycle (create, modify, complete, delete)
|
Tier 4: Edge Cases (errors, abuse, recovery)
|
Tier 5: Success (MVP scope, metrics)
Domain-specific tier content:
| Domain |
Tier 0 |
Tier 1 |
Tier 2 |
Tier 3 |
Tier 4 |
Tier 5 |
| Consumer |
audience, positioning |
onboarding, accounts |
engagement, notifications |
content lifecycle |
moderation, safety |
growth, retention |
| B2B |
company size, use case |
teams, roles, permissions |
integrations, workflow |
data lifecycle, compliance |
support, SLA |
revenue, churn |
| Internal |
who, what problem |
access, auth |
training, docs |
maintenance, updates |
fallback |
adoption, time saved |
| API |
target devs, use cases |
auth, rate limits |
DX, documentation |
versioning, deprecation |
error handling, debugging |
adoption, integration count |
Phase 3: Extract
Use AskUserQuestion tool with constrained choices:
Rules:
- 2-4 options per question (forces concrete decisions)
- Include trade-off in each option's description
- One decision per question (don't bundle)
- 1-4 questions per round (don't overwhelm)
- "Other" is always available (stakeholder can escape)
Question anatomy:
header: "Scale" (<=12 chars, categorizes)
question: "What scale should X support?" (specific, ends with ?)
options:
- label: "Small (10-50)"
description: "Use case A, trade-off B"
- label: "Medium (50-200)"
description: "Use case C, trade-off D"
Ask tier-by-tier. Capture answers before advancing to the next tier.
Phase 4: Codify
Write artifacts IMMEDIATELY after each tier (or at most after all tiers complete). Don't wait -- stakeholders forget details and rationales fade.
Artifact separation:
| Artifact |
Contains |
Does NOT Contain |
| Product Spec |
Decisions, constraints, behaviors |
Technical architecture |
| Personas |
Users, jobs-to-be-done, anti-personas |
Implementation details |
| User Stories |
Value units, AC as hypotheses |
How to build |
| Architecture |
Technical decisions, patterns |
Business logic |
When uncertain where information belongs, use this decision matrix:
| Information Type |
Spec |
Personas |
Stories |
Architecture |
| User identity model |
X |
|
|
|
| User motivations |
|
X |
|
|
| Feature behavior |
X |
|
|
|
| Acceptance criteria |
|
|
X |
|
| Technology choices |
|
|
|
X |
| Scale constraints |
X |
|
|
X |
| Privacy model |
X |
|
|
|
| Jobs-to-be-done |
|
X |
|
|
| Error handling UX |
X |
|
X |
|
| Error handling impl |
|
|
|
X |
| MVP scope |
X |
|
|
|
| Story dependencies |
|
|
X |
|
| Data schemas |
|
|
|
X |
| Success metrics |
X |
|
|
|
Separation rules:
- Don't mix WHAT and HOW (behavior in Spec, implementation in Architecture)
- Don't mix WHO and WHAT (persona details in Personas, constraints in Spec)
- Don't write stories without user value (technical work goes in Architecture)
- Don't duplicate decisions across artifacts (single source, references not copies)
When a decision changes, update the source artifact. Single source of truth.
Phase 5: Index
Update project documentation (CLAUDE.md or equivalent) to reference new artifacts. Future sessions must find them.
Anti-Patterns
| Don't |
Do Instead |
| Ask open-ended questions |
Offer 2-4 concrete options |
| Bundle multiple decisions |
One question per decision |
| Wait to codify |
Write artifacts immediately |
| Mix WHAT/WHO/HOW |
Separate into distinct files |
| Assume tier order |
Validate dependencies for domain |
Tool Requirements
This skill requires AskUserQuestion tool with:
questions array (1-4 questions)
options array per question (2-4 options)
multiSelect boolean (usually false)
header string (<=12 chars)
Each option needs label and description.
1---2name: spec-chef3description: Extracts implicit product decisions from stakeholders into durable artifacts through systematic gap detection and constrained questioning. Triggers: analyzing incomplete specs, stakeholder interviews, finding documentation gaps, "what questions should I ask", extracting product requirements, defining MVP scope. Produces separated artifacts (spec, personas, stories).4---56# Spec Chef78Transform implicit stakeholder knowledge into explicit artifacts through systematic gap detection and constrained questioning.910## Why This Works1112Stakeholders know more than they've written. Documentation has gaps because writers assume context their readers don't have.13141. **Detects gaps** in existing docs152. **Orders questions** by dependency163. **Constrains choices** to 2-4 options174. **Codifies immediately** before stakeholders forget185. **Separates concerns** across distinct artifacts1920## The Protocol2122### Phase 1: Analyze2324**Terminology check**: When working with multi-author documentation or inconsistent domain vocabulary, extract domain terminology first:25261. Scan for domain nouns, verbs, and concepts272. Flag ambiguities:2829| Problem | Example | Risk |30|---------|---------|------|31| Same word, different concepts | "account" = Customer AND User | Specs describe wrong entity |32| Different words, same concept | "purchase", "order", "transaction" | Inconsistent specs, duplicated logic |33| Vague or overloaded terms | "process the request" | Undefined behaviors slip through |34353. Select ONE canonical term per concept; list aliases to avoid364. State relationships with explicit cardinality375. Write `UBIQUITOUS_LANGUAGE.md` and index it in project documentation3839Skip when domain vocabulary is already consistent.4041**Gap detection**: Read existing documentation. Identify gaps using these categories:4243| Gap Type | Signal | What's Missing | Questions to Surface |44|----------|--------|----------------|---------------------|45| Missing personas | "users" without specifics | WHO specifically, their constraints, what they know | Who is the PRIMARY user? What's their time budget? Who is explicitly NOT a user? |46| Undefined behaviors | "handles errors gracefully" | HOW specifically, what the user sees | What exactly appears on screen? Can it be undone? What state is preserved? |47| Implicit assumptions | Decisions without rationale | WHY this choice, what alternatives were rejected | What constraints drove this? Is this revisitable or locked? |48| Missing edge cases | Happy path only | What happens when things go wrong | Invalid input? Timeout? User abandons mid-flow? Abuse/spam? |49| No success criteria | No way to know "done" | How do we know it worked | What's MVP vs nice-to-have? What would make this a failure? |50| Unclear scope | No explicit "NOT building" | What are we NOT building | What's explicitly out of scope? What's deferred to later? |5152Detection technique -- for each documentation section ask:531. Could two engineers interpret this differently? (ambiguity gap)542. Does this assume knowledge not stated? (assumption gap)553. What questions would a new team member ask? (context gap)564. What could go wrong that isn't mentioned? (edge case gap)575. How would we demo this? (behavior gap)586. Who decides if this is done? (success gap)5960### Phase 2: Map Dependencies6162Order questions into tiers. Later tiers depend on earlier answers.63Complete each tier before starting the next.6465```66Tier 0: Foundation (identity, scale, privacy)67 |68Tier 1: User Model (accounts, sessions, discovery)69 |70Tier 2: Incentives (motivation, feedback, rewards)71 |72Tier 3: Lifecycle (create, modify, complete, delete)73 |74Tier 4: Edge Cases (errors, abuse, recovery)75 |76Tier 5: Success (MVP scope, metrics)77```7879**Domain-specific tier content**:8081| Domain | Tier 0 | Tier 1 | Tier 2 | Tier 3 | Tier 4 | Tier 5 |82|--------|--------|--------|--------|--------|--------|--------|83| Consumer | audience, positioning | onboarding, accounts | engagement, notifications | content lifecycle | moderation, safety | growth, retention |84| B2B | company size, use case | teams, roles, permissions | integrations, workflow | data lifecycle, compliance | support, SLA | revenue, churn |85| Internal | who, what problem | access, auth | training, docs | maintenance, updates | fallback | adoption, time saved |86| API | target devs, use cases | auth, rate limits | DX, documentation | versioning, deprecation | error handling, debugging | adoption, integration count |8788### Phase 3: Extract8990Use `AskUserQuestion` tool with constrained choices:9192**Rules:**93- 2-4 options per question (forces concrete decisions)94- Include trade-off in each option's description95- One decision per question (don't bundle)96- 1-4 questions per round (don't overwhelm)97- "Other" is always available (stakeholder can escape)9899**Question anatomy:**100```101header: "Scale" (<=12 chars, categorizes)102question: "What scale should X support?" (specific, ends with ?)103options:104 - label: "Small (10-50)"105 description: "Use case A, trade-off B"106 - label: "Medium (50-200)"107 description: "Use case C, trade-off D"108```109110Ask tier-by-tier. Capture answers before advancing to the next tier.111112### Phase 4: Codify113114Write artifacts IMMEDIATELY after each tier (or at most after all tiers complete). Don't wait -- stakeholders forget details and rationales fade.115116**Artifact separation:**117118| Artifact | Contains | Does NOT Contain |119|----------|----------|------------------|120| Product Spec | Decisions, constraints, behaviors | Technical architecture |121| Personas | Users, jobs-to-be-done, anti-personas | Implementation details |122| User Stories | Value units, AC as hypotheses | How to build |123| Architecture | Technical decisions, patterns | Business logic |124125**When uncertain where information belongs, use this decision matrix:**126127| Information Type | Spec | Personas | Stories | Architecture |128|------------------|:----:|:--------:|:-------:|:------------:|129| User identity model | X | | | |130| User motivations | | X | | |131| Feature behavior | X | | | |132| Acceptance criteria | | | X | |133| Technology choices | | | | X |134| Scale constraints | X | | | X |135| Privacy model | X | | | |136| Jobs-to-be-done | | X | | |137| Error handling UX | X | | X | |138| Error handling impl | | | | X |139| MVP scope | X | | | |140| Story dependencies | | | X | |141| Data schemas | | | | X |142| Success metrics | X | | | |143144**Separation rules:**145- Don't mix WHAT and HOW (behavior in Spec, implementation in Architecture)146- Don't mix WHO and WHAT (persona details in Personas, constraints in Spec)147- Don't write stories without user value (technical work goes in Architecture)148- Don't duplicate decisions across artifacts (single source, references not copies)149150When a decision changes, update the source artifact. Single source of truth.151152### Phase 5: Index153154Update project documentation (CLAUDE.md or equivalent) to reference new artifacts. Future sessions must find them.155156## Anti-Patterns157158| Don't | Do Instead |159|-------|------------|160| Ask open-ended questions | Offer 2-4 concrete options |161| Bundle multiple decisions | One question per decision |162| Wait to codify | Write artifacts immediately |163| Mix WHAT/WHO/HOW | Separate into distinct files |164| Assume tier order | Validate dependencies for domain |165166## Tool Requirements167168This skill requires `AskUserQuestion` tool with:169- `questions` array (1-4 questions)170- `options` array per question (2-4 options)171- `multiSelect` boolean (usually false)172- `header` string (<=12 chars)173174Each option needs `label` and `description`.