@gannonh/kata 0.1.5 → 0.1.7
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 +57 -26
- package/bin/install.js +23 -6
- package/kata/references/planning-config.md +112 -20
- package/package.json +1 -1
- package/skills/kata-completing-milestones/SKILL.md +53 -4
- package/skills/kata-configuring-settings/SKILL.md +65 -25
- package/skills/kata-discussing-phases/SKILL.md +2 -2
- package/skills/kata-executing-phases/SKILL.md +3 -3
- package/skills/kata-listing-phase-assumptions/SKILL.md +1 -1
- package/skills/kata-mapping-codebases/SKILL.md +1 -1
- package/skills/kata-planning-phases/SKILL.md +1 -1
- package/skills/kata-providing-help/SKILL.md +2 -2
- package/skills/kata-resuming-work/SKILL.md +2 -2
- package/skills/kata-showing-whats-new/SKILL.md +7 -7
- package/skills/kata-starting-milestones/SKILL.md +9 -9
- package/skills/kata-starting-projects/SKILL.md +142 -11
- package/skills/kata-updating/SKILL.md +7 -7
- package/skills/kata-verifying-work/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -28,6 +28,27 @@ npx @gannonh/kata
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
+
## Talk to It Like a Person
|
|
32
|
+
|
|
33
|
+
Drive your entire workflow with **natural language**. 🗣️
|
|
34
|
+
|
|
35
|
+
No memorizing commands. No syntax. Just say what you want:
|
|
36
|
+
|
|
37
|
+
| You say... | Kata does... |
|
|
38
|
+
| ------------------------ | -------------------------------------- |
|
|
39
|
+
| "Start a new project" | Launches full project initialization |
|
|
40
|
+
| "What's the status?" | Shows progress, next steps, blockers |
|
|
41
|
+
| "Plan phase 2" | Researches and creates execution plans |
|
|
42
|
+
| "Execute the phase" | Runs all plans with parallel agents |
|
|
43
|
+
| "I'm done for today" | Creates handoff for session resumption |
|
|
44
|
+
| "Debug this login issue" | Spawns systematic debugging workflow |
|
|
45
|
+
|
|
46
|
+
Every workflow responds to natural language. Slash commands exist for precision when you want them (`/kata:plan-phase 2`), but you never *need* them.
|
|
47
|
+
|
|
48
|
+
**This isn't autocomplete. It's intent recognition.** Kata understands what you're trying to accomplish and routes to the right workflow — research, planning, execution, verification — automatically.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
31
52
|
## Who This Is For
|
|
32
53
|
|
|
33
54
|
Teams and individuals that want to describe what they want and have it built correctly.
|
|
@@ -137,8 +158,9 @@ If you prefer not to use that flag, add this to your project's `.claude/settings
|
|
|
137
158
|
### 1. Initialize Project
|
|
138
159
|
|
|
139
160
|
```
|
|
140
|
-
|
|
161
|
+
"Start a new project"
|
|
141
162
|
```
|
|
163
|
+
<sub>or `/kata:new-project`</sub>
|
|
142
164
|
|
|
143
165
|
One command, one flow. The system:
|
|
144
166
|
|
|
@@ -156,8 +178,9 @@ You approve the roadmap. Now you're ready to build.
|
|
|
156
178
|
### 2. Discuss Phase
|
|
157
179
|
|
|
158
180
|
```
|
|
159
|
-
|
|
181
|
+
"Let's discuss phase 1"
|
|
160
182
|
```
|
|
183
|
+
<sub>or `/kata:discuss-phase 1`</sub>
|
|
161
184
|
|
|
162
185
|
**This is where you shape the implementation.**
|
|
163
186
|
|
|
@@ -184,8 +207,9 @@ The deeper you go here, the more the system builds what you actually want. Skip
|
|
|
184
207
|
### 3. Plan Phase
|
|
185
208
|
|
|
186
209
|
```
|
|
187
|
-
|
|
210
|
+
"Plan phase 1"
|
|
188
211
|
```
|
|
212
|
+
<sub>or `/kata:plan-phase 1`</sub>
|
|
189
213
|
|
|
190
214
|
The system:
|
|
191
215
|
|
|
@@ -202,8 +226,9 @@ Each plan is small enough to execute in a fresh context window. No degradation,
|
|
|
202
226
|
### 4. Execute Phase
|
|
203
227
|
|
|
204
228
|
```
|
|
205
|
-
|
|
229
|
+
"Execute phase 1"
|
|
206
230
|
```
|
|
231
|
+
<sub>or `/kata:execute-phase 1`</sub>
|
|
207
232
|
|
|
208
233
|
The system:
|
|
209
234
|
|
|
@@ -221,8 +246,9 @@ Walk away, come back to completed work with clean git history.
|
|
|
221
246
|
### 5. Verify Work
|
|
222
247
|
|
|
223
248
|
```
|
|
224
|
-
|
|
249
|
+
"Verify phase 1"
|
|
225
250
|
```
|
|
251
|
+
<sub>or `/kata:verify-work 1`</sub>
|
|
226
252
|
|
|
227
253
|
**This is where you confirm it actually works.**
|
|
228
254
|
|
|
@@ -244,13 +270,13 @@ If everything passes, you move on. If something's broken, you don't manually deb
|
|
|
244
270
|
### 6. Repeat → Complete → Next Milestone
|
|
245
271
|
|
|
246
272
|
```
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
273
|
+
"Discuss phase 2"
|
|
274
|
+
"Plan phase 2"
|
|
275
|
+
"Execute phase 2"
|
|
276
|
+
"Verify phase 2"
|
|
251
277
|
...
|
|
252
|
-
|
|
253
|
-
|
|
278
|
+
"Complete the milestone"
|
|
279
|
+
"Start the next milestone"
|
|
254
280
|
```
|
|
255
281
|
|
|
256
282
|
Loop **discuss → plan → execute → verify** until milestone complete.
|
|
@@ -266,8 +292,9 @@ Then `/kata:new-milestone` starts the next version — same flow as `new-project
|
|
|
266
292
|
### Quick Mode
|
|
267
293
|
|
|
268
294
|
```
|
|
269
|
-
|
|
295
|
+
"Quick task: add dark mode toggle"
|
|
270
296
|
```
|
|
297
|
+
<sub>or `/kata:quick`</sub>
|
|
271
298
|
|
|
272
299
|
**For ad-hoc tasks that don't need full planning.**
|
|
273
300
|
|
|
@@ -373,10 +400,12 @@ You're never locked in. The system adapts.
|
|
|
373
400
|
|
|
374
401
|
## Commands
|
|
375
402
|
|
|
403
|
+
> **Remember:** All commands also respond to natural language. "What's my progress?" works the same as `/kata:progress`.
|
|
404
|
+
|
|
376
405
|
### Core Workflow
|
|
377
406
|
|
|
378
|
-
| Command
|
|
379
|
-
|
|
|
407
|
+
| Command | What it does |
|
|
408
|
+
| ---------------------------- | ------------------------------------------------------------------ |
|
|
380
409
|
| `/kata:new-project` | Full initialization: questions → research → requirements → roadmap |
|
|
381
410
|
| `/kata:discuss-phase [N]` | Capture implementation decisions before planning |
|
|
382
411
|
| `/kata:plan-phase [N]` | Research + plan + verify for a phase |
|
|
@@ -388,23 +417,23 @@ You're never locked in. The system adapts.
|
|
|
388
417
|
|
|
389
418
|
### Navigation
|
|
390
419
|
|
|
391
|
-
| Command
|
|
392
|
-
|
|
|
420
|
+
| Command | What it does |
|
|
421
|
+
| ----------------- | --------------------------------------------- |
|
|
393
422
|
| `/kata:progress` | Where am I? What's next? |
|
|
394
423
|
| `/kata:help` | Show all commands and usage guide |
|
|
395
424
|
| `/kata:whats-new` | See what changed since your installed version |
|
|
396
|
-
| `/kata:update` | Update Kata with changelog preview
|
|
425
|
+
| `/kata:update` | Update Kata with changelog preview |
|
|
397
426
|
|
|
398
427
|
### Brownfield
|
|
399
428
|
|
|
400
|
-
| Command
|
|
401
|
-
|
|
|
429
|
+
| Command | What it does |
|
|
430
|
+
| -------------------- | -------------------------------------------- |
|
|
402
431
|
| `/kata:map-codebase` | Analyze existing codebase before new-project |
|
|
403
432
|
|
|
404
433
|
### Phase Management
|
|
405
434
|
|
|
406
|
-
| Command
|
|
407
|
-
|
|
|
435
|
+
| Command | What it does |
|
|
436
|
+
| ---------------------------------- | ---------------------------------------------- |
|
|
408
437
|
| `/kata:add-phase` | Append phase to roadmap |
|
|
409
438
|
| `/kata:insert-phase [N]` | Insert urgent work between phases |
|
|
410
439
|
| `/kata:remove-phase [N]` | Remove future phase, renumber |
|
|
@@ -413,21 +442,21 @@ You're never locked in. The system adapts.
|
|
|
413
442
|
|
|
414
443
|
### Session
|
|
415
444
|
|
|
416
|
-
| Command
|
|
417
|
-
|
|
|
445
|
+
| Command | What it does |
|
|
446
|
+
| ------------------- | -------------------------------------- |
|
|
418
447
|
| `/kata:pause-work` | Create handoff when stopping mid-phase |
|
|
419
448
|
| `/kata:resume-work` | Restore from last session |
|
|
420
449
|
|
|
421
450
|
### Utilities
|
|
422
451
|
|
|
423
|
-
| Command
|
|
424
|
-
|
|
|
452
|
+
| Command | What it does |
|
|
453
|
+
| ----------------------------- | ---------------------------------------------- |
|
|
425
454
|
| `/kata:settings` | Configure model profile and workflow agents |
|
|
426
455
|
| `/kata:set-profile <profile>` | Switch model profile (quality/balanced/budget) |
|
|
427
456
|
| `/kata:add-todo [desc]` | Capture idea for later |
|
|
428
457
|
| `/kata:check-todos` | List pending todos |
|
|
429
458
|
| `/kata:debug [desc]` | Systematic debugging with persistent state |
|
|
430
|
-
| `/kata:quick` | Execute ad-hoc task with Kata guarantees
|
|
459
|
+
| `/kata:quick` | Execute ad-hoc task with Kata guarantees |
|
|
431
460
|
|
|
432
461
|
<sup>¹ Contributed by reddit user OracleGreyBeard</sup>
|
|
433
462
|
|
|
@@ -531,4 +560,6 @@ MIT License. See [LICENSE](LICENSE) for details.
|
|
|
531
560
|
|
|
532
561
|
**Claude Code is powerful. Kata makes it reliable.**
|
|
533
562
|
|
|
563
|
+
*Just tell it what you want.*
|
|
564
|
+
|
|
534
565
|
</div>
|
package/bin/install.js
CHANGED
|
@@ -410,17 +410,34 @@ function install(isGlobal) {
|
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
// Copy hooks
|
|
413
|
+
// Copy hooks (recursively to handle subdirectories like dist/)
|
|
414
414
|
const hooksSrc = path.join(src, 'hooks');
|
|
415
415
|
if (fs.existsSync(hooksSrc)) {
|
|
416
416
|
const hooksDest = path.join(claudeDir, 'hooks');
|
|
417
|
+
// Clean install: remove existing to prevent orphaned files
|
|
418
|
+
if (fs.existsSync(hooksDest)) {
|
|
419
|
+
fs.rmSync(hooksDest, { recursive: true });
|
|
420
|
+
}
|
|
417
421
|
fs.mkdirSync(hooksDest, { recursive: true });
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
const
|
|
421
|
-
const
|
|
422
|
-
|
|
422
|
+
|
|
423
|
+
function copyHooksRecursive(srcDir, destDir) {
|
|
424
|
+
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
425
|
+
for (const entry of entries) {
|
|
426
|
+
// Skip dist/ directory - it's for npm publishing only
|
|
427
|
+
if (entry.name === 'dist') continue;
|
|
428
|
+
|
|
429
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
430
|
+
const destPath = path.join(destDir, entry.name);
|
|
431
|
+
if (entry.isDirectory()) {
|
|
432
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
433
|
+
copyHooksRecursive(srcPath, destPath);
|
|
434
|
+
} else {
|
|
435
|
+
fs.copyFileSync(srcPath, destPath);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
423
438
|
}
|
|
439
|
+
|
|
440
|
+
copyHooksRecursive(hooksSrc, hooksDest);
|
|
424
441
|
if (verifyInstalled(hooksDest, 'hooks')) {
|
|
425
442
|
console.log(` ${green}✓${reset} Installed hooks`);
|
|
426
443
|
} else {
|
|
@@ -1,21 +1,58 @@
|
|
|
1
1
|
<planning_config>
|
|
2
2
|
|
|
3
|
-
Configuration options for `.planning
|
|
3
|
+
Configuration options for Kata projects in `.planning/config.json`.
|
|
4
4
|
|
|
5
5
|
<config_schema>
|
|
6
|
+
|
|
7
|
+
**Full schema:**
|
|
8
|
+
|
|
6
9
|
```json
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
+
{
|
|
11
|
+
"mode": "yolo|interactive",
|
|
12
|
+
"depth": "quick|standard|comprehensive",
|
|
13
|
+
"parallelization": true|false,
|
|
14
|
+
"model_profile": "quality|balanced|budget",
|
|
15
|
+
"commit_docs": true|false,
|
|
16
|
+
"pr_workflow": true|false,
|
|
17
|
+
"workflow": {
|
|
18
|
+
"research": true|false,
|
|
19
|
+
"plan_check": true|false,
|
|
20
|
+
"verifier": true|false
|
|
21
|
+
}
|
|
10
22
|
}
|
|
11
23
|
```
|
|
12
24
|
|
|
13
25
|
| Option | Default | Description |
|
|
14
26
|
|--------|---------|-------------|
|
|
27
|
+
| `mode` | `yolo` | `yolo` = auto-approve, `interactive` = confirm at each step |
|
|
28
|
+
| `depth` | `standard` | `quick` (3-5 phases), `standard` (5-8), `comprehensive` (8-12) |
|
|
29
|
+
| `parallelization` | `true` | Run independent plans simultaneously |
|
|
30
|
+
| `model_profile` | `balanced` | Which AI models for agents (see model-profiles.md) |
|
|
15
31
|
| `commit_docs` | `true` | Whether to commit planning artifacts to git |
|
|
16
|
-
| `
|
|
32
|
+
| `pr_workflow` | `false` | Use PR-based release workflow vs direct commits |
|
|
33
|
+
| `workflow.research` | `true` | Spawn researcher before planning each phase |
|
|
34
|
+
| `workflow.plan_check` | `true` | Verify plans achieve phase goals before execution |
|
|
35
|
+
| `workflow.verifier` | `true` | Confirm deliverables after phase execution |
|
|
36
|
+
|
|
17
37
|
</config_schema>
|
|
18
38
|
|
|
39
|
+
<reading_config>
|
|
40
|
+
|
|
41
|
+
**Standard pattern for reading config values:**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Read a string value with default
|
|
45
|
+
MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
|
|
46
|
+
|
|
47
|
+
# Read a boolean value with default
|
|
48
|
+
PR_WORKFLOW=$(cat .planning/config.json 2>/dev/null | grep -o '"pr_workflow"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "false")
|
|
49
|
+
|
|
50
|
+
# Read nested boolean (workflow.*)
|
|
51
|
+
RESEARCH=$(cat .planning/config.json 2>/dev/null | grep -o '"research"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
</reading_config>
|
|
55
|
+
|
|
19
56
|
<commit_docs_behavior>
|
|
20
57
|
|
|
21
58
|
**When `commit_docs: true` (default):**
|
|
@@ -38,7 +75,7 @@ COMMIT_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:s
|
|
|
38
75
|
git check-ignore -q .planning 2>/dev/null && COMMIT_DOCS=false
|
|
39
76
|
```
|
|
40
77
|
|
|
41
|
-
**Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors
|
|
78
|
+
**Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors.
|
|
42
79
|
|
|
43
80
|
**Conditional git operations:**
|
|
44
81
|
|
|
@@ -51,30 +88,73 @@ fi
|
|
|
51
88
|
|
|
52
89
|
</commit_docs_behavior>
|
|
53
90
|
|
|
54
|
-
<
|
|
91
|
+
<pr_workflow_behavior>
|
|
92
|
+
|
|
93
|
+
**When `pr_workflow: false` (default):**
|
|
94
|
+
- Commit directly to main branch
|
|
95
|
+
- Create git tags locally after milestone completion
|
|
96
|
+
- Push tags to remote when ready
|
|
97
|
+
|
|
98
|
+
**When `pr_workflow: true`:**
|
|
99
|
+
- Work on feature branches
|
|
100
|
+
- Create PRs for phase completion
|
|
101
|
+
- Create git tags via GitHub Release after merge
|
|
102
|
+
- Enables GitHub Actions for CI/CD (e.g., npm publish)
|
|
103
|
+
|
|
104
|
+
**Checking the config:**
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
PR_WORKFLOW=$(cat .planning/config.json 2>/dev/null | grep -o '"pr_workflow"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "false")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Usage in kata-completing-milestones:**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
if [ "$PR_WORKFLOW" = "true" ]; then
|
|
114
|
+
# Skip git tag, defer to GitHub Release
|
|
115
|
+
echo "Tag will be created via GitHub Release after merge"
|
|
116
|
+
else
|
|
117
|
+
# Create tag locally
|
|
118
|
+
git tag -a v1.0.0 -m "Release v1.0.0"
|
|
119
|
+
fi
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
</pr_workflow_behavior>
|
|
123
|
+
|
|
124
|
+
<workflow_agents>
|
|
125
|
+
|
|
126
|
+
These settings control optional agent spawning during Kata workflows:
|
|
55
127
|
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
- Broad searches skip gitignored: `rg "pattern"` skips `.planning/`
|
|
128
|
+
**`workflow.research`** — Spawn kata-phase-researcher before kata-planner
|
|
129
|
+
- Investigates domain, finds patterns, surfaces gotchas
|
|
130
|
+
- Adds tokens/time but improves plan quality
|
|
60
131
|
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
132
|
+
**`workflow.plan_check`** — Spawn kata-plan-checker after kata-planner
|
|
133
|
+
- Verifies plan actually achieves the phase goal
|
|
134
|
+
- Catches gaps before execution starts
|
|
64
135
|
|
|
65
|
-
|
|
136
|
+
**`workflow.verifier`** — Spawn kata-verifier after kata-executor
|
|
137
|
+
- Confirms must-haves were delivered
|
|
138
|
+
- Validates phase success criteria
|
|
66
139
|
|
|
67
|
-
|
|
140
|
+
**Checking workflow config:**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
RESEARCH=$(cat .planning/config.json 2>/dev/null | grep -o '"research"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
144
|
+
PLAN_CHECK=$(cat .planning/config.json 2>/dev/null | grep -o '"plan_check"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
145
|
+
VERIFIER=$(cat .planning/config.json 2>/dev/null | grep -o '"verifier"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
</workflow_agents>
|
|
68
149
|
|
|
69
150
|
<setup_uncommitted_mode>
|
|
70
151
|
|
|
71
|
-
To use uncommitted mode:
|
|
152
|
+
To use uncommitted mode (keep planning private):
|
|
72
153
|
|
|
73
154
|
1. **Set config:**
|
|
74
155
|
```json
|
|
75
|
-
|
|
76
|
-
"commit_docs": false
|
|
77
|
-
"search_gitignored": true
|
|
156
|
+
{
|
|
157
|
+
"commit_docs": false
|
|
78
158
|
}
|
|
79
159
|
```
|
|
80
160
|
|
|
@@ -91,4 +171,16 @@ To use uncommitted mode:
|
|
|
91
171
|
|
|
92
172
|
</setup_uncommitted_mode>
|
|
93
173
|
|
|
174
|
+
<updating_settings>
|
|
175
|
+
|
|
176
|
+
Run `/kata:settings` to update config preferences interactively.
|
|
177
|
+
|
|
178
|
+
The settings skill will:
|
|
179
|
+
1. Detect any missing config keys from schema evolution
|
|
180
|
+
2. Prompt for preferences on new options
|
|
181
|
+
3. Preserve existing values for unchanged settings
|
|
182
|
+
4. Update `.planning/config.json` with merged config
|
|
183
|
+
|
|
184
|
+
</updating_settings>
|
|
185
|
+
|
|
94
186
|
</planning_config>
|
package/package.json
CHANGED
|
@@ -20,8 +20,8 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|
|
20
20
|
<execution_context>
|
|
21
21
|
**Load these files NOW (before proceeding):**
|
|
22
22
|
|
|
23
|
-
- @~/.claude/
|
|
24
|
-
- @~/.claude/
|
|
23
|
+
- @~/.claude/kata/workflows/complete-milestone.md (main workflow)
|
|
24
|
+
- @~/.claude/kata/templates/milestone-archive.md (archive template)
|
|
25
25
|
</execution_context>
|
|
26
26
|
|
|
27
27
|
<context>
|
|
@@ -145,7 +145,56 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|
|
145
145
|
|
|
146
146
|
**If `PR_WORKFLOW=true`:**
|
|
147
147
|
|
|
148
|
-
Skip git tag creation.
|
|
148
|
+
Skip git tag creation. Offer to create PR:
|
|
149
|
+
|
|
150
|
+
Use AskUserQuestion:
|
|
151
|
+
- header: "Create PR"
|
|
152
|
+
- question: "Would you like me to create a PR for this milestone?"
|
|
153
|
+
- options:
|
|
154
|
+
- "Yes, create PR" — Create PR to merge to main
|
|
155
|
+
- "No, I'll do it manually" — Show instructions only
|
|
156
|
+
|
|
157
|
+
**If "Yes, create PR":**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Get current branch
|
|
161
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
162
|
+
|
|
163
|
+
# Push branch if not already pushed
|
|
164
|
+
git push -u origin "$CURRENT_BRANCH" 2>/dev/null || true
|
|
165
|
+
|
|
166
|
+
# Create PR
|
|
167
|
+
gh pr create \
|
|
168
|
+
--title "v{{version}}: [Milestone Name]" \
|
|
169
|
+
--body "$(cat <<'EOF'
|
|
170
|
+
## Summary
|
|
171
|
+
|
|
172
|
+
Completes milestone v{{version}}.
|
|
173
|
+
|
|
174
|
+
**Key accomplishments:**
|
|
175
|
+
- [accomplishment 1]
|
|
176
|
+
- [accomplishment 2]
|
|
177
|
+
- [accomplishment 3]
|
|
178
|
+
|
|
179
|
+
## After Merge
|
|
180
|
+
|
|
181
|
+
Create GitHub Release with tag `v{{version}}` to trigger npm publish (if configured).
|
|
182
|
+
EOF
|
|
183
|
+
)"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Display PR URL and next steps:
|
|
187
|
+
```
|
|
188
|
+
✓ PR created: [PR URL]
|
|
189
|
+
|
|
190
|
+
After merge:
|
|
191
|
+
→ Create GitHub Release with tag v{{version}}
|
|
192
|
+
→ GitHub Actions will publish to npm (if configured)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**If "No, I'll do it manually":**
|
|
196
|
+
|
|
197
|
+
Display:
|
|
149
198
|
```
|
|
150
199
|
⚡ PR workflow mode — tag will be created via GitHub Release after merge
|
|
151
200
|
|
|
@@ -173,7 +222,7 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|
|
173
222
|
- `.planning/REQUIREMENTS.md` deleted (fresh for next milestone)
|
|
174
223
|
- ROADMAP.md collapsed to one-line entry
|
|
175
224
|
- PROJECT.md updated with current state
|
|
176
|
-
- Git tag v{{version}} created (if pr_workflow=false) OR
|
|
225
|
+
- Git tag v{{version}} created (if pr_workflow=false) OR PR created/instructions given (if pr_workflow=true)
|
|
177
226
|
- Commit successful
|
|
178
227
|
- User knows next steps (including need for fresh requirements)
|
|
179
228
|
</success_criteria>
|
|
@@ -14,6 +14,8 @@ allowed-tools:
|
|
|
14
14
|
Allow users to toggle workflow agents on/off and select model profile via interactive settings.
|
|
15
15
|
|
|
16
16
|
Updates `.planning/config.json` with workflow preferences and model profile selection.
|
|
17
|
+
|
|
18
|
+
**Handles missing config keys:** If config.json is missing any expected keys (e.g., `pr_workflow`, `commit_docs`), prompts user for preferences and adds them.
|
|
17
19
|
</objective>
|
|
18
20
|
|
|
19
21
|
<process>
|
|
@@ -26,20 +28,40 @@ ls .planning/config.json 2>/dev/null
|
|
|
26
28
|
|
|
27
29
|
**If not found:** Error - run `/kata:new-project` first.
|
|
28
30
|
|
|
29
|
-
## 2. Read Current Config
|
|
31
|
+
## 2. Read Current Config and Detect Missing Keys
|
|
30
32
|
|
|
31
33
|
```bash
|
|
32
34
|
cat .planning/config.json
|
|
33
35
|
```
|
|
34
36
|
|
|
35
|
-
Parse current values
|
|
36
|
-
- `
|
|
37
|
-
- `
|
|
38
|
-
- `
|
|
37
|
+
Parse current values with defaults:
|
|
38
|
+
- `mode` — yolo or interactive (default: `yolo`)
|
|
39
|
+
- `depth` — quick, standard, or comprehensive (default: `standard`)
|
|
40
|
+
- `parallelization` — run agents in parallel (default: `true`)
|
|
39
41
|
- `model_profile` — which model each agent uses (default: `balanced`)
|
|
42
|
+
- `commit_docs` — commit planning artifacts to git (default: `true`)
|
|
40
43
|
- `pr_workflow` — use PR-based release workflow (default: `false`)
|
|
44
|
+
- `workflow.research` — spawn researcher during plan-phase (default: `true`)
|
|
45
|
+
- `workflow.plan_check` — spawn plan checker during plan-phase (default: `true`)
|
|
46
|
+
- `workflow.verifier` — spawn verifier during execute-phase (default: `true`)
|
|
47
|
+
|
|
48
|
+
**Detect missing keys:**
|
|
49
|
+
|
|
50
|
+
Check if these keys exist in config.json:
|
|
51
|
+
- `commit_docs`
|
|
52
|
+
- `pr_workflow`
|
|
53
|
+
|
|
54
|
+
If any are missing, note them for step 3.
|
|
41
55
|
|
|
42
|
-
## 3. Present Settings
|
|
56
|
+
## 3. Present Settings (Including New Options)
|
|
57
|
+
|
|
58
|
+
**If missing keys were detected:**
|
|
59
|
+
|
|
60
|
+
Display notification:
|
|
61
|
+
```
|
|
62
|
+
⚠️ New config options available: {list missing keys}
|
|
63
|
+
Adding these to your settings...
|
|
64
|
+
```
|
|
43
65
|
|
|
44
66
|
Use AskUserQuestion with current values shown:
|
|
45
67
|
|
|
@@ -55,6 +77,24 @@ AskUserQuestion([
|
|
|
55
77
|
{ label: "Budget", description: "Sonnet for writing, Haiku for research/verification (lowest cost)" }
|
|
56
78
|
]
|
|
57
79
|
},
|
|
80
|
+
{
|
|
81
|
+
question: "Commit planning docs to git?",
|
|
82
|
+
header: "Commit Docs",
|
|
83
|
+
multiSelect: false,
|
|
84
|
+
options: [
|
|
85
|
+
{ label: "Yes (Recommended)", description: "Track planning artifacts in git history" },
|
|
86
|
+
{ label: "No", description: "Keep planning private (add .planning/ to .gitignore)" }
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
question: "Use PR-based release workflow?",
|
|
91
|
+
header: "PR Workflow",
|
|
92
|
+
multiSelect: false,
|
|
93
|
+
options: [
|
|
94
|
+
{ label: "Yes", description: "Protect main, create PRs, tag via GitHub Release" },
|
|
95
|
+
{ label: "No (Recommended)", description: "Commit directly to main, create tags locally" }
|
|
96
|
+
]
|
|
97
|
+
},
|
|
58
98
|
{
|
|
59
99
|
question: "Spawn Plan Researcher? (researches domain before planning)",
|
|
60
100
|
header: "Research",
|
|
@@ -81,40 +121,38 @@ AskUserQuestion([
|
|
|
81
121
|
{ label: "Yes", description: "Verify must-haves after execution" },
|
|
82
122
|
{ label: "No", description: "Skip post-execution verification" }
|
|
83
123
|
]
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
question: "Use PR-based release workflow?",
|
|
87
|
-
header: "PR Workflow",
|
|
88
|
-
multiSelect: false,
|
|
89
|
-
options: [
|
|
90
|
-
{ label: "Yes", description: "Protect main, create PRs, tag via GitHub Release" },
|
|
91
|
-
{ label: "No", description: "Commit directly to main, create tags locally" }
|
|
92
|
-
]
|
|
93
124
|
}
|
|
94
125
|
])
|
|
95
126
|
```
|
|
96
127
|
|
|
97
|
-
**Pre-select based on current config values.**
|
|
128
|
+
**Pre-select based on current config values (use defaults for missing keys).**
|
|
98
129
|
|
|
99
130
|
## 4. Update Config
|
|
100
131
|
|
|
101
|
-
Merge new settings into existing config.json:
|
|
132
|
+
Merge new settings into existing config.json (preserving existing keys like `mode`, `depth`, `parallelization`):
|
|
102
133
|
|
|
103
134
|
```json
|
|
104
135
|
{
|
|
105
|
-
|
|
106
|
-
"
|
|
107
|
-
"
|
|
136
|
+
"mode": "yolo|interactive",
|
|
137
|
+
"depth": "quick|standard|comprehensive",
|
|
138
|
+
"parallelization": true|false,
|
|
139
|
+
"model_profile": "quality|balanced|budget",
|
|
140
|
+
"commit_docs": true|false,
|
|
141
|
+
"pr_workflow": true|false,
|
|
108
142
|
"workflow": {
|
|
109
|
-
"research": true
|
|
110
|
-
"plan_check": true
|
|
111
|
-
"verifier": true
|
|
143
|
+
"research": true|false,
|
|
144
|
+
"plan_check": true|false,
|
|
145
|
+
"verifier": true|false
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
148
|
```
|
|
115
149
|
|
|
116
150
|
Write updated config to `.planning/config.json`.
|
|
117
151
|
|
|
152
|
+
**If `commit_docs` changed to `false`:**
|
|
153
|
+
- Add `.planning/` to `.gitignore` (create if needed)
|
|
154
|
+
- Note: User should run `git rm -r --cached .planning/` if already tracked
|
|
155
|
+
|
|
118
156
|
## 5. Confirm Changes
|
|
119
157
|
|
|
120
158
|
Display:
|
|
@@ -127,6 +165,7 @@ Display:
|
|
|
127
165
|
| Setting | Value |
|
|
128
166
|
|----------------------|-------|
|
|
129
167
|
| Model Profile | {quality/balanced/budget} |
|
|
168
|
+
| Commit Docs | {On/Off} |
|
|
130
169
|
| PR Workflow | {On/Off} |
|
|
131
170
|
| Plan Researcher | {On/Off} |
|
|
132
171
|
| Plan Checker | {On/Off} |
|
|
@@ -145,7 +184,8 @@ Quick commands:
|
|
|
145
184
|
|
|
146
185
|
<success_criteria>
|
|
147
186
|
- [ ] Current config read
|
|
148
|
-
- [ ]
|
|
149
|
-
- [ ]
|
|
187
|
+
- [ ] Missing keys detected and user notified
|
|
188
|
+
- [ ] User presented with 6 settings (profile + commit_docs + pr_workflow + 3 toggles)
|
|
189
|
+
- [ ] Config updated with complete schema
|
|
150
190
|
- [ ] Changes confirmed to user
|
|
151
191
|
</success_criteria>
|
|
@@ -23,8 +23,8 @@ Extract implementation decisions that downstream agents need — researcher and
|
|
|
23
23
|
</objective>
|
|
24
24
|
|
|
25
25
|
<execution_context>
|
|
26
|
-
@~/.claude/
|
|
27
|
-
@~/.claude/
|
|
26
|
+
@~/.claude/kata/workflows/discuss-phase.md
|
|
27
|
+
@~/.claude/kata/templates/context.md
|
|
28
28
|
</execution_context>
|
|
29
29
|
|
|
30
30
|
<context>
|
|
@@ -19,8 +19,8 @@ Context budget: ~15% orchestrator, 100% fresh per subagent.
|
|
|
19
19
|
</objective>
|
|
20
20
|
|
|
21
21
|
<execution_context>
|
|
22
|
-
@~/.claude/
|
|
23
|
-
@~/.claude/
|
|
22
|
+
@~/.claude/kata/references/ui-brand.md
|
|
23
|
+
@~/.claude/kata/workflows/execute-phase.md
|
|
24
24
|
</execution_context>
|
|
25
25
|
|
|
26
26
|
<context>
|
|
@@ -278,7 +278,7 @@ Plans with `autonomous: false` have checkpoints. The execute-phase.md workflow h
|
|
|
278
278
|
- Orchestrator presents to user, collects response
|
|
279
279
|
- Spawns fresh continuation agent (not resume)
|
|
280
280
|
|
|
281
|
-
See `@~/.claude/
|
|
281
|
+
See `@~/.claude/kata/workflows/execute-phase.md` step `checkpoint_handling` for complete details.
|
|
282
282
|
</checkpoint_handling>
|
|
283
283
|
|
|
284
284
|
<deviation_rules>
|
|
@@ -18,7 +18,7 @@ Output: Conversational output only (no file creation) - ends with "What do you t
|
|
|
18
18
|
</objective>
|
|
19
19
|
|
|
20
20
|
<execution_context>
|
|
21
|
-
@~/.claude/
|
|
21
|
+
@~/.claude/kata/workflows/list-phase-assumptions.md
|
|
22
22
|
</execution_context>
|
|
23
23
|
|
|
24
24
|
<context>
|
|
@@ -19,7 +19,7 @@ Output: .planning/codebase/ folder with 7 structured documents about the codebas
|
|
|
19
19
|
</objective>
|
|
20
20
|
|
|
21
21
|
<execution_context>
|
|
22
|
-
@~/.claude/
|
|
22
|
+
@~/.claude/kata/workflows/map-codebase.md
|
|
23
23
|
</execution_context>
|
|
24
24
|
|
|
25
25
|
<context>
|
|
@@ -43,7 +43,7 @@ Kata evolves fast. Check for updates periodically:
|
|
|
43
43
|
Shows what changed since your installed version. Update with:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
npx
|
|
46
|
+
npx kata-cc@latest
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## Core Workflow
|
|
@@ -355,7 +355,7 @@ Update Kata to latest version with changelog preview.
|
|
|
355
355
|
|
|
356
356
|
- Shows what changed before updating
|
|
357
357
|
- Confirms before running install
|
|
358
|
-
- Better than raw `npx
|
|
358
|
+
- Better than raw `npx kata-cc`
|
|
359
359
|
|
|
360
360
|
Usage: `/kata:update`
|
|
361
361
|
|
|
@@ -23,11 +23,11 @@ Routes to the resume-project workflow which handles:
|
|
|
23
23
|
</objective>
|
|
24
24
|
|
|
25
25
|
<execution_context>
|
|
26
|
-
@~/.claude/
|
|
26
|
+
@~/.claude/kata/workflows/resume-project.md
|
|
27
27
|
</execution_context>
|
|
28
28
|
|
|
29
29
|
<process>
|
|
30
|
-
**Follow the resume-project workflow** from `@~/.claude/
|
|
30
|
+
**Follow the resume-project workflow** from `@~/.claude/kata/workflows/resume-project.md`.
|
|
31
31
|
|
|
32
32
|
The workflow handles all resumption logic including:
|
|
33
33
|
|
|
@@ -22,7 +22,7 @@ Shows version comparison, changelog entries for missed versions, and update inst
|
|
|
22
22
|
Read installed version from VERSION file:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
cat ~/.claude/
|
|
25
|
+
cat ~/.claude/kata/VERSION 2>/dev/null
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
**If VERSION file missing:**
|
|
@@ -33,7 +33,7 @@ cat ~/.claude/get-shit-done/VERSION 2>/dev/null
|
|
|
33
33
|
|
|
34
34
|
Your installation doesn't include version tracking.
|
|
35
35
|
|
|
36
|
-
**To fix:** `npx
|
|
36
|
+
**To fix:** `npx @gannonh/kata --global`
|
|
37
37
|
|
|
38
38
|
This will reinstall with version tracking enabled.
|
|
39
39
|
```
|
|
@@ -45,13 +45,13 @@ STOP here if no VERSION file.
|
|
|
45
45
|
Fetch latest CHANGELOG.md from GitHub:
|
|
46
46
|
|
|
47
47
|
Use WebFetch tool with:
|
|
48
|
-
- URL: `https://raw.githubusercontent.com/
|
|
48
|
+
- URL: `https://raw.githubusercontent.com/gannnonh/kata/main/CHANGELOG.md`
|
|
49
49
|
- Prompt: "Extract all version entries with their dates and changes. Return in Keep-a-Changelog format."
|
|
50
50
|
|
|
51
51
|
**If fetch fails:**
|
|
52
52
|
Fall back to local changelog:
|
|
53
53
|
```bash
|
|
54
|
-
cat ~/.claude/
|
|
54
|
+
cat ~/.claude/kata/CHANGELOG.md 2>/dev/null
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
Note to user: "Couldn't check for updates (offline or GitHub unavailable). Showing local changelog."
|
|
@@ -82,7 +82,7 @@ Format output clearly:
|
|
|
82
82
|
|
|
83
83
|
You're on the latest version.
|
|
84
84
|
|
|
85
|
-
[View full changelog](https://github.com/
|
|
85
|
+
[View full changelog](https://github.com/gannnonh/kata/blob/main/CHANGELOG.md)
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
**If updates available:**
|
|
@@ -112,9 +112,9 @@ You're on the latest version.
|
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
|
|
115
|
-
[View full changelog](https://github.com/
|
|
115
|
+
[View full changelog](https://github.com/gannnonh/kata/blob/main/CHANGELOG.md)
|
|
116
116
|
|
|
117
|
-
**To update:** `npx
|
|
117
|
+
**To update:** `npx @gannonh/kata --global`
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
**Breaking changes:** Surface prominently with **BREAKING:** prefix in the output.
|
|
@@ -28,10 +28,10 @@ This is the brownfield equivalent of new-project. The project exists, PROJECT.md
|
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
30
|
<execution_context>
|
|
31
|
-
@~/.claude/
|
|
32
|
-
@~/.claude/
|
|
33
|
-
@~/.claude/
|
|
34
|
-
@~/.claude/
|
|
31
|
+
@~/.claude/kata/references/questioning.md
|
|
32
|
+
@~/.claude/kata/references/ui-brand.md
|
|
33
|
+
@~/.claude/kata/templates/project.md
|
|
34
|
+
@~/.claude/kata/templates/requirements.md
|
|
35
35
|
</execution_context>
|
|
36
36
|
|
|
37
37
|
<context>
|
|
@@ -218,7 +218,7 @@ Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
|
218
218
|
|
|
219
219
|
<output>
|
|
220
220
|
Write to: .planning/research/STACK.md
|
|
221
|
-
Use template: ~/.claude/
|
|
221
|
+
Use template: ~/.claude/kata/templates/research-project/STACK.md
|
|
222
222
|
</output>
|
|
223
223
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Stack research")
|
|
224
224
|
|
|
@@ -259,7 +259,7 @@ Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
|
259
259
|
|
|
260
260
|
<output>
|
|
261
261
|
Write to: .planning/research/FEATURES.md
|
|
262
|
-
Use template: ~/.claude/
|
|
262
|
+
Use template: ~/.claude/kata/templates/research-project/FEATURES.md
|
|
263
263
|
</output>
|
|
264
264
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Features research")
|
|
265
265
|
|
|
@@ -301,7 +301,7 @@ Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
|
301
301
|
|
|
302
302
|
<output>
|
|
303
303
|
Write to: .planning/research/ARCHITECTURE.md
|
|
304
|
-
Use template: ~/.claude/
|
|
304
|
+
Use template: ~/.claude/kata/templates/research-project/ARCHITECTURE.md
|
|
305
305
|
</output>
|
|
306
306
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Architecture research")
|
|
307
307
|
|
|
@@ -339,7 +339,7 @@ Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
|
339
339
|
|
|
340
340
|
<output>
|
|
341
341
|
Write to: .planning/research/PITFALLS.md
|
|
342
|
-
Use template: ~/.claude/
|
|
342
|
+
Use template: ~/.claude/kata/templates/research-project/PITFALLS.md
|
|
343
343
|
</output>
|
|
344
344
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Pitfalls research")
|
|
345
345
|
```
|
|
@@ -362,7 +362,7 @@ Read these files:
|
|
|
362
362
|
|
|
363
363
|
<output>
|
|
364
364
|
Write to: .planning/research/SUMMARY.md
|
|
365
|
-
Use template: ~/.claude/
|
|
365
|
+
Use template: ~/.claude/kata/templates/research-project/SUMMARY.md
|
|
366
366
|
Commit after writing.
|
|
367
367
|
</output>
|
|
368
368
|
", subagent_type="kata-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
|
|
@@ -32,10 +32,10 @@ This is the most leveraged moment in any project. Deep questioning here means be
|
|
|
32
32
|
|
|
33
33
|
<execution_context>
|
|
34
34
|
|
|
35
|
-
@~/.claude/
|
|
36
|
-
@~/.claude/
|
|
37
|
-
@~/.claude/
|
|
38
|
-
@~/.claude/
|
|
35
|
+
@~/.claude/kata/references/questioning.md
|
|
36
|
+
@~/.claude/kata/references/ui-brand.md
|
|
37
|
+
@~/.claude/kata/templates/project.md
|
|
38
|
+
@~/.claude/kata/templates/requirements.md
|
|
39
39
|
|
|
40
40
|
</execution_context>
|
|
41
41
|
|
|
@@ -286,8 +286,8 @@ questions: [
|
|
|
286
286
|
question: "Use PR-based release workflow?",
|
|
287
287
|
multiSelect: false,
|
|
288
288
|
options: [
|
|
289
|
-
{ label: "Yes
|
|
290
|
-
{ label: "No", description: "Commit directly to main, create tags locally" }
|
|
289
|
+
{ label: "Yes", description: "Protect main, create PRs, tag via GitHub Release" },
|
|
290
|
+
{ label: "No (Recommended)", description: "Commit directly to main, create tags locally" }
|
|
291
291
|
]
|
|
292
292
|
}
|
|
293
293
|
]
|
|
@@ -389,6 +389,137 @@ EOF
|
|
|
389
389
|
|
|
390
390
|
**Note:** Run `/kata:settings` anytime to update these preferences.
|
|
391
391
|
|
|
392
|
+
**If pr_workflow = Yes:**
|
|
393
|
+
|
|
394
|
+
Ask about GitHub Actions release workflow:
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
AskUserQuestion([
|
|
398
|
+
{
|
|
399
|
+
header: "GitHub Actions",
|
|
400
|
+
question: "Scaffold a GitHub Actions workflow to auto-publish on release?",
|
|
401
|
+
multiSelect: false,
|
|
402
|
+
options: [
|
|
403
|
+
{ label: "Yes (Recommended)", description: "Create .github/workflows/release.yml for npm publish" },
|
|
404
|
+
{ label: "No", description: "I'll set up CI/CD myself" }
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
])
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**If "Yes":**
|
|
411
|
+
|
|
412
|
+
Create `.github/workflows/release.yml`:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
mkdir -p .github/workflows
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
Write the workflow file:
|
|
419
|
+
|
|
420
|
+
```yaml
|
|
421
|
+
name: Publish to npm
|
|
422
|
+
|
|
423
|
+
on:
|
|
424
|
+
push:
|
|
425
|
+
branches:
|
|
426
|
+
- main
|
|
427
|
+
|
|
428
|
+
jobs:
|
|
429
|
+
publish:
|
|
430
|
+
runs-on: ubuntu-latest
|
|
431
|
+
permissions:
|
|
432
|
+
contents: write
|
|
433
|
+
steps:
|
|
434
|
+
- name: Checkout
|
|
435
|
+
uses: actions/checkout@v4
|
|
436
|
+
|
|
437
|
+
- name: Setup Node.js
|
|
438
|
+
uses: actions/setup-node@v4
|
|
439
|
+
with:
|
|
440
|
+
node-version: '20'
|
|
441
|
+
registry-url: 'https://registry.npmjs.org'
|
|
442
|
+
|
|
443
|
+
- name: Get package info
|
|
444
|
+
id: package
|
|
445
|
+
run: |
|
|
446
|
+
LOCAL_VERSION=$(node -p "require('./package.json').version")
|
|
447
|
+
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
448
|
+
echo "local_version=$LOCAL_VERSION" >> $GITHUB_OUTPUT
|
|
449
|
+
echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT
|
|
450
|
+
|
|
451
|
+
# Get published version (returns empty if not published)
|
|
452
|
+
PUBLISHED_VERSION=$(npm view "$PACKAGE_NAME" version 2>/dev/null || echo "")
|
|
453
|
+
echo "published_version=$PUBLISHED_VERSION" >> $GITHUB_OUTPUT
|
|
454
|
+
|
|
455
|
+
echo "Local version: $LOCAL_VERSION"
|
|
456
|
+
echo "Published version: $PUBLISHED_VERSION"
|
|
457
|
+
|
|
458
|
+
- name: Check if should publish
|
|
459
|
+
id: check
|
|
460
|
+
run: |
|
|
461
|
+
LOCAL="${{ steps.package.outputs.local_version }}"
|
|
462
|
+
PUBLISHED="${{ steps.package.outputs.published_version }}"
|
|
463
|
+
|
|
464
|
+
if [ -z "$PUBLISHED" ]; then
|
|
465
|
+
echo "Package not yet published, will publish"
|
|
466
|
+
echo "should_publish=true" >> $GITHUB_OUTPUT
|
|
467
|
+
elif [ "$LOCAL" != "$PUBLISHED" ]; then
|
|
468
|
+
echo "Version changed ($PUBLISHED -> $LOCAL), will publish"
|
|
469
|
+
echo "should_publish=true" >> $GITHUB_OUTPUT
|
|
470
|
+
else
|
|
471
|
+
echo "Version unchanged ($LOCAL), skipping publish"
|
|
472
|
+
echo "should_publish=false" >> $GITHUB_OUTPUT
|
|
473
|
+
fi
|
|
474
|
+
|
|
475
|
+
- name: Publish to npm
|
|
476
|
+
if: steps.check.outputs.should_publish == 'true'
|
|
477
|
+
run: npm publish --access public
|
|
478
|
+
env:
|
|
479
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
480
|
+
|
|
481
|
+
- name: Create GitHub Release
|
|
482
|
+
if: steps.check.outputs.should_publish == 'true'
|
|
483
|
+
uses: softprops/action-gh-release@v2
|
|
484
|
+
with:
|
|
485
|
+
tag_name: v${{ steps.package.outputs.local_version }}
|
|
486
|
+
name: v${{ steps.package.outputs.local_version }}
|
|
487
|
+
generate_release_notes: true
|
|
488
|
+
make_latest: true
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
Commit the workflow:
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
git add .github/workflows/release.yml
|
|
495
|
+
git commit -m "$(cat <<'EOF'
|
|
496
|
+
ci: add npm publish workflow
|
|
497
|
+
|
|
498
|
+
Publishes to npm and creates GitHub Release when:
|
|
499
|
+
- Push to main
|
|
500
|
+
- package.json version differs from published version
|
|
501
|
+
|
|
502
|
+
Requires NPM_TOKEN secret in repository settings.
|
|
503
|
+
EOF
|
|
504
|
+
)"
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
Display setup instructions:
|
|
508
|
+
|
|
509
|
+
```
|
|
510
|
+
✓ Created .github/workflows/release.yml
|
|
511
|
+
|
|
512
|
+
## Setup Required
|
|
513
|
+
|
|
514
|
+
Add NPM_TOKEN secret to your GitHub repository:
|
|
515
|
+
1. Go to repo Settings → Secrets and variables → Actions
|
|
516
|
+
2. Click "New repository secret"
|
|
517
|
+
3. Name: NPM_TOKEN
|
|
518
|
+
4. Value: Your npm access token (from npmjs.com → Access Tokens)
|
|
519
|
+
|
|
520
|
+
The workflow will auto-publish when you merge PRs that bump package.json version.
|
|
521
|
+
```
|
|
522
|
+
|
|
392
523
|
## Phase 5.5: Resolve Model Profile
|
|
393
524
|
|
|
394
525
|
Read model profile for agent spawning:
|
|
@@ -487,7 +618,7 @@ Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
|
487
618
|
|
|
488
619
|
<output>
|
|
489
620
|
Write to: .planning/research/STACK.md
|
|
490
|
-
Use template: ~/.claude/
|
|
621
|
+
Use template: ~/.claude/kata/templates/research-project/STACK.md
|
|
491
622
|
</output>
|
|
492
623
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Stack research")
|
|
493
624
|
|
|
@@ -526,7 +657,7 @@ Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
|
526
657
|
|
|
527
658
|
<output>
|
|
528
659
|
Write to: .planning/research/FEATURES.md
|
|
529
|
-
Use template: ~/.claude/
|
|
660
|
+
Use template: ~/.claude/kata/templates/research-project/FEATURES.md
|
|
530
661
|
</output>
|
|
531
662
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Features research")
|
|
532
663
|
|
|
@@ -565,7 +696,7 @@ Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
|
565
696
|
|
|
566
697
|
<output>
|
|
567
698
|
Write to: .planning/research/ARCHITECTURE.md
|
|
568
|
-
Use template: ~/.claude/
|
|
699
|
+
Use template: ~/.claude/kata/templates/research-project/ARCHITECTURE.md
|
|
569
700
|
</output>
|
|
570
701
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Architecture research")
|
|
571
702
|
|
|
@@ -604,7 +735,7 @@ Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
|
604
735
|
|
|
605
736
|
<output>
|
|
606
737
|
Write to: .planning/research/PITFALLS.md
|
|
607
|
-
Use template: ~/.claude/
|
|
738
|
+
Use template: ~/.claude/kata/templates/research-project/PITFALLS.md
|
|
608
739
|
</output>
|
|
609
740
|
", subagent_type="kata-project-researcher", model="{researcher_model}", description="Pitfalls research")
|
|
610
741
|
```
|
|
@@ -627,7 +758,7 @@ Read these files:
|
|
|
627
758
|
|
|
628
759
|
<output>
|
|
629
760
|
Write to: .planning/research/SUMMARY.md
|
|
630
|
-
Use template: ~/.claude/
|
|
761
|
+
Use template: ~/.claude/kata/templates/research-project/SUMMARY.md
|
|
631
762
|
Commit after writing.
|
|
632
763
|
</output>
|
|
633
764
|
", subagent_type="kata-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
|
|
@@ -13,7 +13,7 @@ allowed-tools:
|
|
|
13
13
|
<objective>
|
|
14
14
|
Check for Kata updates, install if available, and display what changed.
|
|
15
15
|
|
|
16
|
-
Provides a better update experience than raw `npx
|
|
16
|
+
Provides a better update experience than raw `npx @gannonh/kata` by showing version diff and changelog entries.
|
|
17
17
|
</objective>
|
|
18
18
|
|
|
19
19
|
<process>
|
|
@@ -22,7 +22,7 @@ Provides a better update experience than raw `npx get-shit-done-cc` by showing v
|
|
|
22
22
|
Read installed version:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
cat ~/.claude/
|
|
25
|
+
cat ~/.claude/kata/VERSION 2>/dev/null
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
**If VERSION file missing:**
|
|
@@ -43,14 +43,14 @@ Proceed to install step (treat as version 0.0.0 for comparison).
|
|
|
43
43
|
Check npm for latest version:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
npm view
|
|
46
|
+
npm view kata-cc version 2>/dev/null
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
**If npm check fails:**
|
|
50
50
|
```
|
|
51
51
|
Couldn't check for updates (offline or npm unavailable).
|
|
52
52
|
|
|
53
|
-
To update manually: `npx
|
|
53
|
+
To update manually: `npx kata-cc --global`
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
STOP here if npm unavailable.
|
|
@@ -114,7 +114,7 @@ STOP here if ahead.
|
|
|
114
114
|
|
|
115
115
|
⚠️ **Note:** The installer performs a clean install of Kata folders:
|
|
116
116
|
- `~/.claude/commands/kata/` will be wiped and replaced
|
|
117
|
-
- `~/.claude/
|
|
117
|
+
- `~/.claude/kata/` will be wiped and replaced
|
|
118
118
|
- `~/.claude/agents/kata-*` files will be replaced
|
|
119
119
|
|
|
120
120
|
Your custom files in other locations are preserved:
|
|
@@ -139,7 +139,7 @@ Use AskUserQuestion:
|
|
|
139
139
|
Run the update:
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
|
-
npx
|
|
142
|
+
npx kata-cc --global
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
Capture output. If install fails, show error and STOP.
|
|
@@ -161,7 +161,7 @@ Format completion message (changelog was already shown in confirmation step):
|
|
|
161
161
|
|
|
162
162
|
⚠️ Restart Claude Code to pick up the new commands.
|
|
163
163
|
|
|
164
|
-
[View full changelog](https://github.com/glittercowboy/
|
|
164
|
+
[View full changelog](https://github.com/glittercowboy/kata/blob/main/CHANGELOG.md)
|
|
165
165
|
```
|
|
166
166
|
</step>
|
|
167
167
|
|
|
@@ -19,8 +19,8 @@ Output: {phase}-UAT.md tracking all test results. If issues found: diagnosed gap
|
|
|
19
19
|
</objective>
|
|
20
20
|
|
|
21
21
|
<execution_context>
|
|
22
|
-
@~/.claude/
|
|
23
|
-
@~/.claude/
|
|
22
|
+
@~/.claude/kata/workflows/verify-work.md
|
|
23
|
+
@~/.claude/kata/templates/UAT.md
|
|
24
24
|
</execution_context>
|
|
25
25
|
|
|
26
26
|
<context>
|