productkit 1.0.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 +107 -0
- package/package.json +30 -0
- package/src/cli.js +29 -0
- package/src/commands/check.js +17 -0
- package/src/commands/init.js +74 -0
- package/src/utils/fileUtils.js +18 -0
- package/templates/CLAUDE.md +26 -0
- package/templates/README.md +27 -0
- package/templates/commands/productkit.analyze.md +72 -0
- package/templates/commands/productkit.assumptions.md +67 -0
- package/templates/commands/productkit.clarify.md +38 -0
- package/templates/commands/productkit.constitution.md +46 -0
- package/templates/commands/productkit.problem.md +61 -0
- package/templates/commands/productkit.users.md +53 -0
- package/templates/gitignore +3 -0
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Product Kit
|
|
2
|
+
|
|
3
|
+
Slash-command-driven product thinking toolkit for [Claude Code](https://claude.com/claude-code).
|
|
4
|
+
|
|
5
|
+
Product Kit gives PMs a structured workflow for validating product ideas — user personas, problem statements, assumptions mapping — all through guided AI conversations.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- **Node.js** 18 or later
|
|
10
|
+
- **[Claude Code](https://claude.com/claude-code)** installed and available in your PATH
|
|
11
|
+
|
|
12
|
+
Verify Claude Code is ready:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
claude --version
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Setup
|
|
19
|
+
|
|
20
|
+
### From npm (once published)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g productkit
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### From source
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
git clone https://github.com/douno/product-kit.git
|
|
30
|
+
cd product-kit
|
|
31
|
+
npm install
|
|
32
|
+
npm link # makes `productkit` available globally
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
### 1. Create a project
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
productkit init my-project
|
|
41
|
+
cd my-project
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
This scaffolds a project with slash commands, a `CLAUDE.md` context file, and a `.productkit/` config directory.
|
|
45
|
+
|
|
46
|
+
### 2. Open Claude Code
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
claude
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 3. Run the slash commands in order
|
|
53
|
+
|
|
54
|
+
Each command starts a guided conversation. Claude asks questions, pushes back on vague answers, and writes a markdown artifact when done.
|
|
55
|
+
|
|
56
|
+
| Step | Command | What it does | Output |
|
|
57
|
+
|------|---------|-------------|--------|
|
|
58
|
+
| 1 | `/productkit.constitution` | Define product principles and values | `constitution.md` |
|
|
59
|
+
| 2 | `/productkit.users` | Define target user personas through dialogue | `users.md` |
|
|
60
|
+
| 3 | `/productkit.problem` | Frame the problem statement grounded in user research | `problem.md` |
|
|
61
|
+
| 4 | `/productkit.assumptions` | Extract and prioritize hidden assumptions | `assumptions.md` |
|
|
62
|
+
| 5 | `/productkit.clarify` | Resolve ambiguities and contradictions across artifacts | Updates existing files |
|
|
63
|
+
| 6 | `/productkit.analyze` | Run a consistency and completeness check | Analysis in chat |
|
|
64
|
+
|
|
65
|
+
Commands build on each other — `/productkit.problem` reads your `users.md` to ground the problem in real user needs. `/productkit.assumptions` reads both `users.md` and `problem.md` to find hidden assumptions. You can run `/productkit.clarify` and `/productkit.analyze` at any stage to check your work.
|
|
66
|
+
|
|
67
|
+
### 4. Review your artifacts
|
|
68
|
+
|
|
69
|
+
After running the commands, your project root contains:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
my-project/
|
|
73
|
+
├── constitution.md # Product principles
|
|
74
|
+
├── users.md # User personas
|
|
75
|
+
├── problem.md # Problem statement
|
|
76
|
+
├── assumptions.md # Prioritized assumptions
|
|
77
|
+
├── .productkit/config.json
|
|
78
|
+
├── .claude/commands/ # Slash command prompts
|
|
79
|
+
├── CLAUDE.md
|
|
80
|
+
├── README.md
|
|
81
|
+
└── .gitignore
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
These markdown files are your product foundation — share them with your team, commit them to git, or use them as input for solution design.
|
|
85
|
+
|
|
86
|
+
## CLI Commands
|
|
87
|
+
|
|
88
|
+
| Command | Description |
|
|
89
|
+
|---------|-------------|
|
|
90
|
+
| `productkit init <name>` | Scaffold a new project |
|
|
91
|
+
| `productkit check` | Verify Claude Code is installed |
|
|
92
|
+
|
|
93
|
+
## How It Works
|
|
94
|
+
|
|
95
|
+
Product Kit is a thin scaffolding tool. The real work happens in slash commands — markdown prompt files that live in `.claude/commands/`. When you type `/productkit.users` in Claude Code, it reads the prompt file and starts a guided conversation.
|
|
96
|
+
|
|
97
|
+
Each prompt tells Claude:
|
|
98
|
+
- What role to play (PM coach, research specialist, etc.)
|
|
99
|
+
- What artifacts to read first (enforces workflow ordering)
|
|
100
|
+
- How to guide the conversation (questions to ask, what to push back on)
|
|
101
|
+
- What file to write and in what format
|
|
102
|
+
|
|
103
|
+
You can customize any slash command by editing the files in `.claude/commands/`.
|
|
104
|
+
|
|
105
|
+
## License
|
|
106
|
+
|
|
107
|
+
MIT
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "productkit",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Slash-command-driven product thinking toolkit for Claude Code",
|
|
5
|
+
"main": "src/cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"productkit": "./src/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node --test test/*.test.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"src/",
|
|
14
|
+
"templates/",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"keywords": [
|
|
18
|
+
"product-management",
|
|
19
|
+
"claude-code",
|
|
20
|
+
"slash-commands",
|
|
21
|
+
"product-thinking"
|
|
22
|
+
],
|
|
23
|
+
"author": "Douno",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"chalk": "^4.1.2",
|
|
27
|
+
"commander": "^11.1.0",
|
|
28
|
+
"fs-extra": "^11.2.0"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/cli.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { Command } = require('commander');
|
|
4
|
+
const chalk = require('chalk');
|
|
5
|
+
const initCommand = require('./commands/init');
|
|
6
|
+
const checkCommand = require('./commands/check');
|
|
7
|
+
|
|
8
|
+
const program = new Command();
|
|
9
|
+
|
|
10
|
+
program
|
|
11
|
+
.name('productkit')
|
|
12
|
+
.description(chalk.cyan.bold('Product thinking toolkit for Claude Code'))
|
|
13
|
+
.version('1.0.0');
|
|
14
|
+
|
|
15
|
+
program
|
|
16
|
+
.command('init <projectName>')
|
|
17
|
+
.description('Initialize a new product research project')
|
|
18
|
+
.action(initCommand);
|
|
19
|
+
|
|
20
|
+
program
|
|
21
|
+
.command('check')
|
|
22
|
+
.description('Verify Claude Code is installed and available')
|
|
23
|
+
.action(checkCommand);
|
|
24
|
+
|
|
25
|
+
program.parse(process.argv);
|
|
26
|
+
|
|
27
|
+
if (process.argv.length === 2) {
|
|
28
|
+
program.outputHelp();
|
|
29
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const chalk = require('chalk');
|
|
2
|
+
const { execSync } = require('child_process');
|
|
3
|
+
|
|
4
|
+
async function check() {
|
|
5
|
+
try {
|
|
6
|
+
execSync('claude --version', { stdio: 'ignore' });
|
|
7
|
+
console.log(chalk.green('Claude Code is installed and available.'));
|
|
8
|
+
} catch {
|
|
9
|
+
console.log(chalk.red('Claude Code is not installed or not in PATH.'));
|
|
10
|
+
console.log();
|
|
11
|
+
console.log('Install it:');
|
|
12
|
+
console.log(' npm install -g @anthropic-ai/claude-code');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = check;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
async function init(projectName) {
|
|
6
|
+
const projectRoot = path.join(process.cwd(), projectName);
|
|
7
|
+
|
|
8
|
+
if (fs.existsSync(projectRoot)) {
|
|
9
|
+
console.error(chalk.red(`Error: Directory "${projectName}" already exists`));
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
const templatesDir = path.join(__dirname, '..', '..', 'templates');
|
|
15
|
+
|
|
16
|
+
// Create directories
|
|
17
|
+
fs.ensureDirSync(path.join(projectRoot, '.productkit'));
|
|
18
|
+
fs.ensureDirSync(path.join(projectRoot, '.claude', 'commands'));
|
|
19
|
+
|
|
20
|
+
// Write config
|
|
21
|
+
fs.writeJsonSync(path.join(projectRoot, '.productkit', 'config.json'), {
|
|
22
|
+
version: '1.0.0',
|
|
23
|
+
created: new Date().toISOString(),
|
|
24
|
+
}, { spaces: 2 });
|
|
25
|
+
|
|
26
|
+
// Copy slash command templates
|
|
27
|
+
const commandsDir = path.join(templatesDir, 'commands');
|
|
28
|
+
const commandFiles = fs.readdirSync(commandsDir);
|
|
29
|
+
for (const file of commandFiles) {
|
|
30
|
+
fs.copyFileSync(
|
|
31
|
+
path.join(commandsDir, file),
|
|
32
|
+
path.join(projectRoot, '.claude', 'commands', file)
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Copy CLAUDE.md
|
|
37
|
+
fs.copyFileSync(
|
|
38
|
+
path.join(templatesDir, 'CLAUDE.md'),
|
|
39
|
+
path.join(projectRoot, 'CLAUDE.md')
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
// Copy README.md with project name substitution
|
|
43
|
+
let readme = fs.readFileSync(path.join(templatesDir, 'README.md'), 'utf-8');
|
|
44
|
+
readme = readme.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
|
|
45
|
+
fs.writeFileSync(path.join(projectRoot, 'README.md'), readme);
|
|
46
|
+
|
|
47
|
+
// Copy .gitignore
|
|
48
|
+
fs.copyFileSync(
|
|
49
|
+
path.join(templatesDir, 'gitignore'),
|
|
50
|
+
path.join(projectRoot, '.gitignore')
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
// Init git repo
|
|
54
|
+
const { execSync } = require('child_process');
|
|
55
|
+
try {
|
|
56
|
+
execSync('git init', { cwd: projectRoot, stdio: 'ignore' });
|
|
57
|
+
} catch {
|
|
58
|
+
// Git not available, skip
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
console.log(chalk.green.bold('Project initialized successfully!'));
|
|
62
|
+
console.log();
|
|
63
|
+
console.log(chalk.cyan('Next steps:'));
|
|
64
|
+
console.log(` 1. cd ${projectName}`);
|
|
65
|
+
console.log(' 2. claude');
|
|
66
|
+
console.log(' 3. /productkit.constitution');
|
|
67
|
+
console.log();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error(chalk.red('Error initializing project:'), error.message);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
module.exports = init;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
function isProductKitProject() {
|
|
5
|
+
return fs.existsSync(path.join(process.cwd(), '.productkit'));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function getProjectRoot() {
|
|
9
|
+
if (isProductKitProject()) {
|
|
10
|
+
return process.cwd();
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = {
|
|
16
|
+
isProductKitProject,
|
|
17
|
+
getProjectRoot,
|
|
18
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Product Kit Project
|
|
2
|
+
|
|
3
|
+
This project uses Product Kit for structured product thinking.
|
|
4
|
+
|
|
5
|
+
## Slash Commands
|
|
6
|
+
|
|
7
|
+
Use these commands in order to build your product foundation:
|
|
8
|
+
|
|
9
|
+
1. `/productkit.constitution` — Define your product principles
|
|
10
|
+
2. `/productkit.users` — Define target user personas
|
|
11
|
+
3. `/productkit.problem` — Frame the problem statement
|
|
12
|
+
4. `/productkit.assumptions` — Extract and prioritize assumptions
|
|
13
|
+
5. `/productkit.clarify` — Resolve ambiguities across artifacts
|
|
14
|
+
6. `/productkit.analyze` — Run a completeness/consistency check
|
|
15
|
+
|
|
16
|
+
## Artifacts
|
|
17
|
+
|
|
18
|
+
Product artifacts are written to the project root as markdown files:
|
|
19
|
+
- `constitution.md` — Product principles and values
|
|
20
|
+
- `users.md` — Target user personas
|
|
21
|
+
- `problem.md` — Problem statement
|
|
22
|
+
- `assumptions.md` — Prioritized assumptions
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
Start with `/productkit.constitution` or `/productkit.users`, then work through the commands in order. Each command reads previous artifacts to maintain consistency.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
A product research project powered by [Product Kit](https://github.com/douno/product-kit).
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
claude
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Then use the slash commands to build your product foundation:
|
|
12
|
+
|
|
13
|
+
1. `/productkit.constitution` — Define your product principles
|
|
14
|
+
2. `/productkit.users` — Define target user personas
|
|
15
|
+
3. `/productkit.problem` — Frame the problem statement
|
|
16
|
+
4. `/productkit.assumptions` — Extract and prioritize assumptions
|
|
17
|
+
5. `/productkit.clarify` — Resolve ambiguities
|
|
18
|
+
6. `/productkit.analyze` — Check consistency and completeness
|
|
19
|
+
|
|
20
|
+
## Artifacts
|
|
21
|
+
|
|
22
|
+
| File | Description |
|
|
23
|
+
|------|-------------|
|
|
24
|
+
| `constitution.md` | Product principles and values |
|
|
25
|
+
| `users.md` | Target user personas |
|
|
26
|
+
| `problem.md` | Problem statement |
|
|
27
|
+
| `assumptions.md` | Prioritized assumptions |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a consistency and completeness check on all product artifacts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a product analysis specialist performing a thorough review of the product's research artifacts.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Evaluate the overall quality, consistency, and completeness of the product thinking so far. Provide an honest assessment.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read all existing artifacts in the project root:
|
|
14
|
+
- `constitution.md`
|
|
15
|
+
- `users.md`
|
|
16
|
+
- `problem.md`
|
|
17
|
+
- `assumptions.md`
|
|
18
|
+
|
|
19
|
+
Work with whatever exists.
|
|
20
|
+
|
|
21
|
+
## Analysis Dimensions
|
|
22
|
+
|
|
23
|
+
### 1. Completeness
|
|
24
|
+
- Which artifacts exist and which are missing?
|
|
25
|
+
- Within each artifact, are all sections filled in with substance?
|
|
26
|
+
- Are there obvious gaps in thinking?
|
|
27
|
+
|
|
28
|
+
### 2. Consistency
|
|
29
|
+
- Do all artifacts tell the same story?
|
|
30
|
+
- Are user definitions consistent with the problem statement?
|
|
31
|
+
- Do principles align with the stated users and problems?
|
|
32
|
+
|
|
33
|
+
### 3. Specificity
|
|
34
|
+
- Are descriptions concrete enough to act on?
|
|
35
|
+
- Could someone new to the project understand the target user?
|
|
36
|
+
- Is the problem statement testable?
|
|
37
|
+
|
|
38
|
+
### 4. Evidence Quality
|
|
39
|
+
- How much is grounded in observation vs. assumption?
|
|
40
|
+
- Are claims supported with evidence?
|
|
41
|
+
- What's the ratio of facts to opinions?
|
|
42
|
+
|
|
43
|
+
### 5. Readiness
|
|
44
|
+
- Is this product thinking mature enough to move to solution design?
|
|
45
|
+
- What must be resolved before moving forward?
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
Present the analysis directly in the conversation. Use this structure:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
## Product Analysis Report
|
|
53
|
+
|
|
54
|
+
### Score: [X/10]
|
|
55
|
+
|
|
56
|
+
### Strengths
|
|
57
|
+
- [What's working well]
|
|
58
|
+
|
|
59
|
+
### Gaps
|
|
60
|
+
- [What's missing or weak]
|
|
61
|
+
|
|
62
|
+
### Contradictions
|
|
63
|
+
- [Any conflicts between artifacts]
|
|
64
|
+
|
|
65
|
+
### Recommendations
|
|
66
|
+
1. [Most important next step]
|
|
67
|
+
2. [Second priority]
|
|
68
|
+
3. [Third priority]
|
|
69
|
+
|
|
70
|
+
### Verdict
|
|
71
|
+
[Ready to move to solution design / Needs more work on X]
|
|
72
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Extract and prioritize assumptions from your product artifacts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a critical thinking specialist helping surface hidden assumptions in product plans.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Systematically extract assumptions from existing artifacts, categorize them by risk, and suggest validation approaches.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read these files first (required):
|
|
14
|
+
- `users.md` — user definitions
|
|
15
|
+
- `problem.md` — problem statement
|
|
16
|
+
|
|
17
|
+
If either file is missing, tell the user which commands to run first.
|
|
18
|
+
|
|
19
|
+
Also read if they exist:
|
|
20
|
+
- `constitution.md` — product principles
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
1. **Extract assumptions** — Read through each artifact and identify every assumption (stated and unstated)
|
|
25
|
+
2. **Categorize each assumption:**
|
|
26
|
+
- **Desirability** — Will users want this?
|
|
27
|
+
- **Feasibility** — Can we build this?
|
|
28
|
+
- **Viability** — Will this work as a business?
|
|
29
|
+
3. **Assess risk** — For each assumption, rate:
|
|
30
|
+
- **Confidence:** How sure are we? (high/medium/low)
|
|
31
|
+
- **Impact:** What happens if we're wrong? (high/medium/low)
|
|
32
|
+
4. **Prioritize** — Highest risk = low confidence + high impact
|
|
33
|
+
5. **Suggest validation** — For the top 3-5 riskiest assumptions, suggest how to test them
|
|
34
|
+
|
|
35
|
+
## Conversation Style
|
|
36
|
+
|
|
37
|
+
- Present findings systematically, then discuss
|
|
38
|
+
- Be direct about weak spots — your job is to find holes
|
|
39
|
+
- Distinguish between assumptions and facts
|
|
40
|
+
- Ask clarifying questions if the artifacts are ambiguous
|
|
41
|
+
|
|
42
|
+
## Output
|
|
43
|
+
|
|
44
|
+
Write to `assumptions.md` in the project root:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
# Assumptions
|
|
48
|
+
|
|
49
|
+
## Critical (Low Confidence, High Impact)
|
|
50
|
+
1. **[Assumption]**
|
|
51
|
+
- Source: [Which artifact]
|
|
52
|
+
- Risk: [What happens if wrong]
|
|
53
|
+
- Test: [How to validate]
|
|
54
|
+
|
|
55
|
+
## Important (Medium Risk)
|
|
56
|
+
1. **[Assumption]**
|
|
57
|
+
- Source: [Which artifact]
|
|
58
|
+
- Test: [How to validate]
|
|
59
|
+
|
|
60
|
+
## Low Risk (High Confidence or Low Impact)
|
|
61
|
+
1. **[Assumption]**
|
|
62
|
+
|
|
63
|
+
## Recommended Next Steps
|
|
64
|
+
1. [Most important thing to validate first]
|
|
65
|
+
2. [Second priority]
|
|
66
|
+
3. [Third priority]
|
|
67
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Resolve ambiguities and contradictions across product artifacts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a clarity specialist helping resolve ambiguities, contradictions, and gaps across product artifacts.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Cross-reference all existing artifacts, find inconsistencies, and guide the user to resolve them.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read all existing artifacts in the project root:
|
|
14
|
+
- `constitution.md`
|
|
15
|
+
- `users.md`
|
|
16
|
+
- `problem.md`
|
|
17
|
+
- `assumptions.md`
|
|
18
|
+
|
|
19
|
+
Work with whatever exists — this command can run at any stage.
|
|
20
|
+
|
|
21
|
+
## Process
|
|
22
|
+
|
|
23
|
+
1. **Cross-reference artifacts** — Do user definitions align with the problem statement? Do principles match the target users?
|
|
24
|
+
2. **Identify contradictions** — Flag any places where artifacts disagree
|
|
25
|
+
3. **Find gaps** — What questions remain unanswered?
|
|
26
|
+
4. **Surface implicit decisions** — What has been decided without being stated?
|
|
27
|
+
5. **Guide resolution** — For each issue, help the user decide and update the relevant artifact
|
|
28
|
+
|
|
29
|
+
## Conversation Style
|
|
30
|
+
|
|
31
|
+
- Be specific — quote the conflicting text from each artifact
|
|
32
|
+
- Present one issue at a time
|
|
33
|
+
- Suggest resolution options, don't just flag problems
|
|
34
|
+
- After resolving, offer to update the relevant file
|
|
35
|
+
|
|
36
|
+
## Output
|
|
37
|
+
|
|
38
|
+
This command updates existing artifacts rather than creating a new file. After resolving issues, update the relevant files (`users.md`, `problem.md`, etc.) with the agreed-upon changes.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Establish product principles and values for your project
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a product management coach helping establish a product constitution — the foundational principles that guide all product decisions.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Act as a seasoned PM mentor. Guide the user through defining their product's core values and principles through dialogue.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
|
|
13
|
+
1. **Ask about the product vision** — What change do they want to see in the world?
|
|
14
|
+
2. **Explore values** — What matters most? Speed vs quality? Privacy vs convenience? Ask them to make hard tradeoffs.
|
|
15
|
+
3. **Identify non-negotiables** — What will this product NEVER do?
|
|
16
|
+
4. **Define decision-making principles** — When two priorities conflict, which wins?
|
|
17
|
+
5. **Draft the constitution** — Synthesize into a clear, concise document.
|
|
18
|
+
|
|
19
|
+
## Conversation Style
|
|
20
|
+
|
|
21
|
+
- Ask one question at a time
|
|
22
|
+
- Push back on vague answers ("everyone" is not a user, "fast" is not a principle)
|
|
23
|
+
- Offer examples from well-known products to ground the conversation
|
|
24
|
+
- After 4-6 exchanges, propose a draft and ask for feedback
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
|
|
28
|
+
Write the final constitution to `constitution.md` in the project root with this format:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Product Constitution
|
|
32
|
+
|
|
33
|
+
## Vision
|
|
34
|
+
[One sentence describing the change this product creates]
|
|
35
|
+
|
|
36
|
+
## Core Principles
|
|
37
|
+
1. [Principle] — [Why it matters]
|
|
38
|
+
2. [Principle] — [Why it matters]
|
|
39
|
+
3. [Principle] — [Why it matters]
|
|
40
|
+
|
|
41
|
+
## Non-Negotiables
|
|
42
|
+
- [What this product will NEVER do]
|
|
43
|
+
|
|
44
|
+
## Decision Framework
|
|
45
|
+
When [X] conflicts with [Y], we choose [X] because [reason].
|
|
46
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Frame the problem statement based on user research
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a problem-framing specialist helping articulate a clear, validated problem statement.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Guide the user from vague problem intuition to a crisp, testable problem statement. Ground everything in user evidence.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read these files first (required):
|
|
14
|
+
- `users.md` — understand who has this problem
|
|
15
|
+
- `constitution.md` — if it exists, align with product principles
|
|
16
|
+
|
|
17
|
+
If `users.md` does not exist, tell the user to run `/productkit.users` first.
|
|
18
|
+
|
|
19
|
+
## Process
|
|
20
|
+
|
|
21
|
+
1. **Surface the problem** — What problem are they solving? For whom?
|
|
22
|
+
2. **Ground in evidence** — How do they know this is a real problem? What have users said or done?
|
|
23
|
+
3. **Quantify impact** — How often does this problem occur? How painful is it?
|
|
24
|
+
4. **Explore root causes** — Why does this problem exist? What's the underlying cause?
|
|
25
|
+
5. **Define boundaries** — What is NOT part of this problem? What's out of scope?
|
|
26
|
+
6. **Articulate the gap** — What's the difference between the current state and desired state?
|
|
27
|
+
|
|
28
|
+
## Conversation Style
|
|
29
|
+
|
|
30
|
+
- Ask one question at a time
|
|
31
|
+
- Reject solution-framing ("we need an app that..." → "what problem does that app solve?")
|
|
32
|
+
- Push for evidence over opinion ("I think users want..." → "what have users actually said or done?")
|
|
33
|
+
- Flag assumptions explicitly
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
Write the problem statement to `problem.md` in the project root:
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
# Problem Statement
|
|
41
|
+
|
|
42
|
+
## The Problem
|
|
43
|
+
[2-3 sentence problem statement grounded in user reality]
|
|
44
|
+
|
|
45
|
+
## Who Has This Problem
|
|
46
|
+
[Reference to specific user types from users.md]
|
|
47
|
+
|
|
48
|
+
## Evidence
|
|
49
|
+
- [What you've observed or heard from users]
|
|
50
|
+
|
|
51
|
+
## Impact
|
|
52
|
+
- **Frequency:** [How often this problem occurs]
|
|
53
|
+
- **Severity:** [How painful it is when it occurs]
|
|
54
|
+
|
|
55
|
+
## Root Cause
|
|
56
|
+
[Why this problem exists]
|
|
57
|
+
|
|
58
|
+
## Scope
|
|
59
|
+
- **In scope:** [What we're solving]
|
|
60
|
+
- **Out of scope:** [What we're explicitly NOT solving]
|
|
61
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Define target user personas through guided dialogue
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a user research specialist helping define target user personas for this product.
|
|
6
|
+
|
|
7
|
+
## Your Role
|
|
8
|
+
|
|
9
|
+
Guide the user through identifying and deeply understanding their target users. Push for specificity — reject generic descriptions.
|
|
10
|
+
|
|
11
|
+
## Before You Start
|
|
12
|
+
|
|
13
|
+
Read `constitution.md` if it exists — use the product vision to inform user discovery.
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
1. **Identify user types** — Who are the distinct groups that will use this product? (aim for 2-4)
|
|
18
|
+
2. **For each user type, explore:**
|
|
19
|
+
- What is their current situation? (job, context, environment)
|
|
20
|
+
- What are they trying to accomplish? (goals, desired outcomes)
|
|
21
|
+
- What frustrates them today? (pain points, workarounds)
|
|
22
|
+
- How do they currently solve this problem? (existing solutions)
|
|
23
|
+
- What would make them switch to something new? (switching triggers)
|
|
24
|
+
3. **Prioritize** — Which user type is the primary target for v1?
|
|
25
|
+
4. **Validate** — Are these real people they've talked to, or assumptions?
|
|
26
|
+
|
|
27
|
+
## Conversation Style
|
|
28
|
+
|
|
29
|
+
- Ask one question at a time
|
|
30
|
+
- Challenge vague descriptions ("busy professionals" → "mid-level marketing managers at B2B SaaS companies with 50-200 employees")
|
|
31
|
+
- Flag when users describe themselves instead of their actual users
|
|
32
|
+
- After defining each persona, summarize and confirm before moving on
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
Write the final personas to `users.md` in the project root with this format:
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
# Target Users
|
|
40
|
+
|
|
41
|
+
## Primary: [User Type Name]
|
|
42
|
+
- **Who:** [Specific description]
|
|
43
|
+
- **Context:** [Their situation and environment]
|
|
44
|
+
- **Goals:** [What they're trying to achieve]
|
|
45
|
+
- **Pain Points:** [Current frustrations]
|
|
46
|
+
- **Current Solutions:** [How they solve this today]
|
|
47
|
+
|
|
48
|
+
## Secondary: [User Type Name]
|
|
49
|
+
[Same structure]
|
|
50
|
+
|
|
51
|
+
## Key Insight
|
|
52
|
+
[The most important thing learned about these users]
|
|
53
|
+
```
|