get-shit-done-cc 1.7.1 → 1.9.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.
Files changed (44) hide show
  1. package/README.md +104 -0
  2. package/agents/gsd-debugger.md +20 -1
  3. package/agents/gsd-executor.md +30 -0
  4. package/agents/gsd-phase-researcher.md +9 -0
  5. package/agents/gsd-planner.md +41 -0
  6. package/agents/gsd-research-synthesizer.md +9 -0
  7. package/bin/install.js +78 -7
  8. package/commands/gsd/add-todo.md +11 -0
  9. package/commands/gsd/analyze-codebase.md +363 -0
  10. package/commands/gsd/audit-milestone.md +20 -1
  11. package/commands/gsd/check-todos.md +11 -0
  12. package/commands/gsd/debug.md +20 -0
  13. package/commands/gsd/execute-phase.md +40 -5
  14. package/commands/gsd/help.md +118 -0
  15. package/commands/gsd/new-milestone.md +267 -263
  16. package/commands/gsd/new-project.md +116 -10
  17. package/commands/gsd/pause-work.md +11 -0
  18. package/commands/gsd/plan-milestone-gaps.md +11 -0
  19. package/commands/gsd/plan-phase.md +84 -26
  20. package/commands/gsd/progress.md +8 -0
  21. package/commands/gsd/query-intel.md +128 -0
  22. package/commands/gsd/quick.md +23 -0
  23. package/commands/gsd/remove-phase.md +11 -0
  24. package/commands/gsd/research-phase.md +20 -0
  25. package/commands/gsd/set-profile.md +106 -0
  26. package/commands/gsd/settings.md +136 -0
  27. package/get-shit-done/references/model-profiles.md +73 -0
  28. package/get-shit-done/references/planning-config.md +94 -0
  29. package/get-shit-done/templates/config.json +9 -0
  30. package/get-shit-done/templates/entity.md +173 -0
  31. package/get-shit-done/workflows/complete-milestone.md +11 -0
  32. package/get-shit-done/workflows/diagnose-issues.md +11 -0
  33. package/get-shit-done/workflows/discuss-phase.md +11 -0
  34. package/get-shit-done/workflows/execute-phase.md +68 -9
  35. package/get-shit-done/workflows/execute-plan.md +188 -4
  36. package/get-shit-done/workflows/map-codebase.md +35 -2
  37. package/get-shit-done/workflows/verify-work.md +33 -0
  38. package/hooks/dist/gsd-intel-index.js +97 -0
  39. package/hooks/dist/gsd-intel-prune.js +78 -0
  40. package/hooks/dist/gsd-intel-session.js +39 -0
  41. package/package.json +12 -2
  42. package/scripts/build-hooks.js +95 -0
  43. /package/hooks/{gsd-check-update.js → dist/gsd-check-update.js} +0 -0
  44. /package/hooks/{statusline.js → dist/statusline.js} +0 -0
@@ -393,6 +393,17 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
393
393
  <step name="git_commit">
394
394
  Commit phase context:
395
395
 
396
+ **Check planning config:**
397
+
398
+ ```bash
399
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
400
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
401
+ ```
402
+
403
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
404
+
405
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
406
+
396
407
  ```bash
397
408
  git add "${PHASE_DIR}/${PADDED_PHASE}-CONTEXT.md"
398
409
  git commit -m "$(cat <<'EOF'
@@ -8,11 +8,32 @@ The orchestrator's job is coordination, not execution. Each subagent loads the f
8
8
 
9
9
  <required_reading>
10
10
  Read STATE.md before any operation to load project context.
11
+ Read config.json for planning behavior settings.
11
12
  </required_reading>
12
13
 
13
14
  <process>
14
15
 
15
- <step name="load_project_state" priority="first">
16
+ <step name="resolve_model_profile" priority="first">
17
+ Read model profile for agent spawning:
18
+
19
+ ```bash
20
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
21
+ ```
22
+
23
+ Default to "balanced" if not set.
24
+
25
+ **Model lookup table:**
26
+
27
+ | Agent | quality | balanced | budget |
28
+ |-------|---------|----------|--------|
29
+ | gsd-executor | opus | sonnet | sonnet |
30
+ | gsd-verifier | sonnet | sonnet | haiku |
31
+ | general-purpose | — | — | — |
32
+
33
+ Store resolved models for use in Task calls below.
34
+ </step>
35
+
36
+ <step name="load_project_state">
16
37
  Before any operation, read project state:
17
38
 
18
39
  ```bash
@@ -33,6 +54,17 @@ Options:
33
54
  ```
34
55
 
35
56
  **If .planning/ doesn't exist:** Error - project not initialized.
57
+
58
+ **Load planning config:**
59
+
60
+ ```bash
61
+ # Check if planning docs should be committed (default: true)
62
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
63
+ # Auto-detect gitignored (overrides config)
64
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
65
+ ```
66
+
67
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
36
68
  </step>
37
69
 
38
70
  <step name="validate_phase">
@@ -158,9 +190,18 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
158
190
  - Bad: "Executing terrain generation plan"
159
191
  - Good: "Procedural terrain generator using Perlin noise — creates height maps, biome zones, and collision meshes. Required before vehicle physics can interact with ground."
160
192
 
161
- 2. **Spawn all autonomous agents in wave simultaneously:**
193
+ 2. **Read files and spawn all autonomous agents in wave simultaneously:**
194
+
195
+ Before spawning, read file contents. The `@` syntax does not work across Task() boundaries - content must be inlined.
196
+
197
+ ```bash
198
+ # Read each plan in the wave
199
+ PLAN_CONTENT=$(cat "{plan_path}")
200
+ STATE_CONTENT=$(cat .planning/STATE.md)
201
+ CONFIG_CONTENT=$(cat .planning/config.json 2>/dev/null)
202
+ ```
162
203
 
163
- Use Task tool with multiple parallel calls. Each agent gets prompt from subagent-task-prompt template:
204
+ Use Task tool with multiple parallel calls. Each agent gets prompt with inlined content:
164
205
 
165
206
  ```
166
207
  <objective>
@@ -177,9 +218,14 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
177
218
  </execution_context>
178
219
 
179
220
  <context>
180
- Plan: @{plan_path}
181
- Project state: @.planning/STATE.md
182
- Config: @.planning/config.json (if exists)
221
+ Plan:
222
+ {plan_content}
223
+
224
+ Project state:
225
+ {state_content}
226
+
227
+ Config (if exists):
228
+ {config_content}
183
229
  </context>
184
230
 
185
231
  <success_criteria>
@@ -248,7 +294,7 @@ Plans with `autonomous: false` require user interaction.
248
294
 
249
295
  1. **Spawn agent for checkpoint plan:**
250
296
  ```
251
- Task(prompt="{subagent-task-prompt}", subagent_type="general-purpose")
297
+ Task(prompt="{subagent-task-prompt}", subagent_type="gsd-executor", model="{executor_model}")
252
298
  ```
253
299
 
254
300
  2. **Agent runs until checkpoint:**
@@ -287,7 +333,8 @@ Plans with `autonomous: false` require user interaction.
287
333
  ```
288
334
  Task(
289
335
  prompt=filled_continuation_template,
290
- subagent_type="general-purpose"
336
+ subagent_type="gsd-executor",
337
+ model="{executor_model}"
291
338
  )
292
339
  ```
293
340
 
@@ -363,7 +410,8 @@ Phase goal: {goal from ROADMAP.md}
363
410
 
364
411
  Check must_haves against actual codebase. Create VERIFICATION.md.
365
412
  Verify what actually exists in the code.",
366
- subagent_type="gsd-verifier"
413
+ subagent_type="gsd-verifier",
414
+ model="{verifier_model}"
367
415
  )
368
416
  ```
369
417
 
@@ -456,6 +504,17 @@ Update ROADMAP.md to reflect phase completion:
456
504
  # Update status
457
505
  ```
458
506
 
507
+ **Check planning config:**
508
+
509
+ If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
510
+ - Skip all git operations for .planning/ files
511
+ - Planning docs exist locally but are gitignored
512
+ - Log: "Skipping planning docs commit (commit_docs: false)"
513
+ - Proceed to offer_next step
514
+
515
+ If `COMMIT_PLANNING_DOCS=true` (default):
516
+ - Continue with git operations below
517
+
459
518
  Commit phase completion (roadmap, state, verification):
460
519
  ```bash
461
520
  git add .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md
@@ -4,13 +4,32 @@ Execute a phase prompt (PLAN.md) and create the outcome summary (SUMMARY.md).
4
4
 
5
5
  <required_reading>
6
6
  Read STATE.md before any operation to load project context.
7
+ Read config.json for planning behavior settings.
7
8
 
8
9
  @~/.claude/get-shit-done/references/git-integration.md
9
10
  </required_reading>
10
11
 
11
12
  <process>
12
13
 
13
- <step name="load_project_state" priority="first">
14
+ <step name="resolve_model_profile" priority="first">
15
+ Read model profile for agent spawning:
16
+
17
+ ```bash
18
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
19
+ ```
20
+
21
+ Default to "balanced" if not set.
22
+
23
+ **Model lookup table:**
24
+
25
+ | Agent | quality | balanced | budget |
26
+ |-------|---------|----------|--------|
27
+ | gsd-executor | opus | sonnet | sonnet |
28
+
29
+ Store resolved model for use in Task calls below.
30
+ </step>
31
+
32
+ <step name="load_project_state">
14
33
  Before any operation, read project state:
15
34
 
16
35
  ```bash
@@ -36,6 +55,17 @@ Options:
36
55
  **If .planning/ doesn't exist:** Error - project not initialized.
37
56
 
38
57
  This ensures every execution has full project context.
58
+
59
+ **Load planning config:**
60
+
61
+ ```bash
62
+ # Check if planning docs should be committed (default: true)
63
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
64
+ # Auto-detect gitignored (overrides config)
65
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
66
+ ```
67
+
68
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
39
69
  </step>
40
70
 
41
71
  <step name="identify_plan">
@@ -207,7 +237,7 @@ No segmentation benefit - execute entirely in main
207
237
  ```
208
238
  1. Run init_agent_tracking step first (see step below)
209
239
 
210
- 2. Use Task tool with subagent_type="gsd-executor":
240
+ 2. Use Task tool with subagent_type="gsd-executor" and model="{executor_model}":
211
241
 
212
242
  Prompt: "Execute plan at .planning/phases/{phase}-{plan}-PLAN.md
213
243
 
@@ -359,7 +389,7 @@ For Pattern A (fully autonomous) and Pattern C (decision-dependent), skip this s
359
389
 
360
390
  B. If routing = Subagent:
361
391
  ```
362
- Spawn Task tool with subagent_type="gsd-executor":
392
+ Spawn Task tool with subagent_type="gsd-executor" and model="{executor_model}":
363
393
 
364
394
  Prompt: "Execute tasks [task numbers/names] from plan at [plan path].
365
395
 
@@ -568,7 +598,8 @@ Execute each task in the prompt. **Deviations are normal** - handle them automat
568
598
  - Continue implementing, applying rules as needed
569
599
  - Run the verification
570
600
  - Confirm done criteria met
571
- - **Commit the task** (see `<task_commit>` below)
601
+ - **Update intel entities** for modified files (see `<update_intel_entity>` below)
602
+ - **Commit the task** (see `<task_commit>` below) - includes entity files in commit
572
603
  - Track task completion and commit hash for Summary documentation
573
604
  - Continue to next task
574
605
 
@@ -897,6 +928,148 @@ None - plan executed exactly as written.
897
928
 
898
929
  </deviation_documentation>
899
930
 
931
+ <update_intel_entity>
932
+
933
+ ## Update Codebase Intelligence Entity
934
+
935
+ **Trigger:** After each task's `<done>` criteria met, BEFORE committing.
936
+
937
+ This step documents your understanding of modified files. The knowledge base self-evolves as you work.
938
+
939
+ **1. Get files from the just-completed task:**
940
+
941
+ Check the task's `<files>` list. If no `<files>` attribute, use `git status --short` to identify modified files.
942
+
943
+ **2. For each file, determine if significant:**
944
+
945
+ **Skip these patterns (not worth indexing):**
946
+ ```bash
947
+ # Build/generated
948
+ node_modules/*, .next/*, dist/*, build/*, .git/*
949
+
950
+ # Tests (their targets are more valuable)
951
+ *.test.*, *.spec.*, __tests__/*, __mocks__/*
952
+
953
+ # Config files (change rarely, low context value)
954
+ package.json, package-lock.json, tsconfig.json, *.config.*, *.config.js, *.config.ts
955
+
956
+ # Environment and locks
957
+ .env*, *.lock, *.log, yarn.lock, pnpm-lock.yaml
958
+ ```
959
+
960
+ If file matches skip pattern: continue to next file.
961
+
962
+ **3. Derive entity path:**
963
+
964
+ ```bash
965
+ # Convert file path to entity filename
966
+ # src/lib/auth.ts → src-lib-auth.md
967
+ # app/api/users/route.ts → app-api-users-route.md
968
+
969
+ FILE_PATH="$1"
970
+ ENTITY_NAME=$(echo "$FILE_PATH" | sed 's|^[./]*||' | tr '/' '-' | sed 's/\.[^.]*$//')
971
+ ENTITY_PATH=".planning/intel/entities/${ENTITY_NAME}.md"
972
+ ```
973
+
974
+ **4. Create intel directory if needed:**
975
+
976
+ ```bash
977
+ mkdir -p .planning/intel/entities
978
+ ```
979
+
980
+ **5. Check if entity exists:**
981
+
982
+ ```bash
983
+ if [ -f "$ENTITY_PATH" ]; then
984
+ ACTION="update"
985
+ else
986
+ ACTION="create"
987
+ fi
988
+ ```
989
+
990
+ **6. Create or update entity:**
991
+
992
+ Use template from `~/.claude/get-shit-done/templates/entity.md`.
993
+
994
+ Fill fields based on what you just built:
995
+
996
+ | Field | Source |
997
+ |-------|--------|
998
+ | `path` | Absolute path to file |
999
+ | `type` | Infer: module, component, util, config, api, hook |
1000
+ | `updated` | Today's date (YYYY-MM-DD) |
1001
+ | `status` | active (unless you're deprecating) |
1002
+ | **Purpose** | What you understand this file does |
1003
+ | **Exports** | Extract from the code you just wrote |
1004
+ | **Dependencies** | `[[slugified-path]]` for internal, plain for external |
1005
+ | **Used By** | Add callers if you know them from this session |
1006
+ | **Notes** | Gotchas, patterns, warnings discovered |
1007
+
1008
+ **If updating existing entity:**
1009
+ - Read current content first
1010
+ - Preserve Used By entries you didn't touch
1011
+ - Update sections that changed
1012
+ - Don't remove information unless it's wrong
1013
+
1014
+ **7. Write entity file:**
1015
+
1016
+ ```bash
1017
+ # Write the entity content
1018
+ cat > "$ENTITY_PATH" << 'EOF'
1019
+ ---
1020
+ path: {path}
1021
+ type: {type}
1022
+ updated: {today}
1023
+ status: active
1024
+ ---
1025
+
1026
+ # {filename}
1027
+
1028
+ ## Purpose
1029
+
1030
+ {purpose}
1031
+
1032
+ ## Exports
1033
+
1034
+ {exports}
1035
+
1036
+ ## Dependencies
1037
+
1038
+ {dependencies}
1039
+
1040
+ ## Used By
1041
+
1042
+ {used_by}
1043
+
1044
+ ## Notes
1045
+
1046
+ {notes}
1047
+ EOF
1048
+ ```
1049
+
1050
+ **8. Verify entity was created/updated:**
1051
+
1052
+ ```bash
1053
+ head -10 "$ENTITY_PATH"
1054
+ ```
1055
+
1056
+ **9. Stage entity file:**
1057
+
1058
+ Entity files are staged along with task code files in the task commit.
1059
+
1060
+ ```bash
1061
+ git add "$ENTITY_PATH"
1062
+ ```
1063
+
1064
+ **Error handling:**
1065
+ - If entity creation fails: Log warning, continue to task_commit
1066
+ - Entity update is NOT blocking - a failed entity shouldn't stop code from being committed
1067
+ - Log: `"Warning: Could not update entity for {file}: {reason}"`
1068
+
1069
+ **Target size:** Keep entities concise (30-50 lines). Purpose and Exports are most valuable.
1070
+
1071
+ </update_intel_entity>
1072
+
900
1073
  <tdd_plan_execution>
901
1074
  ## TDD Plan Execution
902
1075
 
@@ -1513,6 +1686,17 @@ Commit execution metadata (SUMMARY + STATE + ROADMAP):
1513
1686
  **Note:** All task code has already been committed during execution (one commit per task).
1514
1687
  PLAN.md was already committed during plan-phase. This final commit captures execution results only.
1515
1688
 
1689
+ **Check planning config:**
1690
+
1691
+ If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
1692
+ - Skip all git operations for .planning/ files
1693
+ - Planning docs exist locally but are gitignored
1694
+ - Log: "Skipping planning docs commit (commit_docs: false)"
1695
+ - Proceed to next step
1696
+
1697
+ If `COMMIT_PLANNING_DOCS=true` (default):
1698
+ - Continue with git operations below
1699
+
1516
1700
  **1. Stage execution artifacts:**
1517
1701
 
1518
1702
  ```bash
@@ -22,7 +22,25 @@ Documents are reference material for Claude when planning/executing. Always incl
22
22
 
23
23
  <process>
24
24
 
25
- <step name="check_existing" priority="first">
25
+ <step name="resolve_model_profile" priority="first">
26
+ Read model profile for agent spawning:
27
+
28
+ ```bash
29
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
30
+ ```
31
+
32
+ Default to "balanced" if not set.
33
+
34
+ **Model lookup table:**
35
+
36
+ | Agent | quality | balanced | budget |
37
+ |-------|---------|----------|--------|
38
+ | gsd-codebase-mapper | sonnet | haiku | haiku |
39
+
40
+ Store resolved model for use in Task calls below.
41
+ </step>
42
+
43
+ <step name="check_existing">
26
44
  Check if .planning/codebase/ already exists:
27
45
 
28
46
  ```bash
@@ -73,7 +91,7 @@ Continue to spawn_agents.
73
91
  <step name="spawn_agents">
74
92
  Spawn 4 parallel gsd-codebase-mapper agents.
75
93
 
76
- Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=true` for parallel execution.
94
+ Use Task tool with `subagent_type="gsd-codebase-mapper"`, `model="{mapper_model}"`, and `run_in_background=true` for parallel execution.
77
95
 
78
96
  **CRITICAL:** Use the dedicated `gsd-codebase-mapper` agent, NOT `Explore`. The mapper agent writes documents directly.
79
97
 
@@ -82,6 +100,7 @@ Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=
82
100
  Task tool parameters:
83
101
  ```
84
102
  subagent_type: "gsd-codebase-mapper"
103
+ model: "{mapper_model}"
85
104
  run_in_background: true
86
105
  description: "Map codebase tech stack"
87
106
  ```
@@ -104,6 +123,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
104
123
  Task tool parameters:
105
124
  ```
106
125
  subagent_type: "gsd-codebase-mapper"
126
+ model: "{mapper_model}"
107
127
  run_in_background: true
108
128
  description: "Map codebase architecture"
109
129
  ```
@@ -126,6 +146,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
126
146
  Task tool parameters:
127
147
  ```
128
148
  subagent_type: "gsd-codebase-mapper"
149
+ model: "{mapper_model}"
129
150
  run_in_background: true
130
151
  description: "Map codebase conventions"
131
152
  ```
@@ -148,6 +169,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
148
169
  Task tool parameters:
149
170
  ```
150
171
  subagent_type: "gsd-codebase-mapper"
172
+ model: "{mapper_model}"
151
173
  run_in_background: true
152
174
  description: "Map codebase concerns"
153
175
  ```
@@ -211,6 +233,17 @@ Continue to commit_codebase_map.
211
233
  <step name="commit_codebase_map">
212
234
  Commit the codebase map:
213
235
 
236
+ **Check planning config:**
237
+
238
+ ```bash
239
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
240
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
241
+ ```
242
+
243
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
244
+
245
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
246
+
214
247
  ```bash
215
248
  git add .planning/codebase/*.md
216
249
  git commit -m "$(cat <<'EOF'
@@ -20,6 +20,25 @@ No Pass/Fail buttons. No severity questions. Just: "Here's what should happen. D
20
20
 
21
21
  <process>
22
22
 
23
+ <step name="resolve_model_profile" priority="first">
24
+ Read model profile for agent spawning:
25
+
26
+ ```bash
27
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
28
+ ```
29
+
30
+ Default to "balanced" if not set.
31
+
32
+ **Model lookup table:**
33
+
34
+ | Agent | quality | balanced | budget |
35
+ |-------|---------|----------|--------|
36
+ | gsd-planner | opus | opus | sonnet |
37
+ | gsd-plan-checker | sonnet | sonnet | haiku |
38
+
39
+ Store resolved models for use in Task calls below.
40
+ </step>
41
+
23
42
  <step name="check_active_session">
24
43
  **First: Check for active UAT sessions**
25
44
 
@@ -285,6 +304,17 @@ Clear Current Test section:
285
304
  [testing complete]
286
305
  ```
287
306
 
307
+ **Check planning config:**
308
+
309
+ ```bash
310
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
311
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
312
+ ```
313
+
314
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
315
+
316
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
317
+
288
318
  Commit the UAT file:
289
319
  ```bash
290
320
  git add ".planning/phases/XX-name/{phase}-UAT.md"
@@ -378,6 +408,7 @@ Plans must be executable prompts.
378
408
  </downstream_consumer>
379
409
  """,
380
410
  subagent_type="gsd-planner",
411
+ model="{planner_model}",
381
412
  description="Plan gap fixes for Phase {phase}"
382
413
  )
383
414
  ```
@@ -423,6 +454,7 @@ Return one of:
423
454
  </expected_output>
424
455
  """,
425
456
  subagent_type="gsd-plan-checker",
457
+ model="{checker_model}",
426
458
  description="Verify Phase {phase} fix plans"
427
459
  )
428
460
  ```
@@ -463,6 +495,7 @@ Do NOT replan from scratch unless issues are fundamental.
463
495
  </instructions>
464
496
  """,
465
497
  subagent_type="gsd-planner",
498
+ model="{planner_model}",
466
499
  description="Revise Phase {phase} plans"
467
500
  )
468
501
  ```