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.
- package/README.md +104 -0
- package/agents/gsd-debugger.md +20 -1
- package/agents/gsd-executor.md +30 -0
- package/agents/gsd-phase-researcher.md +9 -0
- package/agents/gsd-planner.md +41 -0
- package/agents/gsd-research-synthesizer.md +9 -0
- package/bin/install.js +78 -7
- package/commands/gsd/add-todo.md +11 -0
- package/commands/gsd/analyze-codebase.md +363 -0
- package/commands/gsd/audit-milestone.md +20 -1
- package/commands/gsd/check-todos.md +11 -0
- package/commands/gsd/debug.md +20 -0
- package/commands/gsd/execute-phase.md +40 -5
- package/commands/gsd/help.md +118 -0
- package/commands/gsd/new-milestone.md +267 -263
- package/commands/gsd/new-project.md +116 -10
- package/commands/gsd/pause-work.md +11 -0
- package/commands/gsd/plan-milestone-gaps.md +11 -0
- package/commands/gsd/plan-phase.md +84 -26
- package/commands/gsd/progress.md +8 -0
- package/commands/gsd/query-intel.md +128 -0
- package/commands/gsd/quick.md +23 -0
- package/commands/gsd/remove-phase.md +11 -0
- package/commands/gsd/research-phase.md +20 -0
- package/commands/gsd/set-profile.md +106 -0
- package/commands/gsd/settings.md +136 -0
- package/get-shit-done/references/model-profiles.md +73 -0
- package/get-shit-done/references/planning-config.md +94 -0
- package/get-shit-done/templates/config.json +9 -0
- package/get-shit-done/templates/entity.md +173 -0
- package/get-shit-done/workflows/complete-milestone.md +11 -0
- package/get-shit-done/workflows/diagnose-issues.md +11 -0
- package/get-shit-done/workflows/discuss-phase.md +11 -0
- package/get-shit-done/workflows/execute-phase.md +68 -9
- package/get-shit-done/workflows/execute-plan.md +188 -4
- package/get-shit-done/workflows/map-codebase.md +35 -2
- package/get-shit-done/workflows/verify-work.md +33 -0
- package/hooks/dist/gsd-intel-index.js +97 -0
- package/hooks/dist/gsd-intel-prune.js +78 -0
- package/hooks/dist/gsd-intel-session.js +39 -0
- package/package.json +12 -2
- package/scripts/build-hooks.js +95 -0
- /package/hooks/{gsd-check-update.js → dist/gsd-check-update.js} +0 -0
- /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="
|
|
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. **
|
|
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
|
|
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:
|
|
181
|
-
|
|
182
|
-
|
|
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="
|
|
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="
|
|
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="
|
|
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
|
-
- **
|
|
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="
|
|
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
|
```
|