@nudata/nu-claude-pm 0.1.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/bin/nu-claude-pm.js +98 -0
- package/commands/nu-pm-continue.md +64 -0
- package/commands/nu-pm-elevator-pitch.md +55 -0
- package/commands/nu-pm-halt.md +108 -0
- package/commands/nu-pm-one-pager.md +81 -0
- package/commands/nu-pm-research.md +151 -0
- package/commands/nu-pm-roadmap.md +180 -0
- package/commands/nu-pm-scaffold.md +604 -0
- package/commands/nu-pm-spike.md +140 -0
- package/commands/nu-pm-status.md +52 -0
- package/commands/nu-pm-update.md +49 -0
- package/commands/nu-pm-user-guide.md +211 -0
- package/commands/nu-pm-vision.md +153 -0
- package/package.json +21 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nu-pm-spike
|
|
3
|
+
description: Create and work through a time-boxed technical spike — a focused investigation to answer a specific feasibility or design question. Writes to product/research/spikes/.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are helping the user run a spike: a time-boxed investigation with a single question and a concrete outcome (yes / no / not yet / use X instead of Y). Spikes are not milestones — they feed into milestones by resolving uncertainty before it becomes a blocker.
|
|
7
|
+
|
|
8
|
+
The target directory is: `$ARGUMENTS` (use `product/` if empty or not provided).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Step 1 — Show open spikes
|
|
13
|
+
|
|
14
|
+
Check if `<dir>/research/spikes/` exists. If it does, list any files where status is `🔄 open`. Show them as:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Open spikes:
|
|
18
|
+
- product/research/spikes/2026-04-01-lmcache-redis-compat.md — "Can LMCache share KV blocks across pods via Redis without pod restart?"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If there are open spikes, ask: **"Do you want to continue one of these, or start a new one?"**
|
|
22
|
+
|
|
23
|
+
If continuing an existing spike, read it and skip to Step 4.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Step 2 — Frame the spike
|
|
28
|
+
|
|
29
|
+
Ask: **"What's the question you're trying to answer?"**
|
|
30
|
+
|
|
31
|
+
A good spike question is:
|
|
32
|
+
- Answerable in the stated timebox (not open-ended research)
|
|
33
|
+
- Binary or close to it — yes/no, A or B, feasible or not
|
|
34
|
+
- Specific enough that you'd know when you have the answer
|
|
35
|
+
|
|
36
|
+
Help them sharpen the question if needed. Examples of weak → strong:
|
|
37
|
+
- "How does LMCache work?" → "Does LMCache support cross-pod KV sharing via Redis without requiring pod restart?"
|
|
38
|
+
- "Should we use Helm or Kustomize?" → "Can Kustomize handle our per-customer value overrides without a full template per customer?"
|
|
39
|
+
|
|
40
|
+
Then ask: **"What's your timebox?"** (e.g. 2 hours, half a day, one session). This is a commitment, not a suggestion.
|
|
41
|
+
|
|
42
|
+
Then ask: **"What does a 'yes' answer unblock? What does a 'no' mean for the project?"** This prevents spikes that don't connect to a real decision.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Step 3 — Create the spike document
|
|
47
|
+
|
|
48
|
+
Generate a filename: `YYYY-MM-DD-<slug>.md` where slug is 3-5 kebab-case words. Create `<dir>/research/spikes/` if it doesn't exist.
|
|
49
|
+
|
|
50
|
+
Write the document:
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
# Spike: <Question as title>
|
|
54
|
+
|
|
55
|
+
**Status**: 🔄 open
|
|
56
|
+
**Question**: <exact question — the spike is done when this is answered>
|
|
57
|
+
**Timebox**: <duration — treat this as a hard stop>
|
|
58
|
+
**Started**: YYYY-MM-DD
|
|
59
|
+
|
|
60
|
+
**If yes**: <what this unblocks>
|
|
61
|
+
**If no**: <what this means for the project — pivot, descope, or accept the constraint>
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Approach
|
|
66
|
+
|
|
67
|
+
<How you'll investigate this. List the specific things to try or check, in order. Keep it short — a spike is not a research project.>
|
|
68
|
+
|
|
69
|
+
1. <First thing to try>
|
|
70
|
+
2. <Second thing to try>
|
|
71
|
+
3. <Fallback / alternative to test if #1 fails>
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Log
|
|
76
|
+
|
|
77
|
+
> Add entries as you go. Timestamp optional but helpful for longer spikes.
|
|
78
|
+
|
|
79
|
+
-
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Outcome
|
|
84
|
+
|
|
85
|
+
> Complete this when the spike concludes. Do not leave it blank.
|
|
86
|
+
|
|
87
|
+
**Answer**: <yes / no / partial — state it directly>
|
|
88
|
+
|
|
89
|
+
**Evidence**: <what you found that supports the answer — command output, a working example, a specific failure mode>
|
|
90
|
+
|
|
91
|
+
**Recommendation**: <what the project should do as a result>
|
|
92
|
+
|
|
93
|
+
**Status**: ✅ concluded / ⚠️ inconclusive / 🚫 abandoned
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Tell the user the file is created and the timebox has started.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Step 4 — Work through the spike
|
|
101
|
+
|
|
102
|
+
Ask: **"Do you want to work through this together, or do you have findings to add?"**
|
|
103
|
+
|
|
104
|
+
**If working together**: follow the approach list. Help the user interpret results. When something works, capture it in the Log with enough detail to reproduce. When something fails, note the failure mode specifically — "it failed" is not useful; "it fails with `AssertionError` in `wait_for_save` when block size > 3 chunks" is.
|
|
105
|
+
|
|
106
|
+
Push toward the answer — don't let the spike turn into open-ended exploration. If the timebox is approaching and the answer isn't clear, that is itself a finding.
|
|
107
|
+
|
|
108
|
+
**If adding findings**: take what they give you, help structure it into Log entries, and push toward the Outcome section.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Step 5 — Conclude the spike
|
|
113
|
+
|
|
114
|
+
When the question is answered (or the timebox is up):
|
|
115
|
+
|
|
116
|
+
Fill in the **Outcome** section:
|
|
117
|
+
- State the answer directly — don't hedge if the evidence is clear
|
|
118
|
+
- Include concrete evidence (a working command, a measured number, a specific error)
|
|
119
|
+
- Set status to `✅ concluded`, `⚠️ inconclusive`, or `🚫 abandoned`
|
|
120
|
+
|
|
121
|
+
**On inconclusive**: if the timebox ran out without a clear answer, write what was learned and what a follow-up spike would need to investigate. Don't extend the timebox — open a new spike with a narrower question.
|
|
122
|
+
|
|
123
|
+
**On 'no' answers**: a 'no' is a valid and valuable outcome. Help the user think through what it means:
|
|
124
|
+
- Does this block a milestone? → flag it in `milestones.md` as a blocker
|
|
125
|
+
- Does it invalidate a roadmap assumption? → suggest `/nu-pm-roadmap` to review
|
|
126
|
+
- Is there an alternative approach to spike? → suggest a follow-up spike with a new angle
|
|
127
|
+
|
|
128
|
+
Change **Status** at the top from `🔄 open` to match the outcome status.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Step 6 — Connect back to the project
|
|
133
|
+
|
|
134
|
+
After concluding, ask: **"Does this outcome change anything in your milestones or roadmap?"**
|
|
135
|
+
|
|
136
|
+
If yes, help them identify the specific change:
|
|
137
|
+
- A task that's now unblocked → offer to note it in `milestones.md`
|
|
138
|
+
- A task that's now blocked → offer to add a blocker note
|
|
139
|
+
- An assumption in `roadmap.md` that needs updating → suggest `/nu-pm-roadmap`
|
|
140
|
+
- A technology decision that should be recorded → suggest adding it to the roadmap's Key Decisions table
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nu-pm-status
|
|
3
|
+
description: Give a concise, actionable summary of what to work on next. Reads product/how-to/nu-pm-status.md for project-specific context (cluster state, infra prerequisites, etc.).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Give a concise, actionable summary of what to work on next.
|
|
7
|
+
|
|
8
|
+
The target directory is: `$ARGUMENTS` (use `product/` if empty or not provided).
|
|
9
|
+
|
|
10
|
+
## Steps
|
|
11
|
+
|
|
12
|
+
1. Read all of these in parallel:
|
|
13
|
+
- `<dir>/now.md` — current focus and what was just done
|
|
14
|
+
- `<dir>/milestones.md` — task checklist across all milestones
|
|
15
|
+
- `<dir>/roadmap.md` — architecture context (skim only)
|
|
16
|
+
- The most recent file in `<dir>/reports/` (latest session report)
|
|
17
|
+
|
|
18
|
+
2. If `<dir>/how-to/nu-pm-status.md` exists, read it now and incorporate any project-specific context gathering (e.g. reading a cluster state file, checking infra status) before assembling the output.
|
|
19
|
+
|
|
20
|
+
3. From milestones.md: find the active milestone (first one marked `🔄 in progress`). Within it, find:
|
|
21
|
+
- The first `[~]` task (in progress but not done)
|
|
22
|
+
- The first `[ ]` task (next to start)
|
|
23
|
+
|
|
24
|
+
4. If `now.md` contains a `Design doc:` and `Current story:` field, load the relevant story section from the referenced PRD to get its concrete scope and first action.
|
|
25
|
+
|
|
26
|
+
5. Check for blockers or prerequisites:
|
|
27
|
+
- Does the next task need infrastructure running? (note it clearly)
|
|
28
|
+
- Is there an unresolved bug or investigation from the last session report?
|
|
29
|
+
- Is there a "next session starts at" note in the last report?
|
|
30
|
+
|
|
31
|
+
6. Output a short, scannable answer:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
## What's Next
|
|
35
|
+
|
|
36
|
+
**Milestone**: <milestone name> (<X/Y stories done>)
|
|
37
|
+
**Active story**: <title>
|
|
38
|
+
|
|
39
|
+
**Why this story**: <1–2 sentences — what it unblocks or proves>
|
|
40
|
+
|
|
41
|
+
**Prerequisite check**:
|
|
42
|
+
- Infrastructure: <up / hibernated / unknown>
|
|
43
|
+
- Any blocker: <yes/no — describe if yes>
|
|
44
|
+
|
|
45
|
+
**Concrete first action**:
|
|
46
|
+
<The exact command to run or file to edit to start this task.>
|
|
47
|
+
|
|
48
|
+
**After that**:
|
|
49
|
+
<The 2–3 tasks that follow in sequence.>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Keep it tight. No need to summarise every milestone — just tell the user what to do right now and why.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nu-pm-update
|
|
3
|
+
description: Append a timestamped progress snapshot to today's session report. Does NOT commit, hibernate, or stop work. Reads product/how-to/nu-pm-update.md for project-specific additions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Append a timestamped progress snapshot to today's session report. Mid-session checkpoint only — does not commit, push, or hibernate.
|
|
7
|
+
|
|
8
|
+
The target directory is: `$ARGUMENTS` (use `product/` if empty or not provided).
|
|
9
|
+
|
|
10
|
+
## Steps
|
|
11
|
+
|
|
12
|
+
1. Read `<dir>/now.md` and `<dir>/milestones.md` to understand current state.
|
|
13
|
+
|
|
14
|
+
2. Run `git log --oneline -6` and `git status --short` to see what has changed since last commit.
|
|
15
|
+
|
|
16
|
+
3. Check `<dir>/how-to/nu-pm-update.md` if it exists — read it now and incorporate any project-specific state-gathering steps before writing the report (e.g. checking cluster state, reading infra status files).
|
|
17
|
+
|
|
18
|
+
4. Determine today's report file path: `<dir>/reports/YYYY-MM-DD.md` (today's date).
|
|
19
|
+
|
|
20
|
+
5. If the file does not exist, create it with this header:
|
|
21
|
+
```markdown
|
|
22
|
+
# Session Report — YYYY-MM-DD
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
6. Append a new timestamped section:
|
|
26
|
+
```markdown
|
|
27
|
+
## Update — HH:MM UTC
|
|
28
|
+
|
|
29
|
+
**Active task**: <first [~] or [ ] task in milestones.md>
|
|
30
|
+
|
|
31
|
+
### Completed since last update
|
|
32
|
+
- <bullet per completed item>
|
|
33
|
+
|
|
34
|
+
### In progress
|
|
35
|
+
- <what is currently running or being worked on>
|
|
36
|
+
|
|
37
|
+
### Key results (if any)
|
|
38
|
+
| Metric | Value |
|
|
39
|
+
|--------|-------|
|
|
40
|
+
|
|
41
|
+
### Notes / decisions
|
|
42
|
+
- <bugs found, config changes, observations>
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
7. Confirm to the user: "Updated `<dir>/reports/YYYY-MM-DD.md` with a progress snapshot at HH:MM UTC."
|
|
48
|
+
|
|
49
|
+
Do NOT commit, push, or run any shutdown steps.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nu-pm-user-guide
|
|
3
|
+
description: Display the full user guide for the nu-pm-* command system — what each command does, when to use it, and how the document stack fits together.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Display the following user guide exactly as written. Do not summarize it or truncate it.
|
|
7
|
+
|
|
8
|
+
After displaying it, ask: **"Would you like me to save a copy to `product/nu-pm-user-guide.md` so you can view it in your IDE?"** If yes, write the guide content (everything below the `---` separator, starting with `# ds-work User Guide`) to `product/nu-pm-user-guide.md`. If the user provides a different path, use that instead. Confirm the file was written and note they can open it in their editor.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ds-work User Guide
|
|
13
|
+
|
|
14
|
+
The `nu-pm-*` commands are a set of Claude Code slash commands for managing software projects end-to-end — from initial setup through daily session flow, periodic review, and external communication. They work together as a system.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## The Command Map
|
|
19
|
+
|
|
20
|
+
### Setup commands
|
|
21
|
+
Run these when starting a new project or filling in empty scaffolded docs.
|
|
22
|
+
|
|
23
|
+
| Command | What it does |
|
|
24
|
+
|---------|-------------|
|
|
25
|
+
| `/nu-pm-scaffold [description]` | Bootstrap a new project — creates the full `product/` directory, placeholder docs, `how-to/` extension templates, and `project-management-principles.md`. Run from the project root. |
|
|
26
|
+
| `/nu-pm-vision [dir]` | Interactively create `vision.md` from scratch (if placeholder/missing) or review and update an existing one against current project state. |
|
|
27
|
+
| `/nu-pm-roadmap [dir]` | Interactively create `roadmap.md` from scratch (if placeholder/missing) or review and update an existing one against what milestones have proven. |
|
|
28
|
+
|
|
29
|
+
### Session lifecycle commands
|
|
30
|
+
Run these every session, in order.
|
|
31
|
+
|
|
32
|
+
| Command | When | What it does |
|
|
33
|
+
|---------|------|-------------|
|
|
34
|
+
| `/nu-pm-continue [dir]` | Start of session | Reads `now.md`, `milestones.md`, the latest session report, and the active PRD (if any). Outputs a resume brief with the active story and next action. |
|
|
35
|
+
| `/nu-pm-status [dir]` | After finishing a task | Shorter than continue. Finds the next task, checks infra prerequisites, gives the concrete first action. |
|
|
36
|
+
| `/nu-pm-update [dir]` | Mid-session checkpoint | Appends a timestamped snapshot to today's session report. Does not commit. Use before stepping away or after a significant task. |
|
|
37
|
+
| `/nu-pm-halt [dir]` | End of every session | Full shutdown: updates `milestones.md` + `now.md`, writes the session report, commits and pushes, then runs any project-specific teardown from `how-to/nu-pm-halt.md`. |
|
|
38
|
+
|
|
39
|
+
### Periodic review commands
|
|
40
|
+
Run these at milestone boundaries or when strategy needs a check.
|
|
41
|
+
|
|
42
|
+
| Command | What it does |
|
|
43
|
+
|---------|-------------|
|
|
44
|
+
| `/nu-pm-vision [dir]` | Review mode (when vision.md is filled): checks each section for drift against recent milestone completions and session reports. Proposes targeted edits. Appends Decision Log rows. |
|
|
45
|
+
| `/nu-pm-roadmap [dir]` | Review mode (when roadmap.md is filled): checks milestone state, architecture currency, resolved open questions, alignment with vision. Proposes targeted edits. |
|
|
46
|
+
|
|
47
|
+
### Exploration commands
|
|
48
|
+
Run these for investigations that don't fit neatly into a milestone — research that informs a decision, or a technical question that needs a time-boxed answer before work can continue.
|
|
49
|
+
|
|
50
|
+
| Command | What it does |
|
|
51
|
+
|---------|-------------|
|
|
52
|
+
| `/nu-pm-research [dir]` | Create a structured research document for market research, competitive analysis, technology evaluation, or domain deep-dives. Guides you through framing the question, scoping the investigation, and writing findings + recommendation. Shows open research at the start. Writes to `product/research/` or `product/market-research/` depending on type. |
|
|
53
|
+
| `/nu-pm-spike [dir]` | Run a time-boxed technical spike — a focused investigation with a single yes/no/A-vs-B question and a hard timebox. Shows open spikes at the start so nothing gets forgotten. Writes to `product/research/spikes/`. Connects the outcome back to milestones or roadmap when concluded. |
|
|
54
|
+
|
|
55
|
+
### Communication commands
|
|
56
|
+
Run these when you need to explain the project to someone outside.
|
|
57
|
+
|
|
58
|
+
| Command | What it does |
|
|
59
|
+
|---------|-------------|
|
|
60
|
+
| `/nu-pm-one-pager [dir]` | Creates or updates `product/one-pager.md` — a ~500-word single-page project summary (problem, what we're building, how it works, where we are, what's next, key numbers). Iterates with you until you approve, then saves. |
|
|
61
|
+
| `/nu-pm-elevator-pitch [dir]` | Generates 3 pitch variants (tweet, 30-second verbal, 60-second investor) from `vision.md` and `one-pager.md`. Iterates on tone, audience, and concreteness. Saves to `product/elevator-pitch.md` when approved. |
|
|
62
|
+
|
|
63
|
+
### Reference
|
|
64
|
+
| Command | What it does |
|
|
65
|
+
|---------|-------------|
|
|
66
|
+
| `/nu-pm-user-guide` | This document. |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## The Document Stack
|
|
71
|
+
|
|
72
|
+
Every project using this system has the same structure under `product/`:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
product/
|
|
76
|
+
├── vision.md ← why + who (problem, customer, north star)
|
|
77
|
+
├── roadmap.md ← what + how (architecture, milestones, key decisions)
|
|
78
|
+
├── milestones.md ← progress tracker (story checkboxes, milestone status)
|
|
79
|
+
├── now.md ← session pointer (current focus, what was just done)
|
|
80
|
+
├── project-management-principles.md ← how this system works (per-project copy)
|
|
81
|
+
├── one-pager.md ← external-facing summary (generated by /nu-pm-one-pager)
|
|
82
|
+
├── elevator-pitch.md ← pitch variants (generated by /nu-pm-elevator-pitch)
|
|
83
|
+
├── design/ ← PRDs for milestones that need them (M1-PRD.md, etc.)
|
|
84
|
+
├── market-research/ ← competitive analysis, user research
|
|
85
|
+
├── research/ ← technology deep-dives and domain research (nu-pm-research)
|
|
86
|
+
│ └── spikes/ ← time-boxed feasibility investigations (nu-pm-spike)
|
|
87
|
+
├── operations/ ← cluster runbooks, infra how-tos
|
|
88
|
+
├── learnings/ ← post-hoc reports, incident retrospectives
|
|
89
|
+
├── reports/ ← session history (YYYY-MM-DD.md, written by update/halt)
|
|
90
|
+
└── how-to/ ← project-specific skill extensions (see below)
|
|
91
|
+
├── nu-pm-continue.md
|
|
92
|
+
├── nu-pm-halt.md
|
|
93
|
+
├── nu-pm-status.md
|
|
94
|
+
└── nu-pm-update.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**One question, one document.** The moment the same content lives in two places, they drift.
|
|
98
|
+
|
|
99
|
+
| Question | Answer lives in |
|
|
100
|
+
|----------|----------------|
|
|
101
|
+
| Why are we building this? Who is it for? | `vision.md` |
|
|
102
|
+
| What are we building and how? | `roadmap.md` |
|
|
103
|
+
| Which milestone am I in? Which stories are done? | `milestones.md` |
|
|
104
|
+
| What am I working on right now? | `now.md` |
|
|
105
|
+
| What exactly does Story N require? | `design/M{N}-PRD.md` |
|
|
106
|
+
| What happened last Tuesday? | `reports/YYYY-MM-DD.md` |
|
|
107
|
+
| How do I explain this project in one page? | `one-pager.md` |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Change Tracking
|
|
112
|
+
|
|
113
|
+
Different documents track changes differently:
|
|
114
|
+
|
|
115
|
+
| Document | Tracking mechanism | Why |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| `vision.md` | Decision Log at the bottom (append-only) | Changes are rare and high-signal — losing the old direction costs context |
|
|
118
|
+
| `roadmap.md` | Decision Log + resolved Open Questions move to Key Decisions | Architecture pivots need "why we ended up here", not silent rewrites |
|
|
119
|
+
| `milestones.md` | None — git history + session reports are the trail | Changes too frequently; a log would duplicate reports |
|
|
120
|
+
| PRDs in `design/` | Decision Log at the bottom | Story-level design decisions are what future-you will question |
|
|
121
|
+
|
|
122
|
+
The Decision Log format used in `vision.md` and `roadmap.md`:
|
|
123
|
+
```markdown
|
|
124
|
+
## Decision Log
|
|
125
|
+
|
|
126
|
+
| Date | Section | Change | Rationale |
|
|
127
|
+
|------|---------|--------|-----------|
|
|
128
|
+
| YYYY-MM-DD | <section name> | <what changed — brief> | <why> |
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## How Project-Specific Extensions Work
|
|
134
|
+
|
|
135
|
+
Each session skill can be extended with a project-specific file in `product/how-to/`:
|
|
136
|
+
|
|
137
|
+
| File | Extends | Common use |
|
|
138
|
+
|------|---------|------------|
|
|
139
|
+
| `how-to/nu-pm-continue.md` | `/nu-pm-continue` | Extra context sources to read at session start (e.g. a CURRENT_STATE.md, cluster status) |
|
|
140
|
+
| `how-to/nu-pm-halt.md` | `/nu-pm-halt` | Infrastructure shutdown steps (scale down GPU nodes, hibernate cluster, etc.) |
|
|
141
|
+
| `how-to/nu-pm-update.md` | `/nu-pm-update` | Extra state to capture in mid-session snapshots |
|
|
142
|
+
| `how-to/nu-pm-status.md` | `/nu-pm-status` | Infrastructure prerequisite checks before suggesting the next task |
|
|
143
|
+
|
|
144
|
+
**How-to files contain only the project-specific additions.** The generic steps live in the global skills. If nothing is project-specific, delete the file.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Typical Workflows
|
|
149
|
+
|
|
150
|
+
### Starting a new project
|
|
151
|
+
```
|
|
152
|
+
/nu-pm-scaffold [description] # create product/ structure
|
|
153
|
+
/nu-pm-vision # fill in vision.md interactively
|
|
154
|
+
/nu-pm-roadmap # fill in roadmap.md interactively
|
|
155
|
+
# edit product/how-to/nu-pm-halt.md — add your infra shutdown steps
|
|
156
|
+
# edit milestones.md — replace placeholder tasks with real ones
|
|
157
|
+
/nu-pm-continue # start first session
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Daily session
|
|
161
|
+
```
|
|
162
|
+
/nu-pm-continue # read resume brief, orient to active story
|
|
163
|
+
# ... do the work ...
|
|
164
|
+
/nu-pm-update # optional mid-session checkpoint
|
|
165
|
+
# ... more work ...
|
|
166
|
+
/nu-pm-halt # update docs, commit, push, shut down infra
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### After finishing a task mid-session
|
|
170
|
+
```
|
|
171
|
+
/nu-pm-status # find the next task with prerequisite check
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### End of milestone — check if strategy still holds
|
|
175
|
+
```
|
|
176
|
+
/nu-pm-vision # review: did this milestone change our understanding?
|
|
177
|
+
/nu-pm-roadmap # review: is the plan still right? resolve open questions
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Before a meeting or investor conversation
|
|
181
|
+
```
|
|
182
|
+
/nu-pm-one-pager # generate or refresh the one-pager
|
|
183
|
+
/nu-pm-elevator-pitch # generate or refine the pitch
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Where the Skills Live
|
|
189
|
+
|
|
190
|
+
All `nu-pm-*` commands are global — they work in any project. They live in:
|
|
191
|
+
```
|
|
192
|
+
~/.claude/commands/nu-pm-*.md
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Each skill file is the complete prompt for that command. To modify a skill's behavior, edit the file there. Changes take effect immediately in the next invocation.
|
|
196
|
+
|
|
197
|
+
Project-specific additions go in `product/how-to/` inside each project — not in the global skill files.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## All Arguments Default to `product/`
|
|
202
|
+
|
|
203
|
+
Every command that takes a directory argument (`[dir]`) defaults to `product/` if no argument is given. Pass a different path when your project uses a non-standard layout:
|
|
204
|
+
```
|
|
205
|
+
/nu-pm-status # uses product/
|
|
206
|
+
/nu-pm-status src/product # uses src/product/
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
*The per-project copy of operational conventions lives in `product/project-management-principles.md`. That document covers how milestones, PRDs, and commits work within a project. This user guide covers the tooling itself.*
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nu-pm-vision
|
|
3
|
+
description: Interactively create or review product/vision.md. Creates it from scratch if missing (e.g. after scaffold), or reviews it against current project state and proposes updates.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are helping the user create or review the product vision document. Branch on whether the document exists and is filled in.
|
|
7
|
+
|
|
8
|
+
The target directory is: `$ARGUMENTS` (use `product/` if empty or not provided).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Step 1 — Assess what exists
|
|
13
|
+
|
|
14
|
+
Read `<dir>/vision.md`.
|
|
15
|
+
|
|
16
|
+
Classify its state:
|
|
17
|
+
- **Missing**: file does not exist
|
|
18
|
+
- **Placeholder**: file exists but contains scaffold boilerplate (`<Describe...>`, `TODO`, `> Replace this placeholder`, empty sections)
|
|
19
|
+
- **Filled**: file has real content
|
|
20
|
+
|
|
21
|
+
Then read these in parallel (they inform both creation and review):
|
|
22
|
+
- `<dir>/milestones.md` — what has been proven or completed
|
|
23
|
+
- `<dir>/now.md` — most recent completed work and current focus
|
|
24
|
+
- The most recent file in `<dir>/reports/` — last session's findings
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Step 2A — If Missing or Placeholder: Create Mode
|
|
29
|
+
|
|
30
|
+
Walk the user through each section interactively. Do not generate all sections at once — complete one, show it, get feedback, then move on.
|
|
31
|
+
|
|
32
|
+
Work through these sections in order:
|
|
33
|
+
|
|
34
|
+
### Problem
|
|
35
|
+
Ask: *"What pain are you solving, for whom, and why existing options fall short?"*
|
|
36
|
+
|
|
37
|
+
Generate a draft from whatever the user says. Aim for 3–5 sentences covering:
|
|
38
|
+
- Who feels the pain and in what context
|
|
39
|
+
- What they do today (and why that's inadequate)
|
|
40
|
+
- What the gap is
|
|
41
|
+
|
|
42
|
+
Show the draft. Offer to sharpen it. Move on when the user is satisfied.
|
|
43
|
+
|
|
44
|
+
### Customer / Target user
|
|
45
|
+
Ask: *"Who is this for — be as specific as you can about their role, team, and the moment they hit this problem."*
|
|
46
|
+
|
|
47
|
+
Draft 2–3 sentences. Offer to add a secondary user if relevant. Move on.
|
|
48
|
+
|
|
49
|
+
### Market context
|
|
50
|
+
Ask: *"What alternatives exist and what's wrong with each? Are there any competitors or adjacent products?"*
|
|
51
|
+
|
|
52
|
+
Draft a short paragraph. Refer to `<dir>/market-research/` if it exists and has content. Move on.
|
|
53
|
+
|
|
54
|
+
### North star
|
|
55
|
+
Ask: *"What does success look like in 2–3 years? What can a user do then that they can't do today?"*
|
|
56
|
+
|
|
57
|
+
Draft 2–3 sentences. This should be aspirational but specific — not "best product in category" but a concrete capability or outcome. Move on.
|
|
58
|
+
|
|
59
|
+
### Why now
|
|
60
|
+
Ask: *"Why is this the right moment to build this — what's changed recently that makes it viable or urgent?"*
|
|
61
|
+
|
|
62
|
+
Draft 1–2 sentences. Could be a technology shift, a market gap that just opened, a regulatory change, or simply that the infrastructure now exists to make it feasible. Move on.
|
|
63
|
+
|
|
64
|
+
### What we are not
|
|
65
|
+
Ask: *"What are the product-level anti-goals — things this product will deliberately never try to be?"*
|
|
66
|
+
|
|
67
|
+
Draft 3–5 bullets. These should be principled product-scope cuts, not just feature gaps. Move on.
|
|
68
|
+
|
|
69
|
+
### Finalize
|
|
70
|
+
Show the complete draft. List 2–3 suggestions for anything that seems vague, unsupported, or weak.
|
|
71
|
+
|
|
72
|
+
Ask: *"Anything to change before I save this?"* Iterate until the user confirms.
|
|
73
|
+
|
|
74
|
+
Write to `<dir>/vision.md`. Do not include a Decision Log yet — the document is new.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Step 2B — If Filled: Review Mode
|
|
79
|
+
|
|
80
|
+
The goal is to surface drift: places where the vision no longer matches what has been learned or built.
|
|
81
|
+
|
|
82
|
+
### Load context
|
|
83
|
+
Read the filled `<dir>/vision.md` fully.
|
|
84
|
+
|
|
85
|
+
### Check for drift — work through each section
|
|
86
|
+
|
|
87
|
+
**Problem section**: Does recent work confirm or complicate the problem statement?
|
|
88
|
+
- Did any completed milestone reveal that the problem is harder, narrower, or different than stated?
|
|
89
|
+
- Is the "why existing options fall short" still accurate?
|
|
90
|
+
|
|
91
|
+
**Customer section**: Has the target user sharpened or shifted?
|
|
92
|
+
- Did actual usage (or benchmark results, or customer feedback) reveal a more specific or different user profile?
|
|
93
|
+
|
|
94
|
+
**Market context**: Is this still accurate?
|
|
95
|
+
- Any new competitors or reference points from the session reports or design docs?
|
|
96
|
+
|
|
97
|
+
**North star**: Does it still point the right direction?
|
|
98
|
+
- Did any milestone reveal that the north star is too ambitious, too narrow, or needs reframing?
|
|
99
|
+
|
|
100
|
+
**Why now**: Is the timing argument still valid, or has it strengthened?
|
|
101
|
+
- Did completed work prove out a key technical assumption?
|
|
102
|
+
|
|
103
|
+
**What we are not**: Are the anti-goals still holding?
|
|
104
|
+
- Did any scope decision in milestones or PRDs imply a different boundary?
|
|
105
|
+
|
|
106
|
+
### Propose specific edits
|
|
107
|
+
|
|
108
|
+
For each section where you detect drift or weakness, propose a specific change:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
### [Section name] — suggested update
|
|
112
|
+
|
|
113
|
+
**Current**: "<exact quote from current doc>"
|
|
114
|
+
|
|
115
|
+
**Proposed**: "<replacement text>"
|
|
116
|
+
|
|
117
|
+
**Why**: <one sentence — what changed or what's weak>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
If a section looks solid, say so briefly and skip it.
|
|
121
|
+
|
|
122
|
+
Aim for 2–5 targeted proposals. Do not rewrite the whole document.
|
|
123
|
+
|
|
124
|
+
### Iterate
|
|
125
|
+
Ask: *"Which of these would you like to apply? I can also make other changes or leave anything as-is."*
|
|
126
|
+
|
|
127
|
+
Apply changes one at a time. Show the updated section after each change.
|
|
128
|
+
|
|
129
|
+
### Decision Log
|
|
130
|
+
If any changes are applied, append a row to the Decision Log at the bottom of the file:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Decision Log
|
|
136
|
+
|
|
137
|
+
| Date | Section | Change | Rationale |
|
|
138
|
+
|------|---------|--------|-----------|
|
|
139
|
+
| YYYY-MM-DD | <section name> | <what changed — brief> | <why — what prompted the update> |
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
If a Decision Log already exists, append a new row. Do not rewrite existing rows.
|
|
143
|
+
|
|
144
|
+
Write the file when the user confirms.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Step 3 — After saving
|
|
149
|
+
|
|
150
|
+
Tell the user:
|
|
151
|
+
- What was written or updated
|
|
152
|
+
- If this was a creation: suggest running `/nu-pm-roadmap` next to align the roadmap with the vision
|
|
153
|
+
- If this was a review: note any vision changes that may require a roadmap review (`/nu-pm-roadmap`)
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nudata/nu-claude-pm",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Claude Code slash commands for end-to-end project management — session flow, vision, roadmap, research, and external comms.",
|
|
5
|
+
"keywords": ["claude", "claude-code", "pm", "project-management", "ai"],
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"nu-claude-pm": "./bin/nu-claude-pm.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"bin/",
|
|
13
|
+
"commands/"
|
|
14
|
+
],
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
}
|
|
21
|
+
}
|