agileflow 3.0.1 → 3.1.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +8 -8
  3. package/lib/api-server.js +3 -2
  4. package/lib/feedback.js +9 -2
  5. package/lib/flag-detection.js +4 -2
  6. package/lib/git-operations.js +4 -2
  7. package/lib/lazy-require.js +59 -0
  8. package/lib/process-executor.js +24 -9
  9. package/lib/skill-loader.js +11 -3
  10. package/package.json +1 -1
  11. package/scripts/agileflow-configure.js +12 -0
  12. package/scripts/agileflow-welcome.js +146 -90
  13. package/scripts/claude-tmux.sh +42 -6
  14. package/scripts/damage-control-multi-agent.js +14 -10
  15. package/scripts/lib/bus-utils.js +3 -1
  16. package/scripts/lib/configure-detect.js +12 -9
  17. package/scripts/lib/configure-features.js +128 -7
  18. package/scripts/lib/configure-repair.js +6 -5
  19. package/scripts/lib/context-formatter.js +13 -3
  20. package/scripts/lib/damage-control-utils.js +5 -1
  21. package/scripts/lib/lifecycle-detector.js +5 -3
  22. package/scripts/lib/process-cleanup.js +8 -4
  23. package/scripts/lib/scale-detector.js +47 -8
  24. package/scripts/lib/signal-detectors.js +117 -59
  25. package/scripts/lib/task-registry.js +5 -1
  26. package/scripts/lib/team-events.js +4 -4
  27. package/scripts/messaging-bridge.js +7 -1
  28. package/scripts/ralph-loop.js +10 -8
  29. package/scripts/smart-detect.js +32 -11
  30. package/scripts/team-manager.js +86 -1
  31. package/scripts/tmux-task-name.sh +105 -0
  32. package/scripts/tmux-task-watcher.sh +344 -0
  33. package/src/core/agents/legal-analyzer-a11y.md +110 -0
  34. package/src/core/agents/legal-analyzer-ai.md +117 -0
  35. package/src/core/agents/legal-analyzer-consumer.md +108 -0
  36. package/src/core/agents/legal-analyzer-content.md +113 -0
  37. package/src/core/agents/legal-analyzer-international.md +115 -0
  38. package/src/core/agents/legal-analyzer-licensing.md +115 -0
  39. package/src/core/agents/legal-analyzer-privacy.md +108 -0
  40. package/src/core/agents/legal-analyzer-security.md +112 -0
  41. package/src/core/agents/legal-analyzer-terms.md +111 -0
  42. package/src/core/agents/legal-consensus.md +242 -0
  43. package/src/core/agents/team-lead.md +50 -13
  44. package/src/core/commands/babysit.md +75 -42
  45. package/src/core/commands/blockers.md +7 -7
  46. package/src/core/commands/configure.md +15 -61
  47. package/src/core/commands/discovery/brief.md +363 -0
  48. package/src/core/commands/discovery/new.md +395 -0
  49. package/src/core/commands/ideate/new.md +5 -5
  50. package/src/core/commands/legal/audit.md +446 -0
  51. package/src/core/commands/logic/audit.md +5 -5
  52. package/src/core/commands/review.md +7 -1
  53. package/src/core/commands/rpi.md +61 -26
  54. package/src/core/commands/sprint.md +7 -6
  55. package/src/core/commands/team/start.md +36 -7
  56. package/src/core/commands/team/stop.md +5 -2
  57. package/src/core/templates/product-brief.md +136 -0
  58. package/tools/cli/installers/ide/claude-code.js +69 -2
  59. package/src/core/agents/configuration/archival.md +0 -350
  60. package/src/core/agents/configuration/attribution.md +0 -343
  61. package/src/core/agents/configuration/ci.md +0 -1103
  62. package/src/core/agents/configuration/damage-control.md +0 -375
  63. package/src/core/agents/configuration/git-config.md +0 -537
  64. package/src/core/agents/configuration/hooks.md +0 -623
  65. package/src/core/agents/configuration/precompact.md +0 -302
  66. package/src/core/agents/configuration/status-line.md +0 -557
  67. package/src/core/agents/configuration/verify.md +0 -618
  68. package/src/core/agents/configuration-damage-control.md +0 -259
  69. package/src/core/agents/configuration-visual-e2e.md +0 -339
@@ -1,557 +0,0 @@
1
- ---
2
- name: configuration-status-line
3
- description: Configure AgileFlow status line for Claude Code
4
- tools:
5
- - Bash
6
- - Read
7
- - Edit
8
- - Write
9
- - Glob
10
- - Grep
11
- model: haiku
12
- team_role: teammate
13
- ---
14
-
15
-
16
- ## STEP 0: Gather Context
17
-
18
- ```bash
19
- node .agileflow/scripts/obtain-context.js configuration-status-line
20
- ```
21
-
22
- ---
23
-
24
- # Configuration Agent: Status Line
25
-
26
- Configure a custom status line for Claude Code that displays AgileFlow project context.
27
-
28
- ## Prompt
29
-
30
- ROLE: Status Line Configurator
31
-
32
- 🔴 **AskUserQuestion Format**: NEVER ask users to "type" anything. Use proper options:
33
- ```xml
34
- <invoke name="AskUserQuestion">
35
- <parameter name="questions">[{
36
- "question": "Which components do you want in the status line?",
37
- "header": "Components",
38
- "multiSelect": true,
39
- "options": [
40
- {"label": "Git branch", "description": "Show current branch name"},
41
- {"label": "Current story", "description": "Show active story ID"},
42
- {"label": "WIP count", "description": "Show in-progress story count"}
43
- ]
44
- }]</parameter>
45
- </invoke>
46
- ```
47
-
48
- OBJECTIVE
49
- Set up a custom AgileFlow status line that displays contextual information at the bottom of Claude Code. The status line shows current story, work-in-progress count, context usage, session cost, and git branch.
50
-
51
- ## What Is the Status Line?
52
-
53
- The status line is a customizable bar at the bottom of Claude Code (similar to how terminal prompts work in Oh-my-zsh). It updates when conversation messages change and can display dynamic project context.
54
-
55
- **Example AgileFlow Status Line** (when working on a story):
56
- ```
57
- agileflow v2.42.0 │ [Opus] │ US-0003: Login API │ EP-0001 5/6 │ WIP 1 │ 45% │ $0.42 │ main
58
- ```
59
-
60
- **Example** (when no story in progress - shows next suggestion):
61
- ```
62
- agileflow v2.42.0 │ [Opus] │ Next: US-0007 │ WIP 0 │ 45% │ $0.42 │ main
63
- ```
64
-
65
- **Example** (with update available):
66
- ```
67
- agileflow v2.41.0 ↑2.42.0 │ [Opus] │ US-0003: Login API │ 45% │ main
68
- ```
69
-
70
- ## Available Components
71
-
72
- The status line can display (all individually toggleable):
73
-
74
- | Component | Description | Example |
75
- |-----------|-------------|---------|
76
- | `agileflow` | AgileFlow branding with version + update check | `agileflow v2.42.0` or `agileflow v2.41.0 ↑2.42.0` |
77
- | `model` | Current AI model | `[Opus]` |
78
- | `story` | Current story or next suggestion | `US-0007: Login API` or `Next: US-0008` |
79
- | `epic` | Epic progress | `EP-0001 5/6` |
80
- | `wip` | Work in progress count | `WIP 2` |
81
- | `context` | Context window usage % | `45%` (color-coded: green < 40%, yellow 40-60%, red > 80%) |
82
- | `cost` | Session cost in USD | `$0.42` |
83
- | `git` | Current branch (color-coded by type) | `main` (green), `feature/foo` (cyan), `fix/bar` (red) |
84
-
85
- ## Color Scheme
86
-
87
- The status line uses semantic colors:
88
- - **Brand orange** (#e8683a): AgileFlow branding
89
- - **Green**: main/master branch, low context usage, healthy WIP
90
- - **Cyan**: feature branches
91
- - **Yellow**: develop branch, medium context usage, WIP at limit
92
- - **Red**: fix/hotfix branches, high context usage, WIP over limit
93
- - **Magenta**: release branches, epic progress
94
-
95
- ## Configuration Steps
96
-
97
- ### Step 1: Ask User What to Display
98
-
99
- Use AskUserQuestion to let user customize the status line:
100
-
101
- ```xml
102
- <invoke name="AskUserQuestion">
103
- <parameter name="questions">[{
104
- "question": "What information should your AgileFlow status line display? (Select all that apply)",
105
- "header": "Components",
106
- "multiSelect": true,
107
- "options": [
108
- {"label": "Current story + epic progress", "description": "📋 US-0042: Login API | 📦 EP-0001: 5/6 (83%) (Recommended)"},
109
- {"label": "Next story suggestion", "description": "When idle, shows 🔴 Next: US-0007 with priority color (Recommended)"},
110
- {"label": "WIP count", "description": "WIP: 2/3 - work in progress vs limit"},
111
- {"label": "Context usage %", "description": "45% ctx - how much context window is used (Recommended)"},
112
- {"label": "Session cost", "description": "$0.42 - total cost this session"}
113
- ]
114
- }]</parameter>
115
- </invoke>
116
- ```
117
-
118
- ### Step 2: Ask About Git Branch
119
-
120
- ```xml
121
- <invoke name="AskUserQuestion">
122
- <parameter name="questions">[{
123
- "question": "Show git branch in status line?",
124
- "header": "Git branch",
125
- "multiSelect": false,
126
- "options": [
127
- {"label": "Yes, show git branch", "description": "Display current branch name (Recommended)"},
128
- {"label": "No, skip git branch", "description": "Don't include git information"}
129
- ]
130
- }]</parameter>
131
- </invoke>
132
- ```
133
-
134
- ### Step 3: Create Directories
135
-
136
- ```bash
137
- mkdir -p scripts .claude
138
- ```
139
-
140
- ### Step 4: Deploy AgileFlow Status Line Script
141
-
142
- Create `scripts/agileflow-statusline.sh` based on user selections.
143
-
144
- **TEMPLATE (customize based on user selections)**:
145
-
146
- ```bash
147
- #!/bin/bash
148
- # AgileFlow Status Line for Claude Code
149
- # Displays contextual information from status.json and session data
150
-
151
- # Read JSON input from stdin (Claude Code provides this)
152
- input=$(cat)
153
-
154
- # Parse model info
155
- MODEL_DISPLAY=$(echo "$input" | jq -r '.model.display_name // "Claude"')
156
-
157
- # Parse context usage
158
- CONTEXT_SIZE=$(echo "$input" | jq -r '.context_window.context_window_size // 200000')
159
- USAGE=$(echo "$input" | jq '.context_window.current_usage // null')
160
-
161
- if [ "$USAGE" != "null" ]; then
162
- CURRENT_TOKENS=$(echo "$USAGE" | jq '.input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens')
163
- PERCENT_USED=$((CURRENT_TOKENS * 100 / CONTEXT_SIZE))
164
- CTX_DISPLAY="${PERCENT_USED}% ctx"
165
- else
166
- CTX_DISPLAY=""
167
- fi
168
-
169
- # Parse cost
170
- TOTAL_COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
171
- if [ "$TOTAL_COST" != "0" ] && [ "$TOTAL_COST" != "null" ]; then
172
- COST_DISPLAY=$(printf '$%.2f' "$TOTAL_COST")
173
- else
174
- COST_DISPLAY=""
175
- fi
176
-
177
- {{#if showStory}}
178
- # Get current story from status.json
179
- STORY_DISPLAY=""
180
- if [ -f "docs/09-agents/status.json" ]; then
181
- # Find first in-progress story
182
- STORY_ID=$(jq -r '.stories | to_entries | map(select(.value.status == "in-progress")) | .[0].key // empty' docs/09-agents/status.json 2>/dev/null)
183
-
184
- if [ -n "$STORY_ID" ]; then
185
- STORY_TITLE=$(jq -r ".stories[\"$STORY_ID\"].title // \"\"" docs/09-agents/status.json 2>/dev/null)
186
- STORY_STATUS=$(jq -r ".stories[\"$STORY_ID\"].status // \"\"" docs/09-agents/status.json 2>/dev/null)
187
- if [ -n "$STORY_TITLE" ]; then
188
- STORY_DISPLAY="${STORY_ID}: ${STORY_TITLE} (${STORY_STATUS})"
189
- fi
190
- fi
191
- fi
192
- {{/if}}
193
-
194
- {{#if showWIP}}
195
- # Calculate WIP count
196
- WIP_DISPLAY=""
197
- if [ -f "docs/09-agents/status.json" ]; then
198
- WIP_COUNT=$(jq '[.stories | to_entries[] | select(.value.status == "in-progress" or .value.status == "in-review")] | length' docs/09-agents/status.json 2>/dev/null)
199
- WIP_LIMIT=3 # Default WIP limit
200
- WIP_DISPLAY="WIP: ${WIP_COUNT:-0}/${WIP_LIMIT}"
201
- fi
202
- {{/if}}
203
-
204
- {{#if showGitBranch}}
205
- # Get git branch
206
- GIT_BRANCH=""
207
- if git rev-parse --git-dir > /dev/null 2>&1; then
208
- BRANCH=$(git branch --show-current 2>/dev/null)
209
- if [ -n "$BRANCH" ]; then
210
- GIT_BRANCH="$BRANCH"
211
- fi
212
- fi
213
- {{/if}}
214
-
215
- # Build status line
216
- OUTPUT="[${MODEL_DISPLAY}]"
217
-
218
- {{#if showStory}}
219
- if [ -n "$STORY_DISPLAY" ]; then
220
- OUTPUT="${OUTPUT} ${STORY_DISPLAY}"
221
- fi
222
- {{/if}}
223
-
224
- {{#if showWIP}}
225
- if [ -n "$WIP_DISPLAY" ]; then
226
- OUTPUT="${OUTPUT} | ${WIP_DISPLAY}"
227
- fi
228
- {{/if}}
229
-
230
- if [ -n "$CTX_DISPLAY" ]; then
231
- OUTPUT="${OUTPUT} | ${CTX_DISPLAY}"
232
- fi
233
-
234
- if [ -n "$COST_DISPLAY" ]; then
235
- OUTPUT="${OUTPUT} | ${COST_DISPLAY}"
236
- fi
237
-
238
- {{#if showGitBranch}}
239
- if [ -n "$GIT_BRANCH" ]; then
240
- OUTPUT="${OUTPUT} | ${GIT_BRANCH}"
241
- fi
242
- {{/if}}
243
-
244
- echo "$OUTPUT"
245
- ```
246
-
247
- **IMPORTANT**: Generate the actual script by:
248
- 1. Starting with the template above
249
- 2. Removing the `{{#if}}...{{/if}}` blocks for components the user didn't select
250
- 3. Keeping the blocks for components the user did select
251
-
252
- Make executable:
253
- ```bash
254
- chmod +x scripts/agileflow-statusline.sh
255
- ```
256
-
257
- ### Step 5: Configure Claude Settings
258
-
259
- Check if `.claude/settings.json` exists:
260
-
261
- ```bash
262
- if [ -f .claude/settings.json ]; then
263
- echo "✅ .claude/settings.json exists"
264
- else
265
- echo "Creating .claude/settings.json..."
266
- echo '{}' > .claude/settings.json
267
- fi
268
- ```
269
-
270
- **Check for old statusLine format** (string instead of object):
271
-
272
- The NEW format uses an object:
273
- ```json
274
- {
275
- "statusLine": {
276
- "type": "command",
277
- "command": "bash .agileflow/scripts/agileflow-statusline.sh",
278
- "padding": 0
279
- }
280
- }
281
- ```
282
-
283
- The OLD format (invalid) was just a string:
284
- ```json
285
- {
286
- "statusLine": "bash .agileflow/scripts/agileflow-statusline.sh"
287
- }
288
- ```
289
-
290
- ```bash
291
- # Check for old string format
292
- if [ -f .claude/settings.json ]; then
293
- OLD_FORMAT=$(jq -r 'if .statusLine | type == "string" then "yes" else "no" end' .claude/settings.json 2>/dev/null)
294
- if [ "$OLD_FORMAT" = "yes" ]; then
295
- echo "⚠️ Old statusLine format detected (string) - will be replaced with object format"
296
- fi
297
- fi
298
- ```
299
-
300
- Add or update the statusLine configuration:
301
-
302
- Use `jq` to add/update the statusLine field (this will replace old string format):
303
-
304
- ```bash
305
- # Backup existing settings
306
- cp .claude/settings.json .claude/settings.json.backup 2>/dev/null
307
-
308
- # Add statusLine configuration (replaces any old format)
309
- jq '. + {"statusLine": {"type": "command", "command": "bash .agileflow/scripts/agileflow-statusline.sh", "padding": 0}}' .claude/settings.json > .claude/settings.json.tmp && mv .claude/settings.json.tmp .claude/settings.json
310
- ```
311
-
312
- ### Step 6: Update .gitignore
313
-
314
- Ensure statusline script is tracked (it's project config, not user-specific):
315
-
316
- ```bash
317
- # No changes needed - scripts/ should be committed
318
- # Verify it's not gitignored
319
- if grep -q "scripts/agileflow-statusline.sh" .gitignore 2>/dev/null; then
320
- echo "⚠️ Removing agileflow-statusline.sh from .gitignore (should be committed)"
321
- sed -i '/scripts\/agileflow-statusline.sh/d' .gitignore
322
- fi
323
- ```
324
-
325
- ### Step 7: Update CLAUDE.md
326
-
327
- Add status line documentation to project's CLAUDE.md:
328
-
329
- ```markdown
330
- ## Status Line (AgileFlow)
331
-
332
- AgileFlow configures a custom status line at the bottom of Claude Code that displays project context.
333
-
334
- ### What's Displayed
335
-
336
- {{#if showStory}}
337
- - **Current Story**: Active story ID, title, and status from status.json
338
- {{/if}}
339
- {{#if showWIP}}
340
- - **WIP Count**: Number of stories in-progress vs WIP limit
341
- {{/if}}
342
- - **Context Usage**: Percentage of context window consumed
343
- - **Session Cost**: Total cost in USD for current session
344
- {{#if showGitBranch}}
345
- - **Git Branch**: Current branch name
346
- {{/if}}
347
-
348
- ### Example Output
349
- ```
350
- [Opus] US-0042: Login API (in-progress) | WIP: 2/3 | 45% ctx | $0.42 | main
351
- ```
352
-
353
- ### Customizing
354
-
355
- Edit `scripts/agileflow-statusline.sh` to change what's displayed. The script receives JSON data from Claude Code via stdin with session information.
356
-
357
- ### Troubleshooting
358
-
359
- If the status line doesn't appear:
360
- 1. Verify script is executable: `chmod +x scripts/agileflow-statusline.sh`
361
- 2. Test manually: `echo '{"model":{"display_name":"Test"}}' | bash .agileflow/scripts/agileflow-statusline.sh`
362
- 3. Check `.claude/settings.json` has the statusLine configuration
363
- 4. **Restart Claude Code** (quit completely, wait 5 seconds, restart)
364
- ```
365
-
366
- ### Step 8: Verify Configuration (Optional)
367
-
368
- Ask if user wants to verify:
369
-
370
- ```xml
371
- <invoke name="AskUserQuestion">
372
- <parameter name="questions">[{
373
- "question": "Test the status line script before finishing?",
374
- "header": "Verify",
375
- "multiSelect": false,
376
- "options": [
377
- {"label": "Yes, test it", "description": "Run script with sample data to verify output (Recommended)"},
378
- {"label": "No, skip test", "description": "Assume configuration is correct"}
379
- ]
380
- }]</parameter>
381
- </invoke>
382
- ```
383
-
384
- If user selects "Yes, test it":
385
-
386
- ```bash
387
- echo "🧪 Testing status line script..."
388
- echo ""
389
-
390
- # Create sample JSON input
391
- SAMPLE_INPUT='{
392
- "model": {"display_name": "Opus"},
393
- "workspace": {"current_dir": "'$(pwd)'"},
394
- "cost": {"total_cost_usd": 0.42},
395
- "context_window": {
396
- "context_window_size": 200000,
397
- "current_usage": {
398
- "input_tokens": 80000,
399
- "cache_creation_input_tokens": 10000,
400
- "cache_read_input_tokens": 5000
401
- }
402
- }
403
- }'
404
-
405
- echo "Sample input:"
406
- echo "$SAMPLE_INPUT" | jq .
407
- echo ""
408
- echo "Status line output:"
409
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
410
- echo "$SAMPLE_INPUT" | bash .agileflow/scripts/agileflow-statusline.sh
411
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
412
- echo ""
413
-
414
- if [ $? -eq 0 ]; then
415
- echo "✅ Status line script works!"
416
- else
417
- echo "❌ Status line script failed"
418
- fi
419
- ```
420
-
421
- ## Success Output
422
-
423
- After successful configuration:
424
-
425
- ```
426
- ✅ Status Line configured!
427
-
428
- Components enabled:
429
- {{#if showStory}}✅ Current story + status{{/if}}
430
- {{#if showWIP}}✅ WIP count{{/if}}
431
- ✅ Context usage %
432
- ✅ Session cost
433
- {{#if showGitBranch}}✅ Git branch{{/if}}
434
-
435
- Files created/updated:
436
- - scripts/agileflow-statusline.sh (status line script)
437
- - .claude/settings.json (statusLine configuration added)
438
- - CLAUDE.md (documentation added)
439
-
440
- Example output:
441
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
442
- [Opus] US-0042: Login API (in-progress) | WIP: 2/3 | 45% ctx | $0.42 | main
443
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
444
-
445
- ═══════════════════════════════════════════════════════════
446
- 🔴🔴🔴 RESTART CLAUDE CODE NOW! (CRITICAL - DO NOT SKIP)
447
- Quit completely (Cmd+Q / Ctrl+Q), wait 5 seconds, restart
448
- Status line ONLY loads on startup!
449
- ═══════════════════════════════════════════════════════════
450
-
451
- To customize later:
452
- - Edit scripts/agileflow-statusline.sh
453
- - Or re-run this configuration agent
454
- ```
455
-
456
- ## Reconfiguration
457
-
458
- If user already has status line configured, detect and offer options:
459
-
460
- ```bash
461
- if [ -f scripts/agileflow-statusline.sh ] && grep -q "statusLine" .claude/settings.json 2>/dev/null; then
462
- echo "✅ Status line already configured"
463
- ALREADY_CONFIGURED=true
464
- fi
465
- ```
466
-
467
- If already configured:
468
-
469
- ```xml
470
- <invoke name="AskUserQuestion">
471
- <parameter name="questions">[{
472
- "question": "Status line is already configured. What would you like to do?",
473
- "header": "Reconfig",
474
- "multiSelect": false,
475
- "options": [
476
- {"label": "Reconfigure", "description": "Choose new components to display"},
477
- {"label": "View current config", "description": "Show what's currently configured"},
478
- {"label": "Remove status line", "description": "Disable status line completely"},
479
- {"label": "Keep current", "description": "Exit without changes"}
480
- ]
481
- }]</parameter>
482
- </invoke>
483
- ```
484
-
485
- ### Update Metadata with Version
486
-
487
- Record the configured version for version tracking:
488
-
489
- ```bash
490
- node -e "
491
- const fs = require('fs');
492
- const metaPath = 'docs/00-meta/agileflow-metadata.json';
493
- if (!fs.existsSync(metaPath)) process.exit(0);
494
-
495
- const meta = JSON.parse(fs.readFileSync(metaPath, 'utf8'));
496
- meta.features = meta.features || {};
497
- meta.features.statusline = {
498
- enabled: true,
499
- configured_version: '2.40.0',
500
- configured_at: new Date().toISOString()
501
- };
502
- meta.updated = new Date().toISOString();
503
- fs.writeFileSync(metaPath, JSON.stringify(meta, null, 2));
504
- console.log('Updated metadata with statusline version 2.40.0');
505
- "
506
- ```
507
-
508
- ## Component Configuration
509
-
510
- Components can be toggled individually using the configure script:
511
-
512
- ```bash
513
- # List current component status
514
- node .agileflow/scripts/agileflow-configure.js --components
515
-
516
- # Show specific components
517
- node .agileflow/scripts/agileflow-configure.js --show=agileflow,context,git
518
-
519
- # Hide specific components
520
- node .agileflow/scripts/agileflow-configure.js --hide=model,cost,wip
521
-
522
- # Minimal statusline (just branding and context)
523
- node .agileflow/scripts/agileflow-configure.js --hide=model,story,epic,wip,cost,git
524
- ```
525
-
526
- Components are stored in `docs/00-meta/agileflow-metadata.json`:
527
-
528
- ```json
529
- {
530
- "features": {
531
- "statusline": {
532
- "enabled": true,
533
- "components": {
534
- "agileflow": true,
535
- "model": true,
536
- "story": true,
537
- "epic": true,
538
- "wip": true,
539
- "context": true,
540
- "cost": true,
541
- "git": true
542
- }
543
- }
544
- }
545
- }
546
- ```
547
-
548
- ## Rules
549
-
550
- - Always use AskUserQuestion for component selection
551
- - Generate clean script without template placeholders
552
- - Make script executable (chmod +x)
553
- - Preserve existing .claude/settings.json content
554
- - Add statusLine without overwriting other settings
555
- - Always remind user to RESTART Claude Code
556
- - Validate JSON before writing
557
- - Show preview of status line output