@gannonh/kata 0.1.5 → 0.1.6

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/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
- const hookEntries = fs.readdirSync(hooksSrc);
419
- for (const entry of hookEntries) {
420
- const srcFile = path.join(hooksSrc, entry);
421
- const destFile = path.join(hooksDest, entry);
422
- fs.copyFileSync(srcFile, destFile);
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/` directory behavior.
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
- "planning": {
8
- "commit_docs": true,
9
- "search_gitignored": false
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
- | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
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 when users have `.planning/` in `.gitignore`.
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
- <search_behavior>
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
- **When `search_gitignored: false` (default):**
57
- - Standard rg behavior (respects .gitignore)
58
- - Direct path searches work: `rg "pattern" .planning/` finds files
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
- **When `search_gitignored: true`:**
62
- - Add `--no-ignore` to broad rg searches that should include `.planning/`
63
- - Only needed when searching entire repo and expecting `.planning/` matches
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
- **Note:** Most Kata operations use direct file reads or explicit paths, which work regardless of gitignore status.
136
+ **`workflow.verifier`** Spawn kata-verifier after kata-executor
137
+ - Confirms must-haves were delivered
138
+ - Validates phase success criteria
66
139
 
67
- </search_behavior>
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
- "planning": {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gannonh/kata",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "description": "Spec-driven development framework for Claude Code.",
6
6
  "scripts": {
@@ -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/get-shit-done/workflows/complete-milestone.md (main workflow)
24
- - @~/.claude/get-shit-done/templates/milestone-archive.md (archive template)
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. Display:
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 deferred to GitHub Release (if pr_workflow=true)
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 (default to `true` if not present):
36
- - `workflow.research` — spawn researcher during plan-phase
37
- - `workflow.plan_check` — spawn plan checker during plan-phase
38
- - `workflow.verifier` — spawn verifier during execute-phase
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
- ...existing_config,
106
- "model_profile": "quality" | "balanced" | "budget",
107
- "pr_workflow": true/false,
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/false,
110
- "plan_check": true/false,
111
- "verifier": true/false
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
- - [ ] User presented with 5 settings (profile + pr_workflow + 3 toggles)
149
- - [ ] Config updated with model_profile, pr_workflow, and workflow section
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/get-shit-done/workflows/discuss-phase.md
27
- @~/.claude/get-shit-done/templates/context.md
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/get-shit-done/references/ui-brand.md
23
- @~/.claude/get-shit-done/workflows/execute-phase.md
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/get-shit-done/workflows/execute-phase.md` step `checkpoint_handling` for complete details.
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/get-shit-done/workflows/list-phase-assumptions.md
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/get-shit-done/workflows/map-codebase.md
22
+ @~/.claude/kata/workflows/map-codebase.md
23
23
  </execution_context>
24
24
 
25
25
  <context>
@@ -11,7 +11,7 @@ allowed-tools:
11
11
  ---
12
12
 
13
13
  <execution_context>
14
- @~/.claude/get-shit-done/references/ui-brand.md
14
+ @~/.claude/kata/references/ui-brand.md
15
15
  </execution_context>
16
16
 
17
17
  <objective>
@@ -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 get-shit-done-cc@latest
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 get-shit-done-cc`
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/get-shit-done/workflows/resume-project.md
26
+ @~/.claude/kata/workflows/resume-project.md
27
27
  </execution_context>
28
28
 
29
29
  <process>
30
- **Follow the resume-project workflow** from `@~/.claude/get-shit-done/workflows/resume-project.md`.
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/get-shit-done/VERSION 2>/dev/null
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 get-shit-done-cc --global`
36
+ **To fix:** `npx kata-cc --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/glittercowboy/get-shit-done/main/CHANGELOG.md`
48
+ - URL: `https://raw.githubusercontent.com/glittercowboy/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/get-shit-done/CHANGELOG.md 2>/dev/null
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/glittercowboy/get-shit-done/blob/main/CHANGELOG.md)
85
+ [View full changelog](https://github.com/glittercowboy/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/glittercowboy/get-shit-done/blob/main/CHANGELOG.md)
115
+ [View full changelog](https://github.com/glittercowboy/kata/blob/main/CHANGELOG.md)
116
116
 
117
- **To update:** `npx get-shit-done-cc --global`
117
+ **To update:** `npx kata-cc --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/get-shit-done/references/questioning.md
32
- @~/.claude/get-shit-done/references/ui-brand.md
33
- @~/.claude/get-shit-done/templates/project.md
34
- @~/.claude/get-shit-done/templates/requirements.md
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/get-shit-done/templates/research-project/STACK.md
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/get-shit-done/templates/research-project/FEATURES.md
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/get-shit-done/templates/research-project/ARCHITECTURE.md
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/get-shit-done/templates/research-project/PITFALLS.md
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/get-shit-done/templates/research-project/SUMMARY.md
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/get-shit-done/references/questioning.md
36
- @~/.claude/get-shit-done/references/ui-brand.md
37
- @~/.claude/get-shit-done/templates/project.md
38
- @~/.claude/get-shit-done/templates/requirements.md
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 (Recommended)", description: "Protect main, create PRs, tag via GitHub Release" },
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/get-shit-done/templates/research-project/STACK.md
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/get-shit-done/templates/research-project/FEATURES.md
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/get-shit-done/templates/research-project/ARCHITECTURE.md
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/get-shit-done/templates/research-project/PITFALLS.md
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/get-shit-done/templates/research-project/SUMMARY.md
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 get-shit-done-cc` by showing version diff and changelog entries.
16
+ Provides a better update experience than raw `npx kata-cc` 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/get-shit-done/VERSION 2>/dev/null
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 get-shit-done-cc version 2>/dev/null
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 get-shit-done-cc --global`
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/get-shit-done/` will be wiped and replaced
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 get-shit-done-cc --global
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/get-shit-done/blob/main/CHANGELOG.md)
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/get-shit-done/workflows/verify-work.md
23
- @~/.claude/get-shit-done/templates/UAT.md
22
+ @~/.claude/kata/workflows/verify-work.md
23
+ @~/.claude/kata/templates/UAT.md
24
24
  </execution_context>
25
25
 
26
26
  <context>