epic-scoping
Epic Scoping is a Claude Code skill that uses structured questions from a centralized question bank to systematically scope epics across five interactive rounds, covering business goals, subsystem selection, scope refinement, success metrics, and dependencies. Use this skill when creating new epics via the `/epic` command to eliminate ambiguity before planning begins, but skip it when resuming work with `/epic continue`.
git clone --depth 1 https://github.com/marcusgoll/Spec-Flow /tmp/epic-scoping && cp -r /tmp/epic-scoping/.claude/skills/epic-scoping ~/.claude/skills/epic-scopingSKILL.md
# Epic Scoping Skill
Interactive question bank-driven scoping for epic workflows.
## Purpose
Systematically scope epics with structured AskUserQuestion calls, eliminating ambiguity before planning. Uses centralized question bank to ensure consistent, comprehensive scoping.
## When to Invoke
- Always for new epics (via `/epic` command)
- Skip if resuming with `/epic continue`
## Quick Start
```bash
# Load question bank
cat .claude/skills/epic/references/question-bank.md
```
## 5-Round Interactive Scoping
### Round 1: Initial Scoping (2 questions)
**Questions from bank**:
- `initial_scoping.business_goal`
- `initial_scoping.subsystem_selection`
```javascript
AskUserQuestion({
questions: [
questionBank.initial_scoping.business_goal,
questionBank.initial_scoping.subsystem_selection,
],
});
```
**Apply answers to epic-spec.md**:
- business_goal → `## Objective` > `### Business Value`
- subsystem_selection → `## Subsystems` (update **Involved** field)
### Round 2: Scope Refinement (0-4 questions, conditional)
**Based on subsystem_selection**, ask relevant follow-ups:
```javascript
const refinementQuestions = [];
if (selectedSubsystems.includes("Backend API")) {
refinementQuestions.push(questionBank.scope_refinement.backend_scope);
}
if (selectedSubsystems.includes("Frontend UI")) {
refinementQuestions.push(questionBank.scope_refinement.frontend_scope);
}
if (selectedSubsystems.includes("Database")) {
refinementQuestions.push(questionBank.scope_refinement.database_scope);
}
if (selectedSubsystems.includes("External integrations")) {
refinementQuestions.push(questionBank.scope_refinement.integration_scope);
}
if (refinementQuestions.length > 0) {
AskUserQuestion({ questions: refinementQuestions });
}
```
**Apply answers**:
- backend_scope → `### Backend` section
- frontend_scope → `### Frontend` section
- database_scope → `### Database` section
- integration_scope → `### Infrastructure` section
### Round 3: Success Metrics (2 questions)
```javascript
AskUserQuestion({
questions: [
questionBank.success_metrics.measurement_approach,
questionBank.success_metrics.target_values,
],
});
// If "Specific targets" selected, follow-up:
if (answers["Targets"] === "Specific targets") {
const customTargets = answers["Targets_custom"];
// Parse and apply to epic-spec.md
}
```
**Apply answers**:
- measurement_approach → `### Success Metrics` section
- target_values → `### Success Metrics` (actual values)
### Round 4: Dependencies & Constraints (2 questions)
```javascript
AskUserQuestion({
questions: [
questionBank.dependencies_and_constraints.external_dependencies,
questionBank.dependencies_and_constraints.constraints,
],
});
```
**Apply answers**:
- external_dependencies → `## Dependencies` section
- constraints → `### Constraints` section
### Round 5: Complexity Assessment (2 questions)
```javascript
AskUserQuestion({
questions: [
questionBank.complexity_assessment.technical_complexity,
questionBank.complexity_assessment.sprint_estimate,
],
});
// Warn if 7+ sprints
if (answers["Sprint Estimate"] === "7+ sprints") {
console.log("Warning: Consider breaking into smaller epics");
}
```
**Apply answers**:
- technical_complexity → YAML frontmatter `complexity` field
- sprint_estimate → `## Overview` section
## Progress Indicators
Show progress after each round:
```
🔍 Epic Scoping: Round 1/5 (Initial scoping)
📝 Applied: Business Goal → New capability
📝 Applied: Subsystems → Backend API, Frontend UI, Database
🔍 Epic Scoping: Round 2/5 (Scope refinement)
...
```
## Completion Summary
After 5 rounds:
```
✅ Epic Scoping Complete (9 questions answered)
📊 Epic Summary:
Business Goal: New capability
Subsystems: Backend API, Frontend UI, Database (3)
Success Metrics: User adoption (target: 80% within 30 days)
Dependencies: Third-party APIs (Stripe)
Constraints: Time constraint (2-week deadline)
Complexity: Medium
Estimated Sprints: 3-4 sprints
📋 Next Steps:
1. Review epic-spec.md for accuracy
2. Run /plan to generate research → plan → sprint breakdown
3. Run /epic continue to execute automated workflow
```
## Velocity Benefit
- **With skill**: 5-10 minute interactive scoping
- **Without skill**: 30+ minute unstructured discussion
- **Improvement**: 3-6x faster
## Question Bank Reference
Location: `.claude/skills/epic/references/question-bank.md`
Contains:
- Initial scoping (2 questions)
- Scope refinement (0-4 conditional)
- Success metrics (2 questions)
- Dependencies & constraints (2 questions)
- Complexity assessment (2 questions)
**Total**: 8-9 questions across 5 roundsExecute multiple sprints in parallel based on dependency graph from sprint-plan.md
Build and validate locally for projects without remote deployment (prototypes, experiments, local-only dev)
Execute multi-sprint epic workflow from interactive scoping through deployment with parallel sprint execution and self-improvement
Execute feature development workflow from specification through production deployment with automated quality gates
Analyze workflow state and provide context-aware guidance with visual progress indicators and recommended next steps
Initialize project documentation, preferences, or design tokens
Implement small bug fixes and features (<100 LOC) without full workflow. Use for single-file changes, bug fixes, refactors, and minor enhancements that can be completed in under 30 minutes.
Enter deep craftsman mode - question everything, plan like Da Vinci, craft insanely great solutions, then materialize to roadmap