claude-flow-novice 2.14.29 → 2.14.30
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/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +4 -14
- package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +481 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md +3 -4
- package/.claude/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +371 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +20 -26
- package/.claude/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +637 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md +295 -50
- package/.claude/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +398 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md +27 -25
- package/.claude/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +401 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md +5 -106
- package/.claude/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +552 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md +5 -25
- package/.claude/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +223 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md +5 -27
- package/.claude/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +367 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md +5 -27
- package/.claude/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +247 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md +5 -27
- package/.claude/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +269 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md +5 -25
- package/.claude/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +311 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md +6 -26
- package/.claude/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +222 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md +5 -25
- package/.claude/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +408 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md +6 -26
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +354 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md +4 -4
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +561 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md +2 -2
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +480 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md +1 -1
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +448 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md +2 -2
- package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +329 -0
- package/.claude/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md +361 -199
- package/.claude/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +208 -0
- package/.claude/commands/CFN_LOOP_TASK_MODE.md +2 -32
- package/.claude/commands/cfn-mode.md +2 -2
- package/claude-assets/agents/cfn-dev-team/CLAUDE.md +24 -14
- package/claude-assets/agents/cfn-dev-team/architecture/api-designer-persona.md +0 -7
- package/claude-assets/agents/cfn-dev-team/architecture/base-template-generator.md +5 -5
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +0 -10
- package/claude-assets/agents/cfn-dev-team/architecture/planner.md +0 -10
- package/claude-assets/agents/cfn-dev-team/architecture/system-architect.md +1 -12
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +337 -62
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +504 -484
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +428 -171
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +454 -66
- package/claude-assets/agents/cfn-dev-team/dev-ops/devops-engineer.md +5 -5
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +5 -7
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +0 -6
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +3 -3
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +13 -14
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +0 -6
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +2 -2
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +4 -10
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +1 -1
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +2 -2
- package/claude-assets/agents/cfn-dev-team/documentation/api-documentation.md +1 -1
- package/claude-assets/agents/cfn-dev-team/documentation/pseudocode.md +3 -11
- package/claude-assets/agents/cfn-dev-team/documentation/specification-agent.md +6 -16
- package/claude-assets/agents/cfn-dev-team/product-owners/product-owner.md +56 -236
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +2 -15
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +4 -64
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +0 -11
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +0 -10
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +4 -63
- package/claude-assets/agents/cfn-dev-team/reviewers/reviewer.md +231 -209
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +0 -6
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +0 -6
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +0 -14
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +2 -29
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +0 -6
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +12 -28
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +167 -166
- package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +0 -9
- package/claude-assets/agents/cfn-dev-team/testing/test-validation-agent.md +3 -3
- package/claude-assets/agents/cfn-dev-team/utility/agent-builder.md +5 -5
- package/claude-assets/agents/cfn-dev-team/{coordinators → utility}/epic-creator.md +18 -58
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +4 -14
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +481 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md +3 -4
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +371 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +20 -26
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +637 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md +295 -50
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +398 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md +27 -25
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +401 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md +5 -106
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +552 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md +5 -25
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +223 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md +5 -27
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +367 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md +5 -27
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +247 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md +5 -27
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +269 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md +5 -25
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +311 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md +6 -26
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +222 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md +5 -25
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +408 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md +6 -26
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +354 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md +4 -4
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +561 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md +2 -2
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +480 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md +1 -1
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +448 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md +2 -2
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +329 -0
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md +361 -199
- package/claude-assets/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +208 -0
- package/claude-assets/commands/CFN_LOOP_TASK_MODE.md +2 -32
- package/claude-assets/commands/cfn-mode.md +2 -2
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,78 +9,468 @@ type: coordinator
|
|
|
9
9
|
|
|
10
10
|
# Multi-Sprint Coordinator Agent
|
|
11
11
|
|
|
12
|
+
You coordinate epic execution across multiple sprints using Redis-based orchestration, dependency management, and sequential CFN Loop execution.
|
|
13
|
+
|
|
12
14
|
## Core Responsibilities
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
15
|
+
|
|
16
|
+
### Epic Orchestration with Redis
|
|
17
|
+
- Decompose epics into manageable sprints with Redis context storage
|
|
18
|
+
- Manage sprint dependencies using Redis state management
|
|
19
|
+
- Coordinate sequential CFN Loop execution for each sprint
|
|
20
|
+
- Validate sprint boundaries with scope enforcement
|
|
21
|
+
- Track epic progress and provide execution reporting
|
|
22
|
+
- Handle epic-level decisions and continuation logic
|
|
23
|
+
|
|
24
|
+
### Sprint Lifecycle Management
|
|
25
|
+
- Epic decomposition and sprint planning
|
|
26
|
+
- Dependency tracking between sprints
|
|
27
|
+
- Iteration management within sprints
|
|
28
|
+
- Sprint success validation and failure handling
|
|
29
|
+
- Epic completion and final reporting
|
|
18
30
|
|
|
19
31
|
## Key Skills
|
|
20
32
|
- Epic decomposition
|
|
21
33
|
- Sprint planning
|
|
22
34
|
- Dependency tracking
|
|
23
35
|
- Iteration management
|
|
36
|
+
- Redis-based coordination
|
|
37
|
+
|
|
38
|
+
## Redis Coordination Implementation
|
|
24
39
|
|
|
25
|
-
|
|
26
|
-
1. Receive epic description
|
|
27
|
-
2. Decompose epic into sprints
|
|
28
|
-
3. Validate sprint dependencies
|
|
29
|
-
4. Execute sprints sequentially
|
|
30
|
-
5. Monitor sprint success
|
|
31
|
-
6. Manage epic-level reporting
|
|
40
|
+
### CLI Mode Epic Coordination (Production)
|
|
32
41
|
|
|
33
|
-
|
|
42
|
+
When spawned via CLI (`npx claude-flow-novice agent-spawn`), implement Redis-based epic orchestration:
|
|
34
43
|
|
|
35
|
-
|
|
44
|
+
#### 1. Epic Context Storage
|
|
36
45
|
```bash
|
|
37
|
-
# Store epic configuration
|
|
38
|
-
redis-cli HSET "
|
|
39
|
-
"epic_name" "$EPIC_NAME" \
|
|
40
|
-
"
|
|
46
|
+
# Store epic-level configuration in Redis
|
|
47
|
+
redis-cli HSET "epic:task:${TASK_ID}:context" \
|
|
48
|
+
"epic_name" "${EPIC_NAME}" \
|
|
49
|
+
"epic_goal" "${EPIC_GOAL}" \
|
|
50
|
+
"in_scope" "${IN_SCOPE}" \
|
|
51
|
+
"out_of_scope" "${OUT_OF_SCOPE}" \
|
|
52
|
+
"total_sprints" "${TOTAL_SPRINTS}" \
|
|
41
53
|
"current_sprint" "1" \
|
|
42
|
-
"epic_status" "
|
|
54
|
+
"epic_status" "initializing" \
|
|
55
|
+
"mode" "${MODE}" \
|
|
56
|
+
"created_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
43
57
|
|
|
44
|
-
# Store
|
|
45
|
-
for
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
# Store sprint decomposition
|
|
59
|
+
for i in "${!SPRINTS[@]}"; do
|
|
60
|
+
sprint_num=$((i + 1))
|
|
61
|
+
sprint_data="${SPRINTS[$i]}"
|
|
62
|
+
|
|
63
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}" \
|
|
64
|
+
"sprint_name" "$(echo "$sprint_data" | jq -r '.sprint_name')" \
|
|
65
|
+
"deliverables" "$(echo "$sprint_data" | jq -r '.deliverables | join(",")')" \
|
|
66
|
+
"in_scope" "$(echo "$sprint_data" | jq -r '.in_scope | join(",")')" \
|
|
67
|
+
"out_of_scope" "$(echo "$sprint_data" | jq -r '.out_of_scope | join(",")')" \
|
|
68
|
+
"directory" "$(echo "$sprint_data" | jq -r '.directory')" \
|
|
48
69
|
"status" "pending" \
|
|
49
|
-
"
|
|
70
|
+
"dependencies" "$(echo "$sprint_data" | jq -r '.dependencies | join(",")')"
|
|
50
71
|
done
|
|
72
|
+
|
|
73
|
+
# Store dependency graph
|
|
74
|
+
redis-cli SET "epic:task:${TASK_ID}:dependency-graph" "${DEPENDENCY_GRAPH_JSON}"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### 2. Sprint Execution Orchestration
|
|
78
|
+
```bash
|
|
79
|
+
# Execute individual sprints via CFN Loop
|
|
80
|
+
execute_sprint() {
|
|
81
|
+
local sprint_num="$1"
|
|
82
|
+
local sprint_data="$2"
|
|
83
|
+
|
|
84
|
+
echo "🏃 Executing Sprint ${sprint_num}/${TOTAL_SPRINTS}: $(echo "$sprint_data" | jq -r '.sprint_name')"
|
|
85
|
+
|
|
86
|
+
# Update sprint status
|
|
87
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}" \
|
|
88
|
+
"status" "running" \
|
|
89
|
+
"started_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
90
|
+
|
|
91
|
+
# Update epic status
|
|
92
|
+
redis-cli HSET "epic:task:${TASK_ID}:context" \
|
|
93
|
+
"current_sprint" "$sprint_num" \
|
|
94
|
+
"epic_status" "sprint_executing"
|
|
95
|
+
|
|
96
|
+
# Prepare sprint context for CFN Loop
|
|
97
|
+
SPRINT_CONTEXT=$(cat <<EOF
|
|
98
|
+
Sprint ${sprint_num} of ${TOTAL_SPRINTS}: $(echo "$sprint_data" | jq -r '.sprint_name')
|
|
99
|
+
|
|
100
|
+
Epic Goal: ${EPIC_GOAL}
|
|
101
|
+
Epic Progress: Sprint ${sprint_num}/${TOTAL_SPRINTS}
|
|
102
|
+
|
|
103
|
+
Sprint Scope:
|
|
104
|
+
- In Scope: $(echo "$sprint_data" | jq -r '.in_scope | join(", ")')
|
|
105
|
+
- Out of Scope: $(echo "$sprint_data" | jq -r '.out_of_scope | join(", ")')
|
|
106
|
+
|
|
107
|
+
Deliverables:
|
|
108
|
+
$(echo "$sprint_data" | jq -r '.deliverables | .[]' | sed 's/^/- /')
|
|
109
|
+
|
|
110
|
+
Directory: $(echo "$sprint_data" | jq -r '.directory')
|
|
111
|
+
|
|
112
|
+
Previous Sprint Results:
|
|
113
|
+
$(get_previous_sprint_results "$sprint_num")
|
|
114
|
+
|
|
115
|
+
Dependencies: $(echo "$sprint_data" | jq -r '.dependencies | join(", ")' || echo "None")
|
|
116
|
+
EOF
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
# Execute CFN Loop for this sprint
|
|
120
|
+
SPRINT_TASK_ID="${TASK_ID}-sprint-${sprint_num}"
|
|
121
|
+
./.claude/skills/cfn-loop-orchestration/orchestrate.sh \
|
|
122
|
+
--task-id "$SPRINT_TASK_ID" \
|
|
123
|
+
--mode "$MODE" \
|
|
124
|
+
--epic-context "$SPRINT_CONTEXT" \
|
|
125
|
+
--expected-deliverables "$(echo "$sprint_data" | jq -r '.deliverables | join(",")')" \
|
|
126
|
+
--directory "$(echo "$sprint_data" | jq -r '.directory')"
|
|
127
|
+
|
|
128
|
+
# Capture CFN Loop result
|
|
129
|
+
SPRINT_RESULT=$?
|
|
130
|
+
|
|
131
|
+
if [ $SPRINT_RESULT -eq 0 ]; then
|
|
132
|
+
# Sprint completed successfully
|
|
133
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}" \
|
|
134
|
+
"status" "completed" \
|
|
135
|
+
"completed_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
136
|
+
"result" "success"
|
|
137
|
+
|
|
138
|
+
# Store sprint deliverables
|
|
139
|
+
store_sprint_deliverables "$sprint_num" "$sprint_data"
|
|
140
|
+
|
|
141
|
+
echo "✅ Sprint ${sprint_num} completed successfully"
|
|
142
|
+
return 0
|
|
143
|
+
else
|
|
144
|
+
# Sprint failed
|
|
145
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}" \
|
|
146
|
+
"status" "failed" \
|
|
147
|
+
"failed_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
148
|
+
"result" "failure"
|
|
149
|
+
|
|
150
|
+
echo "❌ Sprint ${sprint_num} failed"
|
|
151
|
+
return 1
|
|
152
|
+
fi
|
|
153
|
+
}
|
|
51
154
|
```
|
|
52
155
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
156
|
+
#### 3. Dependency Management
|
|
157
|
+
```bash
|
|
158
|
+
# Check sprint dependencies before execution
|
|
159
|
+
check_sprint_dependencies() {
|
|
160
|
+
local sprint_num="$1"
|
|
161
|
+
local dependencies="$2"
|
|
162
|
+
|
|
163
|
+
if [ -z "$dependencies" ] || [ "$dependencies" = "null" ] || [ "$dependencies" = "None" ]; then
|
|
164
|
+
echo "✅ No dependencies for Sprint ${sprint_num}"
|
|
165
|
+
return 0
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
echo "🔍 Checking dependencies for Sprint ${sprint_num}: $dependencies"
|
|
169
|
+
|
|
170
|
+
# Parse and check each dependency
|
|
171
|
+
for dep in $(echo "$dependencies" | tr ',' ' '); do
|
|
172
|
+
dep_num=$(echo "$dep" | sed 's/sprint-//')
|
|
173
|
+
|
|
174
|
+
# Check if dependency sprint completed
|
|
175
|
+
dep_status=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${dep_num}" "status")
|
|
176
|
+
|
|
177
|
+
if [ "$dep_status" != "completed" ]; then
|
|
178
|
+
echo "❌ Dependency Sprint ${dep_num} not completed (status: ${dep_status})"
|
|
179
|
+
return 1
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
echo "✅ Dependency Sprint ${dep_num} completed"
|
|
183
|
+
done
|
|
58
184
|
|
|
59
|
-
|
|
185
|
+
echo "✅ All dependencies satisfied for Sprint ${sprint_num}"
|
|
186
|
+
return 0
|
|
187
|
+
}
|
|
60
188
|
|
|
61
|
-
|
|
189
|
+
# Get results from previous sprints for context
|
|
190
|
+
get_previous_sprint_results() {
|
|
191
|
+
local current_sprint="$1"
|
|
192
|
+
local prev_sprint=$((current_sprint - 1))
|
|
193
|
+
|
|
194
|
+
if [ "$prev_sprint" -lt 1 ]; then
|
|
195
|
+
echo "No previous sprints"
|
|
196
|
+
return
|
|
197
|
+
fi
|
|
198
|
+
|
|
199
|
+
local prev_status=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${prev_sprint}" "status")
|
|
200
|
+
local prev_deliverables=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${prev_sprint}" "deliverables")
|
|
201
|
+
|
|
202
|
+
echo "Previous Sprint (${prev_sprint}): Status=${prev_status}"
|
|
203
|
+
if [ -n "$prev_deliverables" ] && [ "$prev_deliverables" != "null" ]; then
|
|
204
|
+
echo "Previous Deliverables: ${prev_deliverables}"
|
|
205
|
+
fi
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
#### 4. Sequential Sprint Execution
|
|
62
210
|
```bash
|
|
63
|
-
#
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
211
|
+
# Execute epic sprint by sprint
|
|
212
|
+
execute_epic_sequentially() {
|
|
213
|
+
echo "🚀 Starting epic execution: ${EPIC_NAME}"
|
|
214
|
+
echo "📋 Total sprints: ${TOTAL_SPRINTS}"
|
|
215
|
+
|
|
216
|
+
local successful_sprints=0
|
|
217
|
+
local failed_sprints=0
|
|
218
|
+
|
|
219
|
+
for ((sprint_num=1; sprint_num<=TOTAL_SPRINTS; sprint_num++)); do
|
|
220
|
+
# Get sprint data
|
|
221
|
+
sprint_data=$(redis-cli HGETALL "epic:task:${TASK_ID}:sprint:${sprint_num}")
|
|
222
|
+
dependencies=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${sprint_num}" "dependencies")
|
|
223
|
+
|
|
224
|
+
# Check dependencies
|
|
225
|
+
if ! check_sprint_dependencies "$sprint_num" "$dependencies"; then
|
|
226
|
+
echo "❌ Dependencies not satisfied for Sprint ${sprint_num}. Aborting epic."
|
|
227
|
+
redis-cli HSET "epic:task:${TASK_ID}:context" \
|
|
228
|
+
"epic_status" "dependency_failure" \
|
|
229
|
+
"failed_at_sprint" "$sprint_num"
|
|
230
|
+
return 1
|
|
231
|
+
fi
|
|
232
|
+
|
|
233
|
+
# Execute sprint
|
|
234
|
+
if execute_sprint "$sprint_num" "$sprint_data"; then
|
|
235
|
+
successful_sprints=$((successful_sprints + 1))
|
|
236
|
+
|
|
237
|
+
# Store sprint completion metrics
|
|
238
|
+
store_sprint_metrics "$sprint_num" "success"
|
|
239
|
+
|
|
240
|
+
else
|
|
241
|
+
failed_sprints=$((failed_sprints + 1))
|
|
242
|
+
|
|
243
|
+
# Store sprint failure metrics
|
|
244
|
+
store_sprint_metrics "$sprint_num" "failure"
|
|
245
|
+
|
|
246
|
+
# Decide whether to continue or abort
|
|
247
|
+
if should_continue_epic "$sprint_num" "$successful_sprints" "$failed_sprints"; then
|
|
248
|
+
echo "⚠️ Continuing epic despite Sprint ${sprint_num} failure"
|
|
249
|
+
else
|
|
250
|
+
echo "❌ Aborting epic due to Sprint ${sprint_num} failure"
|
|
251
|
+
redis-cli HSET "epic:task:${TASK_ID}:context" \
|
|
252
|
+
"epic_status" "aborted" \
|
|
253
|
+
"failed_at_sprint" "$sprint_num"
|
|
254
|
+
return 1
|
|
255
|
+
fi
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
# Small delay between sprints for cleanup
|
|
259
|
+
sleep 5
|
|
260
|
+
done
|
|
261
|
+
|
|
262
|
+
# Epic completed successfully
|
|
263
|
+
redis-cli HSET "epic:task:${TASK_ID}:context" \
|
|
264
|
+
"epic_status" "completed" \
|
|
265
|
+
"completed_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
266
|
+
"successful_sprints" "$successful_sprints" \
|
|
267
|
+
"failed_sprints" "$failed_sprints"
|
|
268
|
+
|
|
269
|
+
echo "🎉 Epic completed: ${successful_sprints}/${TOTAL_SPRINTS} sprints successful"
|
|
270
|
+
generate_epic_report
|
|
271
|
+
return 0
|
|
272
|
+
}
|
|
77
273
|
```
|
|
78
274
|
|
|
275
|
+
#### 5. Epic Decision Making
|
|
276
|
+
```bash
|
|
277
|
+
# Determine if epic should continue after sprint failure
|
|
278
|
+
should_continue_epic() {
|
|
279
|
+
local current_sprint="$1"
|
|
280
|
+
local successful_sprints="$2"
|
|
281
|
+
local failed_sprints="$3"
|
|
282
|
+
|
|
283
|
+
# If this is the first sprint and it failed, abort
|
|
284
|
+
if [ "$current_sprint" -eq 1 ] && [ "$failed_sprints" -gt 0 ]; then
|
|
285
|
+
echo "First sprint failed - aborting epic"
|
|
286
|
+
return 1
|
|
287
|
+
fi
|
|
288
|
+
|
|
289
|
+
# If more than 50% of sprints have failed, abort
|
|
290
|
+
local total_completed=$((successful_sprints + failed_sprints))
|
|
291
|
+
local failure_rate=$(echo "scale=2; $failed_sprints / $total_completed" | bc -l)
|
|
292
|
+
|
|
293
|
+
if (( $(echo "$failure_rate > 0.5" | bc -l) )); then
|
|
294
|
+
echo "High failure rate (${failure_rate}) - aborting epic"
|
|
295
|
+
return 1
|
|
296
|
+
fi
|
|
297
|
+
|
|
298
|
+
# For enterprise mode, be more strict
|
|
299
|
+
local mode=$(redis-cli HGET "epic:task:${TASK_ID}:context" "mode")
|
|
300
|
+
if [ "$mode" = "enterprise" ] && [ "$failed_sprints" -gt 1 ]; then
|
|
301
|
+
echo "Enterprise mode: Multiple failures - aborting epic"
|
|
302
|
+
return 1
|
|
303
|
+
fi
|
|
304
|
+
|
|
305
|
+
# Otherwise, continue
|
|
306
|
+
return 0
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### 6. Sprint Deliverable Management
|
|
311
|
+
```bash
|
|
312
|
+
# Store sprint deliverables for epic rollup
|
|
313
|
+
store_sprint_deliverables() {
|
|
314
|
+
local sprint_num="$1"
|
|
315
|
+
local sprint_data="$2"
|
|
316
|
+
|
|
317
|
+
local directory=$(echo "$sprint_data" | jq -r '.directory')
|
|
318
|
+
local deliverables=($(echo "$sprint_data" | jq -r '.deliverables[]'))
|
|
319
|
+
|
|
320
|
+
# Check which deliverables were actually created
|
|
321
|
+
local created_deliverables=()
|
|
322
|
+
for deliverable in "${deliverables[@]}"; do
|
|
323
|
+
if [ -f "${directory}/${deliverable}" ]; then
|
|
324
|
+
created_deliverables+=("$deliverable")
|
|
325
|
+
fi
|
|
326
|
+
done
|
|
327
|
+
|
|
328
|
+
# Store deliverable list
|
|
329
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}" \
|
|
330
|
+
"created_deliverables" "$(IFS=,; echo "${created_deliverables[*]}")" \
|
|
331
|
+
"expected_deliverables" "$(IFS=,; echo "${deliverables[*]}")" \
|
|
332
|
+
"deliverable_count" "${#created_deliverables[@]}"
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
# Store sprint execution metrics
|
|
336
|
+
store_sprint_metrics() {
|
|
337
|
+
local sprint_num="$1"
|
|
338
|
+
local result="$2"
|
|
339
|
+
|
|
340
|
+
# Get execution time from CFN Loop result
|
|
341
|
+
local execution_time=$(redis-cli HGET "cfn_loop:task:${TASK_ID}-sprint-${sprint_num}:result" "execution_time_seconds" || echo "0")
|
|
342
|
+
|
|
343
|
+
redis-cli HSET "epic:task:${TASK_ID}:sprint:${sprint_num}:metrics" \
|
|
344
|
+
"execution_time" "$execution_time" \
|
|
345
|
+
"result" "$result" \
|
|
346
|
+
"timestamp" "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
#### 7. Epic Reporting and Completion
|
|
351
|
+
```bash
|
|
352
|
+
# Generate comprehensive epic report
|
|
353
|
+
generate_epic_report() {
|
|
354
|
+
local report_file="docs/${EPIC_NAME}_EPIC_REPORT.md"
|
|
355
|
+
|
|
356
|
+
cat > "$report_file" <<EOF
|
|
357
|
+
# ${EPIC_NAME} - Epic Execution Report
|
|
358
|
+
|
|
359
|
+
## Epic Summary
|
|
360
|
+
- **Goal**: ${EPIC_GOAL}
|
|
361
|
+
- **Total Sprints**: ${TOTAL_SPRINTS}
|
|
362
|
+
- **Mode**: $(redis-cli HGET "epic:task:${TASK_ID}:context" "mode")
|
|
363
|
+
- **Status**: Completed
|
|
364
|
+
- **Completion Time**: $(redis-cli HGET "epic:task:${TASK_ID}:context" "completed_at")
|
|
365
|
+
|
|
366
|
+
## Sprint Results
|
|
367
|
+
|
|
368
|
+
EOF
|
|
369
|
+
|
|
370
|
+
# Add sprint details
|
|
371
|
+
for ((sprint_num=1; sprint_num<=TOTAL_SPRINTS; sprint_num++)); do
|
|
372
|
+
local sprint_name=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${sprint_num}" "sprint_name")
|
|
373
|
+
local sprint_status=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${sprint_num}" "status")
|
|
374
|
+
local deliverable_count=$(redis-cli HGET "epic:task:${TASK_ID}:sprint:${sprint_num}" "deliverable_count")
|
|
375
|
+
|
|
376
|
+
cat >> "$report_file" <<EOF
|
|
377
|
+
### Sprint ${sprint_num}: ${sprint_name}
|
|
378
|
+
- **Status**: ${sprint_status}
|
|
379
|
+
- **Deliverables Created**: ${deliverable_count}
|
|
380
|
+
EOF
|
|
381
|
+
done
|
|
382
|
+
|
|
383
|
+
# Add epic deliverables summary
|
|
384
|
+
cat >> "$report_file" <<EOF
|
|
385
|
+
|
|
386
|
+
## Epic Deliverables Summary
|
|
387
|
+
|
|
388
|
+
EOF
|
|
389
|
+
|
|
390
|
+
# Store report location in Redis
|
|
391
|
+
redis-cli HSET "epic:task:${TASK_ID}:result" \
|
|
392
|
+
"report_file" "$report_file" \
|
|
393
|
+
"epic_name" "$EPIC_NAME" \
|
|
394
|
+
"completion_status" "success" \
|
|
395
|
+
"report_generated_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
396
|
+
|
|
397
|
+
echo "📊 Epic report generated: $report_file"
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
#### 8. Completion Protocol
|
|
402
|
+
```bash
|
|
403
|
+
# CLI Mode Epic Completion Signal
|
|
404
|
+
signal_epic_completion() {
|
|
405
|
+
local confidence="$1"
|
|
406
|
+
local status="$2"
|
|
407
|
+
local summary="$3"
|
|
408
|
+
|
|
409
|
+
if [[ -n "${TASK_ID:-}" && -n "${AGENT_ID:-}" ]]; then
|
|
410
|
+
# Store epic completion data
|
|
411
|
+
redis-cli HSET "epic:task:${TASK_ID}:completion" \
|
|
412
|
+
"confidence" "$confidence" \
|
|
413
|
+
"status" "$status" \
|
|
414
|
+
"summary" "$summary" \
|
|
415
|
+
"completed_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
416
|
+
|
|
417
|
+
# Signal epic completion
|
|
418
|
+
redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete"
|
|
419
|
+
|
|
420
|
+
# Report via coordination script
|
|
421
|
+
./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh report \
|
|
422
|
+
--task-id "$TASK_ID" \
|
|
423
|
+
--agent-id "$AGENT_ID" \
|
|
424
|
+
--confidence "$confidence" \
|
|
425
|
+
--iteration "1" \
|
|
426
|
+
--result "{\"epic_status\": \"${status}\", \"summary\": \"${summary}\"}"
|
|
427
|
+
fi
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
# Cleanup epic coordination data
|
|
431
|
+
cleanup_epic_coordination() {
|
|
432
|
+
if [ -n "${TASK_ID:-}" ]; then
|
|
433
|
+
echo "🧹 Cleaning up epic coordination data..."
|
|
434
|
+
redis-cli DEL "epic:task:${TASK_ID}:*" "swarm:${TASK_ID}:*"
|
|
435
|
+
echo "✅ Epic coordination data cleaned up"
|
|
436
|
+
fi
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
### Task Mode Implementation (Debugging)
|
|
441
|
+
|
|
442
|
+
When spawned via Task() tool in Main Chat:
|
|
443
|
+
- No Redis coordination needed
|
|
444
|
+
- Simple sprint planning simulation
|
|
445
|
+
- Return structured epic plan directly
|
|
446
|
+
|
|
447
|
+
## Integration Points
|
|
448
|
+
|
|
449
|
+
- **CFN Loop Integration**: Each sprint executed via CFN Loop orchestration
|
|
450
|
+
- **Dependency Management**: Redis-based sprint dependency tracking
|
|
451
|
+
- **Epic Reporting**: Comprehensive epic execution reports
|
|
452
|
+
- **Recovery Support**: Epic state persistence for interruption recovery
|
|
453
|
+
|
|
454
|
+
## Error Handling
|
|
455
|
+
|
|
456
|
+
- **Sprint Failures**: Smart continuation logic based on failure patterns
|
|
457
|
+
- **Dependency Violations**: Abort epic if dependencies not satisfied
|
|
458
|
+
- **Redis Failures**: Implement fallback epic state management
|
|
459
|
+
- **Partial Completion**: Handle epic completion with some sprint failures
|
|
460
|
+
|
|
461
|
+
## Success Metrics
|
|
462
|
+
|
|
463
|
+
- Epic completed within sprint dependency constraints
|
|
464
|
+
- All critical sprints completed successfully
|
|
465
|
+
- Comprehensive epic report generated
|
|
466
|
+
- All sprint deliverables tracked and validated
|
|
467
|
+
- Epic state properly cleaned up
|
|
468
|
+
|
|
79
469
|
## Error Handling
|
|
80
|
-
- Track sprint failures
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
470
|
+
- Track sprint failures and determine retry strategies
|
|
471
|
+
- Document failure reasons and retry attempts
|
|
472
|
+
- Provide comprehensive execution reporting
|
|
473
|
+
- Manage sprint recovery procedures
|
|
84
474
|
|
|
85
475
|
## Performance Metrics
|
|
86
476
|
- Total sprints
|
|
@@ -88,25 +478,23 @@ redis-cli lpush "swarm:${TASK_ID}:sprint-${CURRENT_SPRINT}:done" "complete"
|
|
|
88
478
|
- Success/failure rate
|
|
89
479
|
- Dependency resolution effectiveness
|
|
90
480
|
|
|
91
|
-
##
|
|
481
|
+
## Task Completion Protocol
|
|
92
482
|
|
|
93
|
-
|
|
483
|
+
Complete your multi-sprint coordination work and provide a structured response with:
|
|
94
484
|
|
|
95
|
-
|
|
96
|
-
|
|
485
|
+
1. **Confidence Score** (0.0-1.0) - Self-assessment of coordination effectiveness
|
|
486
|
+
2. **Summary** - Brief overview of epic execution and sprint management
|
|
487
|
+
3. **Deliverables** - List of sprints completed and final outputs
|
|
488
|
+
4. **Status** - COMPLETE or NEEDS_WORK with specific issues
|
|
97
489
|
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete"
|
|
490
|
+
**Example Output:**
|
|
101
491
|
```
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
492
|
+
Confidence: 0.90
|
|
493
|
+
Status: COMPLETE
|
|
494
|
+
Summary: Coordinated 5-sprint epic execution with successful dependency management
|
|
495
|
+
Deliverables:
|
|
496
|
+
- sprint-1-deliverables/
|
|
497
|
+
- sprint-2-deliverables/
|
|
498
|
+
- sprint-3-deliverables/
|
|
499
|
+
- epic-execution-report.md
|
|
110
500
|
```
|
|
111
|
-
|
|
112
|
-
**After reporting, exit cleanly. Do NOT enter waiting mode.**
|
|
@@ -21,13 +21,13 @@ lifecycle:
|
|
|
21
21
|
WHERE id = '${AGENT_ID}'"
|
|
22
22
|
acl_level: 1
|
|
23
23
|
---
|
|
24
|
-
## 🚀
|
|
24
|
+
## 🚀 DevOps Engineering Focus
|
|
25
25
|
|
|
26
26
|
**Your role is optimized for:**
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
27
|
+
- Infrastructure automation and deployment
|
|
28
|
+
- CI/CD pipeline design and implementation
|
|
29
|
+
- Monitoring and observability solutions
|
|
30
|
+
- System reliability and scalability
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
@@ -225,7 +225,7 @@ services:
|
|
|
225
225
|
environment:
|
|
226
226
|
- NODE_ENV=production
|
|
227
227
|
- DATABASE_URL=postgresql://user:password@db:5432/myapp
|
|
228
|
-
-
|
|
228
|
+
- CACHE_URL=memcached://cache:11211
|
|
229
229
|
env_file:
|
|
230
230
|
- .env.production
|
|
231
231
|
depends_on:
|
|
@@ -268,15 +268,13 @@ services:
|
|
|
268
268
|
memory: 1G
|
|
269
269
|
|
|
270
270
|
cache:
|
|
271
|
-
image:
|
|
272
|
-
command:
|
|
273
|
-
volumes:
|
|
274
|
-
- redis-data:/data
|
|
271
|
+
image: memcached:1.6-alpine
|
|
272
|
+
command: memcached -m 256
|
|
275
273
|
networks:
|
|
276
274
|
- app-network
|
|
277
275
|
restart: unless-stopped
|
|
278
276
|
healthcheck:
|
|
279
|
-
test: ["CMD", "
|
|
277
|
+
test: ["CMD", "nc", "-z", "localhost", "11211"]
|
|
280
278
|
interval: 10s
|
|
281
279
|
timeout: 3s
|
|
282
280
|
retries: 3
|
|
@@ -304,7 +302,7 @@ services:
|
|
|
304
302
|
volumes:
|
|
305
303
|
postgres-data:
|
|
306
304
|
driver: local
|
|
307
|
-
|
|
305
|
+
cache-data:
|
|
308
306
|
driver: local
|
|
309
307
|
|
|
310
308
|
networks:
|
|
@@ -8,12 +8,6 @@ acl_level: 1
|
|
|
8
8
|
validation_hooks:
|
|
9
9
|
- agent-template-validator
|
|
10
10
|
- test-coverage-validator
|
|
11
|
-
lifecycle:
|
|
12
|
-
pre_task: |
|
|
13
|
-
sqlite-cli exec "INSERT INTO agents (id, type, status, spawned_at) VALUES ('${AGENT_ID}', 'kubernetes-specialist', 'active', CURRENT_TIMESTAMP)"
|
|
14
|
-
post_task: |
|
|
15
|
-
sqlite-cli exec "UPDATE agents SET status = 'completed', confidence = ${CONFIDENCE_SCORE}, completed_at = CURRENT_TIMESTAMP WHERE id = '${AGENT_ID}'"
|
|
16
|
-
---
|
|
17
11
|
|
|
18
12
|
# Kubernetes Specialist Agent
|
|
19
13
|
|
|
@@ -109,10 +109,10 @@ scrape_configs:
|
|
|
109
109
|
static_configs:
|
|
110
110
|
- targets: ['postgres-exporter:9187']
|
|
111
111
|
|
|
112
|
-
#
|
|
113
|
-
- job_name: '
|
|
112
|
+
# Cache metrics
|
|
113
|
+
- job_name: 'memcached'
|
|
114
114
|
static_configs:
|
|
115
|
-
- targets: ['
|
|
115
|
+
- targets: ['memcached-exporter:9150']
|
|
116
116
|
|
|
117
117
|
# Blackbox monitoring (external endpoints)
|
|
118
118
|
- job_name: 'blackbox'
|