gsd-opencode 1.30.0 → 1.33.1
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/agents/gsd-debugger.md +0 -1
- package/agents/gsd-doc-verifier.md +207 -0
- package/agents/gsd-doc-writer.md +608 -0
- package/agents/gsd-executor.md +22 -1
- package/agents/gsd-phase-researcher.md +41 -0
- package/agents/gsd-plan-checker.md +82 -0
- package/agents/gsd-planner.md +123 -194
- package/agents/gsd-security-auditor.md +129 -0
- package/agents/gsd-ui-auditor.md +40 -0
- package/agents/gsd-user-profiler.md +2 -2
- package/agents/gsd-verifier.md +84 -18
- package/commands/gsd/gsd-add-backlog.md +1 -1
- package/commands/gsd/gsd-analyze-dependencies.md +34 -0
- package/commands/gsd/gsd-autonomous.md +6 -2
- package/commands/gsd/gsd-cleanup.md +5 -0
- package/commands/gsd/gsd-debug.md +24 -21
- package/commands/gsd/gsd-discuss-phase.md +7 -2
- package/commands/gsd/gsd-docs-update.md +48 -0
- package/commands/gsd/gsd-execute-phase.md +4 -0
- package/commands/gsd/gsd-help.md +2 -0
- package/commands/gsd/gsd-join-discord.md +2 -1
- package/commands/gsd/gsd-manager.md +1 -0
- package/commands/gsd/gsd-new-project.md +4 -0
- package/commands/gsd/gsd-plan-phase.md +5 -0
- package/commands/gsd/gsd-quick.md +5 -3
- package/commands/gsd/gsd-reapply-patches.md +171 -39
- package/commands/gsd/gsd-research-phase.md +2 -12
- package/commands/gsd/gsd-review-backlog.md +1 -0
- package/commands/gsd/gsd-review.md +3 -2
- package/commands/gsd/gsd-secure-phase.md +35 -0
- package/commands/gsd/gsd-set-profile.md +0 -1
- package/commands/gsd/gsd-thread.md +1 -1
- package/commands/gsd/gsd-workstreams.md +7 -2
- package/get-shit-done/bin/gsd-tools.cjs +42 -8
- package/get-shit-done/bin/lib/commands.cjs +68 -14
- package/get-shit-done/bin/lib/config.cjs +18 -10
- package/get-shit-done/bin/lib/core.cjs +383 -80
- package/get-shit-done/bin/lib/docs.cjs +267 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +47 -2
- package/get-shit-done/bin/lib/init.cjs +85 -5
- package/get-shit-done/bin/lib/milestone.cjs +21 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +2 -0
- package/get-shit-done/bin/lib/phase.cjs +232 -189
- package/get-shit-done/bin/lib/profile-output.cjs +97 -1
- package/get-shit-done/bin/lib/roadmap.cjs +137 -113
- package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
- package/get-shit-done/bin/lib/security.cjs +5 -3
- package/get-shit-done/bin/lib/state.cjs +366 -44
- package/get-shit-done/bin/lib/verify.cjs +158 -14
- package/get-shit-done/bin/lib/workstream.cjs +6 -2
- package/get-shit-done/references/agent-contracts.md +79 -0
- package/get-shit-done/references/artifact-types.md +113 -0
- package/get-shit-done/references/context-budget.md +49 -0
- package/get-shit-done/references/continuation-format.md +15 -15
- package/get-shit-done/references/domain-probes.md +125 -0
- package/get-shit-done/references/gate-prompts.md +100 -0
- package/get-shit-done/references/model-profiles.md +2 -2
- package/get-shit-done/references/planner-gap-closure.md +62 -0
- package/get-shit-done/references/planner-reviews.md +39 -0
- package/get-shit-done/references/planner-revision.md +87 -0
- package/get-shit-done/references/planning-config.md +15 -0
- package/get-shit-done/references/revision-loop.md +97 -0
- package/get-shit-done/references/ui-brand.md +2 -2
- package/get-shit-done/references/universal-anti-patterns.md +58 -0
- package/get-shit-done/references/workstream-flag.md +56 -3
- package/get-shit-done/templates/SECURITY.md +61 -0
- package/get-shit-done/templates/VALIDATION.md +3 -3
- package/get-shit-done/templates/claude-md.md +27 -4
- package/get-shit-done/templates/config.json +4 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +2 -6
- package/get-shit-done/templates/planner-subagent-prompt.md +2 -10
- package/get-shit-done/workflows/add-phase.md +2 -2
- package/get-shit-done/workflows/add-todo.md +1 -1
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-milestone.md +8 -12
- package/get-shit-done/workflows/autonomous.md +158 -13
- package/get-shit-done/workflows/check-todos.md +2 -2
- package/get-shit-done/workflows/complete-milestone.md +13 -4
- package/get-shit-done/workflows/diagnose-issues.md +8 -6
- package/get-shit-done/workflows/discovery-phase.md +1 -1
- package/get-shit-done/workflows/discuss-phase-assumptions.md +24 -6
- package/get-shit-done/workflows/discuss-phase-power.md +291 -0
- package/get-shit-done/workflows/discuss-phase.md +153 -20
- package/get-shit-done/workflows/docs-update.md +1093 -0
- package/get-shit-done/workflows/execute-phase.md +362 -66
- package/get-shit-done/workflows/execute-plan.md +1 -1
- package/get-shit-done/workflows/help.md +9 -6
- package/get-shit-done/workflows/insert-phase.md +2 -2
- package/get-shit-done/workflows/manager.md +27 -26
- package/get-shit-done/workflows/map-codebase.md +10 -32
- package/get-shit-done/workflows/new-milestone.md +14 -8
- package/get-shit-done/workflows/new-project.md +48 -25
- package/get-shit-done/workflows/next.md +1 -1
- package/get-shit-done/workflows/note.md +1 -1
- package/get-shit-done/workflows/pause-work.md +73 -10
- package/get-shit-done/workflows/plan-milestone-gaps.md +2 -2
- package/get-shit-done/workflows/plan-phase.md +184 -32
- package/get-shit-done/workflows/progress.md +20 -20
- package/get-shit-done/workflows/quick.md +102 -84
- package/get-shit-done/workflows/research-phase.md +2 -6
- package/get-shit-done/workflows/resume-project.md +4 -4
- package/get-shit-done/workflows/review.md +56 -3
- package/get-shit-done/workflows/secure-phase.md +154 -0
- package/get-shit-done/workflows/settings.md +13 -2
- package/get-shit-done/workflows/ship.md +13 -4
- package/get-shit-done/workflows/transition.md +6 -6
- package/get-shit-done/workflows/ui-phase.md +4 -14
- package/get-shit-done/workflows/ui-review.md +25 -7
- package/get-shit-done/workflows/update.md +165 -16
- package/get-shit-done/workflows/validate-phase.md +1 -11
- package/get-shit-done/workflows/verify-phase.md +127 -6
- package/get-shit-done/workflows/verify-work.md +69 -21
- package/package.json +1 -1
|
@@ -9,8 +9,55 @@ parallel milestone work by multiple OpenCode instances on the same codebase.
|
|
|
9
9
|
|
|
10
10
|
1. `--ws <name>` flag (explicit, highest priority)
|
|
11
11
|
2. `GSD_WORKSTREAM` environment variable (per-instance)
|
|
12
|
-
3.
|
|
13
|
-
4. `
|
|
12
|
+
3. Session-scoped active workstream pointer in temp storage (per runtime session / terminal)
|
|
13
|
+
4. `.planning/active-workstream` file (legacy shared fallback when no session key exists)
|
|
14
|
+
5. `null` — flat mode (no workstreams)
|
|
15
|
+
|
|
16
|
+
## Why session-scoped pointers exist
|
|
17
|
+
|
|
18
|
+
The shared `.planning/active-workstream` file is fundamentally unsafe when multiple
|
|
19
|
+
OpenCode/Codex instances are active on the same repo at the same time. One session can
|
|
20
|
+
silently repoint another session's `STATE.md`, `ROADMAP.md`, and phase paths.
|
|
21
|
+
|
|
22
|
+
GSD now prefers a session-scoped pointer keyed by runtime/session identity
|
|
23
|
+
(`GSD_SESSION_KEY`, `CODEX_THREAD_ID`, `CLAUDE_CODE_SSE_PORT`, terminal session IDs,
|
|
24
|
+
or the controlling TTY). This keeps concurrent sessions isolated while preserving
|
|
25
|
+
legacy compatibility for runtimes that do not expose a stable session key.
|
|
26
|
+
|
|
27
|
+
## Session Identity Resolution
|
|
28
|
+
|
|
29
|
+
When GSD resolves the session-scoped pointer in step 3 above, it uses this order:
|
|
30
|
+
|
|
31
|
+
1. Explicit runtime/session env vars such as `GSD_SESSION_KEY`, `CODEX_THREAD_ID`,
|
|
32
|
+
`CLAUDE_SESSION_ID`, `CLAUDE_CODE_SSE_PORT`, `OPENCODE_SESSION_ID`,
|
|
33
|
+
`GEMINI_SESSION_ID`, `CURSOR_SESSION_ID`, `WINDSURF_SESSION_ID`,
|
|
34
|
+
`TERM_SESSION_ID`, `WT_SESSION`, `TMUX_PANE`, and `ZELLIJ_SESSION_NAME`
|
|
35
|
+
2. `TTY` or `SSH_TTY` if the shell/runtime already exposes the terminal path
|
|
36
|
+
3. A single best-effort `tty` probe, but only when stdin is interactive
|
|
37
|
+
|
|
38
|
+
If none of those produce a stable identity, GSD does not keep probing. It falls
|
|
39
|
+
back directly to the legacy shared `.planning/active-workstream` file.
|
|
40
|
+
|
|
41
|
+
This matters in headless or stripped environments: when stdin is already
|
|
42
|
+
non-interactive, GSD intentionally skips shelling out to `tty` because that path
|
|
43
|
+
cannot discover a stable session identity and only adds avoidable failures on the
|
|
44
|
+
routing hot path.
|
|
45
|
+
|
|
46
|
+
## Pointer Lifecycle
|
|
47
|
+
|
|
48
|
+
Session-scoped pointers are intentionally lightweight and best-effort:
|
|
49
|
+
|
|
50
|
+
- Clearing a workstream for one session removes only that session's pointer file
|
|
51
|
+
- If that was the last pointer for the repo, GSD also removes the now-empty
|
|
52
|
+
per-project temp directory
|
|
53
|
+
- If sibling session pointers still exist, the temp directory is left in place
|
|
54
|
+
- When a pointer refers to a workstream directory that no longer exists, GSD
|
|
55
|
+
treats it as stale state: it removes that pointer file and resolves to `null`
|
|
56
|
+
until the session explicitly sets a new active workstream again
|
|
57
|
+
|
|
58
|
+
GSD does not currently run a background garbage collector for historical temp
|
|
59
|
+
directories. Cleanup is opportunistic at the pointer being cleared or self-healed,
|
|
60
|
+
and broader temp hygiene is left to OS temp cleanup or future maintenance work.
|
|
14
61
|
|
|
15
62
|
## Routing Propagation
|
|
16
63
|
|
|
@@ -29,7 +76,7 @@ This ensures workstream scope chains automatically through the workflow:
|
|
|
29
76
|
├── config.json # Shared
|
|
30
77
|
├── milestones/ # Shared
|
|
31
78
|
├── codebase/ # Shared
|
|
32
|
-
├── active-workstream #
|
|
79
|
+
├── active-workstream # Legacy shared fallback only
|
|
33
80
|
└── workstreams/
|
|
34
81
|
├── feature-a/ # Workstream A
|
|
35
82
|
│ ├── STATE.md
|
|
@@ -50,6 +97,12 @@ This ensures workstream scope chains automatically through the workflow:
|
|
|
50
97
|
node gsd-tools.cjs state json --ws feature-a
|
|
51
98
|
node gsd-tools.cjs find-phase 3 --ws feature-b
|
|
52
99
|
|
|
100
|
+
# Session-local switching without --ws on every command
|
|
101
|
+
GSD_SESSION_KEY=my-terminal-a node gsd-tools.cjs workstream set feature-a
|
|
102
|
+
GSD_SESSION_KEY=my-terminal-a node gsd-tools.cjs state json
|
|
103
|
+
GSD_SESSION_KEY=my-terminal-b node gsd-tools.cjs workstream set feature-b
|
|
104
|
+
GSD_SESSION_KEY=my-terminal-b node gsd-tools.cjs state json
|
|
105
|
+
|
|
53
106
|
# Workstream CRUD
|
|
54
107
|
node gsd-tools.cjs workstream create <name>
|
|
55
108
|
node gsd-tools.cjs workstream list
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {N}
|
|
3
|
+
slug: {phase-slug}
|
|
4
|
+
status: draft
|
|
5
|
+
threats_open: 0
|
|
6
|
+
asvs_level: 1
|
|
7
|
+
created: {date}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Phase {N} — Security
|
|
11
|
+
|
|
12
|
+
> Per-phase security contract: threat register, accepted risks, and audit trail.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Trust Boundaries
|
|
17
|
+
|
|
18
|
+
| Boundary | Description | Data Crossing |
|
|
19
|
+
|----------|-------------|---------------|
|
|
20
|
+
| {boundary} | {description} | {data type / sensitivity} |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Threat Register
|
|
25
|
+
|
|
26
|
+
| Threat ID | Category | Component | Disposition | Mitigation | Status |
|
|
27
|
+
|-----------|----------|-----------|-------------|------------|--------|
|
|
28
|
+
| T-{N}-01 | {STRIDE category} | {component} | {mitigate / accept / transfer} | {control or reference} | open |
|
|
29
|
+
|
|
30
|
+
*Status: open · closed*
|
|
31
|
+
*Disposition: mitigate (implementation required) · accept (documented risk) · transfer (third-party)*
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Accepted Risks Log
|
|
36
|
+
|
|
37
|
+
| Risk ID | Threat Ref | Rationale | Accepted By | Date |
|
|
38
|
+
|---------|------------|-----------|-------------|------|
|
|
39
|
+
|
|
40
|
+
*Accepted risks do not resurface in future audit runs.*
|
|
41
|
+
|
|
42
|
+
*If none: "No accepted risks."*
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Security Audit Trail
|
|
47
|
+
|
|
48
|
+
| Audit Date | Threats Total | Closed | Open | Run By |
|
|
49
|
+
|------------|---------------|--------|------|--------|
|
|
50
|
+
| {YYYY-MM-DD} | {N} | {N} | {N} | {name / agent} |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Sign-Off
|
|
55
|
+
|
|
56
|
+
- [ ] All threats have a disposition (mitigate / accept / transfer)
|
|
57
|
+
- [ ] Accepted risks documented in Accepted Risks Log
|
|
58
|
+
- [ ] `threats_open: 0` confirmed
|
|
59
|
+
- [ ] `status: verified` set in frontmatter
|
|
60
|
+
|
|
61
|
+
**Approval:** {pending / verified YYYY-MM-DD}
|
|
@@ -36,9 +36,9 @@ created: {date}
|
|
|
36
36
|
|
|
37
37
|
## Per-task Verification Map
|
|
38
38
|
|
|
39
|
-
| task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|
|
40
|
-
|
|
41
|
-
| {N}-01-01 | 01 | 1 | REQ-{XX} | unit | `{command}` | ✅ / ❌ W0 | ⬜ pending |
|
|
39
|
+
| task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status |
|
|
40
|
+
|---------|------|------|-------------|------------|-----------------|-----------|-------------------|-------------|--------|
|
|
41
|
+
| {N}-01-01 | 01 | 1 | REQ-{XX} | T-{N}-01 / — | {expected secure behavior or "N/A"} | unit | `{command}` | ✅ / ❌ W0 | ⬜ pending |
|
|
42
42
|
|
|
43
43
|
*Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky*
|
|
44
44
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Template for project-root `AGENTS.md` — auto-generated by `gsd-tools generate-OpenCode-md`.
|
|
4
4
|
|
|
5
|
-
Contains
|
|
6
|
-
The `generate-OpenCode-md` subcommand manages
|
|
5
|
+
Contains 7 marker-bounded sections. Each section is independently updatable.
|
|
6
|
+
The `generate-OpenCode-md` subcommand manages 6 sections (project, stack, conventions, architecture, skills, workflow enforcement).
|
|
7
7
|
The profile section is managed exclusively by `generate-OpenCode-profile`.
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -66,6 +66,28 @@ Conventions not yet established. Will populate as patterns emerge during develop
|
|
|
66
66
|
Architecture not yet mapped. Follow existing patterns found in the codebase.
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
### Skills Section
|
|
70
|
+
```
|
|
71
|
+
<!-- GSD:skills-start source:skills/ -->
|
|
72
|
+
## Project Skills
|
|
73
|
+
|
|
74
|
+
| skill | Description | Path |
|
|
75
|
+
| -------------- | --------------------- | ------------------------- |
|
|
76
|
+
| {{skill_name}} | {{skill_description}} | `{{skill_path}}/SKILL.md` |
|
|
77
|
+
<!-- GSD:skills-end -->
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Fallback text:**
|
|
81
|
+
```
|
|
82
|
+
No project skills found. Add skills to any of: `.OpenCode/skills/`, `.agents/skills/`, `.cursor/skills/`, or `.github/skills/` with a `SKILL.md` index file.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Discovery behavior:**
|
|
86
|
+
- Scans `.OpenCode/skills/`, `.agents/skills/`, `.cursor/skills/`, `.github/skills/` for subdirectories containing `SKILL.md`
|
|
87
|
+
- Extracts `name` and `description` from YAML frontmatter (supports multi-line descriptions)
|
|
88
|
+
- Skips GSD's own installed skills (directories starting with `gsd-`)
|
|
89
|
+
- Deduplicates by skill name across directories
|
|
90
|
+
|
|
69
91
|
### Workflow Enforcement Section
|
|
70
92
|
```
|
|
71
93
|
<!-- GSD:workflow-start source:GSD defaults -->
|
|
@@ -104,8 +126,9 @@ AGENTS.md file and no profile section exists yet.
|
|
|
104
126
|
2. **Stack** — Technology choices (what tools are used)
|
|
105
127
|
3. **Conventions** — Code patterns and rules (how code is written)
|
|
106
128
|
4. **Architecture** — System structure (how components fit together)
|
|
107
|
-
5. **
|
|
108
|
-
6. **
|
|
129
|
+
5. **Skills** — Discovered project skills with name and description (what domain knowledge is available)
|
|
130
|
+
6. **Workflow Enforcement** — Default GSD entry points for file-changing work
|
|
131
|
+
7. **Profile** — Developer behavioral preferences (how to interact)
|
|
109
132
|
|
|
110
133
|
## Marker Format
|
|
111
134
|
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
"verifier": true,
|
|
8
8
|
"auto_advance": false,
|
|
9
9
|
"nyquist_validation": true,
|
|
10
|
+
"security_enforcement": true,
|
|
11
|
+
"security_asvs_level": 1,
|
|
12
|
+
"security_block_on": "high",
|
|
10
13
|
"discuss_mode": "discuss",
|
|
11
14
|
"research_before_questions": false
|
|
12
15
|
},
|
|
@@ -40,5 +43,6 @@
|
|
|
40
43
|
"hooks": {
|
|
41
44
|
"context_warnings": true
|
|
42
45
|
},
|
|
46
|
+
"project_code": null,
|
|
43
47
|
"agent_skills": {}
|
|
44
48
|
}
|
|
@@ -53,16 +53,12 @@ Create: .planning/debug/{slug}.md
|
|
|
53
53
|
|
|
54
54
|
**From /gsd-debug:**
|
|
55
55
|
```python
|
|
56
|
-
|
|
57
|
-
prompt=filled_template,
|
|
58
|
-
subagent_type="gsd-debugger",
|
|
59
|
-
description="Debug {slug}"
|
|
60
|
-
)
|
|
56
|
+
@gsd-debugger filled_template
|
|
61
57
|
```
|
|
62
58
|
|
|
63
59
|
**From diagnose-issues (UAT):**
|
|
64
60
|
```python
|
|
65
|
-
|
|
61
|
+
@gsd-debugger template
|
|
66
62
|
```
|
|
67
63
|
|
|
68
64
|
---
|
|
@@ -70,20 +70,12 @@ Before returning PLANNING COMPLETE:
|
|
|
70
70
|
|
|
71
71
|
**From /gsd-plan-phase (standard mode):**
|
|
72
72
|
```python
|
|
73
|
-
|
|
74
|
-
prompt=filled_template,
|
|
75
|
-
subagent_type="gsd-planner",
|
|
76
|
-
description="Plan Phase {phase}"
|
|
77
|
-
)
|
|
73
|
+
@gsd-planner filled_template
|
|
78
74
|
```
|
|
79
75
|
|
|
80
76
|
**From /gsd-plan-phase --gaps (gap closure mode):**
|
|
81
77
|
```python
|
|
82
|
-
|
|
83
|
-
prompt=filled_template, # with mode: gap_closure
|
|
84
|
-
subagent_type="gsd-planner",
|
|
85
|
-
description="Plan gaps for Phase {phase}"
|
|
86
|
-
)
|
|
78
|
+
@gsd-planner filled_template
|
|
87
79
|
```
|
|
88
80
|
|
|
89
81
|
---
|
|
@@ -20,7 +20,7 @@ Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos
|
|
|
20
20
|
|
|
21
21
|
Ensure directories exist:
|
|
22
22
|
```bash
|
|
23
|
-
mkdir -p .planning/todos/pending .planning/todos/
|
|
23
|
+
mkdir -p .planning/todos/pending .planning/todos/completed
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Note existing areas from the todos array for consistency in infer_area step.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<objective>
|
|
2
|
+
Analyze ROADMAP.md phases for dependency relationships before execution. Detect file overlap between phases, semantic API/data-flow dependencies, and suggest `Depends on` entries to prevent merge conflicts during parallel execution by `/gsd-manager`.
|
|
3
|
+
</objective>
|
|
4
|
+
|
|
5
|
+
<process>
|
|
6
|
+
|
|
7
|
+
## 1. Load ROADMAP.md
|
|
8
|
+
|
|
9
|
+
read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd-new-project` first."
|
|
10
|
+
|
|
11
|
+
Extract all phases. For each phase capture:
|
|
12
|
+
- Phase number and name
|
|
13
|
+
- Scope/Goal description
|
|
14
|
+
- Files listed in `Files` or `files_modified` fields (if present)
|
|
15
|
+
- Existing `Depends on` field value
|
|
16
|
+
|
|
17
|
+
## 2. Infer Likely File Modifications
|
|
18
|
+
|
|
19
|
+
For each phase without explicit `files_modified`, analyze the scope/goal description to infer which files will likely be modified. Use these heuristics:
|
|
20
|
+
|
|
21
|
+
- **Database/schema phases** → migration files, schema definitions, model files
|
|
22
|
+
- **API/backend phases** → route files, controller files, service files, handler files
|
|
23
|
+
- **Frontend/UI phases** → component files, page files, style files
|
|
24
|
+
- **Auth phases** → middleware files, auth route files, session/token files
|
|
25
|
+
- **Config/infra phases** → config files, environment files, CI/CD files
|
|
26
|
+
- **Test phases** → test files, spec files, fixture files
|
|
27
|
+
- **Shared utility phases** → lib/utils files, shared type definitions
|
|
28
|
+
|
|
29
|
+
Group phases by their inferred file domain (database, API, frontend, auth, config, shared).
|
|
30
|
+
|
|
31
|
+
## 3. Detect Dependency Relationships
|
|
32
|
+
|
|
33
|
+
For each pair of phases (A, B), check for dependency signals:
|
|
34
|
+
|
|
35
|
+
### File Overlap Detection
|
|
36
|
+
If phases A and B will both modify files in the same domain or the same specific files, one must run before the other. The phase that *provides* the foundation runs first.
|
|
37
|
+
|
|
38
|
+
### Semantic Dependency Detection
|
|
39
|
+
read each phase's scope/goal for these patterns:
|
|
40
|
+
- Phase B mentions consuming, using, or calling something that Phase A creates/implements
|
|
41
|
+
- Phase B references an "API", "schema", "model", "endpoint", or "interface" that Phase A builds
|
|
42
|
+
- Phase B says "after X is complete", "once X is built", "using the X from Phase N"
|
|
43
|
+
- Phase B extends or modifies code that Phase A establishes
|
|
44
|
+
|
|
45
|
+
### Data Flow Detection
|
|
46
|
+
- Phase A creates data structures, schemas, or types → Phase B consumes or transforms them
|
|
47
|
+
- Phase A seeds/migrates the database → Phase B reads from that database
|
|
48
|
+
- Phase A exposes an API contract → Phase B implements the client for that contract
|
|
49
|
+
|
|
50
|
+
## 4. Build Dependency Table
|
|
51
|
+
|
|
52
|
+
Output a dependency suggestion table:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Phase Dependency Analysis
|
|
56
|
+
=========================
|
|
57
|
+
|
|
58
|
+
Phase N: <name>
|
|
59
|
+
Scope: <brief scope>
|
|
60
|
+
Likely touches: <inferred file domains>
|
|
61
|
+
|
|
62
|
+
Suggested dependencies:
|
|
63
|
+
→ Depends on: <Phase M> — reason: <overlap/semantic/data-flow explanation>
|
|
64
|
+
|
|
65
|
+
Current "Depends on": <existing value or "(none)">
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For phase pairs with no detected dependency, state: "No dependency detected between Phase X and Phase Y."
|
|
69
|
+
|
|
70
|
+
## 5. Summarize Suggested Changes
|
|
71
|
+
|
|
72
|
+
Show a consolidated diff of proposed ROADMAP.md `Depends on` changes:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Suggested ROADMAP.md updates:
|
|
76
|
+
Phase 3: add "Depends on: 1, 2" (file overlap: database schema)
|
|
77
|
+
Phase 5: add "Depends on: 3" (semantic: uses auth API from Phase 3)
|
|
78
|
+
Phase 4: no change needed (independent scope)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 6. Confirm and Apply
|
|
82
|
+
|
|
83
|
+
Ask the user: "Apply these `Depends on` suggestions to ROADMAP.md? (yes / no / edit)"
|
|
84
|
+
|
|
85
|
+
- **yes** — write all suggested `Depends on` entries to ROADMAP.md. Confirm each write.
|
|
86
|
+
- **no** — Print the suggestions as text only. User updates manually.
|
|
87
|
+
- **edit** — Present each suggestion individually with yes/no/skip per suggestion.
|
|
88
|
+
|
|
89
|
+
When writing to ROADMAP.md:
|
|
90
|
+
- Locate the phase entry and add or update the `Depends on:` field
|
|
91
|
+
- Preserve all other phase content unchanged
|
|
92
|
+
- Do not reorder phases
|
|
93
|
+
|
|
94
|
+
After applying: "ROADMAP.md updated. Run `/gsd-manager` to execute phases in the correct order."
|
|
95
|
+
|
|
96
|
+
</process>
|
|
@@ -67,8 +67,7 @@ With phase context collected:
|
|
|
67
67
|
Extract `MILESTONE_REQ_IDS` from REQUIREMENTS.md traceability table — all REQ-IDs assigned to phases in this milestone.
|
|
68
68
|
|
|
69
69
|
```
|
|
70
|
-
|
|
71
|
-
prompt="Check cross-phase integration and E2E flows.
|
|
70
|
+
@gsd-integration-checker "Check cross-phase integration and E2E flows.
|
|
72
71
|
|
|
73
72
|
Phases: {phase_dirs}
|
|
74
73
|
Phase exports: {from SUMMARYs}
|
|
@@ -80,10 +79,7 @@ Milestone Requirements:
|
|
|
80
79
|
MUST map each integration finding to affected requirement IDs where applicable.
|
|
81
80
|
|
|
82
81
|
Verify cross-phase wiring and E2E user flows.
|
|
83
|
-
${AGENT_SKILLS_CHECKER}"
|
|
84
|
-
subagent_type="gsd-integration-checker",
|
|
85
|
-
model="{integration_checker_model}"
|
|
86
|
-
)
|
|
82
|
+
${AGENT_SKILLS_CHECKER}"
|
|
87
83
|
```
|
|
88
84
|
|
|
89
85
|
## 4. Collect Results
|
|
@@ -229,9 +225,9 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
|
|
|
229
225
|
|
|
230
226
|
**Complete milestone** — archive and tag
|
|
231
227
|
|
|
232
|
-
/
|
|
228
|
+
/new then:
|
|
233
229
|
|
|
234
|
-
|
|
230
|
+
/gsd-complete-milestone {version}
|
|
235
231
|
|
|
236
232
|
───────────────────────────────────────────────────────────────
|
|
237
233
|
|
|
@@ -274,9 +270,9 @@ Phases needing validation: run `/gsd-validate-phase {N}` for each flagged phase.
|
|
|
274
270
|
|
|
275
271
|
**Plan gap closure** — create phases to complete milestone
|
|
276
272
|
|
|
277
|
-
/
|
|
273
|
+
/new then:
|
|
278
274
|
|
|
279
|
-
|
|
275
|
+
/gsd-plan-milestone-gaps
|
|
280
276
|
|
|
281
277
|
───────────────────────────────────────────────────────────────
|
|
282
278
|
|
|
@@ -316,9 +312,9 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
|
|
|
316
312
|
|
|
317
313
|
**B. Plan cleanup phase** — address debt before completing
|
|
318
314
|
|
|
319
|
-
/
|
|
315
|
+
/new then:
|
|
320
316
|
|
|
321
|
-
|
|
317
|
+
/gsd-plan-milestone-gaps
|
|
322
318
|
|
|
323
319
|
───────────────────────────────────────────────────────────────
|
|
324
320
|
</offer_next>
|