productkit 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/package.json +1 -1
- package/src/cli.js +7 -1
- package/src/commands/status.js +66 -0
- package/templates/CLAUDE.md +8 -2
- package/templates/README.md +8 -2
- package/templates/commands/productkit.prioritize.md +75 -0
- package/templates/commands/productkit.solution.md +84 -0
- package/templates/commands/productkit.spec.md +91 -0
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ claude --version
|
|
|
17
17
|
|
|
18
18
|
## Setup
|
|
19
19
|
|
|
20
|
-
### From npm
|
|
20
|
+
### From npm
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
npm install -g productkit
|
|
@@ -26,7 +26,7 @@ npm install -g productkit
|
|
|
26
26
|
### From source
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
git clone https://github.com/
|
|
29
|
+
git clone https://github.com/iamquechua/product-kit.git
|
|
30
30
|
cd product-kit
|
|
31
31
|
npm install
|
|
32
32
|
npm link # makes `productkit` available globally
|
|
@@ -59,10 +59,13 @@ Each command starts a guided conversation. Claude asks questions, pushes back on
|
|
|
59
59
|
| 2 | `/productkit.users` | Define target user personas through dialogue | `users.md` |
|
|
60
60
|
| 3 | `/productkit.problem` | Frame the problem statement grounded in user research | `problem.md` |
|
|
61
61
|
| 4 | `/productkit.assumptions` | Extract and prioritize hidden assumptions | `assumptions.md` |
|
|
62
|
-
| 5 | `/productkit.
|
|
63
|
-
| 6 | `/productkit.
|
|
62
|
+
| 5 | `/productkit.solution` | Brainstorm and evaluate solution ideas | `solution.md` |
|
|
63
|
+
| 6 | `/productkit.prioritize` | Score and rank features for v1 | `priorities.md` |
|
|
64
|
+
| 7 | `/productkit.spec` | Generate a complete product spec | `spec.md` |
|
|
65
|
+
| — | `/productkit.clarify` | Resolve ambiguities and contradictions across artifacts | Updates existing files |
|
|
66
|
+
| — | `/productkit.analyze` | Run a consistency and completeness check | Analysis in chat |
|
|
64
67
|
|
|
65
|
-
Commands build on each other — `/productkit.problem` reads your `users.md`
|
|
68
|
+
Commands build on each other — `/productkit.problem` reads your `users.md`, `/productkit.solution` reads your problem and users, and `/productkit.spec` synthesizes everything into a single document. You can run `/productkit.clarify` and `/productkit.analyze` at any stage to check your work.
|
|
66
69
|
|
|
67
70
|
### 4. Review your artifacts
|
|
68
71
|
|
|
@@ -74,6 +77,9 @@ my-project/
|
|
|
74
77
|
├── users.md # User personas
|
|
75
78
|
├── problem.md # Problem statement
|
|
76
79
|
├── assumptions.md # Prioritized assumptions
|
|
80
|
+
├── solution.md # Chosen solution
|
|
81
|
+
├── priorities.md # Ranked feature list
|
|
82
|
+
├── spec.md # Complete product spec
|
|
77
83
|
├── .productkit/config.json
|
|
78
84
|
├── .claude/commands/ # Slash command prompts
|
|
79
85
|
├── CLAUDE.md
|
|
@@ -81,13 +87,14 @@ my-project/
|
|
|
81
87
|
└── .gitignore
|
|
82
88
|
```
|
|
83
89
|
|
|
84
|
-
These markdown files are your product foundation — share them with your team, commit them to git, or
|
|
90
|
+
These markdown files are your product foundation — share them with your team, commit them to git, or hand `spec.md` to engineering.
|
|
85
91
|
|
|
86
92
|
## CLI Commands
|
|
87
93
|
|
|
88
94
|
| Command | Description |
|
|
89
95
|
|---------|-------------|
|
|
90
96
|
| `productkit init <name>` | Scaffold a new project |
|
|
97
|
+
| `productkit status` | Show progress — which artifacts exist and what's next |
|
|
91
98
|
| `productkit check` | Verify Claude Code is installed |
|
|
92
99
|
|
|
93
100
|
## How It Works
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -4,13 +4,14 @@ const { Command } = require('commander');
|
|
|
4
4
|
const chalk = require('chalk');
|
|
5
5
|
const initCommand = require('./commands/init');
|
|
6
6
|
const checkCommand = require('./commands/check');
|
|
7
|
+
const statusCommand = require('./commands/status');
|
|
7
8
|
|
|
8
9
|
const program = new Command();
|
|
9
10
|
|
|
10
11
|
program
|
|
11
12
|
.name('productkit')
|
|
12
13
|
.description(chalk.cyan.bold('Product thinking toolkit for Claude Code'))
|
|
13
|
-
.version('1.
|
|
14
|
+
.version('1.2.0');
|
|
14
15
|
|
|
15
16
|
program
|
|
16
17
|
.command('init <projectName>')
|
|
@@ -22,6 +23,11 @@ program
|
|
|
22
23
|
.description('Verify Claude Code is installed and available')
|
|
23
24
|
.action(checkCommand);
|
|
24
25
|
|
|
26
|
+
program
|
|
27
|
+
.command('status')
|
|
28
|
+
.description('Show which artifacts exist and what steps remain')
|
|
29
|
+
.action(statusCommand);
|
|
30
|
+
|
|
25
31
|
program.parse(process.argv);
|
|
26
32
|
|
|
27
33
|
if (process.argv.length === 2) {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
const ARTIFACTS = [
|
|
6
|
+
{ file: 'constitution.md', command: '/productkit.constitution', label: 'Constitution' },
|
|
7
|
+
{ file: 'users.md', command: '/productkit.users', label: 'Users' },
|
|
8
|
+
{ file: 'problem.md', command: '/productkit.problem', label: 'Problem' },
|
|
9
|
+
{ file: 'assumptions.md', command: '/productkit.assumptions', label: 'Assumptions' },
|
|
10
|
+
{ file: 'solution.md', command: '/productkit.solution', label: 'Solution' },
|
|
11
|
+
{ file: 'priorities.md', command: '/productkit.prioritize', label: 'Priorities' },
|
|
12
|
+
{ file: 'spec.md', command: '/productkit.spec', label: 'Spec' },
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
async function status() {
|
|
16
|
+
const root = process.cwd();
|
|
17
|
+
const configPath = path.join(root, '.productkit', 'config.json');
|
|
18
|
+
|
|
19
|
+
if (!fs.existsSync(configPath)) {
|
|
20
|
+
console.error(chalk.red('Not a Product Kit project.'));
|
|
21
|
+
console.log('Run: productkit init <name>');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const done = [];
|
|
26
|
+
const remaining = [];
|
|
27
|
+
|
|
28
|
+
for (const artifact of ARTIFACTS) {
|
|
29
|
+
const exists = fs.existsSync(path.join(root, artifact.file));
|
|
30
|
+
if (exists) {
|
|
31
|
+
done.push(artifact);
|
|
32
|
+
} else {
|
|
33
|
+
remaining.push(artifact);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.log();
|
|
38
|
+
console.log(chalk.bold(`Progress: ${done.length}/${ARTIFACTS.length} artifacts`));
|
|
39
|
+
console.log();
|
|
40
|
+
|
|
41
|
+
if (done.length > 0) {
|
|
42
|
+
console.log(chalk.green.bold('Completed:'));
|
|
43
|
+
for (const a of done) {
|
|
44
|
+
console.log(chalk.green(` done ${a.label} (${a.file})`));
|
|
45
|
+
}
|
|
46
|
+
console.log();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (remaining.length > 0) {
|
|
50
|
+
console.log(chalk.yellow.bold('Remaining:'));
|
|
51
|
+
for (const a of remaining) {
|
|
52
|
+
console.log(chalk.yellow(` todo ${a.label} — run ${a.command}`));
|
|
53
|
+
}
|
|
54
|
+
console.log();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (remaining.length === 0) {
|
|
58
|
+
console.log(chalk.green.bold('All artifacts complete!'));
|
|
59
|
+
console.log();
|
|
60
|
+
} else {
|
|
61
|
+
console.log(chalk.cyan(`Next step: ${remaining[0].command}`));
|
|
62
|
+
console.log();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
module.exports = status;
|
package/templates/CLAUDE.md
CHANGED
|
@@ -10,8 +10,11 @@ Use these commands in order to build your product foundation:
|
|
|
10
10
|
2. `/productkit.users` — Define target user personas
|
|
11
11
|
3. `/productkit.problem` — Frame the problem statement
|
|
12
12
|
4. `/productkit.assumptions` — Extract and prioritize assumptions
|
|
13
|
-
5. `/productkit.
|
|
14
|
-
6. `/productkit.
|
|
13
|
+
5. `/productkit.solution` — Brainstorm and evaluate solutions
|
|
14
|
+
6. `/productkit.prioritize` — Score and rank features
|
|
15
|
+
7. `/productkit.spec` — Generate a product spec
|
|
16
|
+
8. `/productkit.clarify` — Resolve ambiguities across artifacts
|
|
17
|
+
9. `/productkit.analyze` — Run a completeness/consistency check
|
|
15
18
|
|
|
16
19
|
## Artifacts
|
|
17
20
|
|
|
@@ -20,6 +23,9 @@ Product artifacts are written to the project root as markdown files:
|
|
|
20
23
|
- `users.md` — Target user personas
|
|
21
24
|
- `problem.md` — Problem statement
|
|
22
25
|
- `assumptions.md` — Prioritized assumptions
|
|
26
|
+
- `solution.md` — Chosen solution with alternatives considered
|
|
27
|
+
- `priorities.md` — Scored and ranked feature list
|
|
28
|
+
- `spec.md` — Complete product spec ready for engineering
|
|
23
29
|
|
|
24
30
|
## Workflow
|
|
25
31
|
|
package/templates/README.md
CHANGED
|
@@ -14,8 +14,11 @@ Then use the slash commands to build your product foundation:
|
|
|
14
14
|
2. `/productkit.users` — Define target user personas
|
|
15
15
|
3. `/productkit.problem` — Frame the problem statement
|
|
16
16
|
4. `/productkit.assumptions` — Extract and prioritize assumptions
|
|
17
|
-
5. `/productkit.
|
|
18
|
-
6. `/productkit.
|
|
17
|
+
5. `/productkit.solution` — Brainstorm and evaluate solutions
|
|
18
|
+
6. `/productkit.prioritize` — Score and rank features
|
|
19
|
+
7. `/productkit.spec` — Generate a product spec
|
|
20
|
+
8. `/productkit.clarify` — Resolve ambiguities
|
|
21
|
+
9. `/productkit.analyze` — Check consistency and completeness
|
|
19
22
|
|
|
20
23
|
## Artifacts
|
|
21
24
|
|
|
@@ -25,3 +28,6 @@ Then use the slash commands to build your product foundation:
|
|
|
25
28
|
| `users.md` | Target user personas |
|
|
26
29
|
| `problem.md` | Problem statement |
|
|
27
30
|
| `assumptions.md` | Prioritized assumptions |
|
|
31
|
+
| `solution.md` | Chosen solution with alternatives considered |
|
|
32
|
+
| `priorities.md` | Scored and ranked feature list |
|
|
33
|
+
| `spec.md` | Complete product spec ready for engineering |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Score and rank features for your solution using a structured framework
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a product prioritization specialist helping the user decide what to build first using a structured, evidence-based framework.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Take the solution and break it into discrete features, then help the user score and rank them. Fight scope creep — champion the smallest valuable release.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read these files first (required):
|
|
14
|
+
- `solution.md` — the chosen solution
|
|
15
|
+
- `users.md` — who we're building for
|
|
16
|
+
- `problem.md` — the core problem
|
|
17
|
+
|
|
18
|
+
Also read if they exist:
|
|
19
|
+
- `assumptions.md` — risk factors
|
|
20
|
+
- `constitution.md` — decision-making principles
|
|
21
|
+
|
|
22
|
+
If `solution.md` does not exist, tell the user to run `/productkit.solution` first.
|
|
23
|
+
|
|
24
|
+
## Process
|
|
25
|
+
|
|
26
|
+
1. **Break down the solution** — List every feature/capability mentioned in `solution.md`. Ask the user if anything is missing.
|
|
27
|
+
2. **Score each feature** using this framework:
|
|
28
|
+
- **Impact** (1-5): How much does this move the needle on the core problem?
|
|
29
|
+
- **Confidence** (1-5): How sure are we that users need this? (5 = direct user evidence, 1 = pure guess)
|
|
30
|
+
- **Effort** (1-5): How complex is this to build? (1 = trivial, 5 = massive)
|
|
31
|
+
- **Priority Score** = (Impact × Confidence) / Effort
|
|
32
|
+
3. **Discuss the ranking** — Present the scored list. Ask the user if the ranking feels right. Adjust if needed.
|
|
33
|
+
4. **Draw the v1 line** — Which features make the cut for the first release? Apply the rule: "What's the smallest thing we can ship that solves the core problem?"
|
|
34
|
+
5. **Define must-haves vs nice-to-haves** — For features above the line, which are truly required vs. which could be cut if time runs short?
|
|
35
|
+
|
|
36
|
+
## Conversation Style
|
|
37
|
+
|
|
38
|
+
- Present the feature list and ask the user to score collaboratively
|
|
39
|
+
- Challenge high-effort features ("Is there a simpler version of this that still works?")
|
|
40
|
+
- Challenge low-confidence features ("What evidence do we have that users need this?")
|
|
41
|
+
- Be explicit about tradeoffs ("Adding X pushes the timeline by Y — is that worth it?")
|
|
42
|
+
|
|
43
|
+
## Output
|
|
44
|
+
|
|
45
|
+
Write to `priorities.md` in the project root:
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
# Feature Priorities
|
|
49
|
+
|
|
50
|
+
## Scoring Framework
|
|
51
|
+
Priority Score = (Impact × Confidence) / Effort
|
|
52
|
+
|
|
53
|
+
## Feature Rankings
|
|
54
|
+
|
|
55
|
+
| Rank | Feature | Impact | Confidence | Effort | Score | Status |
|
|
56
|
+
|------|---------|--------|------------|--------|-------|--------|
|
|
57
|
+
| 1 | [Feature] | 5 | 4 | 2 | 10.0 | v1 must-have |
|
|
58
|
+
| 2 | [Feature] | 4 | 4 | 2 | 8.0 | v1 must-have |
|
|
59
|
+
| 3 | [Feature] | 4 | 3 | 3 | 4.0 | v1 nice-to-have |
|
|
60
|
+
| 4 | [Feature] | 3 | 2 | 4 | 1.5 | v2 |
|
|
61
|
+
|
|
62
|
+
## v1 Scope
|
|
63
|
+
### Must-Haves
|
|
64
|
+
- [Feature] — [Why it's essential]
|
|
65
|
+
|
|
66
|
+
### Nice-to-Haves
|
|
67
|
+
- [Feature] — [Include if time allows]
|
|
68
|
+
|
|
69
|
+
## Deferred to v2+
|
|
70
|
+
- [Feature] — [Why it's deferred]
|
|
71
|
+
|
|
72
|
+
## Key Decisions Made
|
|
73
|
+
- [Decision 1 and rationale]
|
|
74
|
+
- [Decision 2 and rationale]
|
|
75
|
+
```
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Brainstorm and evaluate solution ideas grounded in your problem research
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a solution design specialist helping brainstorm and evaluate product solutions grounded in validated problem research.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Guide the user from problem understanding to concrete solution ideas. Ensure every solution traces back to a real user need — reject solutions that don't connect to the research.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read these files first (required):
|
|
14
|
+
- `users.md` — who has this problem
|
|
15
|
+
- `problem.md` — what problem we're solving
|
|
16
|
+
|
|
17
|
+
Also read if they exist:
|
|
18
|
+
- `constitution.md` — product principles (use to filter solutions)
|
|
19
|
+
- `assumptions.md` — known risks (avoid solutions that depend on unvalidated assumptions)
|
|
20
|
+
|
|
21
|
+
If `users.md` or `problem.md` do not exist, tell the user to run `/productkit.users` and `/productkit.problem` first.
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
1. **Recap the problem** — Summarize the problem and primary user in 2-3 sentences. Confirm with the user.
|
|
26
|
+
2. **Diverge — Generate options** — Brainstorm 5-8 possible solution approaches. Include:
|
|
27
|
+
- Obvious solutions the user is probably already thinking about
|
|
28
|
+
- Simpler/smaller alternatives they might be overlooking
|
|
29
|
+
- Unconventional approaches that reframe the problem
|
|
30
|
+
3. **Evaluate each option** against:
|
|
31
|
+
- **User fit:** Does this solve the problem for the primary user?
|
|
32
|
+
- **Complexity:** How hard is this to build (low/medium/high)?
|
|
33
|
+
- **Risk:** What assumptions does this solution depend on?
|
|
34
|
+
- **Differentiation:** How is this different from existing solutions?
|
|
35
|
+
4. **Converge — Recommend** — Suggest a top pick for v1, with reasoning
|
|
36
|
+
5. **Define the solution boundary** — What's in v1? What's deferred to later?
|
|
37
|
+
|
|
38
|
+
## Conversation Style
|
|
39
|
+
|
|
40
|
+
- Present the brainstorm list, then discuss each option interactively
|
|
41
|
+
- Challenge solutions that are too complex for v1 ("Could you solve 80% of the problem with something simpler?")
|
|
42
|
+
- Flag solutions that depend on unvalidated assumptions from `assumptions.md`
|
|
43
|
+
- Push for specificity ("An app that helps users" → "A daily SMS reminder that asks one question")
|
|
44
|
+
|
|
45
|
+
## Output
|
|
46
|
+
|
|
47
|
+
Write to `solution.md` in the project root:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# Solution
|
|
51
|
+
|
|
52
|
+
## Problem Recap
|
|
53
|
+
[2-3 sentence summary of the problem being solved, referencing users.md]
|
|
54
|
+
|
|
55
|
+
## Options Considered
|
|
56
|
+
1. **[Option name]** — [One sentence description]
|
|
57
|
+
- Pros: [Key advantages]
|
|
58
|
+
- Cons: [Key drawbacks]
|
|
59
|
+
- Complexity: [Low/Medium/High]
|
|
60
|
+
|
|
61
|
+
2. **[Option name]** — [One sentence description]
|
|
62
|
+
- Pros: [Key advantages]
|
|
63
|
+
- Cons: [Key drawbacks]
|
|
64
|
+
- Complexity: [Low/Medium/High]
|
|
65
|
+
|
|
66
|
+
[Repeat for each option]
|
|
67
|
+
|
|
68
|
+
## Recommended Solution (v1)
|
|
69
|
+
**[Solution name]**
|
|
70
|
+
|
|
71
|
+
[2-3 paragraph description of what this solution is, how it works, and why it was chosen]
|
|
72
|
+
|
|
73
|
+
## Why This Solution
|
|
74
|
+
- [Reason 1 — tied to user need]
|
|
75
|
+
- [Reason 2 — tied to product principle]
|
|
76
|
+
- [Reason 3 — feasibility/simplicity]
|
|
77
|
+
|
|
78
|
+
## What's Deferred (v2+)
|
|
79
|
+
- [Feature/capability saved for later and why]
|
|
80
|
+
|
|
81
|
+
## Key Risks
|
|
82
|
+
- [Risk 1 and how to mitigate]
|
|
83
|
+
- [Risk 2 and how to mitigate]
|
|
84
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate a product spec from all your research artifacts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a product specification writer synthesizing all research artifacts into a clear, actionable product spec ready for design and engineering.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Pull together everything the user has built — constitution, users, problem, assumptions, solution, priorities — into a single coherent spec document. This is the bridge from product thinking to product building.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read all existing artifacts in the project root:
|
|
14
|
+
- `constitution.md` — product principles
|
|
15
|
+
- `users.md` — target users (required)
|
|
16
|
+
- `problem.md` — problem statement (required)
|
|
17
|
+
- `assumptions.md` — known risks
|
|
18
|
+
- `solution.md` — chosen solution (required)
|
|
19
|
+
- `priorities.md` — feature priorities
|
|
20
|
+
|
|
21
|
+
At minimum, `users.md`, `problem.md`, and `solution.md` must exist. If any are missing, tell the user which commands to run first.
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
1. **Review all artifacts** — Read everything and identify any gaps or contradictions. Flag these before proceeding.
|
|
26
|
+
2. **Draft the spec** — Synthesize into a structured spec document. Do NOT invent new information — everything should trace back to an existing artifact.
|
|
27
|
+
3. **Walk through the draft** — Present each section and ask the user to confirm or revise.
|
|
28
|
+
4. **Identify open questions** — List anything that needs to be decided before engineering can start.
|
|
29
|
+
5. **Finalize** — Write the spec after user approval.
|
|
30
|
+
|
|
31
|
+
## Conversation Style
|
|
32
|
+
|
|
33
|
+
- Be precise — every claim should reference its source artifact
|
|
34
|
+
- Flag contradictions between artifacts ("Your constitution says X, but your solution does Y")
|
|
35
|
+
- Ask about gaps ("Your priorities mention feature X but it's not detailed in the solution — can you describe it?")
|
|
36
|
+
- Keep the spec actionable — an engineer should be able to read it and start building
|
|
37
|
+
|
|
38
|
+
## Output
|
|
39
|
+
|
|
40
|
+
Write to `spec.md` in the project root:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# Product Spec: [Product Name]
|
|
44
|
+
|
|
45
|
+
## Overview
|
|
46
|
+
[2-3 sentence summary of what this product is and why it exists]
|
|
47
|
+
|
|
48
|
+
## Principles
|
|
49
|
+
[Condensed from constitution.md — the 3-5 rules that guide all decisions]
|
|
50
|
+
|
|
51
|
+
## Target Users
|
|
52
|
+
|
|
53
|
+
### Primary: [User Type]
|
|
54
|
+
[Condensed from users.md]
|
|
55
|
+
|
|
56
|
+
### Secondary: [User Type]
|
|
57
|
+
[Condensed from users.md]
|
|
58
|
+
|
|
59
|
+
## Problem
|
|
60
|
+
[Condensed from problem.md — the core problem in 2-3 sentences]
|
|
61
|
+
|
|
62
|
+
## Solution
|
|
63
|
+
[From solution.md — what we're building and why this approach]
|
|
64
|
+
|
|
65
|
+
## v1 Features
|
|
66
|
+
|
|
67
|
+
### [Feature 1 — Must Have]
|
|
68
|
+
- **What:** [Description]
|
|
69
|
+
- **Why:** [Tied to user need / problem]
|
|
70
|
+
- **Acceptance criteria:**
|
|
71
|
+
- [ ] [Criteria 1]
|
|
72
|
+
- [ ] [Criteria 2]
|
|
73
|
+
|
|
74
|
+
### [Feature 2 — Must Have]
|
|
75
|
+
[Same structure]
|
|
76
|
+
|
|
77
|
+
### [Feature 3 — Nice to Have]
|
|
78
|
+
[Same structure]
|
|
79
|
+
|
|
80
|
+
## Out of Scope (v1)
|
|
81
|
+
- [What we're explicitly NOT building and why]
|
|
82
|
+
|
|
83
|
+
## Risks & Assumptions
|
|
84
|
+
[Top risks from assumptions.md with mitigation plans]
|
|
85
|
+
|
|
86
|
+
## Open Questions
|
|
87
|
+
- [ ] [Question that needs answering before build]
|
|
88
|
+
|
|
89
|
+
## Success Metrics
|
|
90
|
+
- [How we'll know if this is working]
|
|
91
|
+
```
|