Templates: If you need the template files referenced below (spec-template.md, plan-template.md, etc.), they are available in the BB-Skills repository at
. If installed locally, check
or the project's
directory.
-
Generate a concise short name (2-4 words) for the branch:
- Analyze the feature description and extract the most meaningful keywords
- Create a 2-4 word short name that captures the essence of the feature
- Use action-noun format when possible (e.g., "add-user-auth", "fix-payment-bug")
- Preserve technical terms and acronyms (OAuth2, API, JWT, etc.)
- Keep it concise but descriptive enough to understand the feature at a glance
- Examples:
- "I want to add user authentication" -> "user-auth"
- "Implement OAuth2 integration for the API" -> "oauth2-api-integration"
- "Create a dashboard for analytics" -> "analytics-dashboard"
- "Fix payment processing timeout bug" -> "fix-payment-timeout"
-
Check for existing branches before creating new one:
a. First, fetch all remote branches to ensure we have the latest information:
b. Find the highest feature number across all sources for the short-name:
- Remote branches:
git ls-remote --heads origin | grep -E 'refs/heads/[0-9]+-<short-name>$'
- Local branches:
git branch | grep -E '^[* ]*[0-9]+-<short-name>$'
- Specs directories: Check for directories matching
specs/[0-9]+-<short-name>
c. Determine the next available number:
- Extract all numbers from all three sources
- Find the highest number N
- Use N+1 for the new branch number
d. Create the feature branch and spec directory structure:
- Create and checkout a new branch named
- Create the specs directory:
- Initialize the spec file at
specs/N+1-<short-name>/spec.md
IMPORTANT:
- Check all three sources (remote branches, local branches, specs directories) to find the highest number
- Only match branches/directories with the exact short-name pattern
- If no existing branches/directories found with this short-name, start with number 1
- You must only create one branch per feature
-
Collect BuildBetter context (best-effort):
- Derive from the spec file path.
- If BuildBetter context collection is available, run it to gather customer evidence using the feature description.
- The collector writes:
FEATURE_DIR/buildbetter-context.json
FEATURE_DIR/buildbetter-context.md
FEATURE_DIR/user-stories.md
- Handle collector status:
- : Use BuildBetter evidence directly.
- : Use available evidence and preserve warnings.
- : Continue without BuildBetter data and add a note in spec assumptions.
- : Continue without BuildBetter data, warn explicitly, and preserve any generated artifacts.
-
Load the spec template and BuildBetter artifacts (if present) to understand required sections and evidence context.
-
Follow this execution flow:
- Parse user description from Input
If empty: ERROR "No feature description provided"
- Extract key concepts from description and BuildBetter evidence
Identify: actors, actions, data, constraints
- Pull exact customer quotes from when available
- Pull existing stories from when available
- Track each requirement/story to one or more evidence IDs () when available
- For unclear aspects:
- Make informed guesses based on context and industry standards
- Only mark with [NEEDS CLARIFICATION: specific question] if:
- The choice significantly impacts feature scope or user experience
- Multiple reasonable interpretations exist with different implications
- No reasonable default exists
- LIMIT: Maximum 3 [NEEDS CLARIFICATION] markers total
- Prioritize clarifications by impact: scope > security/privacy > user experience > technical details
- Fill User Scenarios & Testing section
If no clear user flow: ERROR "Cannot determine user scenarios"
- Prioritize evidence-backed user journeys first
- Generate Functional Requirements
Each requirement must be testable
Use reasonable defaults for unspecified details (document assumptions in Assumptions section)
- Define Success Criteria
Create measurable, technology-agnostic outcomes
Include both quantitative metrics (time, performance, volume) and qualitative measures (user satisfaction, task completion)
Each criterion must be verifiable without implementation details
- Identify Key Entities (if data involved)
- Add evidence traceability annotations:
- Each major user story includes
- Requirements include evidence IDs where relevant
- If BuildBetter unavailable, explicitly mark assumptions as non-evidence-backed
- Return: SUCCESS (spec ready for planning)
-
Write the specification to the spec file using the template structure, replacing placeholders with concrete details derived from the feature description and BuildBetter context 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:
markdown
# 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 using the bb-clarify or bb-plan skills
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 8
-
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
-
LIMIT CHECK: If more than 3 markers exist, keep only the 3 most critical (by scope/security/UX impact) and make informed guesses for the rest
-
For each clarification needed (max 3), present options to user in this format:
markdown
## Question [N]: [Topic]
**Context**: [Quote relevant spec section]
**What we need to know**: [Specific question from NEEDS CLARIFICATION marker]
**Suggested Answers**:
|--------|--------|--------------|
| A | [First suggested answer] | [What this means for the feature] |
| B | [Second suggested answer] | [What this means for the feature] |
| C | [Third suggested answer] | [What this means for the feature] |
| Custom | Provide your own answer | [Explain how to provide custom input] |
**Your choice**: _[Wait for user response]_
-
CRITICAL - Table Formatting: Ensure markdown tables are properly formatted:
- Use consistent spacing with pipes aligned
- Each cell should have spaces around content: not
- Header separator must have at least 3 dashes:
- Test that the table renders correctly in markdown preview
-
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 branch name, spec file path, BuildBetter artifact paths, checklist results, and readiness for the next phase (use the bb-clarify or bb-plan skills).