gsd-codex-cli 1.20.6 → 1.20.8
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/.codex/prompts/gsd-add-phase.md +4 -1
- package/.codex/prompts/gsd-add-todo.md +4 -1
- package/.codex/prompts/gsd-audit-milestone.md +4 -1
- package/.codex/prompts/gsd-check-todos.md +4 -1
- package/.codex/prompts/gsd-complete-milestone.md +4 -1
- package/.codex/prompts/gsd-debug.md +4 -1
- package/.codex/prompts/gsd-discuss-phase.md +4 -1
- package/.codex/prompts/gsd-execute-phase.md +25 -15
- package/.codex/prompts/gsd-help.md +4 -1
- package/.codex/prompts/gsd-insert-phase.md +4 -1
- package/.codex/prompts/gsd-list-phase-assumptions.md +4 -1
- package/.codex/prompts/gsd-map-codebase.md +4 -1
- package/.codex/prompts/gsd-new-milestone.md +4 -1
- package/.codex/prompts/gsd-new-project.md +4 -1
- package/.codex/prompts/gsd-pause-work.md +4 -1
- package/.codex/prompts/gsd-plan-milestone-gaps.md +4 -1
- package/.codex/prompts/gsd-plan-phase.md +4 -1
- package/.codex/prompts/gsd-progress.md +4 -1
- package/.codex/prompts/gsd-quick.md +4 -1
- package/.codex/prompts/gsd-remove-phase.md +4 -1
- package/.codex/prompts/gsd-research-phase.md +4 -1
- package/.codex/prompts/gsd-resume-work.md +4 -1
- package/.codex/prompts/gsd-set-profile.md +4 -1
- package/.codex/prompts/gsd-settings.md +4 -1
- package/.codex/prompts/gsd-update.md +4 -1
- package/.codex/prompts/gsd-verify-work.md +4 -1
- package/.codex/skills/get-shit-done-codex/references/compat.md +6 -4
- package/.codex/skills/get-shit-done-codex/references/windows.md +26 -12
- package/package.json +1 -1
|
@@ -15,8 +15,11 @@ Add phase to end of current milestone in roadmap
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Add phase to end of current milestone in roadmap
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse <description> from the user
|
|
38
|
+
1. Parse <description> from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op "0" --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Capture idea or task as todo from current conversation context
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Capture idea or task as todo from current conversation context
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse [optional description] from the user
|
|
38
|
+
1. Parse [optional description] from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init todos [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Audit milestone completion against original intent before archiving
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Audit milestone completion against original intent before archiving
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[version]" from the user
|
|
38
|
+
1. Parse "[version]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init milestone-op --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ List pending todos and select one to work on
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ List pending todos and select one to work on
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse [area filter] from the user
|
|
38
|
+
1. Parse [area filter] from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init todos [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Archive completed milestone and prepare for next version
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Archive completed milestone and prepare for next version
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse <version> from the user
|
|
38
|
+
1. Parse <version> from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init execute-phase "1" --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Systematic debugging with persistent state across context resets
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Systematic debugging with persistent state across context resets
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse [issue description] from the user
|
|
38
|
+
1. Parse [issue description] from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> state load --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Gather phase context through adaptive questioning before planning
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Gather phase context through adaptive questioning before planning
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "<phase>" from the user
|
|
38
|
+
1. Parse "<phase>" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Execute all plans in a phase with wave-based parallelization
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -25,27 +28,34 @@ Execute all plans in a phase with wave-based parallelization
|
|
|
25
28
|
- Use `.claude/agents/gsd-*.md` as role context for each spawned agent.
|
|
26
29
|
- Do not advance workflow steps until wait and close complete.
|
|
27
30
|
|
|
28
|
-
##
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
31
|
+
## Input contract
|
|
32
|
+
- The command argument is authoritative.
|
|
33
|
+
- If user runs `gsd-execute-phase 28`, execute phase `28`. Do not auto-discover a different phase.
|
|
34
|
+
- Parse phase from either:
|
|
35
|
+
- the explicit command argument tail, or
|
|
36
|
+
- the latest user message (for example: "execute phase 28").
|
|
37
|
+
- Accept first token matching `^\d+(\.\d+)?$` as the phase number.
|
|
38
|
+
- Parse flags `--gaps-only` and `--auto` from the same input text when present.
|
|
39
|
+
- Do not claim "phase missing" when the latest user input already contains a valid phase token.
|
|
40
|
+
- Only ask for input if no valid phase token is found anywhere in the latest user request.
|
|
33
41
|
|
|
34
42
|
## Execution
|
|
35
|
-
1. Parse "<phase-number> [--gaps-only]" from the user
|
|
36
|
-
2.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
1. Parse "<phase-number> [--gaps-only] [--auto]" from command argument text, or extract from the latest user message.
|
|
44
|
+
2. Treat parsed phase as the execution target and keep it unchanged for all downstream steps.
|
|
45
|
+
3. Run init with the parsed phase:
|
|
46
|
+
node <gsd-tools-path> init execute-phase <phase> --raw
|
|
47
|
+
4. If `--gaps-only` is present, apply gap-closure filtering exactly as defined in the upstream workflow.
|
|
48
|
+
5. If `--auto` is present, preserve auto-advance behavior from the upstream workflow.
|
|
49
|
+
6. Load .claude/get-shit-done/workflows/execute-phase.md and execute it step-by-step.
|
|
50
|
+
7. Translate each Task(...) in workflow into:
|
|
41
51
|
- spawn_agent with the matching role file context from .claude/agents/.
|
|
42
52
|
- wait for each spawned agent and apply returned output before moving forward.
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
8. Preserve all gates and routing from upstream workflow.
|
|
54
|
+
9. Preserve commit behavior using
|
|
45
55
|
node <gsd-tools-path> commit "message" --files ....
|
|
46
|
-
|
|
56
|
+
10. If commit preflight fails (no git / no commit flag), proceed in read-only mode and report clearly.
|
|
47
57
|
|
|
48
58
|
## Completion output
|
|
49
59
|
- Summarize key artifacts created/updated.
|
|
50
|
-
- Next recommended command: `gsd-verify-work
|
|
60
|
+
- Next recommended command: `gsd-verify-work <phase>` (Codex) / `/gsd:verify-work <phase>` (Claude)
|
|
51
61
|
- Never recommend internal `node ... gsd-tools ...` commands to the user.
|
|
@@ -15,8 +15,11 @@ Show available GSD commands and usage guide
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Show available GSD commands and usage guide
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
# No explicit init.
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Insert urgent work as decimal phase (for example 72.1) between existing phases
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Insert urgent work as decimal phase (for example 72.1) between existing phases
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse <after> <description> from the user
|
|
38
|
+
1. Parse <after> <description> from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op [after-phase] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Surface Claude's assumptions about a phase approach before planning
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Surface Claude's assumptions about a phase approach before planning
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[phase]" from the user
|
|
38
|
+
1. Parse "[phase]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Analyze codebase with parallel mapper agents to produce .planning/codebase/ docu
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Analyze codebase with parallel mapper agents to produce .planning/codebase/ docu
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[optional: specific area to map, for example api or auth]" from the user
|
|
38
|
+
1. Parse "[optional: specific area to map, for example api or auth]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init map-codebase --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Start a new milestone cycle — update PROJECT.md and route to requirements
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Start a new milestone cycle — update PROJECT.md and route to requirements
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[milestone name, for example v1.1 Notifications]" from the user
|
|
38
|
+
1. Parse "[milestone name, for example v1.1 Notifications]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init new-milestone --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Initialize a new project with deep context gathering and PROJECT.md
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Initialize a new project with deep context gathering and PROJECT.md
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[--auto]" from the user
|
|
38
|
+
1. Parse "[--auto]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init new-project --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Create context handoff when pausing work mid-phase
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Create context handoff when pausing work mid-phase
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> state load --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Create phases to close all gaps identified by milestone audit
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Create phases to close all gaps identified by milestone audit
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init milestone-op --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Create detailed execution plan for a phase (PLAN.md) with verification loop
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Create detailed execution plan for a phase (PLAN.md) with verification loop
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[phase] [--research] [--skip-research] [--gaps] [--skip-verify]" from the user
|
|
38
|
+
1. Parse "[phase] [--research] [--skip-research] [--gaps] [--skip-verify]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init plan-phase [phase] --include state,roadmap,requirements,context,research,verification,uat --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Check project progress, show context, and route to next action
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Check project progress, show context, and route to next action
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init progress --include state,roadmap,project,config --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Execute a quick task with GSD guarantees (atomic commits, state tracking) but sk
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Execute a quick task with GSD guarantees (atomic commits, state tracking) but sk
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init quick "[argument]" --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Remove a future phase from roadmap and renumber subsequent phases
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Remove a future phase from roadmap and renumber subsequent phases
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse <phase-number> from the user
|
|
38
|
+
1. Parse <phase-number> from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Research how to implement a phase (standalone - usually use plan-phase instead)
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Research how to implement a phase (standalone - usually use plan-phase instead)
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[phase]" from the user
|
|
38
|
+
1. Parse "[phase]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init phase-op [argument] --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Resume work from previous session with full context restoration
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Resume work from previous session with full context restoration
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init resume --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Switch model profile for GSD agents (quality/balanced/budget)
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Switch model profile for GSD agents (quality/balanced/budget)
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse <profile> from the user
|
|
38
|
+
1. Parse <profile> from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> state load --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Configure GSD workflow toggles and model profile
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Configure GSD workflow toggles and model profile
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> config-ensure-section --raw
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Update GSD to latest version with changelog display
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Update GSD to latest version with changelog display
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1.
|
|
38
|
+
1. No positional argument is required. Read flags from command text if present.
|
|
36
39
|
2. Run init:
|
|
37
40
|
# No explicit init.
|
|
38
41
|
|
|
@@ -15,8 +15,11 @@ Validate built features through conversational UAT
|
|
|
15
15
|
node ~/.claude/get-shit-done/bin/gsd-tools.js ...
|
|
16
16
|
- If `.js` is unavailable, use the same path with `.cjs`.
|
|
17
17
|
- Run engine commands through PowerShell.
|
|
18
|
+
- Do not set `node <path> ...` as one string variable and invoke `& $var`; run direct `node <path> ...` or `& node <path> ...`.
|
|
18
19
|
- Parse JSON with ConvertFrom-Json; parse key/value output when workflow uses KEY=value raw mode.
|
|
19
20
|
- No jq / bash-only constructs.
|
|
21
|
+
- Accept natural-language command input; do not require an exact literal argument template.
|
|
22
|
+
- If a required argument is still missing after extraction, ask one concise clarification question.
|
|
20
23
|
|
|
21
24
|
## Subagent lifecycle (required)
|
|
22
25
|
|
|
@@ -32,7 +35,7 @@ Validate built features through conversational UAT
|
|
|
32
35
|
- If versions differ, surface: "Update available: <installed> -> <latest>. Next: gsd-update (Codex) / /gsd:update (Claude) or re-run npx gsd-codex-cli@latest."
|
|
33
36
|
|
|
34
37
|
## Execution
|
|
35
|
-
1. Parse "[phase number, for example 4]" from the user
|
|
38
|
+
1. Parse "[phase number, for example 4]" from command argument text or the latest user message (natural language allowed).
|
|
36
39
|
2. Run init:
|
|
37
40
|
node <gsd-tools-path> init verify-work [phase] --raw
|
|
38
41
|
|
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
- `C:/Users/Ahmed/.claude/get-shit-done/...` → `.claude/get-shit-done/...`
|
|
10
10
|
- `C:/Users/Ahmed/.claude/agents/...` → `.claude/agents/...`
|
|
11
11
|
|
|
12
|
-
## CLI mapping
|
|
13
|
-
- Use `node .claude/get-shit-done/bin/gsd-tools.js ...`.
|
|
14
|
-
- Keep `--raw` when upstream workflow uses it.
|
|
15
|
-
- Parse JSON by `ConvertFrom-Json`.
|
|
12
|
+
## CLI mapping
|
|
13
|
+
- Use `node .claude/get-shit-done/bin/gsd-tools.js ...`.
|
|
14
|
+
- Keep `--raw` when upstream workflow uses it.
|
|
15
|
+
- Parse JSON by `ConvertFrom-Json`.
|
|
16
|
+
- Do not assign `node <path> <args>` into a single PowerShell string and invoke `& $cmd`.
|
|
17
|
+
- Use direct invocation: `node <path> ...` or `& node <path> ...`.
|
|
16
18
|
|
|
17
19
|
## Subagent mapping
|
|
18
20
|
- `subagent_type=gsd-*` maps to equivalent role contract in `.claude/agents/gsd-*.md`.
|
|
@@ -7,17 +7,31 @@ $raw = & node .claude/get-shit-done/bin/gsd-tools.js state load --raw
|
|
|
7
7
|
$data = $raw | ConvertFrom-Json
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
## Key/value parse
|
|
11
|
-
|
|
12
|
-
```powershell
|
|
13
|
-
$raw = & node .claude/get-shit-done/bin/gsd-tools.js state load --raw
|
|
14
|
-
$out = @{}
|
|
10
|
+
## Key/value parse
|
|
11
|
+
|
|
12
|
+
```powershell
|
|
13
|
+
$raw = & node .claude/get-shit-done/bin/gsd-tools.js state load --raw
|
|
14
|
+
$out = @{}
|
|
15
15
|
$raw -split "`n" | ForEach-Object {
|
|
16
16
|
if ($_ -match '^(.*?)=(.*)$') { $out[$Matches[1]] = $Matches[2] }
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Command invocation (important)
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
23
|
+
# Good: path is separate from the command
|
|
24
|
+
$gsd = ".claude/get-shit-done/bin/gsd-tools.js"
|
|
25
|
+
$raw = & node $gsd init execute-phase 28 --raw
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
# Bad: this fails because PowerShell treats it as one command token
|
|
30
|
+
$cmd = "node .claude/get-shit-done/bin/gsd-tools.js"
|
|
31
|
+
$raw = & $cmd init execute-phase 28 --raw
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Syntax notes
|
|
35
|
+
- Replace jq with `ConvertFrom-Json`.
|
|
36
|
+
- Avoid bash-only heredocs and command substitution.
|
|
37
|
+
- Use quoted paths for PowerShell compatibility.
|