---
name: gsd-analyze-dependencies
description: "Analyze phase dependencies and suggest Depends on entries for ROADMAP.md"
allowed-tools:
- Read
- Write
- Bash
- Glob
- Grep
- AskUserQuestion
---
Analyze the phase dependency graph for the current milestone. For each phase pair, determine if there is a dependency relationship based on:
- File overlap (phases that modify the same files must be ordered)
- Semantic dependencies (a phase that uses an API built by another phase)
- Data flow (a phase that consumes output from another phase)
Then suggest `Depends on` updates to ROADMAP.md.
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`.
## 1. Load ROADMAP.md
Read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd:new-project` first."
Extract all phases. For each phase capture:
- Phase number and name
- Scope/Goal description
- Files listed in `Files` or `files_modified` fields (if present)
- Existing `Depends on` field value
## 2. Infer Likely File Modifications
For each phase without explicit `files_modified`, analyze the scope/goal description to infer which files will likely be modified. Use these heuristics:
- **Database/schema phases** → migration files, schema definitions, model files
- **API/backend phases** → route files, controller files, service files, handler files
- **Frontend/UI phases** → component files, page files, style files
- **Auth phases** → middleware files, auth route files, session/token files
- **Config/infra phases** → config files, environment files, CI/CD files
- **Test phases** → test files, spec files, fixture files
- **Shared utility phases** → lib/utils files, shared type definitions
Group phases by their inferred file domain (database, API, frontend, auth, config, shared).
## 3. Detect Dependency Relationships
For each pair of phases (A, B), check for dependency signals:
### File Overlap Detection
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.
### Semantic Dependency Detection
Read each phase's scope/goal for these patterns:
- Phase B mentions consuming, using, or calling something that Phase A creates/implements
- Phase B references an "API", "schema", "model", "endpoint", or "interface" that Phase A builds
- Phase B says "after X is complete", "once X is built", "using the X from Phase N"
- Phase B extends or modifies code that Phase A establishes
### Data Flow Detection
- Phase A creates data structures, schemas, or types → Phase B consumes or transforms them
- Phase A seeds/migrates the database → Phase B reads from that database
- Phase A exposes an API contract → Phase B implements the client for that contract
## 4. Build Dependency Table
Output a dependency suggestion table:
```
Phase Dependency Analysis
=========================
Phase N:
Scope:
Likely touches:
Suggested dependencies:
→ Depends on: — reason:
Current "Depends on":
```
For phase pairs with no detected dependency, state: "No dependency detected between Phase X and Phase Y."
## 5. Summarize Suggested Changes
Show a consolidated diff of proposed ROADMAP.md `Depends on` changes:
```
Suggested ROADMAP.md updates:
Phase 3: add "Depends on: 1, 2" (file overlap: database schema)
Phase 5: add "Depends on: 3" (semantic: uses auth API from Phase 3)
Phase 4: no change needed (independent scope)
```
## 6. Confirm and Apply
Ask the user: "Apply these `Depends on` suggestions to ROADMAP.md? (yes / no / edit)"
- **yes** — Write all suggested `Depends on` entries to ROADMAP.md. Confirm each write.
- **no** — Print the suggestions as text only. User updates manually.
- **edit** — Present each suggestion individually with yes/no/skip per suggestion.
When writing to ROADMAP.md:
- Locate the phase entry and add or update the `Depends on:` field
- Preserve all other phase content unchanged
- Do not reorder phases
After applying: "ROADMAP.md updated. Run `/gsd:manager` to execute phases in the correct order."
No arguments required. Requires an active milestone with ROADMAP.md.
Run this command BEFORE `/gsd:manager` to fill in missing `Depends on` fields and prevent merge conflicts from unordered parallel execution.
Execute the analyze-dependencies workflow steps embedded above end-to-end.
Present dependency suggestions clearly and apply confirmed updates to ROADMAP.md.