/spec-kitty.specify - Create Feature Specification
Version: 0.11.0+
📍 WORKING DIRECTORY: Stay in planning repository
IMPORTANT: Specify works in the planning repository. NO worktrees are created.
# Run from project root:
cd /path/to/project/root # Your planning repository
# All planning artifacts are created in the planning repo and committed:
# - kitty-specs/###-feature/spec.md → Created in planning repo
# - Committed to target branch (from create-feature JSON: target_branch/base_branch)
# - NO worktrees created
Worktrees are created later during /spec-kitty.implement, not during planning.
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Discovery Gate (mandatory)
Before running any scripts or writing to disk you must conduct a structured discovery interview.
Scope proportionality (CRITICAL): FIRST, gauge the inherent complexity of the request:
- Trivial/Test Features (hello world, simple pages, proof-of-concept): Ask 1-2 questions maximum, then proceed. Examples: "a simple hello world page", "tic-tac-toe game", "basic contact form"
- Simple Features (small UI additions, minor enhancements): Ask 2-3 questions covering purpose and basic constraints
- Complex Features (new subsystems, integrations): Ask 3-5 questions covering goals, users, constraints, risks
- Platform/Critical Features (authentication, payments, infrastructure): Full discovery with 5+ questions
User signals to reduce questioning: If the user says "just testing", "quick prototype", "skip to next phase", "stop asking questions" - recognize this as a signal to minimize discovery and proceed with reasonable defaults.
First response rule:
- For TRIVIAL features (hello world, simple test): Ask ONE clarifying question, then if the answer confirms it's simple, proceed directly to spec generation
- For other features: Ask a single focused discovery question and end with
WAITING_FOR_DISCOVERY_INPUT
If the user provides no initial description (empty command), stay in Interactive Interview Mode: keep probing with one question at a time.
Conversational cadence: After each user reply, decide if you have ENOUGH context for this feature's complexity level. For trivial features, 1-2 questions is sufficient. Only continue asking if truly necessary for the scope.
Discovery requirements (scale to feature complexity):
- Maintain a Discovery Questions table internally covering questions appropriate to the feature's complexity (1-2 for trivial, up to 5+ for complex). Track columns
#, Question, Why it matters, and Current insight. Do not render this table to the user.
- For trivial features, reasonable defaults are acceptable. Only probe if truly ambiguous.
- When you have sufficient context for the feature's scope, paraphrase into an Intent Summary and confirm. For trivial features, this can be very brief.
- If user explicitly asks to skip questions or says "just testing", acknowledge and proceed with minimal discovery.
Mission Selection
After completing discovery and confirming the Intent Summary, determine the appropriate mission for this feature.
Available Missions
software-dev: For building software features, APIs, CLI tools, applications
- Phases: research → design → implement → test → review
- Best for: code changes, new features, bug fixes, refactoring
research: For investigations, literature reviews, technical analysis
- Phases: question → methodology → gather → analyze → synthesize → publish
- Best for: feasibility studies, market research, technology evaluation
Mission Inference
Analyze the feature description to identify the primary goal:
- Building, coding, implementing, creating software → software-dev
- Researching, investigating, analyzing, evaluating → research
Check for explicit mission requests in the user's description:
- If user mentions "research project", "investigation", "analysis" → use research
- If user mentions "build", "implement", "create feature" → use software-dev
Confirm with user (unless explicit):
"Based on your description, this sounds like a [software-dev/research] project.
I'll use the [mission name] mission. Does that work for you?"
Handle user response:
- If confirmed: proceed with selected mission
- If user wants different mission: use their choice
Handle --mission flag: If the user provides --mission <key> in their command, skip inference and use the specified mission directly.
Store the final mission selection in your notes and include it in the spec output. Do not pass a --mission flag to feature creation.
Workflow (0.11.0+)
Planning happens in the planning repository - NO worktree created!
- Creates
kitty-specs/###-feature/spec.md directly in planning repo
- Automatically commits to target branch
- No worktree created during specify
Worktrees created later: Use spec-kitty implement WP## to create a workspace for each work package. Worktrees are created later during implement (e.g., .worktrees/###-feature-WP##).
Location
- Work in: Planning repository (not a worktree)
- Creates:
kitty-specs/###-feature/spec.md
- Commits to: target branch (from
create-feature --json → target_branch)
Outline
0. Generate a Friendly Feature Title
- Summarize the agreed intent into a short, descriptive title (aim for ≤7 words; avoid filler like "feature" or "thing").
- Read that title back during the Intent Summary and revise it if the user requests changes.
- Use the confirmed title to derive the kebab-case feature slug for the create-feature command.
The text the user typed after /spec-kitty.specify in the triggering message is the initial feature description. Capture it verbatim, but treat it only as a starting point for discovery—not the final truth. Your job is to interrogate the request, surface gaps, and co-create a complete specification with the user.
Given that feature description, do this:
- Generation Mode (arguments provided): Use the provided text as a starting point, validate it through discovery, and fill gaps with explicit questions or clearly documented assumptions (limit
[NEEDS CLARIFICATION: …] to at most three critical decisions the user has postponed).
- Interactive Interview Mode (no arguments): Use the discovery interview to elicit all necessary context, synthesize the working feature description, and confirm it with the user before you generate any specification artifacts.
Check discovery status:
- If this is your first message or discovery questions remain unanswered, stay in the one-question loop, capture the user's response, update your internal table, and end with
WAITING_FOR_DISCOVERY_INPUT. Do not surface the table; keep it internal. Do not call the creation command yet.
- Only proceed once every discovery question has an explicit answer and the user has acknowledged the Intent Summary.
- Empty invocation rule: stay in interview mode until you can restate the agreed-upon feature description. Do not call the creation command while the description is missing or provisional.
When discovery is complete and the intent summary, title, and mission are confirmed, run the feature creation command from repo root:
spec-kitty agent feature create-feature "<slug>" --json
Where <slug> is a kebab-case version of the friendly title (e.g., "Checkout Upsell Flow" → "checkout-upsell-flow").
The command returns JSON with:
result: "success" or error message
feature: Feature number and slug (e.g., "014-checkout-upsell-flow")
feature_dir: Absolute path to the feature directory inside the main repo
target_branch / base_branch: deterministic branch contract for downstream commands
Parse these values for use in subsequent steps. All file paths are absolute.
IMPORTANT: You must only ever run this command once. The JSON is provided in the terminal output - always refer to it to get the actual paths you're looking for.
Stay in the main repository: No worktree is created during specify.
Read the files created by create-feature:
<feature_dir>/spec.md (already created, may be empty/template-filled)
<feature_dir>/meta.json (already created with feature identity metadata)
The software-dev spec template is bundled at .kittify/missions/software-dev/templates/spec-template.md.
Update <feature_dir>/meta.json only when needed:
- Keep identity fields from
create-feature unchanged (feature_number, slug, feature_slug, created_at, target_branch).
- Ensure
friendly_name matches the confirmed title.
- Ensure
mission is correct.
- Optionally add/update
source_description.
- Ensure
vcs exists ("git" default).
Expected meta.json shape (preserve existing values unless explicitly changed):
{
"feature_number": "014",
"slug": "014-checkout-upsell-flow",
"feature_slug": "014-checkout-upsell-flow",
"created_at": "2026-03-06T12:34:56Z",
"target_branch": "main",
"friendly_name": "Checkout Upsell Flow",
"mission": "software-dev",
"source_description": "optional source summary",
"vcs": "git"
}
Do not regenerate timestamps or directory paths via shell commands.
Generate the specification content by following this flow:
- Use the discovery answers as your authoritative source of truth (do not rely on raw
$ARGUMENTS)
- For empty invocations, treat the synthesized interview summary as the canonical feature description
- Identify: actors, actions, data, constraints, motivations, success metrics
- For any remaining ambiguity:
- Ask the user a focused follow-up question immediately and halt work until they answer
- Only use
[NEEDS CLARIFICATION: …] when the user explicitly defers the decision
- Record any interim assumption in the Assumptions section
- Prioritize clarifications by impact: scope > outcomes > risks/security > user experience > technical details
- Fill User Scenarios & Testing section (ERROR if no clear user flow can be determined)
- Generate Functional Requirements (each requirement must be testable)
- Define Success Criteria (measurable, technology-agnostic outcomes)
- Identify Key Entities (if data involved)
Update the existing <feature_dir>/spec.md using the template structure, replacing placeholders with concrete details derived from the feature description while preserving section order and headings.
Specification Quality Validation: After writing the initial spec, validate it against quality criteria:
a. Create Spec Quality Checklist: Generate a checklist file at feature_dir/checklists/requirements.md using the checklist template structure with these validation items:
# Specification Quality Checklist: [FEATURE NAME]
**Purpose**: Validate specification completeness and quality before proceeding to planning
**Created**: [DATE]
**Feature**: [Link to spec.md]
## Content Quality
- [ ] No implementation details (languages, frameworks, APIs)
- [ ] Focused on user value and business needs
- [ ] Written for non-technical stakeholders
- [ ] All mandatory sections completed
## Requirement Completeness
- [ ] No [NEEDS CLARIFICATION] markers remain
- [ ] Requirements are testable and unambiguous
- [ ] Success criteria are measurable
- [ ] Success criteria are technology-agnostic (no implementation details)
- [ ] All acceptance scenarios are defined
- [ ] Edge cases are identified
- [ ] Scope is clearly bounded
- [ ] Dependencies and assumptions identified
## Feature Readiness
- [ ] All functional requirements have clear acceptance criteria
- [ ] User scenarios cover primary flows
- [ ] Feature meets measurable outcomes defined in Success Criteria
- [ ] No implementation details leak into specification
## Notes
- Items marked incomplete require spec updates before `/spec-kitty.clarify` or `/spec-kitty.plan`
b. Run Validation Check: Review the spec against each checklist item:
- For each item, determine if it passes or fails
- Document specific issues found (quote relevant spec sections)
c. Handle Validation Results:
If all items pass: Mark checklist complete and proceed to step 6
If items fail (excluding [NEEDS CLARIFICATION]):
- List the failing items and specific issues
- Update the spec to address each issue
- Re-run validation until all items pass (max 3 iterations)
- If still failing after 3 iterations, document remaining issues in checklist notes and warn user
If [NEEDS CLARIFICATION] markers remain:
Extract all [NEEDS CLARIFICATION: ...] markers from the spec
Re-confirm with the user whether each outstanding decision truly needs to stay unresolved. Do not assume away critical gaps.
For each clarification the user has explicitly deferred, present options using plain text—no tables:
Question [N]: [Topic]
Context: [Quote relevant spec section]
Need: [Specific question from NEEDS CLARIFICATION marker]
Options: (A) [First answer — implications] · (B) [Second answer — implications] · (C) [Third answer — implications] · (D) Custom (describe your own answer)
Reply with a letter or a custom answer.
Number questions sequentially (Q1, Q2, Q3 - max 3 total)
Present all questions together before waiting for responses
Wait for user to respond with their choices for all questions (e.g., "Q1: A, Q2: Custom - [details], Q3: B")
Update the spec by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer
Re-run validation after all clarifications are resolved
d. Update Checklist: After each validation iteration, update the checklist file with current pass/fail status
Report completion with feature directory, spec file path, checklist results, and readiness for the next phase (/spec-kitty.clarify or /spec-kitty.plan).
NOTE: The script creates and checks out the new branch and initializes the spec file before writing.
General Guidelines
Quick Guidelines
- Focus on WHAT users need and WHY.
- Avoid HOW to implement (no tech stack, APIs, code structure).
- Written for business stakeholders, not developers.
- DO NOT create any checklists that are embedded in the spec. That will be a separate command.
Section Requirements
- Mandatory sections: Must be completed for every feature
- Optional sections: Include only when relevant to the feature
- When a section doesn't apply, remove it entirely (don't leave as "N/A")
For AI Generation
When creating this spec from a user prompt:
- Make informed guesses: Use context, industry standards, and common patterns to fill gaps
- Document assumptions: Record reasonable defaults in the Assumptions section
- Limit clarifications: Maximum 3 [NEEDS CLARIFICATION] markers - use only for critical decisions that:
- Significantly impact feature scope or user experience
- Have multiple reasonable interpretations with different implications
- Lack any reasonable default
- Prioritize clarifications: scope > security/privacy > user experience > technical details
- Think like a tester: Every vague requirement should fail the "testable and unambiguous" checklist item
- Common areas needing clarification (only if no reasonable default exists):
- Feature scope and boundaries (include/exclude specific use cases)
- User types and permissions (if multiple conflicting interpretations possible)
- Security/compliance requirements (when legally/financially significant)
Examples of reasonable defaults (don't ask about these):
- Data retention: Industry-standard practices for the domain
- Performance targets: Standard web/mobile app expectations unless specified
- Error handling: User-friendly messages with appropriate fallbacks
- Authentication method: Standard session-based or OAuth2 for web apps
- Integration patterns: RESTful APIs unless specified otherwise
Success Criteria Guidelines
Success criteria must be:
- Measurable: Include specific metrics (time, percentage, count, rate)
- Technology-agnostic: No mention of frameworks, languages, databases, or tools
- User-focused: Describe outcomes from user/business perspective, not system internals
- Verifiable: Can be tested/validated without knowing implementation details
Good examples:
- "Users can complete checkout in under 3 minutes"
- "System supports 10,000 concurrent users"
- "95% of searches return results in under 1 second"
- "Task completion rate improves by 40%"
Bad examples (implementation-focused):
- "API response time is under 200ms" (too technical, use "Users see results instantly")
- "Database can handle 1000 TPS" (implementation detail, use user-facing metric)
- "React components render efficiently" (framework-specific)
- "Redis cache hit rate above 80%" (technology-specific)
1---2name: spec-kitty-specify3description: Create or update the feature specification from a natural language feature4---56# /spec-kitty.specify - Create Feature Specification78**Version**: 0.11.0+910## 📍 WORKING DIRECTORY: Stay in planning repository1112**IMPORTANT**: Specify works in the planning repository. NO worktrees are created.1314```bash15# Run from project root:16cd /path/to/project/root # Your planning repository1718# All planning artifacts are created in the planning repo and committed:19# - kitty-specs/###-feature/spec.md → Created in planning repo20# - Committed to target branch (from create-feature JSON: target_branch/base_branch)21# - NO worktrees created22```2324**Worktrees are created later** during `/spec-kitty.implement`, not during planning.2526## User Input2728```text29$ARGUMENTS30```3132You **MUST** consider the user input before proceeding (if not empty).3334## Discovery Gate (mandatory)3536Before running any scripts or writing to disk you **must** conduct a structured discovery interview.3738- **Scope proportionality (CRITICAL)**: FIRST, gauge the inherent complexity of the request:39 - **Trivial/Test Features** (hello world, simple pages, proof-of-concept): Ask 1-2 questions maximum, then proceed. Examples: "a simple hello world page", "tic-tac-toe game", "basic contact form"40 - **Simple Features** (small UI additions, minor enhancements): Ask 2-3 questions covering purpose and basic constraints41 - **Complex Features** (new subsystems, integrations): Ask 3-5 questions covering goals, users, constraints, risks42 - **Platform/Critical Features** (authentication, payments, infrastructure): Full discovery with 5+ questions4344- **User signals to reduce questioning**: If the user says "just testing", "quick prototype", "skip to next phase", "stop asking questions" - recognize this as a signal to minimize discovery and proceed with reasonable defaults.4546- **First response rule**:47 - For TRIVIAL features (hello world, simple test): Ask ONE clarifying question, then if the answer confirms it's simple, proceed directly to spec generation48 - For other features: Ask a single focused discovery question and end with `WAITING_FOR_DISCOVERY_INPUT`4950- If the user provides no initial description (empty command), stay in **Interactive Interview Mode**: keep probing with one question at a time.5152- **Conversational cadence**: After each user reply, decide if you have ENOUGH context for this feature's complexity level. For trivial features, 1-2 questions is sufficient. Only continue asking if truly necessary for the scope.5354Discovery requirements (scale to feature complexity):55561. Maintain a **Discovery Questions** table internally covering questions appropriate to the feature's complexity (1-2 for trivial, up to 5+ for complex). Track columns `#`, `Question`, `Why it matters`, and `Current insight`. Do **not** render this table to the user.572. For trivial features, reasonable defaults are acceptable. Only probe if truly ambiguous.583. When you have sufficient context for the feature's scope, paraphrase into an **Intent Summary** and confirm. For trivial features, this can be very brief.594. If user explicitly asks to skip questions or says "just testing", acknowledge and proceed with minimal discovery.6061## Mission Selection6263After completing discovery and confirming the Intent Summary, determine the appropriate mission for this feature.6465### Available Missions6667- **software-dev**: For building software features, APIs, CLI tools, applications68 - Phases: research → design → implement → test → review69 - Best for: code changes, new features, bug fixes, refactoring7071- **research**: For investigations, literature reviews, technical analysis72 - Phases: question → methodology → gather → analyze → synthesize → publish73 - Best for: feasibility studies, market research, technology evaluation7475### Mission Inference76771. **Analyze the feature description** to identify the primary goal:78 - Building, coding, implementing, creating software → **software-dev**79 - Researching, investigating, analyzing, evaluating → **research**80812. **Check for explicit mission requests** in the user's description:82 - If user mentions "research project", "investigation", "analysis" → use research83 - If user mentions "build", "implement", "create feature" → use software-dev84853. **Confirm with user** (unless explicit):86 > "Based on your description, this sounds like a **[software-dev/research]** project.87 > I'll use the **[mission name]** mission. Does that work for you?"88894. **Handle user response**:90 - If confirmed: proceed with selected mission91 - If user wants different mission: use their choice92935. **Handle --mission flag**: If the user provides `--mission <key>` in their command, skip inference and use the specified mission directly.9495Store the final mission selection in your notes and include it in the spec output. Do not pass a `--mission` flag to feature creation.9697## Workflow (0.11.0+)9899**Planning happens in the planning repository - NO worktree created!**1001011. Creates `kitty-specs/###-feature/spec.md` directly in planning repo1022. Automatically commits to target branch1033. No worktree created during specify104105**Worktrees created later**: Use `spec-kitty implement WP##` to create a workspace for each work package. Worktrees are created later during implement (e.g., `.worktrees/###-feature-WP##`).106107## Location108109- Work in: **Planning repository** (not a worktree)110- Creates: `kitty-specs/###-feature/spec.md`111- Commits to: target branch (from `create-feature --json` → `target_branch`)112113## Outline114115### 0. Generate a Friendly Feature Title116117- Summarize the agreed intent into a short, descriptive title (aim for ≤7 words; avoid filler like "feature" or "thing").118- Read that title back during the Intent Summary and revise it if the user requests changes.119- Use the confirmed title to derive the kebab-case feature slug for the create-feature command.120121The text the user typed after `/spec-kitty.specify` in the triggering message **is** the initial feature description. Capture it verbatim, but treat it only as a starting point for discovery—not the final truth. Your job is to interrogate the request, surface gaps, and co-create a complete specification with the user.122123Given that feature description, do this:124125- **Generation Mode (arguments provided)**: Use the provided text as a starting point, validate it through discovery, and fill gaps with explicit questions or clearly documented assumptions (limit `[NEEDS CLARIFICATION: …]` to at most three critical decisions the user has postponed).126- **Interactive Interview Mode (no arguments)**: Use the discovery interview to elicit all necessary context, synthesize the working feature description, and confirm it with the user before you generate any specification artifacts.1271281. **Check discovery status**:129 - If this is your first message or discovery questions remain unanswered, stay in the one-question loop, capture the user's response, update your internal table, and end with `WAITING_FOR_DISCOVERY_INPUT`. Do **not** surface the table; keep it internal. Do **not** call the creation command yet.130 - Only proceed once every discovery question has an explicit answer and the user has acknowledged the Intent Summary.131 - Empty invocation rule: stay in interview mode until you can restate the agreed-upon feature description. Do **not** call the creation command while the description is missing or provisional.1321332. When discovery is complete and the intent summary, **title**, and **mission** are confirmed, run the feature creation command from repo root:134135 ```bash136 spec-kitty agent feature create-feature "<slug>" --json137 ```138139 Where `<slug>` is a kebab-case version of the friendly title (e.g., "Checkout Upsell Flow" → "checkout-upsell-flow").140141 The command returns JSON with:142 - `result`: "success" or error message143 - `feature`: Feature number and slug (e.g., "014-checkout-upsell-flow")144 - `feature_dir`: Absolute path to the feature directory inside the main repo145 - `target_branch` / `base_branch`: deterministic branch contract for downstream commands146147 Parse these values for use in subsequent steps. All file paths are absolute.148149 **IMPORTANT**: You must only ever run this command once. The JSON is provided in the terminal output - always refer to it to get the actual paths you're looking for.1503. **Stay in the main repository**: No worktree is created during specify.1511524. Read the files created by `create-feature`:153 - `<feature_dir>/spec.md` (already created, may be empty/template-filled)154 - `<feature_dir>/meta.json` (already created with feature identity metadata)155156 The software-dev spec template is bundled at `.kittify/missions/software-dev/templates/spec-template.md`.1571585. Update `<feature_dir>/meta.json` only when needed:159 - Keep identity fields from `create-feature` unchanged (`feature_number`, `slug`, `feature_slug`, `created_at`, `target_branch`).160 - Ensure `friendly_name` matches the confirmed title.161 - Ensure `mission` is correct.162 - Optionally add/update `source_description`.163 - Ensure `vcs` exists (`"git"` default).164165 Expected `meta.json` shape (preserve existing values unless explicitly changed):166167 ```json168 {169 "feature_number": "014",170 "slug": "014-checkout-upsell-flow",171 "feature_slug": "014-checkout-upsell-flow",172 "created_at": "2026-03-06T12:34:56Z",173 "target_branch": "main",174 "friendly_name": "Checkout Upsell Flow",175 "mission": "software-dev",176 "source_description": "optional source summary",177 "vcs": "git"178 }179 ```180181 **Do not regenerate timestamps or directory paths via shell commands.**1821836. Generate the specification content by following this flow:184 - Use the discovery answers as your authoritative source of truth (do **not** rely on raw `$ARGUMENTS`)185 - For empty invocations, treat the synthesized interview summary as the canonical feature description186 - Identify: actors, actions, data, constraints, motivations, success metrics187 - For any remaining ambiguity:188 * Ask the user a focused follow-up question immediately and halt work until they answer189 * Only use `[NEEDS CLARIFICATION: …]` when the user explicitly defers the decision190 * Record any interim assumption in the Assumptions section191 * Prioritize clarifications by impact: scope > outcomes > risks/security > user experience > technical details192 - Fill User Scenarios & Testing section (ERROR if no clear user flow can be determined)193 - Generate Functional Requirements (each requirement must be testable)194 - Define Success Criteria (measurable, technology-agnostic outcomes)195 - Identify Key Entities (if data involved)1961977. Update the existing `<feature_dir>/spec.md` using the template structure, replacing placeholders with concrete details derived from the feature description while preserving section order and headings.1981998. **Specification Quality Validation**: After writing the initial spec, validate it against quality criteria:200201 a. **Create Spec Quality Checklist**: Generate a checklist file at `feature_dir/checklists/requirements.md` using the checklist template structure with these validation items:202 203 ```markdown204 # Specification Quality Checklist: [FEATURE NAME]205 206 **Purpose**: Validate specification completeness and quality before proceeding to planning207 **Created**: [DATE]208 **Feature**: [Link to spec.md]209 210 ## Content Quality211 212 - [ ] No implementation details (languages, frameworks, APIs)213 - [ ] Focused on user value and business needs214 - [ ] Written for non-technical stakeholders215 - [ ] All mandatory sections completed216 217 ## Requirement Completeness218 219 - [ ] No [NEEDS CLARIFICATION] markers remain220 - [ ] Requirements are testable and unambiguous221 - [ ] Success criteria are measurable222 - [ ] Success criteria are technology-agnostic (no implementation details)223 - [ ] All acceptance scenarios are defined224 - [ ] Edge cases are identified225 - [ ] Scope is clearly bounded226 - [ ] Dependencies and assumptions identified227 228 ## Feature Readiness229 230 - [ ] All functional requirements have clear acceptance criteria231 - [ ] User scenarios cover primary flows232 - [ ] Feature meets measurable outcomes defined in Success Criteria233 - [ ] No implementation details leak into specification234 235 ## Notes236 237 - Items marked incomplete require spec updates before `/spec-kitty.clarify` or `/spec-kitty.plan`238 ```239 240 b. **Run Validation Check**: Review the spec against each checklist item:241 - For each item, determine if it passes or fails242 - Document specific issues found (quote relevant spec sections)243 244 c. **Handle Validation Results**:245 246 - **If all items pass**: Mark checklist complete and proceed to step 6247 248 - **If items fail (excluding [NEEDS CLARIFICATION])**:249 1. List the failing items and specific issues250 2. Update the spec to address each issue251 3. Re-run validation until all items pass (max 3 iterations)252 4. If still failing after 3 iterations, document remaining issues in checklist notes and warn user253 254 - **If [NEEDS CLARIFICATION] markers remain**:255 1. Extract all [NEEDS CLARIFICATION: ...] markers from the spec256 2. Re-confirm with the user whether each outstanding decision truly needs to stay unresolved. Do not assume away critical gaps.257 3. For each clarification the user has explicitly deferred, present options using plain text—no tables:258 259 ```260 Question [N]: [Topic]261 Context: [Quote relevant spec section]262 Need: [Specific question from NEEDS CLARIFICATION marker]263 Options: (A) [First answer — implications] · (B) [Second answer — implications] · (C) [Third answer — implications] · (D) Custom (describe your own answer)264 Reply with a letter or a custom answer.265 ```266 267 4. Number questions sequentially (Q1, Q2, Q3 - max 3 total)268 5. Present all questions together before waiting for responses269 6. Wait for user to respond with their choices for all questions (e.g., "Q1: A, Q2: Custom - [details], Q3: B")270 7. Update the spec by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer271 9. Re-run validation after all clarifications are resolved272 273 d. **Update Checklist**: After each validation iteration, update the checklist file with current pass/fail status2742759. Report completion with feature directory, spec file path, checklist results, and readiness for the next phase (`/spec-kitty.clarify` or `/spec-kitty.plan`).276277**NOTE:** The script creates and checks out the new branch and initializes the spec file before writing.278279## General Guidelines280281## Quick Guidelines282283- Focus on **WHAT** users need and **WHY**.284- Avoid HOW to implement (no tech stack, APIs, code structure).285- Written for business stakeholders, not developers.286- DO NOT create any checklists that are embedded in the spec. That will be a separate command.287288### Section Requirements289290- **Mandatory sections**: Must be completed for every feature291- **Optional sections**: Include only when relevant to the feature292- When a section doesn't apply, remove it entirely (don't leave as "N/A")293294### For AI Generation295296When creating this spec from a user prompt:2972981. **Make informed guesses**: Use context, industry standards, and common patterns to fill gaps2992. **Document assumptions**: Record reasonable defaults in the Assumptions section3003. **Limit clarifications**: Maximum 3 [NEEDS CLARIFICATION] markers - use only for critical decisions that:301 - Significantly impact feature scope or user experience302 - Have multiple reasonable interpretations with different implications303 - Lack any reasonable default3044. **Prioritize clarifications**: scope > security/privacy > user experience > technical details3055. **Think like a tester**: Every vague requirement should fail the "testable and unambiguous" checklist item3066. **Common areas needing clarification** (only if no reasonable default exists):307 - Feature scope and boundaries (include/exclude specific use cases)308 - User types and permissions (if multiple conflicting interpretations possible)309 - Security/compliance requirements (when legally/financially significant)310 311**Examples of reasonable defaults** (don't ask about these):312313- Data retention: Industry-standard practices for the domain314- Performance targets: Standard web/mobile app expectations unless specified315- Error handling: User-friendly messages with appropriate fallbacks316- Authentication method: Standard session-based or OAuth2 for web apps317- Integration patterns: RESTful APIs unless specified otherwise318319### Success Criteria Guidelines320321Success criteria must be:3223231. **Measurable**: Include specific metrics (time, percentage, count, rate)3242. **Technology-agnostic**: No mention of frameworks, languages, databases, or tools3253. **User-focused**: Describe outcomes from user/business perspective, not system internals3264. **Verifiable**: Can be tested/validated without knowing implementation details327328**Good examples**:329330- "Users can complete checkout in under 3 minutes"331- "System supports 10,000 concurrent users"332- "95% of searches return results in under 1 second"333- "Task completion rate improves by 40%"334335**Bad examples** (implementation-focused):336337- "API response time is under 200ms" (too technical, use "Users see results instantly")338- "Database can handle 1000 TPS" (implementation detail, use user-facing metric)339- "React components render efficiently" (framework-specific)340- "Redis cache hit rate above 80%" (technology-specific)