claude-flow-novice 2.14.29 → 2.14.31
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 +34 -23
- 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 +7 -14
- 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 +12 -17
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +15 -12
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +11 -10
- 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 +13 -8
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +15 -19
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +11 -6
- 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 +4 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +6 -29
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +11 -6
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +1 -1
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +9 -23
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +10 -5
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +4 -11
- package/claude-assets/agents/cfn-dev-team/documentation/api-documentation.md +1 -1
- package/claude-assets/agents/cfn-dev-team/documentation/pseudocode.md +5 -20
- package/claude-assets/agents/cfn-dev-team/documentation/specification-agent.md +6 -16
- package/claude-assets/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +11 -6
- package/claude-assets/agents/cfn-dev-team/product-owners/cto-agent.md +0 -5
- package/claude-assets/agents/cfn-dev-team/product-owners/power-user-persona.md +0 -3
- package/claude-assets/agents/cfn-dev-team/product-owners/product-owner.md +56 -242
- 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/utility/analyst.md +0 -7
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -38
- package/claude-assets/agents/cfn-dev-team/{coordinators → utility}/epic-creator.md +18 -58
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +10 -5
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +8 -34
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +10 -5
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +9 -26
- 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/claude-assets/skills/agent-lifecycle/SKILL.md +60 -0
- package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +573 -0
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +31 -0
- package/package.json +1 -1
- package/readme/README.md +71 -14
|
@@ -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.**
|
|
@@ -10,24 +10,15 @@ validation_hooks:
|
|
|
10
10
|
- agent-template-validator
|
|
11
11
|
- cfn-loop-memory-validator
|
|
12
12
|
- test-coverage-validator
|
|
13
|
-
lifecycle:
|
|
14
|
-
pre_task: |
|
|
15
|
-
sqlite-cli exec "INSERT INTO agents (id, type, status, spawned_at)
|
|
16
|
-
VALUES ('${AGENT_ID}', 'devops-engineer', 'active', CURRENT_TIMESTAMP)"
|
|
17
|
-
post_task: |
|
|
18
|
-
sqlite-cli exec "UPDATE agents
|
|
19
|
-
SET status = 'completed', confidence = ${CONFIDENCE_SCORE},
|
|
20
|
-
completed_at = CURRENT_TIMESTAMP
|
|
21
|
-
WHERE id = '${AGENT_ID}'"
|
|
22
13
|
acl_level: 1
|
|
23
14
|
---
|
|
24
|
-
## 🚀
|
|
15
|
+
## 🚀 DevOps Engineering Focus
|
|
25
16
|
|
|
26
17
|
**Your role is optimized for:**
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
18
|
+
- Infrastructure automation and deployment
|
|
19
|
+
- CI/CD pipeline design and implementation
|
|
20
|
+
- Monitoring and observability solutions
|
|
21
|
+
- System reliability and scalability
|
|
31
22
|
|
|
32
23
|
|
|
33
24
|
|
|
@@ -137,8 +128,12 @@ You are an elite DevOps and platform engineer specializing in building scalable,
|
|
|
137
128
|
|
|
138
129
|
Remember: The best infrastructure is invisible—seamless, scalable, and empowering developers to deliver value.
|
|
139
130
|
|
|
140
|
-
|
|
131
|
+
## Completion Protocol
|
|
141
132
|
|
|
142
|
-
|
|
133
|
+
Complete your work and provide a structured response with:
|
|
134
|
+
- Confidence score (0.0-1.0) based on work quality
|
|
135
|
+
- Summary of analysis/review completed
|
|
136
|
+
- List of findings or deliverables
|
|
137
|
+
- Any recommendations made
|
|
143
138
|
|
|
144
|
-
|
|
139
|
+
**Note:** Coordination instructions are provided when spawned via CLI.
|
|
@@ -15,11 +15,6 @@ acl_level: 1
|
|
|
15
15
|
validation_hooks:
|
|
16
16
|
- agent-template-validator
|
|
17
17
|
- test-coverage-validator
|
|
18
|
-
lifecycle:
|
|
19
|
-
pre_task: |
|
|
20
|
-
sqlite-cli exec "INSERT INTO agents (id, type, status, spawned_at) VALUES ('${AGENT_ID}', 'docker-specialist', 'active', CURRENT_TIMESTAMP)"
|
|
21
|
-
post_task: |
|
|
22
|
-
sqlite-cli exec "UPDATE agents SET status = 'completed', confidence = ${CONFIDENCE_SCORE}, completed_at = CURRENT_TIMESTAMP WHERE id = '${AGENT_ID}'"
|
|
23
18
|
---
|
|
24
19
|
|
|
25
20
|
# Docker Specialist Agent
|
|
@@ -225,7 +220,7 @@ services:
|
|
|
225
220
|
environment:
|
|
226
221
|
- NODE_ENV=production
|
|
227
222
|
- DATABASE_URL=postgresql://user:password@db:5432/myapp
|
|
228
|
-
-
|
|
223
|
+
- CACHE_URL=memcached://cache:11211
|
|
229
224
|
env_file:
|
|
230
225
|
- .env.production
|
|
231
226
|
depends_on:
|
|
@@ -268,15 +263,13 @@ services:
|
|
|
268
263
|
memory: 1G
|
|
269
264
|
|
|
270
265
|
cache:
|
|
271
|
-
image:
|
|
272
|
-
command:
|
|
273
|
-
volumes:
|
|
274
|
-
- redis-data:/data
|
|
266
|
+
image: memcached:1.6-alpine
|
|
267
|
+
command: memcached -m 256
|
|
275
268
|
networks:
|
|
276
269
|
- app-network
|
|
277
270
|
restart: unless-stopped
|
|
278
271
|
healthcheck:
|
|
279
|
-
test: ["CMD", "
|
|
272
|
+
test: ["CMD", "nc", "-z", "localhost", "11211"]
|
|
280
273
|
interval: 10s
|
|
281
274
|
timeout: 3s
|
|
282
275
|
retries: 3
|
|
@@ -304,7 +297,7 @@ services:
|
|
|
304
297
|
volumes:
|
|
305
298
|
postgres-data:
|
|
306
299
|
driver: local
|
|
307
|
-
|
|
300
|
+
cache-data:
|
|
308
301
|
driver: local
|
|
309
302
|
|
|
310
303
|
networks:
|
|
@@ -682,6 +675,16 @@ Before reporting high confidence:
|
|
|
682
675
|
- Health checks pass consistently
|
|
683
676
|
- Confidence score ≥ 0.85
|
|
684
677
|
|
|
678
|
+
## Completion Protocol
|
|
679
|
+
|
|
680
|
+
Complete your work and provide a structured response with:
|
|
681
|
+
- Confidence score (0.0-1.0) based on work quality
|
|
682
|
+
- Summary of analysis/review completed
|
|
683
|
+
- List of findings or deliverables
|
|
684
|
+
- Any recommendations made
|
|
685
|
+
|
|
686
|
+
**Note:** Coordination instructions are provided when spawned via CLI.
|
|
687
|
+
|
|
685
688
|
## Skill References
|
|
686
689
|
→ **Security Scanning**: `.claude/skills/docker-security-scanning/SKILL.md`
|
|
687
690
|
→ **Image Optimization**: `.claude/skills/docker-image-optimization/SKILL.md`
|