agileflow 2.30.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/package.json +61 -0
- package/src/core/agents/accessibility.md +445 -0
- package/src/core/agents/adr-writer.md +215 -0
- package/src/core/agents/analytics.md +523 -0
- package/src/core/agents/api.md +484 -0
- package/src/core/agents/ci.md +452 -0
- package/src/core/agents/compliance.md +401 -0
- package/src/core/agents/context7.md +164 -0
- package/src/core/agents/database.md +377 -0
- package/src/core/agents/datamigration.md +565 -0
- package/src/core/agents/design.md +400 -0
- package/src/core/agents/devops.md +576 -0
- package/src/core/agents/documentation.md +229 -0
- package/src/core/agents/epic-planner.md +277 -0
- package/src/core/agents/integrations.md +459 -0
- package/src/core/agents/mentor.md +375 -0
- package/src/core/agents/mobile.md +391 -0
- package/src/core/agents/monitoring.md +430 -0
- package/src/core/agents/performance.md +390 -0
- package/src/core/agents/product.md +311 -0
- package/src/core/agents/qa.md +647 -0
- package/src/core/agents/readme-updater.md +325 -0
- package/src/core/agents/refactor.md +432 -0
- package/src/core/agents/research.md +250 -0
- package/src/core/agents/security.md +379 -0
- package/src/core/agents/testing.md +397 -0
- package/src/core/agents/ui.md +999 -0
- package/src/core/commands/adr.md +32 -0
- package/src/core/commands/agent.md +23 -0
- package/src/core/commands/assign.md +34 -0
- package/src/core/commands/auto.md +364 -0
- package/src/core/commands/babysit.md +1357 -0
- package/src/core/commands/baseline.md +520 -0
- package/src/core/commands/blockers.md +343 -0
- package/src/core/commands/board.md +241 -0
- package/src/core/commands/changelog.md +321 -0
- package/src/core/commands/ci.md +36 -0
- package/src/core/commands/compress.md +270 -0
- package/src/core/commands/context.md +222 -0
- package/src/core/commands/debt.md +268 -0
- package/src/core/commands/deploy.md +544 -0
- package/src/core/commands/deps.md +560 -0
- package/src/core/commands/diagnose.md +227 -0
- package/src/core/commands/docs.md +166 -0
- package/src/core/commands/epic.md +40 -0
- package/src/core/commands/feedback.md +307 -0
- package/src/core/commands/handoff.md +33 -0
- package/src/core/commands/help.md +90 -0
- package/src/core/commands/impact.md +204 -0
- package/src/core/commands/metrics.md +530 -0
- package/src/core/commands/packages.md +369 -0
- package/src/core/commands/pr.md +35 -0
- package/src/core/commands/readme-sync.md +168 -0
- package/src/core/commands/research.md +30 -0
- package/src/core/commands/resume.md +475 -0
- package/src/core/commands/retro.md +538 -0
- package/src/core/commands/review.md +364 -0
- package/src/core/commands/session-init.md +532 -0
- package/src/core/commands/setup.md +708 -0
- package/src/core/commands/sprint.md +490 -0
- package/src/core/commands/status.md +38 -0
- package/src/core/commands/story-validate.md +242 -0
- package/src/core/commands/story.md +38 -0
- package/src/core/commands/template.md +458 -0
- package/src/core/commands/tests.md +359 -0
- package/src/core/commands/update.md +407 -0
- package/src/core/commands/velocity.md +369 -0
- package/src/core/commands/verify.md +283 -0
- package/src/core/skills/acceptance-criteria-generator/SKILL.md +46 -0
- package/src/core/skills/adr-template/SKILL.md +62 -0
- package/src/core/skills/agileflow-acceptance-criteria/SKILL.md +156 -0
- package/src/core/skills/agileflow-adr/SKILL.md +147 -0
- package/src/core/skills/agileflow-adr/examples/database-choice-example.md +122 -0
- package/src/core/skills/agileflow-adr/templates/adr-template.md +69 -0
- package/src/core/skills/agileflow-commit-messages/SKILL.md +130 -0
- package/src/core/skills/agileflow-commit-messages/reference/bad-examples.md +168 -0
- package/src/core/skills/agileflow-commit-messages/reference/good-examples.md +120 -0
- package/src/core/skills/agileflow-commit-messages/scripts/check-attribution.sh +15 -0
- package/src/core/skills/agileflow-epic-planner/SKILL.md +184 -0
- package/src/core/skills/agileflow-retro-facilitator/SKILL.md +281 -0
- package/src/core/skills/agileflow-sprint-planner/SKILL.md +212 -0
- package/src/core/skills/agileflow-story-writer/SKILL.md +163 -0
- package/src/core/skills/agileflow-story-writer/examples/good-story-example.md +63 -0
- package/src/core/skills/agileflow-story-writer/templates/story-template.md +44 -0
- package/src/core/skills/agileflow-tech-debt/SKILL.md +215 -0
- package/src/core/skills/api-documentation-generator/SKILL.md +65 -0
- package/src/core/skills/changelog-entry/SKILL.md +55 -0
- package/src/core/skills/commit-message-formatter/SKILL.md +50 -0
- package/src/core/skills/deployment-guide-generator/SKILL.md +84 -0
- package/src/core/skills/diagram-generator/SKILL.md +65 -0
- package/src/core/skills/error-handler-template/SKILL.md +78 -0
- package/src/core/skills/migration-checklist/SKILL.md +82 -0
- package/src/core/skills/pr-description/SKILL.md +65 -0
- package/src/core/skills/sql-schema-generator/SKILL.md +69 -0
- package/src/core/skills/story-skeleton/SKILL.md +34 -0
- package/src/core/skills/test-case-generator/SKILL.md +63 -0
- package/src/core/skills/type-definitions/SKILL.md +65 -0
- package/src/core/skills/validation-schema-generator/SKILL.md +64 -0
- package/src/core/templates/README-template.md +16 -0
- package/src/core/templates/adr-template.md +28 -0
- package/src/core/templates/agent-profile-template.md +51 -0
- package/src/core/templates/agileflow-metadata.json +41 -0
- package/src/core/templates/ci-workflow.yml +74 -0
- package/src/core/templates/claude-settings.advanced.example.json +71 -0
- package/src/core/templates/claude-settings.example.json +26 -0
- package/src/core/templates/comms-note-template.md +24 -0
- package/src/core/templates/environment.json +18 -0
- package/src/core/templates/epic-template.md +27 -0
- package/src/core/templates/init.sh +76 -0
- package/src/core/templates/research-template.md +44 -0
- package/src/core/templates/resume-session.sh +121 -0
- package/src/core/templates/session-state.json +20 -0
- package/src/core/templates/skill-template.md +75 -0
- package/src/core/templates/story-template.md +88 -0
- package/src/core/templates/validate-tokens.sh +88 -0
- package/src/core/templates/worktree-create.sh +111 -0
- package/src/core/templates/worktrees-guide.md +235 -0
- package/tools/agileflow-npx.js +40 -0
- package/tools/cli/agileflow-cli.js +70 -0
- package/tools/cli/commands/doctor.js +243 -0
- package/tools/cli/commands/install.js +82 -0
- package/tools/cli/commands/status.js +121 -0
- package/tools/cli/commands/uninstall.js +110 -0
- package/tools/cli/commands/update.js +99 -0
- package/tools/cli/installers/core/installer.js +296 -0
- package/tools/cli/installers/ide/_base-ide.js +133 -0
- package/tools/cli/installers/ide/claude-code.js +174 -0
- package/tools/cli/installers/ide/cursor.js +189 -0
- package/tools/cli/installers/ide/manager.js +197 -0
- package/tools/cli/installers/ide/windsurf.js +192 -0
- package/tools/cli/lib/ui.js +203 -0
- package/tools/cli/lib/version-checker.js +95 -0
- package/tools/postinstall.js +141 -0
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Visualize dependency graph with critical path detection
|
|
3
|
+
allowed-tools: Bash, Read, Edit, Write, Glob, Grep
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# dependencies
|
|
7
|
+
|
|
8
|
+
Visualize and analyze story/epic dependency graphs with critical path analysis and circular dependency detection.
|
|
9
|
+
|
|
10
|
+
## Prompt
|
|
11
|
+
|
|
12
|
+
ROLE: Dependency Graph Analyzer
|
|
13
|
+
|
|
14
|
+
OBJECTIVE
|
|
15
|
+
Parse story dependencies from frontmatter and bus/log.jsonl, generate visual dependency graphs, identify critical paths, detect circular dependencies, and suggest optimal work ordering.
|
|
16
|
+
|
|
17
|
+
INPUTS (optional)
|
|
18
|
+
- SCOPE=story|epic|all (default: all)
|
|
19
|
+
- EPIC=<EP_ID> (show dependencies within specific epic)
|
|
20
|
+
- STORY=<US_ID> (show dependencies for specific story)
|
|
21
|
+
- FORMAT=ascii|mermaid|graphviz|json (default: ascii)
|
|
22
|
+
- ANALYSIS=critical-path|circular|blocking|all (default: all)
|
|
23
|
+
|
|
24
|
+
DEPENDENCY SOURCES
|
|
25
|
+
|
|
26
|
+
### 1. Story Frontmatter
|
|
27
|
+
```yaml
|
|
28
|
+
---
|
|
29
|
+
id: US-0042
|
|
30
|
+
depends_on:
|
|
31
|
+
- US-0040
|
|
32
|
+
- US-0041
|
|
33
|
+
blocks:
|
|
34
|
+
- US-0045
|
|
35
|
+
---
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Bus Log (implicit dependencies)
|
|
39
|
+
```jsonl
|
|
40
|
+
{"type":"blocked","story":"US-0045","reason":"waiting for US-0042","ts":"..."}
|
|
41
|
+
{"type":"handoff","from":"AG-UI","to":"AG-API","story":"US-0043","reason":"depends on backend"}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. Epic Hierarchy
|
|
45
|
+
```
|
|
46
|
+
EP-0010 (Authentication)
|
|
47
|
+
├─ US-0030 (Database schema) ← Foundation
|
|
48
|
+
├─ US-0031 (User model) ← Depends on US-0030
|
|
49
|
+
├─ US-0032 (Login endpoint) ← Depends on US-0031
|
|
50
|
+
└─ US-0033 (Login UI) ← Depends on US-0032
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
DEPENDENCY PARSING
|
|
54
|
+
|
|
55
|
+
### Extract from Story Files
|
|
56
|
+
```bash
|
|
57
|
+
for story_file in docs/06-stories/**/*.md; do
|
|
58
|
+
story_id=$(grep "^id:" $story_file | awk '{print $2}')
|
|
59
|
+
|
|
60
|
+
# Parse depends_on field
|
|
61
|
+
depends=$(sed -n '/^depends_on:/,/^[a-z]/p' $story_file | grep -oP 'US-\d+')
|
|
62
|
+
|
|
63
|
+
# Parse blocks field
|
|
64
|
+
blocks=$(sed -n '/^blocks:/,/^[a-z]/p' $story_file | grep -oP 'US-\d+')
|
|
65
|
+
|
|
66
|
+
echo "$story_id depends_on: $depends"
|
|
67
|
+
echo "$story_id blocks: $blocks"
|
|
68
|
+
done
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Extract from Bus Log
|
|
72
|
+
```bash
|
|
73
|
+
# Find blocking events
|
|
74
|
+
jq -r 'select(.type=="blocked" and .reason | contains("waiting for")) |
|
|
75
|
+
{story: .story, blocks: (.reason | match("US-\\d+").string)}' bus/log.jsonl
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Build Dependency Graph
|
|
79
|
+
```bash
|
|
80
|
+
# Create adjacency list
|
|
81
|
+
declare -A graph
|
|
82
|
+
for story in all_stories; do
|
|
83
|
+
dependencies=$(get_story_dependencies $story)
|
|
84
|
+
graph[$story]=$dependencies
|
|
85
|
+
done
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
VISUALIZATION
|
|
89
|
+
|
|
90
|
+
### ASCII Graph (Default)
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Story Dependency Graph
|
|
94
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
95
|
+
|
|
96
|
+
Legend:
|
|
97
|
+
✅ Done 🟢 Ready 🟡 In Progress 🔵 In Review ⚪ Blocked
|
|
98
|
+
|
|
99
|
+
EP-0010: Authentication Epic
|
|
100
|
+
┌────────────────────────────────────────────────────────────┐
|
|
101
|
+
│ │
|
|
102
|
+
│ ✅ US-0030 │
|
|
103
|
+
│ Database schema │
|
|
104
|
+
│ │ │
|
|
105
|
+
│ ├─▶ ✅ US-0031 │
|
|
106
|
+
│ │ User model │
|
|
107
|
+
│ │ │ │
|
|
108
|
+
│ │ ├─▶ 🟡 US-0032 │
|
|
109
|
+
│ │ │ Login endpoint (in-progress, AG-API) │
|
|
110
|
+
│ │ │ │ │
|
|
111
|
+
│ │ │ ├─▶ 🟢 US-0033 │
|
|
112
|
+
│ │ │ │ Login UI (ready) │
|
|
113
|
+
│ │ │ │ │
|
|
114
|
+
│ │ │ └─▶ ⚪ US-0045 │
|
|
115
|
+
│ │ │ Password reset (blocked, waiting for US-0032)│
|
|
116
|
+
│ │ │ │
|
|
117
|
+
│ │ └─▶ ✅ US-0034 │
|
|
118
|
+
│ │ JWT middleware │
|
|
119
|
+
│ │ │
|
|
120
|
+
│ └─▶ 🔵 US-0035 │
|
|
121
|
+
│ User registration (in-review) │
|
|
122
|
+
│ │
|
|
123
|
+
└────────────────────────────────────────────────────────────┘
|
|
124
|
+
|
|
125
|
+
EP-0011: Payment Processing Epic
|
|
126
|
+
┌────────────────────────────────────────────────────────────┐
|
|
127
|
+
│ │
|
|
128
|
+
│ 🟢 US-0040 │
|
|
129
|
+
│ Stripe integration │
|
|
130
|
+
│ │ │
|
|
131
|
+
│ ├─▶ ⚪ US-0041 │
|
|
132
|
+
│ │ Payment form (blocked, waiting for US-0040) │
|
|
133
|
+
│ │ │
|
|
134
|
+
│ └─▶ ⚪ US-0042 │
|
|
135
|
+
│ Webhook handler (blocked, waiting for US-0040) │
|
|
136
|
+
│ │
|
|
137
|
+
└────────────────────────────────────────────────────────────┘
|
|
138
|
+
|
|
139
|
+
Critical Path:
|
|
140
|
+
US-0030 → US-0031 → US-0032 → US-0033 (11 days total)
|
|
141
|
+
⚠️ US-0032 is on critical path and in-progress
|
|
142
|
+
|
|
143
|
+
Blocking Stories:
|
|
144
|
+
US-0040 blocks: US-0041, US-0042 (⚠️ High impact: 2 stories)
|
|
145
|
+
US-0032 blocks: US-0033, US-0045 (⚠️ High impact: 2 stories)
|
|
146
|
+
|
|
147
|
+
Circular Dependencies: None detected ✅
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Mermaid Format
|
|
151
|
+
```mermaid
|
|
152
|
+
graph TD
|
|
153
|
+
US0030[US-0030: Database schema ✅]
|
|
154
|
+
US0031[US-0031: User model ✅]
|
|
155
|
+
US0032[US-0032: Login endpoint 🟡]
|
|
156
|
+
US0033[US-0033: Login UI 🟢]
|
|
157
|
+
US0034[US-0034: JWT middleware ✅]
|
|
158
|
+
US0035[US-0035: User registration 🔵]
|
|
159
|
+
US0045[US-0045: Password reset ⚪]
|
|
160
|
+
|
|
161
|
+
US0030 --> US0031
|
|
162
|
+
US0030 --> US0035
|
|
163
|
+
US0031 --> US0032
|
|
164
|
+
US0031 --> US0034
|
|
165
|
+
US0032 --> US0033
|
|
166
|
+
US0032 --> US0045
|
|
167
|
+
|
|
168
|
+
US0040[US-0040: Stripe integration 🟢]
|
|
169
|
+
US0041[US-0041: Payment form ⚪]
|
|
170
|
+
US0042[US-0042: Webhook handler ⚪]
|
|
171
|
+
|
|
172
|
+
US0040 --> US0041
|
|
173
|
+
US0040 --> US0042
|
|
174
|
+
|
|
175
|
+
classDef done fill:#90EE90
|
|
176
|
+
classDef ready fill:#D3D3D3
|
|
177
|
+
classDef inProgress fill:#FFD700
|
|
178
|
+
classDef inReview fill:#87CEEB
|
|
179
|
+
classDef blocked fill:#FFCCCB
|
|
180
|
+
|
|
181
|
+
class US0030,US0031,US0034 done
|
|
182
|
+
class US0033,US0040 ready
|
|
183
|
+
class US0032 inProgress
|
|
184
|
+
class US0035 inReview
|
|
185
|
+
class US0041,US0042,US0045 blocked
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### GraphViz DOT Format
|
|
189
|
+
```dot
|
|
190
|
+
digraph dependencies {
|
|
191
|
+
rankdir=TB;
|
|
192
|
+
node [shape=box, style=rounded];
|
|
193
|
+
|
|
194
|
+
// Nodes
|
|
195
|
+
US0030 [label="US-0030\nDatabase schema", fillcolor="#90EE90", style=filled];
|
|
196
|
+
US0031 [label="US-0031\nUser model", fillcolor="#90EE90", style=filled];
|
|
197
|
+
US0032 [label="US-0032\nLogin endpoint", fillcolor="#FFD700", style=filled];
|
|
198
|
+
US0033 [label="US-0033\nLogin UI", fillcolor="#D3D3D3", style=filled];
|
|
199
|
+
US0045 [label="US-0045\nPassword reset", fillcolor="#FFCCCB", style=filled];
|
|
200
|
+
|
|
201
|
+
// Edges
|
|
202
|
+
US0030 -> US0031;
|
|
203
|
+
US0031 -> US0032;
|
|
204
|
+
US0032 -> US0033;
|
|
205
|
+
US0032 -> US0045;
|
|
206
|
+
|
|
207
|
+
// Critical path (bold red)
|
|
208
|
+
US0030 -> US0031 [color=red, penwidth=2];
|
|
209
|
+
US0031 -> US0032 [color=red, penwidth=2];
|
|
210
|
+
US0032 -> US0033 [color=red, penwidth=2];
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
DEPENDENCY ANALYSIS
|
|
215
|
+
|
|
216
|
+
### 1. Critical Path Detection
|
|
217
|
+
|
|
218
|
+
**Definition**: Longest path from any root story to any leaf story
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Find all root stories (no dependencies)
|
|
222
|
+
roots=$(find_stories_with_no_dependencies)
|
|
223
|
+
|
|
224
|
+
# For each root, calculate longest path
|
|
225
|
+
for root in $roots; do
|
|
226
|
+
longest_path=$(find_longest_path_from $root)
|
|
227
|
+
echo "$root: $longest_path"
|
|
228
|
+
done
|
|
229
|
+
|
|
230
|
+
# Critical path is the longest of all paths
|
|
231
|
+
critical_path=$(find_overall_longest_path)
|
|
232
|
+
critical_duration=$(sum_story_estimates_in_path $critical_path)
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Output**:
|
|
236
|
+
```
|
|
237
|
+
Critical Path Analysis
|
|
238
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
239
|
+
|
|
240
|
+
Longest Path: US-0030 → US-0031 → US-0032 → US-0033
|
|
241
|
+
|
|
242
|
+
Path Details:
|
|
243
|
+
┌──────────┬─────────────────────┬──────────┬────────┬──────────┐
|
|
244
|
+
│ Story │ Title │ Estimate │ Status │ Duration │
|
|
245
|
+
├──────────┼─────────────────────┼──────────┼────────┼──────────┤
|
|
246
|
+
│ US-0030 │ Database schema │ 2d │ ✅ Done│ 2d │
|
|
247
|
+
│ US-0031 │ User model │ 3d │ ✅ Done│ 2.5d │
|
|
248
|
+
│ US-0032 │ Login endpoint │ 2d │ 🟡 WIP │ 1.5d (so far)│
|
|
249
|
+
│ US-0033 │ Login UI │ 1d │ 🟢 Ready│ - │
|
|
250
|
+
└──────────┴─────────────────────┴──────────┴────────┴──────────┘
|
|
251
|
+
|
|
252
|
+
Total Estimated Duration: 8 days
|
|
253
|
+
Actual Duration So Far: 6 days
|
|
254
|
+
Remaining Work: 1-2 days (US-0032 + US-0033)
|
|
255
|
+
|
|
256
|
+
⚠️ US-0032 is on critical path and currently in-progress
|
|
257
|
+
- Any delay here delays entire epic completion
|
|
258
|
+
- Owner: AG-API
|
|
259
|
+
- Progress: ~75% complete (1.5d of 2d estimate used)
|
|
260
|
+
|
|
261
|
+
Recommendation:
|
|
262
|
+
- Prioritize US-0032 completion (critical bottleneck)
|
|
263
|
+
- Consider pairing to accelerate if delayed
|
|
264
|
+
- US-0033 is ready and should start immediately after US-0032
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### 2. Circular Dependency Detection
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Use depth-first search to detect cycles
|
|
271
|
+
function has_cycle() {
|
|
272
|
+
local story=$1
|
|
273
|
+
local path=$2
|
|
274
|
+
|
|
275
|
+
# If story already in path, we found a cycle
|
|
276
|
+
if [[ $path == *"$story"* ]]; then
|
|
277
|
+
echo "CYCLE DETECTED: $path → $story"
|
|
278
|
+
return 0
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
# Recursively check dependencies
|
|
282
|
+
for dep in $(get_dependencies $story); do
|
|
283
|
+
has_cycle $dep "$path → $story"
|
|
284
|
+
done
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
for story in all_stories; do
|
|
288
|
+
has_cycle $story ""
|
|
289
|
+
done
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Output**:
|
|
293
|
+
```
|
|
294
|
+
Circular Dependency Check
|
|
295
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
296
|
+
|
|
297
|
+
❌ CIRCULAR DEPENDENCY DETECTED!
|
|
298
|
+
|
|
299
|
+
Cycle 1:
|
|
300
|
+
US-0050 → US-0051 → US-0052 → US-0050
|
|
301
|
+
|
|
302
|
+
Details:
|
|
303
|
+
US-0050 (Auth service) depends on US-0051 (User service)
|
|
304
|
+
US-0051 (User service) depends on US-0052 (Session service)
|
|
305
|
+
US-0052 (Session service) depends on US-0050 (Auth service)
|
|
306
|
+
|
|
307
|
+
Impact: ⚠️ CRITICAL - These stories cannot be completed
|
|
308
|
+
|
|
309
|
+
Resolution:
|
|
310
|
+
1. Review architectural design (likely a design flaw)
|
|
311
|
+
2. Break circular dependency by introducing abstraction
|
|
312
|
+
3. Consider creating interface/contract story
|
|
313
|
+
4. Refactor one story to not depend on the cycle
|
|
314
|
+
|
|
315
|
+
Suggested Fix:
|
|
316
|
+
- Create US-0053: "Auth/User interface contract"
|
|
317
|
+
- Make US-0050, US-0051, US-0052 all depend on US-0053
|
|
318
|
+
- US-0053 becomes new foundation story
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### 3. Blocking Story Impact
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# For each story, find what it blocks
|
|
325
|
+
for story in all_stories; do
|
|
326
|
+
blocked_stories=$(find_stories_depending_on $story)
|
|
327
|
+
count=${#blocked_stories[@]}
|
|
328
|
+
|
|
329
|
+
if [ $count -gt 0 ]; then
|
|
330
|
+
status=$(get_story_status $story)
|
|
331
|
+
echo "$story ($status) blocks $count stories: ${blocked_stories[@]}"
|
|
332
|
+
|
|
333
|
+
# Calculate impact score
|
|
334
|
+
impact=$(calculate_impact_score $story)
|
|
335
|
+
priority=$(calculate_priority $story $impact)
|
|
336
|
+
echo " Impact score: $impact/10, Priority: $priority"
|
|
337
|
+
fi
|
|
338
|
+
done
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Output**:
|
|
342
|
+
```
|
|
343
|
+
Blocking Story Impact
|
|
344
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
345
|
+
|
|
346
|
+
High Impact Blockers:
|
|
347
|
+
┌──────────┬────────────────────┬────────┬─────────┬────────────┬──────────┐
|
|
348
|
+
│ Story │ Title │ Status │ Blocks │ Impact │ Priority │
|
|
349
|
+
├──────────┼────────────────────┼────────┼─────────┼────────────┼──────────┤
|
|
350
|
+
│ US-0040 │ Stripe integration │ 🟢 Ready│ 2 stories│ 9/10 ⚠️ │ P0 │
|
|
351
|
+
│ │ │ │ US-0041 │ (blocks │ │
|
|
352
|
+
│ │ │ │ US-0042 │ payment │ │
|
|
353
|
+
│ │ │ │ │ epic) │ │
|
|
354
|
+
├──────────┼────────────────────┼────────┼─────────┼────────────┼──────────┤
|
|
355
|
+
│ US-0032 │ Login endpoint │ 🟡 WIP │ 2 stories│ 8/10 ⚠️ │ P0 │
|
|
356
|
+
│ │ │ │ US-0033 │ (critical │ │
|
|
357
|
+
│ │ │ │ US-0045 │ path) │ │
|
|
358
|
+
├──────────┼────────────────────┼────────┼─────────┼────────────┼──────────┤
|
|
359
|
+
│ US-0030 │ Database schema │ ✅ Done│ 2 stories│ 7/10 │ - │
|
|
360
|
+
│ │ │ │ US-0031 │ (already │ │
|
|
361
|
+
│ │ │ │ US-0035 │ complete) │ │
|
|
362
|
+
└──────────┴────────────────────┴────────┴─────────┴────────────┴──────────┘
|
|
363
|
+
|
|
364
|
+
⚠️ Action Required:
|
|
365
|
+
1. US-0040: Start immediately (blocks 2 stories, epic stalled)
|
|
366
|
+
2. US-0032: Monitor closely (in-progress, blocks critical path)
|
|
367
|
+
|
|
368
|
+
Recommendations:
|
|
369
|
+
- Assign US-0040 to available agent ASAP
|
|
370
|
+
- Consider pairing on US-0032 if progress slows
|
|
371
|
+
- Review US-0041 and US-0042 to verify they truly need US-0040
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 4. Parallel Work Opportunities
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# Find stories that can be worked on in parallel (no dependencies)
|
|
378
|
+
independent_stories=$(find_stories_with_no_dependencies_or_dependencies_satisfied)
|
|
379
|
+
|
|
380
|
+
# Group by epic for clarity
|
|
381
|
+
for epic in epics; do
|
|
382
|
+
parallel_stories=$(filter_by_epic $independent_stories $epic)
|
|
383
|
+
echo "$epic: ${#parallel_stories[@]} stories can be started now"
|
|
384
|
+
done
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Output**:
|
|
388
|
+
```
|
|
389
|
+
Parallel Work Opportunities
|
|
390
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
391
|
+
|
|
392
|
+
Stories That Can Start Now (No Blockers):
|
|
393
|
+
|
|
394
|
+
EP-0010: Authentication
|
|
395
|
+
✅ US-0033 (Login UI) - AG-UI available
|
|
396
|
+
✅ US-0035 (Registration) - In review (almost done)
|
|
397
|
+
|
|
398
|
+
EP-0011: Payment Processing
|
|
399
|
+
✅ US-0040 (Stripe integration) - AG-API available
|
|
400
|
+
⚠️ HIGH PRIORITY: Blocks 2 other stories
|
|
401
|
+
|
|
402
|
+
EP-0012: User Dashboard
|
|
403
|
+
✅ US-0050 (Dashboard layout) - AG-UI available
|
|
404
|
+
✅ US-0051 (Profile component) - AG-UI available
|
|
405
|
+
|
|
406
|
+
Total: 5 stories ready to start (3 agents available)
|
|
407
|
+
|
|
408
|
+
Recommended Assignments:
|
|
409
|
+
AG-UI: US-0033 or US-0050 (both ready, pick by priority)
|
|
410
|
+
AG-API: US-0040 (HIGH PRIORITY - unblocks payment epic)
|
|
411
|
+
AG-CI: (No stories ready in their domain)
|
|
412
|
+
|
|
413
|
+
⚡ Optimize throughput: Start 2-3 stories in parallel across agents
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
GANTT CHART GENERATION
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
# Generate ASCII Gantt chart based on dependencies
|
|
420
|
+
for story in stories_in_dependency_order; do
|
|
421
|
+
earliest_start=$(calculate_earliest_start $story)
|
|
422
|
+
duration=$(get_estimate $story)
|
|
423
|
+
earliest_end=$((earliest_start + duration))
|
|
424
|
+
|
|
425
|
+
echo "$story: Start day $earliest_start, End day $earliest_end"
|
|
426
|
+
print_gantt_bar $story $earliest_start $duration
|
|
427
|
+
done
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Output**:
|
|
431
|
+
```
|
|
432
|
+
Gantt Chart (Dependency-Based Schedule)
|
|
433
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
434
|
+
|
|
435
|
+
Timeline (days):
|
|
436
|
+
0 2 4 6 8 10 12 14 16
|
|
437
|
+
│────│────│────│────│────│────│────│────│
|
|
438
|
+
|
|
439
|
+
US-0030 ████░░ (2d) ✅ Done
|
|
440
|
+
US-0031 ██████░░ (3d) ✅ Done
|
|
441
|
+
US-0035 ██████░░ (3d) 🔵 In Review
|
|
442
|
+
US-0032 ████░░ (2d) 🟡 In Progress
|
|
443
|
+
US-0034 ████░░ (2d) ✅ Done
|
|
444
|
+
US-0033 ██░░ (1d) 🟢 Ready
|
|
445
|
+
US-0045 ████░░ (2d) ⚪ Blocked
|
|
446
|
+
|
|
447
|
+
US-0040 ████░░ (2d) 🟢 Ready (parallel)
|
|
448
|
+
US-0041 ██░░ (1d) ⚪ Blocked
|
|
449
|
+
US-0042 ██████░░ (3d) ⚪ Blocked
|
|
450
|
+
|
|
451
|
+
Legend:
|
|
452
|
+
█ Completed/In Progress
|
|
453
|
+
░ Planned
|
|
454
|
+
⚠️ Critical Path Stories: US-0030, US-0031, US-0032, US-0033
|
|
455
|
+
|
|
456
|
+
Insights:
|
|
457
|
+
- EP-0010 completion: Day 9 (if no delays)
|
|
458
|
+
- EP-0011 completion: Day 8 (if US-0040 starts now)
|
|
459
|
+
- Parallelism opportunity: US-0040 can run parallel to US-0032
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
DEPENDENCY HEALTH SCORE
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
score=100
|
|
466
|
+
|
|
467
|
+
# Deduct points for issues
|
|
468
|
+
circular_deps=$(count_circular_dependencies)
|
|
469
|
+
score=$((score - circular_deps * 20)) # -20 per circular dep
|
|
470
|
+
|
|
471
|
+
high_impact_blockers=$(count_high_impact_blockers)
|
|
472
|
+
score=$((score - high_impact_blockers * 10)) # -10 per high-impact blocker
|
|
473
|
+
|
|
474
|
+
long_chains=$(count_dependency_chains_over_length 5)
|
|
475
|
+
score=$((score - long_chains * 5)) # -5 per long chain
|
|
476
|
+
|
|
477
|
+
echo "Dependency Health Score: $score/100"
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
**Output**:
|
|
481
|
+
```
|
|
482
|
+
Dependency Health Score
|
|
483
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
484
|
+
|
|
485
|
+
Score: 75/100 🟡 Fair
|
|
486
|
+
|
|
487
|
+
Breakdown:
|
|
488
|
+
Base score: 100
|
|
489
|
+
- Circular dependencies: -0 (0 found) ✅
|
|
490
|
+
- High-impact blockers: -20 (2 found: US-0040, US-0032) ⚠️
|
|
491
|
+
- Long dependency chains: -5 (1 chain of 4 stories)
|
|
492
|
+
|
|
493
|
+
Grade: C+ (Fair)
|
|
494
|
+
|
|
495
|
+
Recommendations:
|
|
496
|
+
1. Start US-0040 immediately (high-impact blocker)
|
|
497
|
+
2. Monitor US-0032 progress (critical path)
|
|
498
|
+
3. Consider breaking up long chains into smaller increments
|
|
499
|
+
|
|
500
|
+
To improve score to 90+:
|
|
501
|
+
- Resolve high-impact blockers
|
|
502
|
+
- Break dependency chains <3 stories
|
|
503
|
+
- Ensure parallel work opportunities exist
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
USAGE EXAMPLES
|
|
507
|
+
|
|
508
|
+
### Show all dependencies
|
|
509
|
+
```bash
|
|
510
|
+
/AgileFlow:dependencies
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### Specific epic dependencies
|
|
514
|
+
```bash
|
|
515
|
+
/AgileFlow:dependencies EPIC=EP-0010
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### Specific story dependencies
|
|
519
|
+
```bash
|
|
520
|
+
/AgileFlow:dependencies STORY=US-0032
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### Only critical path analysis
|
|
524
|
+
```bash
|
|
525
|
+
/AgileFlow:dependencies ANALYSIS=critical-path
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### Export as Mermaid diagram
|
|
529
|
+
```bash
|
|
530
|
+
/AgileFlow:dependencies FORMAT=mermaid > dependencies.mmd
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
### Check for circular dependencies
|
|
534
|
+
```bash
|
|
535
|
+
/AgileFlow:dependencies ANALYSIS=circular
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
INTEGRATION WITH OTHER COMMANDS
|
|
539
|
+
|
|
540
|
+
- Before `/AgileFlow:board`: Run `/AgileFlow:dependencies` to understand blockers
|
|
541
|
+
- After `/AgileFlow:story-new`: Run `/AgileFlow:dependencies` to visualize impact
|
|
542
|
+
- In `/AgileFlow:babysit`: Check `/AgileFlow:dependencies` before starting work
|
|
543
|
+
- With `/AgileFlow:metrics`: Correlate cycle time with dependency depth
|
|
544
|
+
|
|
545
|
+
RULES
|
|
546
|
+
- Parse dependencies from story frontmatter first (authoritative)
|
|
547
|
+
- Fall back to bus/log.jsonl for implicit dependencies
|
|
548
|
+
- Detect and flag circular dependencies as errors
|
|
549
|
+
- Highlight critical path stories for priority
|
|
550
|
+
- Use consistent color coding across all formats
|
|
551
|
+
- Export formats should be copy-paste ready
|
|
552
|
+
- Always show actionable recommendations
|
|
553
|
+
|
|
554
|
+
OUTPUT
|
|
555
|
+
- ASCII dependency graph with status indicators
|
|
556
|
+
- Critical path analysis with duration estimates
|
|
557
|
+
- Circular dependency warnings (if any)
|
|
558
|
+
- Blocking story impact analysis
|
|
559
|
+
- Parallel work opportunities
|
|
560
|
+
- Optional: Mermaid/GraphViz export for documentation
|