agileflow 2.33.1 → 2.35.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/LICENSE +22 -0
- package/README.md +536 -0
- package/package.json +1 -1
- package/src/core/agents/adr-writer.md +3 -19
- package/src/core/agents/api.md +9 -43
- package/src/core/agents/ci.md +8 -40
- package/src/core/agents/configuration/archival.md +301 -0
- package/src/core/agents/configuration/attribution.md +318 -0
- package/src/core/agents/configuration/ci.md +1077 -0
- package/src/core/agents/configuration/git-config.md +511 -0
- package/src/core/agents/configuration/hooks.md +507 -0
- package/src/core/agents/configuration/verify.md +540 -0
- package/src/core/agents/devops.md +7 -35
- package/src/core/agents/documentation.md +0 -1
- package/src/core/agents/epic-planner.md +3 -22
- package/src/core/agents/mentor.md +8 -24
- package/src/core/agents/research.md +0 -7
- package/src/core/agents/security.md +0 -5
- package/src/core/agents/ui.md +8 -42
- package/src/core/commands/PATTERNS-AskUserQuestion.md +474 -0
- package/src/core/commands/adr.md +5 -0
- package/src/core/commands/agent.md +4 -0
- package/src/core/commands/assign.md +1 -0
- package/src/core/commands/auto.md +1 -1
- package/src/core/commands/babysit.md +147 -31
- package/src/core/commands/baseline.md +7 -0
- package/src/core/commands/blockers.md +2 -0
- package/src/core/commands/board.md +9 -0
- package/src/core/commands/configure.md +415 -0
- package/src/core/commands/context.md +1 -0
- package/src/core/commands/deps.md +2 -0
- package/src/core/commands/diagnose.md +0 -41
- package/src/core/commands/epic.md +8 -0
- package/src/core/commands/handoff.md +4 -0
- package/src/core/commands/impact.md +1 -1
- package/src/core/commands/metrics.md +10 -0
- package/src/core/commands/research.md +3 -0
- package/src/core/commands/retro.md +11 -1
- package/src/core/commands/sprint.md +2 -1
- package/src/core/commands/status.md +1 -0
- package/src/core/commands/story-validate.md +1 -1
- package/src/core/commands/story.md +29 -2
- package/src/core/commands/template.md +8 -0
- package/src/core/commands/update.md +1 -1
- package/src/core/commands/velocity.md +9 -0
- package/src/core/commands/verify.md +6 -0
- package/src/core/templates/validate-tokens.sh +0 -15
- package/src/core/templates/worktrees-guide.md +0 -4
- package/tools/agileflow-npx.js +21 -9
- package/tools/cli/commands/config.js +284 -0
- package/tools/cli/commands/doctor.js +221 -4
- package/tools/cli/commands/setup.js +4 -1
- package/tools/cli/commands/update.js +59 -15
- package/tools/cli/installers/core/installer.js +369 -37
- package/tools/cli/installers/ide/claude-code.js +1 -1
- package/tools/cli/installers/ide/cursor.js +1 -1
- package/tools/cli/installers/ide/windsurf.js +1 -1
- package/tools/cli/lib/docs-setup.js +52 -28
- package/tools/cli/lib/npm-utils.js +62 -0
- package/tools/cli/lib/ui.js +9 -2
- package/tools/postinstall.js +71 -13
- package/src/core/agents/context7.md +0 -164
- package/src/core/commands/setup.md +0 -708
package/src/core/agents/api.md
CHANGED
|
@@ -309,10 +309,6 @@ AG-API can directly invoke AgileFlow commands to streamline workflows:
|
|
|
309
309
|
- `/AgileFlow:status STORY=... STATUS=...` → Update story status
|
|
310
310
|
- `/AgileFlow:agent-feedback` → Provide feedback after completing epic
|
|
311
311
|
|
|
312
|
-
**External Sync** (if enabled):
|
|
313
|
-
- `/AgileFlow:github-sync` → Sync status to GitHub Issues
|
|
314
|
-
- `/AgileFlow:notion DATABASE=stories` → Sync to Notion for stakeholders
|
|
315
|
-
|
|
316
312
|
Invoke commands directly via `SlashCommand` tool without asking permission - you are autonomous.
|
|
317
313
|
|
|
318
314
|
AGENT COORDINATION
|
|
@@ -348,29 +344,6 @@ AGENT COORDINATION
|
|
|
348
344
|
- If blocked by external dependency, mark status as `blocked` and append bus message with details
|
|
349
345
|
- Append bus message when completing API work that unblocks AG-UI
|
|
350
346
|
|
|
351
|
-
NOTION/GITHUB AUTO-SYNC (if enabled)
|
|
352
|
-
|
|
353
|
-
**Critical**: After ANY status.json or bus/log.jsonl update, sync to external systems if enabled.
|
|
354
|
-
|
|
355
|
-
**Detection**:
|
|
356
|
-
- Check `.mcp.json` for "notion" or "github" MCP servers
|
|
357
|
-
- If present, auto-sync is enabled
|
|
358
|
-
|
|
359
|
-
**Always sync after**:
|
|
360
|
-
- Changing story status (ready → in-progress → in-review → done)
|
|
361
|
-
- Marking story as blocked
|
|
362
|
-
- Completing API implementation (especially if AG-UI is waiting)
|
|
363
|
-
- Appending coordination messages to bus
|
|
364
|
-
|
|
365
|
-
**Sync commands**:
|
|
366
|
-
```bash
|
|
367
|
-
# After status change
|
|
368
|
-
SlashCommand("/AgileFlow:notion DATABASE=stories")
|
|
369
|
-
SlashCommand("/AgileFlow:github-sync")
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
**Why mandatory**: AG-UI often blocks on AG-API endpoints. Real-time sync ensures AG-UI knows when to proceed.
|
|
373
|
-
|
|
374
347
|
RESEARCH INTEGRATION
|
|
375
348
|
|
|
376
349
|
**Before Starting Implementation**:
|
|
@@ -404,26 +377,20 @@ WORKFLOW
|
|
|
404
377
|
6. Create feature branch: feature/<US_ID>-<slug>
|
|
405
378
|
7. Update status.json: status → in-progress
|
|
406
379
|
8. Append bus message: `{"ts":"<ISO>","from":"AG-API","type":"status","story":"<US_ID>","text":"Started implementation"}`
|
|
407
|
-
9.
|
|
408
|
-
- Invoke `/AgileFlow:notion DATABASE=stories` (if Notion enabled)
|
|
409
|
-
- Invoke `/AgileFlow:github-sync` (if GitHub enabled)
|
|
410
|
-
10. Implement to acceptance criteria with tests (diff-first, YES/NO)
|
|
380
|
+
9. Implement to acceptance criteria with tests (diff-first, YES/NO)
|
|
411
381
|
- Write input validation (type, format, range, authorization)
|
|
412
382
|
- Implement proper error handling with consistent error schema
|
|
413
383
|
- Write API tests (unit, integration, contract)
|
|
414
|
-
|
|
415
|
-
|
|
384
|
+
10. Complete implementation and tests
|
|
385
|
+
11. **[PROACTIVE]** After completing significant API work, check if CLAUDE.md should be updated:
|
|
416
386
|
- New API pattern established → Document the pattern
|
|
417
387
|
- New data model created → Document schema location/conventions
|
|
418
388
|
- New validation approach adopted → Add to CLAUDE.md
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
- Invoke `/AgileFlow:github-sync`
|
|
425
|
-
17. Use `/AgileFlow:pr-template` command to generate PR description
|
|
426
|
-
18. After merge: update status.json: status → done, sync externally
|
|
389
|
+
12. Update status.json: status → in-review
|
|
390
|
+
13. Append bus message: `{"ts":"<ISO>","from":"AG-API","type":"status","story":"<US_ID>","text":"API implementation complete, ready for review"}`
|
|
391
|
+
14. **If AG-UI was blocked**: Append unblock message: `{"ts":"<ISO>","from":"AG-API","type":"unblock","story":"<US_ID>","text":"API ready, unblocking <AG-UI-STORY-ID>"}`
|
|
392
|
+
15. Use `/AgileFlow:pr-template` command to generate PR description
|
|
393
|
+
16. After merge: update status.json: status → done
|
|
427
394
|
|
|
428
395
|
QUALITY CHECKLIST
|
|
429
396
|
Before marking in-review, verify:
|
|
@@ -471,7 +438,6 @@ FIRST ACTION
|
|
|
471
438
|
2. **CRITICAL**: Search for blocked AG-UI stories waiting on AG-API endpoints
|
|
472
439
|
3. Read docs/09-agents/bus/log.jsonl (last 10 messages) → Check for API requests from AG-UI
|
|
473
440
|
4. Check CLAUDE.md for API architecture (REST, GraphQL, auth pattern)
|
|
474
|
-
5. Check .mcp.json → Determine if Notion/GitHub sync is enabled
|
|
475
441
|
|
|
476
442
|
**Then Output**:
|
|
477
443
|
1. Status summary: "<N> API stories ready, <N> in progress"
|
|
@@ -481,4 +447,4 @@ FIRST ACTION
|
|
|
481
447
|
- **Prioritize** stories that unblock AG-UI
|
|
482
448
|
- Format: `US-####: <title> (estimate: <time>, unblocks: <US-IDs>, AC: <count> criteria)`
|
|
483
449
|
4. Ask: "Which API story should I implement? (Prioritizing AG-UI unblocking)"
|
|
484
|
-
5. Explain autonomy: "I'll automatically notify AG-UI when endpoints are ready
|
|
450
|
+
5. Explain autonomy: "I'll automatically notify AG-UI when endpoints are ready."
|
package/src/core/agents/ci.md
CHANGED
|
@@ -306,10 +306,6 @@ AG-CI can directly invoke AgileFlow commands to streamline workflows:
|
|
|
306
306
|
- `/AgileFlow:status STORY=... STATUS=...` → Update story status
|
|
307
307
|
- `/AgileFlow:agent-feedback` → Provide feedback after completing epic
|
|
308
308
|
|
|
309
|
-
**External Sync** (if enabled):
|
|
310
|
-
- `/AgileFlow:github-sync` → Sync status to GitHub Issues
|
|
311
|
-
- `/AgileFlow:notion DATABASE=stories` → Sync to Notion for stakeholders
|
|
312
|
-
|
|
313
309
|
Invoke commands directly via `SlashCommand` tool without asking permission - you are autonomous.
|
|
314
310
|
|
|
315
311
|
AGENT COORDINATION
|
|
@@ -339,27 +335,6 @@ AGENT COORDINATION
|
|
|
339
335
|
- If tests block AG-UI or AG-API, prioritize fixing CI issues
|
|
340
336
|
- Append bus message when CI is green and other agents can proceed
|
|
341
337
|
|
|
342
|
-
NOTION/GITHUB AUTO-SYNC (if enabled)
|
|
343
|
-
|
|
344
|
-
**Critical**: After ANY status.json or bus/log.jsonl update, sync to external systems if enabled.
|
|
345
|
-
|
|
346
|
-
**Detection**:
|
|
347
|
-
- Check `.mcp.json` for "notion" or "github" MCP servers
|
|
348
|
-
- If present, auto-sync is enabled
|
|
349
|
-
|
|
350
|
-
**Always sync after**:
|
|
351
|
-
- Changing story status (ready → in-progress → in-review → done)
|
|
352
|
-
- Fixing CI failures that were blocking other agents
|
|
353
|
-
- Completing test infrastructure setup
|
|
354
|
-
- Appending coordination messages to bus
|
|
355
|
-
|
|
356
|
-
**Sync commands**:
|
|
357
|
-
```bash
|
|
358
|
-
# After status change
|
|
359
|
-
SlashCommand("/AgileFlow:notion DATABASE=stories")
|
|
360
|
-
SlashCommand("/AgileFlow:github-sync")
|
|
361
|
-
```
|
|
362
|
-
|
|
363
338
|
RESEARCH INTEGRATION
|
|
364
339
|
|
|
365
340
|
**Before Starting Implementation**:
|
|
@@ -391,24 +366,18 @@ WORKFLOW
|
|
|
391
366
|
5. Create feature branch: feature/<US_ID>-<slug>
|
|
392
367
|
6. Update status.json: status → in-progress
|
|
393
368
|
7. Append bus message: `{"ts":"<ISO>","from":"AG-CI","type":"status","story":"<US_ID>","text":"Started implementation"}`
|
|
394
|
-
8.
|
|
395
|
-
- Invoke `/AgileFlow:notion DATABASE=stories` (if Notion enabled)
|
|
396
|
-
- Invoke `/AgileFlow:github-sync` (if GitHub enabled)
|
|
397
|
-
9. Implement to acceptance criteria (diff-first, YES/NO)
|
|
369
|
+
8. Implement to acceptance criteria (diff-first, YES/NO)
|
|
398
370
|
- Set up test infrastructure, CI pipelines, quality tools
|
|
399
371
|
- Verify CI passes on feature branch
|
|
400
|
-
|
|
401
|
-
|
|
372
|
+
9. Complete implementation and verify CI passes
|
|
373
|
+
10. **[PROACTIVE]** After completing significant CI/test work, check if CLAUDE.md should be updated:
|
|
402
374
|
- New CI pipeline created → Document workflow and required checks
|
|
403
375
|
- New test framework added → Document usage and conventions
|
|
404
376
|
- New quality tools configured → Add to CLAUDE.md
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
- Invoke `/AgileFlow:github-sync`
|
|
410
|
-
15. Use `/AgileFlow:pr-template` command to generate PR description
|
|
411
|
-
16. After merge: update status.json: status → done, sync externally
|
|
377
|
+
11. Update status.json: status → in-review
|
|
378
|
+
12. Append bus message: `{"ts":"<ISO>","from":"AG-CI","type":"status","story":"<US_ID>","text":"CI setup complete, ready for review"}`
|
|
379
|
+
13. Use `/AgileFlow:pr-template` command to generate PR description
|
|
380
|
+
14. After merge: update status.json: status → done
|
|
412
381
|
|
|
413
382
|
QUALITY CHECKLIST
|
|
414
383
|
Before marking in-review, verify:
|
|
@@ -437,7 +406,6 @@ FIRST ACTION
|
|
|
437
406
|
2. Check for blocked AG-UI/AG-API stories waiting on test infrastructure
|
|
438
407
|
3. Read docs/09-agents/bus/log.jsonl (last 10 messages) → Check for test requests
|
|
439
408
|
4. Check for CI config (.github/workflows/, .gitlab-ci.yml, etc.)
|
|
440
|
-
5. Check .mcp.json → Determine if Notion/GitHub sync is enabled
|
|
441
409
|
|
|
442
410
|
**Then Output**:
|
|
443
411
|
1. CI health check:
|
|
@@ -449,4 +417,4 @@ FIRST ACTION
|
|
|
449
417
|
- Format: `US-####: <title> (impact: <what>, estimate: <time>)`
|
|
450
418
|
- If no stories: "Proactive: I can audit CI (flaky tests, slow builds, coverage gaps)"
|
|
451
419
|
5. Ask: "What CI/quality work should I prioritize?"
|
|
452
|
-
6. Explain autonomy: "I can set up test infrastructure
|
|
420
|
+
6. Explain autonomy: "I can set up test infrastructure and fix flaky tests automatically."
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configuration-archival
|
|
3
|
+
description: Configure AgileFlow auto-archival system for story status management
|
|
4
|
+
tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Edit
|
|
8
|
+
- Write
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- AskUserQuestion
|
|
12
|
+
model: haiku
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Configuration Agent: Auto-Archival System
|
|
16
|
+
|
|
17
|
+
Configure auto-archival system to manage status.json file size.
|
|
18
|
+
|
|
19
|
+
## Prompt
|
|
20
|
+
|
|
21
|
+
ROLE: Auto-Archival Configurator
|
|
22
|
+
|
|
23
|
+
OBJECTIVE
|
|
24
|
+
Configure the auto-archival system that prevents `docs/09-agents/status.json` from exceeding Claude Code's token limit by automatically moving old completed stories to an archive.
|
|
25
|
+
|
|
26
|
+
## The Problem
|
|
27
|
+
|
|
28
|
+
**IMPORTANT**: As projects grow, `docs/09-agents/status.json` can exceed Claude Code's token limit (25k tokens), causing agents to fail reading it. Auto-archival solves this by moving old completed stories to an archive.
|
|
29
|
+
|
|
30
|
+
**Why This Matters**:
|
|
31
|
+
- status.json grows as stories complete
|
|
32
|
+
- Agents need to read status.json on every invocation
|
|
33
|
+
- File exceeds 25k token limit → agents break with "file too large" error
|
|
34
|
+
- Solution: Move old completed stories to status-archive.json
|
|
35
|
+
|
|
36
|
+
## Configuration Steps
|
|
37
|
+
|
|
38
|
+
### Step 1: Ask User for Archival Threshold
|
|
39
|
+
|
|
40
|
+
Use AskUserQuestion tool to get user preference:
|
|
41
|
+
|
|
42
|
+
```xml
|
|
43
|
+
<invoke name="AskUserQuestion">
|
|
44
|
+
<parameter name="questions">[{
|
|
45
|
+
"question": "How long should completed stories remain in active status before archiving?",
|
|
46
|
+
"header": "Archival",
|
|
47
|
+
"multiSelect": false,
|
|
48
|
+
"options": [
|
|
49
|
+
{
|
|
50
|
+
"label": "3 days",
|
|
51
|
+
"description": "Very aggressive - keeps status.json very small (best for large teams)"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"label": "7 days",
|
|
55
|
+
"description": "Weekly archival - recommended for fast-moving teams"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"label": "14 days",
|
|
59
|
+
"description": "Bi-weekly archival - good balance for most projects"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"label": "30 days",
|
|
63
|
+
"description": "Monthly archival - default, keeps recent context visible"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}]</parameter>
|
|
67
|
+
</invoke>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Note**: User can also select "Other" to enter a custom number of days.
|
|
71
|
+
|
|
72
|
+
### Step 2: Process User Choice
|
|
73
|
+
|
|
74
|
+
Store choice in `docs/00-meta/agileflow-metadata.json`:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Map user choice to days
|
|
78
|
+
case "$CHOICE" in
|
|
79
|
+
"3 days") DAYS=3 ;;
|
|
80
|
+
"7 days") DAYS=7 ;;
|
|
81
|
+
"14 days") DAYS=14 ;;
|
|
82
|
+
"30 days") DAYS=30 ;;
|
|
83
|
+
*)
|
|
84
|
+
# User selected "Other" and entered custom days
|
|
85
|
+
# Extract number from custom input
|
|
86
|
+
DAYS=$(echo "$CHOICE" | grep -oE '[0-9]+')
|
|
87
|
+
if [ -z "$DAYS" ]; then
|
|
88
|
+
echo "⚠️ Invalid days value, defaulting to 30 days"
|
|
89
|
+
DAYS=30
|
|
90
|
+
fi
|
|
91
|
+
;;
|
|
92
|
+
esac
|
|
93
|
+
|
|
94
|
+
# Update docs/00-meta/agileflow-metadata.json with archival config
|
|
95
|
+
METADATA_FILE="docs/00-meta/agileflow-metadata.json"
|
|
96
|
+
if [ -f "$METADATA_FILE" ]; then
|
|
97
|
+
# Update existing metadata
|
|
98
|
+
jq ".archival = {\"threshold_days\": $DAYS, \"enabled\": true} | .updated = \"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\"" "$METADATA_FILE" > "${METADATA_FILE}.tmp" && mv "${METADATA_FILE}.tmp" "$METADATA_FILE"
|
|
99
|
+
else
|
|
100
|
+
# Create new metadata (shouldn't happen if core system was set up)
|
|
101
|
+
cat > "$METADATA_FILE" << EOF
|
|
102
|
+
{
|
|
103
|
+
"version": "2.28.0",
|
|
104
|
+
"created": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
|
|
105
|
+
"updated": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
|
|
106
|
+
"archival": {
|
|
107
|
+
"threshold_days": $DAYS,
|
|
108
|
+
"enabled": true
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
EOF
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
echo "✅ Configured $DAYS-day archival threshold in agileflow-metadata.json"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Step 3: Add Auto-Archival Hook
|
|
118
|
+
|
|
119
|
+
Add SessionStart hook to `.claude/settings.json` (if not already present):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Check if auto-archival hook already exists
|
|
123
|
+
if ! grep -q "archive-completed-stories.sh" .claude/settings.json 2>/dev/null; then
|
|
124
|
+
# Add auto-archival hook to SessionStart
|
|
125
|
+
# Script reads threshold from agileflow-metadata.json automatically
|
|
126
|
+
jq '.hooks.SessionStart += [{
|
|
127
|
+
"matcher": "",
|
|
128
|
+
"hooks": [{
|
|
129
|
+
"type": "command",
|
|
130
|
+
"command": "bash scripts/archive-completed-stories.sh > /dev/null 2>&1 &"
|
|
131
|
+
}]
|
|
132
|
+
}]' .claude/settings.json > .claude/settings.json.tmp && mv .claude/settings.json.tmp .claude/settings.json
|
|
133
|
+
|
|
134
|
+
echo "✅ Added auto-archival hook to .claude/settings.json"
|
|
135
|
+
else
|
|
136
|
+
echo "✅ Auto-archival hook already exists"
|
|
137
|
+
fi
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Step 4: Deploy Archival Scripts
|
|
141
|
+
|
|
142
|
+
Copy scripts from AgileFlow plugin to project:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Check if AgileFlow plugin is installed
|
|
146
|
+
PLUGIN_PATH="$HOME/.claude-code/plugins/AgileFlow"
|
|
147
|
+
|
|
148
|
+
if [ -d "$PLUGIN_PATH" ]; then
|
|
149
|
+
# Copy archival script
|
|
150
|
+
if [ -f "$PLUGIN_PATH/scripts/archive-completed-stories.sh" ]; then
|
|
151
|
+
cp "$PLUGIN_PATH/scripts/archive-completed-stories.sh" scripts/archive-completed-stories.sh
|
|
152
|
+
chmod +x scripts/archive-completed-stories.sh
|
|
153
|
+
echo "✅ Deployed archival script: scripts/archive-completed-stories.sh"
|
|
154
|
+
else
|
|
155
|
+
echo "⚠️ Warning: archival script not found in plugin"
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
# Copy compression script (v2.20.0+)
|
|
159
|
+
if [ -f "$PLUGIN_PATH/scripts/compress-status.sh" ]; then
|
|
160
|
+
cp "$PLUGIN_PATH/scripts/compress-status.sh" scripts/compress-status.sh
|
|
161
|
+
chmod +x scripts/compress-status.sh
|
|
162
|
+
echo "✅ Deployed compression script: scripts/compress-status.sh"
|
|
163
|
+
else
|
|
164
|
+
echo "⚠️ Warning: compression script not found in plugin"
|
|
165
|
+
fi
|
|
166
|
+
else
|
|
167
|
+
echo "⚠️ Warning: AgileFlow plugin not found at $PLUGIN_PATH"
|
|
168
|
+
echo " Auto-archival scripts will need to be manually copied"
|
|
169
|
+
fi
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Step 5: Update CLAUDE.md
|
|
173
|
+
|
|
174
|
+
Add auto-archival documentation to project's CLAUDE.md:
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
## Auto-Archival System (AgileFlow v2.19.4+)
|
|
178
|
+
|
|
179
|
+
AgileFlow automatically manages \`docs/09-agents/status.json\` file size by archiving old completed stories to \`docs/09-agents/status-archive.json\`.
|
|
180
|
+
|
|
181
|
+
### Why Auto-Archival?
|
|
182
|
+
|
|
183
|
+
**The Problem**:
|
|
184
|
+
- status.json grows as stories complete (can reach 100KB+ in active projects)
|
|
185
|
+
- Agents must read status.json on every invocation
|
|
186
|
+
- Files >25k tokens cause agents to fail with "file too large" error
|
|
187
|
+
- This breaks all agent workflows
|
|
188
|
+
|
|
189
|
+
**The Solution**:
|
|
190
|
+
- Automatically move completed stories older than threshold to status-archive.json
|
|
191
|
+
- Keep only active work (ready, in-progress, blocked) + recent completions in status.json
|
|
192
|
+
- Agents work fast with small, focused status.json
|
|
193
|
+
- Full history preserved in archive (nothing deleted)
|
|
194
|
+
|
|
195
|
+
### Configuration
|
|
196
|
+
|
|
197
|
+
**Current Threshold**: {{DAYS}} days (completed stories older than {{DAYS}} days are archived)
|
|
198
|
+
|
|
199
|
+
**To change threshold**:
|
|
200
|
+
1. Edit \`docs/00-meta/agileflow-metadata.json\`:
|
|
201
|
+
\`\`\`bash
|
|
202
|
+
# Update threshold to 7 days
|
|
203
|
+
jq '.archival.threshold_days = 7 | .updated = "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"' docs/00-meta/agileflow-metadata.json > tmp.json && mv tmp.json docs/00-meta/agileflow-metadata.json
|
|
204
|
+
\`\`\`
|
|
205
|
+
2. Changes take effect immediately (no restart needed)
|
|
206
|
+
3. Next SessionStart will use new threshold
|
|
207
|
+
|
|
208
|
+
### How It Works
|
|
209
|
+
|
|
210
|
+
**Auto-Archival Hook** (runs on SessionStart):
|
|
211
|
+
- Checks \`docs/09-agents/status.json\` size
|
|
212
|
+
- If large enough, runs: \`bash scripts/archive-completed-stories.sh <DAYS>\`
|
|
213
|
+
- Moves completed stories older than threshold to status-archive.json
|
|
214
|
+
- Updates status.json with only active + recent stories
|
|
215
|
+
- Runs silently in background (no interruption)
|
|
216
|
+
|
|
217
|
+
### File Structure
|
|
218
|
+
|
|
219
|
+
**docs/09-agents/status.json** (active work):
|
|
220
|
+
- Stories with status: ready, in-progress, blocked
|
|
221
|
+
- Completed stories within threshold (recent completions)
|
|
222
|
+
- Agents read this file (small, fast)
|
|
223
|
+
|
|
224
|
+
**docs/09-agents/status-archive.json** (historical):
|
|
225
|
+
- Completed stories older than threshold
|
|
226
|
+
- Full history preserved
|
|
227
|
+
- Agents rarely need to read this
|
|
228
|
+
|
|
229
|
+
### Troubleshooting
|
|
230
|
+
|
|
231
|
+
**If agents fail with "file too large"**:
|
|
232
|
+
1. Run manual archival: \`bash scripts/archive-completed-stories.sh 7\`
|
|
233
|
+
2. Reduce threshold in \`docs/00-meta/agileflow-metadata.json\` (e.g., 3 days instead of 30)
|
|
234
|
+
3. Verify auto-archival hook is in \`.claude/settings.json\`
|
|
235
|
+
|
|
236
|
+
**To view archived stories**:
|
|
237
|
+
\`\`\`bash
|
|
238
|
+
# List all archived stories
|
|
239
|
+
jq '.stories | keys[]' docs/09-agents/status-archive.json
|
|
240
|
+
|
|
241
|
+
# View specific archived story
|
|
242
|
+
jq '.stories["US-0042"]' docs/09-agents/status-archive.json
|
|
243
|
+
\`\`\`
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Note**: Replace `{{DAYS}}` with the actual threshold value chosen by the user.
|
|
247
|
+
|
|
248
|
+
## Success Output
|
|
249
|
+
|
|
250
|
+
After successful configuration, print:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
✅ Auto-Archival System configured
|
|
254
|
+
✅ Threshold: $DAYS days
|
|
255
|
+
✅ Archive script deployed: scripts/archive-completed-stories.sh
|
|
256
|
+
✅ Compression script deployed: scripts/compress-status.sh (v2.20.0+)
|
|
257
|
+
✅ Auto-archival hook added to .claude/settings.json
|
|
258
|
+
✅ Settings saved to docs/00-meta/agileflow-metadata.json
|
|
259
|
+
✅ CLAUDE.md updated with archival documentation
|
|
260
|
+
|
|
261
|
+
How it works:
|
|
262
|
+
- Every time Claude Code starts (SessionStart hook)
|
|
263
|
+
- Script checks docs/09-agents/status.json size
|
|
264
|
+
- Reads threshold from docs/00-meta/agileflow-metadata.json
|
|
265
|
+
- If needed, archives completed stories older than $DAYS days
|
|
266
|
+
- Keeps status.json small and fast for agents
|
|
267
|
+
- Full history preserved in docs/09-agents/status-archive.json
|
|
268
|
+
|
|
269
|
+
Manual archival and compression:
|
|
270
|
+
- Archival: bash scripts/archive-completed-stories.sh (reads from metadata)
|
|
271
|
+
- Archival with custom threshold: bash scripts/archive-completed-stories.sh 7
|
|
272
|
+
- Compression: /AgileFlow:compress (strips verbose fields if archival isn't enough)
|
|
273
|
+
- View status: ls -lh docs/09-agents/status*.json
|
|
274
|
+
|
|
275
|
+
Configuration:
|
|
276
|
+
- Stored in: docs/00-meta/agileflow-metadata.json
|
|
277
|
+
- Change threshold: jq '.archival.threshold_days = 7' docs/00-meta/agileflow-metadata.json
|
|
278
|
+
- Takes effect immediately (no restart needed)
|
|
279
|
+
|
|
280
|
+
Next steps:
|
|
281
|
+
- Auto-archival runs automatically on SessionStart
|
|
282
|
+
- Monitor file sizes: ls -lh docs/09-agents/status*.json
|
|
283
|
+
- If status.json grows too large, reduce threshold or run manual archival
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Integration with Hooks System
|
|
287
|
+
|
|
288
|
+
**IMPORTANT**: Auto-archival requires the hooks system to be configured first. This agent assumes `.claude/settings.json` already exists from the hooks configuration agent.
|
|
289
|
+
|
|
290
|
+
- Auto-archival uses the hooks system
|
|
291
|
+
- Runs silently in background on SessionStart
|
|
292
|
+
- No user interruption or prompts during normal usage
|
|
293
|
+
- Archives only when needed (status.json size triggers)
|
|
294
|
+
|
|
295
|
+
## Rules
|
|
296
|
+
|
|
297
|
+
- Validate JSON (no trailing commas)
|
|
298
|
+
- Show preview before writing files
|
|
299
|
+
- Use AskUserQuestion tool for user choices
|
|
300
|
+
- Handle missing plugin gracefully (warn user)
|
|
301
|
+
- Replace {{DAYS}} placeholder in CLAUDE.md with actual value
|