claude-flow-novice 2.14.7 → 2.14.9
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/commands/cfn-loop-cli.md +1 -1
- package/.claude/skills/cfn-agent-selector/SKILL.md +2 -2
- package/.claude/skills/cfn-agent-selector/SKILL.md.backup_before_replace +91 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +26 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +81 -14
- package/.claude/skills/cfn-product-owner-decision/test-backlog-integration.sh +148 -0
- package/README.md +4 -4
- package/README.md.backup_before_replace +781 -0
- package/claude-assets/agents/AGENT_LIFECYCLE.md +3 -3
- package/claude-assets/agents/AGENT_LIFECYCLE.md.backup_before_replace +530 -0
- package/claude-assets/agents/README-AGENT_LIFECYCLE.md +3 -3
- package/claude-assets/agents/README-AGENT_LIFECYCLE.md.backup_before_replace +522 -0
- package/claude-assets/agents/cfn-dev-team/CLAUDE.md +3 -3
- package/claude-assets/agents/cfn-dev-team/CLAUDE.md.backup_before_replace +1086 -0
- package/claude-assets/agents/cfn-dev-team/README.md +1 -1
- package/claude-assets/agents/cfn-dev-team/README.md.backup_before_replace +116 -0
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +10 -8
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md.backup_before_replace +451 -0
- package/claude-assets/agents/cfn-dev-team/developers/README.md +3 -3
- package/claude-assets/agents/cfn-dev-team/developers/README.md.backup_before_replace +69 -0
- package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +1 -1
- package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md.backup_before_replace +465 -0
- package/claude-assets/agents/cfn-dev-team/test-agent.md +2 -2
- package/claude-assets/agents/cfn-dev-team/test-agent.md.backup_before_replace +141 -0
- package/claude-assets/commands/cfn-loop-cli.md +1 -1
- package/claude-assets/skills/cfn-agent-selector/SKILL.md +2 -2
- package/claude-assets/skills/cfn-agent-selector/SKILL.md.backup_before_replace +91 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +26 -0
- package/claude-assets/skills/cfn-mcp-container-selector/SKILL.md +555 -0
- package/claude-assets/skills/cfn-memory-monitoring/SKILL.md +531 -0
- package/claude-assets/skills/cfn-product-owner-decision/execute-decision.sh +81 -14
- package/claude-assets/skills/cfn-product-owner-decision/test-backlog-integration.sh +148 -0
- package/claude-assets/skills/cfn-redis-cleanup/cleanup-redis.sh +130 -0
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/cli-agent-context.js +6 -0
- package/dist/cli/cli-agent-context.js.map +1 -1
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/user.js +22 -0
- package/dist/types/user.js.map +1 -0
- package/package.json +1 -1
- package/readme/README.md +1 -1
- package/scripts/docker-playwright-fix.sh +312 -0
- package/scripts/switch-api.sh +7 -7
- package/scripts/zone-d-type-fixes.sh +333 -0
|
@@ -149,7 +149,7 @@ Task("cfn-v3-coordinator", `
|
|
|
149
149
|
|
|
150
150
|
1. INVOKE ORCHESTRATOR (CLI spawning):
|
|
151
151
|
|
|
152
|
-
TASK_ID="cfn-cli-$(date +%s)"
|
|
152
|
+
TASK_ID="cfn-cli-$(date +%s%N | tail -c 7)-${RANDOM}"
|
|
153
153
|
MODE="${mode}"
|
|
154
154
|
LOOP3_AGENTS="backend-dev,researcher,devops" # Customize for task
|
|
155
155
|
LOOP2_AGENTS="reviewer,tester,architect,security-specialist" # Scale by complexity
|
|
@@ -17,7 +17,7 @@ AGENTS=$(./.claude/skills/cfn-agent-selector/select-agents.sh \
|
|
|
17
17
|
--task-type "software-development" \
|
|
18
18
|
--description "Implement JWT authentication with refresh tokens")
|
|
19
19
|
|
|
20
|
-
echo "$AGENTS" | jq '.loop3[]' # ["backend-
|
|
20
|
+
echo "$AGENTS" | jq '.loop3[]' # ["backend-developer", "security-specialist"]
|
|
21
21
|
echo "$AGENTS" | jq '.loop2[]' # ["reviewer", "tester", "security-auditor"]
|
|
22
22
|
```
|
|
23
23
|
|
|
@@ -35,7 +35,7 @@ echo "$AGENTS" | jq '.loop2[]' # ["reviewer", "tester", "security-auditor"]
|
|
|
35
35
|
## Agent Selection Rules
|
|
36
36
|
|
|
37
37
|
### Software Development
|
|
38
|
-
**Base Loop 3:** backend-
|
|
38
|
+
**Base Loop 3:** backend-developer, coder
|
|
39
39
|
**Add if keywords:**
|
|
40
40
|
- "security", "authentication", "JWT" → security-specialist
|
|
41
41
|
- "database", "SQL", "schema" → database-engineer (if exists)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Agent Selector Skill
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Purpose:** Select optimal agents for CFN Loop v3 based on task type and requirements
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
Recommends Loop 3 (producers) and Loop 2 (evaluators) agents based on:
|
|
9
|
+
- Task type (from task-classifier)
|
|
10
|
+
- Task description keywords
|
|
11
|
+
- Complexity requirements
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
AGENTS=$(./.claude/skills/cfn-agent-selector/select-agents.sh \
|
|
17
|
+
--task-type "software-development" \
|
|
18
|
+
--description "Implement JWT authentication with refresh tokens")
|
|
19
|
+
|
|
20
|
+
echo "$AGENTS" | jq '.loop3[]' # ["backend-dev", "security-specialist"]
|
|
21
|
+
echo "$AGENTS" | jq '.loop2[]' # ["reviewer", "tester", "security-auditor"]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Output Format
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"loop3": ["agent1", "agent2", "agent3"],
|
|
29
|
+
"loop2": ["validator1", "validator2", "validator3"],
|
|
30
|
+
"loop4": "product-owner",
|
|
31
|
+
"reasoning": "Explanation of agent selection"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Agent Selection Rules
|
|
36
|
+
|
|
37
|
+
### Software Development
|
|
38
|
+
**Base Loop 3:** backend-dev, coder
|
|
39
|
+
**Add if keywords:**
|
|
40
|
+
- "security", "authentication", "JWT" → security-specialist
|
|
41
|
+
- "database", "SQL", "schema" → database-engineer (if exists)
|
|
42
|
+
- "deploy", "CI/CD", "infrastructure" → devops-engineer
|
|
43
|
+
- "frontend", "React", "UI" → react-frontend-engineer
|
|
44
|
+
|
|
45
|
+
**Loop 2:** reviewer, tester, security-auditor
|
|
46
|
+
|
|
47
|
+
### Content Creation
|
|
48
|
+
**Base Loop 3:** copywriter, content-strategist
|
|
49
|
+
**Add if keywords:**
|
|
50
|
+
- "SEO", "search", "keywords" → seo-specialist
|
|
51
|
+
- "technical", "documentation" → technical-writer (if exists)
|
|
52
|
+
|
|
53
|
+
**Loop 2:** editor, brand-reviewer, compliance-checker
|
|
54
|
+
|
|
55
|
+
### Research
|
|
56
|
+
**Base Loop 3:** researcher, data-analyst
|
|
57
|
+
**Add if keywords:**
|
|
58
|
+
- "statistics", "data analysis" → statistician (if exists)
|
|
59
|
+
- "domain-specific" → domain-expert
|
|
60
|
+
|
|
61
|
+
**Loop 2:** fact-checker, methodology-reviewer, statistician
|
|
62
|
+
|
|
63
|
+
### Design
|
|
64
|
+
**Base Loop 3:** ui-designer, ux-researcher
|
|
65
|
+
**Add if keywords:**
|
|
66
|
+
- "visual", "branding" → visual-designer
|
|
67
|
+
- "accessibility" → accessibility-advocate
|
|
68
|
+
|
|
69
|
+
**Loop 2:** accessibility-advocate, design-critic, user-tester
|
|
70
|
+
|
|
71
|
+
### Infrastructure
|
|
72
|
+
**Base Loop 3:** devops-engineer, terraform-engineer
|
|
73
|
+
**Add if keywords:**
|
|
74
|
+
- "Kubernetes", "k8s", "container" → kubernetes-architect
|
|
75
|
+
- "network", "security" → network-engineer (if exists)
|
|
76
|
+
|
|
77
|
+
**Loop 2:** security-auditor, cost-optimizer, compliance-checker
|
|
78
|
+
|
|
79
|
+
### Data Engineering
|
|
80
|
+
**Base Loop 3:** data-engineer, pipeline-builder
|
|
81
|
+
**Add if keywords:**
|
|
82
|
+
- "ETL", "transformation" → etl-specialist
|
|
83
|
+
- "streaming", "real-time" → streaming-specialist (if exists)
|
|
84
|
+
|
|
85
|
+
**Loop 2:** data-quality-validator, schema-reviewer, performance-tester
|
|
86
|
+
|
|
87
|
+
## Integration
|
|
88
|
+
|
|
89
|
+
Used by:
|
|
90
|
+
- `.claude/agents/cfn-v3-coordinator.md` - Agent selection
|
|
91
|
+
- `.claude/skills/cfn-agent-selector/select-agents.sh` - Primary selection script
|
|
@@ -66,6 +66,19 @@ LOOP3_FINAL_CONFIDENCE=0.0
|
|
|
66
66
|
LOOP2_FINAL_CONSENSUS=0.0
|
|
67
67
|
DELIVERABLES_VERIFIED=false
|
|
68
68
|
|
|
69
|
+
# Cleanup Redis keys before exit
|
|
70
|
+
cleanup_redis_keys() {
|
|
71
|
+
if [ -n "$TASK_ID" ]; then
|
|
72
|
+
echo "🧹 Cleaning up Redis keys for task $TASK_ID"
|
|
73
|
+
# Set TTL on remaining task keys (1 hour)
|
|
74
|
+
redis-cli keys "swarm:${TASK_ID}:*" 2>/dev/null | xargs -I {} redis-cli expire {} 3600 2>/dev/null || true
|
|
75
|
+
redis-cli keys "cfn_loop:task:${TASK_ID}:*" 2>/dev/null | xargs -I {} redis-cli expire {} 3600 2>/dev/null || true
|
|
76
|
+
fi
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# Trap cleanup on script exit
|
|
80
|
+
trap cleanup_redis_keys EXIT
|
|
81
|
+
|
|
69
82
|
##############################################################################
|
|
70
83
|
# Argument Parsing
|
|
71
84
|
##############################################################################
|
|
@@ -878,6 +891,19 @@ EOF
|
|
|
878
891
|
esac
|
|
879
892
|
done
|
|
880
893
|
|
|
894
|
+
# Cleanup Redis keys before exit
|
|
895
|
+
cleanup_redis_keys() {
|
|
896
|
+
if [ -n "$TASK_ID" ]; then
|
|
897
|
+
echo "🧹 Cleaning up Redis keys for task $TASK_ID"
|
|
898
|
+
# Set TTL on remaining task keys (1 hour)
|
|
899
|
+
redis-cli keys "swarm:${TASK_ID}:*" 2>/dev/null | xargs -I {} redis-cli expire {} 3600 2>/dev/null || true
|
|
900
|
+
redis-cli keys "cfn_loop:task:${TASK_ID}:*" 2>/dev/null | xargs -I {} redis-cli expire {} 3600 2>/dev/null || true
|
|
901
|
+
fi
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
# Trap cleanup on script exit
|
|
905
|
+
trap cleanup_redis_keys EXIT
|
|
906
|
+
|
|
881
907
|
# Max iterations reached without success
|
|
882
908
|
echo "❌ Max iterations ($MAX_ITERATIONS) reached without PROCEED decision"
|
|
883
909
|
output_result "failed"
|
|
@@ -124,24 +124,34 @@ if [ $PO_EXIT_CODE -eq 124 ]; then
|
|
|
124
124
|
CONFIDENCE=0.0
|
|
125
125
|
else
|
|
126
126
|
# Parse decision from output
|
|
127
|
-
|
|
127
|
+
# Defensive file handling - TEST 5 fix
|
|
128
|
+
if [ -f "$PO_OUTPUT_FILE" ] && [ -s "$PO_OUTPUT_FILE" ]; then
|
|
129
|
+
PO_OUTPUT=$(cat "$PO_OUTPUT_FILE")
|
|
128
130
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
+
# Try multiple parsing patterns
|
|
132
|
+
DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oiE "Decision:\s*(PROCEED|ITERATE|ABORT)" | grep -oiE "(PROCEED|ITERATE|ABORT)" | head -1 | tr '[:lower:]' '[:upper:]' || echo "")
|
|
131
133
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if [ -z "$DECISION_TYPE" ]; then
|
|
137
|
-
DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oiE "(proceed|iterate|abort)" | head -1 | tr '[:lower:]' '[:upper:]' || echo "")
|
|
138
|
-
fi
|
|
134
|
+
if [ -z "$DECISION_TYPE" ]; then
|
|
135
|
+
DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oE "(PROCEED|ITERATE|ABORT)" | head -1 || echo "")
|
|
136
|
+
fi
|
|
139
137
|
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
if [ -z "$DECISION_TYPE" ]; then
|
|
139
|
+
DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oiE "(proceed|iterate|abort)" | head -1 | tr '[:lower:]' '[:upper:]' || echo "")
|
|
140
|
+
fi
|
|
142
141
|
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
# Parse reasoning
|
|
143
|
+
REASONING=$(echo "$PO_OUTPUT" | grep -oiE "Reasoning:\s*.*" | sed 's/Reasoning:\s*//' || echo "No reasoning provided")
|
|
144
|
+
|
|
145
|
+
# Parse confidence
|
|
146
|
+
CONFIDENCE=$(echo "$PO_OUTPUT" | grep -oE "Confidence:\s*[0-9]+\.?[0-9]*" | grep -oE "[0-9]+\.?[0-9]*" || echo "0.85")
|
|
147
|
+
else
|
|
148
|
+
echo -e "${RED}❌ ERROR: Product Owner output file missing or empty${NC}"
|
|
149
|
+
echo "Expected: $PO_OUTPUT_FILE"
|
|
150
|
+
PO_OUTPUT=""
|
|
151
|
+
DECISION_TYPE="ABORT"
|
|
152
|
+
REASONING="Product Owner output file missing or empty: $PO_OUTPUT_FILE"
|
|
153
|
+
CONFIDENCE=0.0
|
|
154
|
+
fi
|
|
145
155
|
fi
|
|
146
156
|
|
|
147
157
|
# Validate decision parsing
|
|
@@ -187,6 +197,63 @@ Next iteration MUST create actual deliverables, not just plans.
|
|
|
187
197
|
fi
|
|
188
198
|
fi
|
|
189
199
|
|
|
200
|
+
# Process deferred items for backlog
|
|
201
|
+
echo -e "${YELLOW}📋 Processing deferred items for backlog...${NC}"
|
|
202
|
+
|
|
203
|
+
# Extract deferred items from Product Owner output
|
|
204
|
+
# Look for sections: "Out of Scope", "Deferred", "Future Work", "Defer"
|
|
205
|
+
DEFERRED_SECTION=$(echo "$PO_OUTPUT" | grep -iA 20 "out of scope\|deferred\|future work\|defer:" || echo "")
|
|
206
|
+
|
|
207
|
+
if [ -n "$DEFERRED_SECTION" ]; then
|
|
208
|
+
echo -e "${YELLOW}Found deferred items section, extracting items...${NC}"
|
|
209
|
+
|
|
210
|
+
# Parse deferred items (lines starting with -, *, or bullet points after marker)
|
|
211
|
+
DEFERRED_ITEMS=$(echo "$DEFERRED_SECTION" | grep -E "^\s*[-*•]" | sed 's/^\s*[-*•]\s*//' || echo "")
|
|
212
|
+
|
|
213
|
+
if [ -n "$DEFERRED_ITEMS" ]; then
|
|
214
|
+
ITEMS_ADDED=0
|
|
215
|
+
|
|
216
|
+
# Process each deferred item
|
|
217
|
+
while IFS= read -r item; do
|
|
218
|
+
# Skip empty lines or section headers
|
|
219
|
+
if [ -n "$item" ] && ! echo "$item" | grep -iqE "^(out of scope|deferred|future work)" && [ ${#item} -ge 10 ]; then
|
|
220
|
+
echo -e "${YELLOW} Adding to backlog: ${item:0:60}...${NC}"
|
|
221
|
+
|
|
222
|
+
# Invoke backlog skill (defensive - don't fail decision on backlog error)
|
|
223
|
+
set +e
|
|
224
|
+
/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-backlog-management/add-backlog-item.sh \
|
|
225
|
+
--item "$item" \
|
|
226
|
+
--why "Deferred during Product Owner decision (Task: $TASK_ID, Iteration: $ITERATION)" \
|
|
227
|
+
--solution "To be determined during sprint planning" \
|
|
228
|
+
--priority "P2" \
|
|
229
|
+
--category "Technical-Debt" \
|
|
230
|
+
--sprint "Sprint-Backlog-$ITERATION" \
|
|
231
|
+
--force >/dev/null 2>&1
|
|
232
|
+
|
|
233
|
+
if [ $? -eq 0 ]; then
|
|
234
|
+
ITEMS_ADDED=$((ITEMS_ADDED + 1))
|
|
235
|
+
else
|
|
236
|
+
echo -e "${YELLOW} Warning: Failed to add backlog item (non-critical)${NC}" >&2
|
|
237
|
+
fi
|
|
238
|
+
set -e
|
|
239
|
+
fi
|
|
240
|
+
done <<< "$DEFERRED_ITEMS"
|
|
241
|
+
|
|
242
|
+
if [ $ITEMS_ADDED -gt 0 ]; then
|
|
243
|
+
echo -e "${GREEN}✅ Backlog updated with $ITEMS_ADDED deferred item(s)${NC}"
|
|
244
|
+
|
|
245
|
+
# Store backlog metadata in Redis
|
|
246
|
+
redis-cli HSET "swarm:${TASK_ID}:${AGENT_ID}:result" "backlog_items_added" "$ITEMS_ADDED"
|
|
247
|
+
else
|
|
248
|
+
echo -e "${YELLOW}⚠️ No valid backlog items extracted${NC}"
|
|
249
|
+
fi
|
|
250
|
+
else
|
|
251
|
+
echo -e "${YELLOW}⚠️ Deferred section found but no items extracted${NC}"
|
|
252
|
+
fi
|
|
253
|
+
else
|
|
254
|
+
echo -e "${GREEN}No deferred items detected in Product Owner output${NC}"
|
|
255
|
+
fi
|
|
256
|
+
|
|
190
257
|
# Build decision JSON
|
|
191
258
|
DECISION_JSON=$(cat <<EOF
|
|
192
259
|
{
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Test script for backlog integration in execute-decision.sh
|
|
3
|
+
# Version: 1.0.0
|
|
4
|
+
# Purpose: Verify deferred items are correctly extracted and added to backlog
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
RED='\033[0;31m'
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[1;33m'
|
|
11
|
+
NC='\033[0m'
|
|
12
|
+
|
|
13
|
+
echo -e "${GREEN}🧪 Testing Backlog Integration in execute-decision.sh${NC}"
|
|
14
|
+
|
|
15
|
+
# Create mock Product Owner output with deferred items
|
|
16
|
+
MOCK_PO_OUTPUT=$(cat <<'EOF'
|
|
17
|
+
Decision: PROCEED
|
|
18
|
+
Reasoning: All acceptance criteria met, but some items deferred for future sprints.
|
|
19
|
+
|
|
20
|
+
Out of Scope:
|
|
21
|
+
- Advanced logging with structured JSON format
|
|
22
|
+
- Performance monitoring dashboard
|
|
23
|
+
- Integration with external analytics platform
|
|
24
|
+
- Custom alert webhooks for critical events
|
|
25
|
+
|
|
26
|
+
Confidence: 0.92
|
|
27
|
+
EOF
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# Test 1: Extract deferred section
|
|
31
|
+
echo -e "${YELLOW}Test 1: Extracting deferred section...${NC}"
|
|
32
|
+
DEFERRED_SECTION=$(echo "$MOCK_PO_OUTPUT" | grep -iA 20 "out of scope|deferred|future work|defer:" || echo "")
|
|
33
|
+
|
|
34
|
+
if [ -n "$DEFERRED_SECTION" ]; then
|
|
35
|
+
echo -e "${GREEN}✅ Deferred section extracted${NC}"
|
|
36
|
+
echo "Preview:"
|
|
37
|
+
echo "$DEFERRED_SECTION" | head -5
|
|
38
|
+
else
|
|
39
|
+
echo -e "${RED}❌ Failed to extract deferred section${NC}"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
# Test 2: Parse individual items
|
|
44
|
+
echo -e "\n${YELLOW}Test 2: Parsing individual items...${NC}"
|
|
45
|
+
DEFERRED_ITEMS=$(echo "$DEFERRED_SECTION" | grep -E "^\s*[-*•]" | sed 's/^\s*[-*•]\s*//' || echo "")
|
|
46
|
+
|
|
47
|
+
if [ -n "$DEFERRED_ITEMS" ]; then
|
|
48
|
+
ITEM_COUNT=$(echo "$DEFERRED_ITEMS" | wc -l)
|
|
49
|
+
echo -e "${GREEN}✅ Extracted $ITEM_COUNT deferred items${NC}"
|
|
50
|
+
echo "Items:"
|
|
51
|
+
echo "$DEFERRED_ITEMS" | nl
|
|
52
|
+
else
|
|
53
|
+
echo -e "${RED}❌ Failed to parse individual items${NC}"
|
|
54
|
+
exit 1
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Test 3: Validate item filtering
|
|
58
|
+
echo -e "\n${YELLOW}Test 3: Validating item filtering...${NC}"
|
|
59
|
+
VALID_ITEMS=0
|
|
60
|
+
|
|
61
|
+
while IFS= read -r item; do
|
|
62
|
+
# Skip empty lines or section headers
|
|
63
|
+
if [ -n "$item" ] && ! echo "$item" | grep -iqE "^(out of scope|deferred|future work)" && [ ${#item} -ge 10 ]; then
|
|
64
|
+
VALID_ITEMS=$((VALID_ITEMS + 1))
|
|
65
|
+
echo -e " ${GREEN}✓${NC} Valid item ($VALID_ITEMS): ${item:0:60}..."
|
|
66
|
+
else
|
|
67
|
+
echo -e " ${YELLOW}↷${NC} Filtered out: ${item:0:60}..."
|
|
68
|
+
fi
|
|
69
|
+
done <<< "$DEFERRED_ITEMS"
|
|
70
|
+
|
|
71
|
+
if [ $VALID_ITEMS -eq 4 ]; then
|
|
72
|
+
echo -e "${GREEN}✅ Correctly filtered to $VALID_ITEMS valid items${NC}"
|
|
73
|
+
else
|
|
74
|
+
echo -e "${YELLOW}⚠️ Expected 4 items, got $VALID_ITEMS${NC}"
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# Test 4: Mock backlog skill invocation (dry run)
|
|
78
|
+
echo -e "\n${YELLOW}Test 4: Testing backlog skill invocation (dry run)...${NC}"
|
|
79
|
+
|
|
80
|
+
# Check if backlog skill exists
|
|
81
|
+
BACKLOG_SKILL="/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-backlog-management/add-backlog-item.sh"
|
|
82
|
+
|
|
83
|
+
if [ -f "$BACKLOG_SKILL" ]; then
|
|
84
|
+
echo -e "${GREEN}✅ Backlog skill found: $BACKLOG_SKILL${NC}"
|
|
85
|
+
|
|
86
|
+
# Test with one sample item (dry run - check parameters only)
|
|
87
|
+
SAMPLE_ITEM="Advanced logging with structured JSON format"
|
|
88
|
+
|
|
89
|
+
echo -e "${YELLOW} Testing parameter construction...${NC}"
|
|
90
|
+
echo " Command: $BACKLOG_SKILL \\"
|
|
91
|
+
echo " --item \"$SAMPLE_ITEM\" \\"
|
|
92
|
+
echo " --why \"Deferred during Product Owner decision (Task: test-task-123, Iteration: 1)\" \\"
|
|
93
|
+
echo " --solution \"To be determined during sprint planning\" \\"
|
|
94
|
+
echo " --priority \"P2\" \\"
|
|
95
|
+
echo " --category \"Technical-Debt\" \\"
|
|
96
|
+
echo " --sprint \"Sprint-Backlog-1\" \\"
|
|
97
|
+
echo " --force"
|
|
98
|
+
|
|
99
|
+
echo -e "${GREEN}✅ Parameter construction valid${NC}"
|
|
100
|
+
else
|
|
101
|
+
echo -e "${RED}❌ Backlog skill not found at: $BACKLOG_SKILL${NC}"
|
|
102
|
+
exit 1
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# Test 5: Integration point verification
|
|
106
|
+
echo -e "\n${YELLOW}Test 5: Verifying integration point in execute-decision.sh...${NC}"
|
|
107
|
+
|
|
108
|
+
SCRIPT_PATH="/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-product-owner-decision/execute-decision.sh"
|
|
109
|
+
|
|
110
|
+
if grep -q "Processing deferred items for backlog" "$SCRIPT_PATH"; then
|
|
111
|
+
echo -e "${GREEN}✅ Integration point found in execute-decision.sh${NC}"
|
|
112
|
+
|
|
113
|
+
# Check if backlog skill is invoked
|
|
114
|
+
if grep -q "cfn-backlog-management/add-backlog-item.sh" "$SCRIPT_PATH"; then
|
|
115
|
+
echo -e "${GREEN}✅ Backlog skill invocation found${NC}"
|
|
116
|
+
else
|
|
117
|
+
echo -e "${RED}❌ Backlog skill invocation missing${NC}"
|
|
118
|
+
exit 1
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Check if error handling is present
|
|
122
|
+
if grep -q "set +e" "$SCRIPT_PATH" && grep -q "set -e" "$SCRIPT_PATH"; then
|
|
123
|
+
echo -e "${GREEN}✅ Defensive error handling found${NC}"
|
|
124
|
+
else
|
|
125
|
+
echo -e "${YELLOW}⚠️ Error handling may be missing${NC}"
|
|
126
|
+
fi
|
|
127
|
+
else
|
|
128
|
+
echo -e "${RED}❌ Integration point not found in execute-decision.sh${NC}"
|
|
129
|
+
exit 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# Summary
|
|
133
|
+
echo -e "\n${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
134
|
+
echo -e "${GREEN}✅ All tests passed!${NC}"
|
|
135
|
+
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
136
|
+
echo -e "\nBacklog integration features verified:"
|
|
137
|
+
echo " - Deferred section extraction: ✓"
|
|
138
|
+
echo " - Item parsing and filtering: ✓"
|
|
139
|
+
echo " - Backlog skill invocation: ✓"
|
|
140
|
+
echo " - Integration point in execute-decision.sh: ✓"
|
|
141
|
+
echo " - Defensive error handling: ✓"
|
|
142
|
+
echo ""
|
|
143
|
+
echo "Expected behavior:"
|
|
144
|
+
echo " - When Product Owner output contains 'Out of Scope', 'Deferred', or 'Future Work' sections"
|
|
145
|
+
echo " - Items are extracted (lines starting with -, *, or •)"
|
|
146
|
+
echo " - Each item is added to readme/BACKLOG.md with P2 priority"
|
|
147
|
+
echo " - Metadata stored in Redis (backlog_items_added)"
|
|
148
|
+
echo " - Failures are non-blocking (warnings only)"
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ cp CFN-CLAUDE.md CLAUDE.md
|
|
|
19
19
|
npx cfn-loop "Implement JWT authentication system" --mode=standard
|
|
20
20
|
|
|
21
21
|
# Or spawn agents directly
|
|
22
|
-
npx cfn-spawn backend-
|
|
22
|
+
npx cfn-spawn backend-developer --task-id auth-task
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
**What happens on install**:
|
|
@@ -76,7 +76,7 @@ User Task Description
|
|
|
76
76
|
│ │
|
|
77
77
|
│ ┌─────────────────────────────────────────────┐ │
|
|
78
78
|
│ │ Loop 3: Implementation (parallel agents) │ │
|
|
79
|
-
│ │ • backend-
|
|
79
|
+
│ │ • backend-developer, coder, devops-engineer, etc │ │
|
|
80
80
|
│ │ • Each reports confidence score (0.0-1.0) │ │
|
|
81
81
|
│ └─────────────────┬───────────────────────────┘ │
|
|
82
82
|
│ ↓ │
|
|
@@ -240,7 +240,7 @@ User Task Description
|
|
|
240
240
|
|
|
241
241
|
**Implementation**
|
|
242
242
|
- `coder` - General-purpose code implementation
|
|
243
|
-
- `backend-
|
|
243
|
+
- `backend-developer` - Backend services and APIs
|
|
244
244
|
- `frontend-dev` - Frontend applications
|
|
245
245
|
- `mobile-dev` - React Native and cross-platform
|
|
246
246
|
- `rust-developer` - Rust language specialist
|
|
@@ -348,7 +348,7 @@ cfn-redis # Redis coordination utilities
|
|
|
348
348
|
## 📊 Multi-Domain Support (6 Task Types)
|
|
349
349
|
|
|
350
350
|
### 1. Software Development
|
|
351
|
-
**Agents**: backend-
|
|
351
|
+
**Agents**: backend-developer, coder, devops-engineer, security-specialist
|
|
352
352
|
**Validation**: Tests pass, security scan clean, build succeeds, coverage ≥80%
|
|
353
353
|
**Deliverables**: Source files, test files, docs
|
|
354
354
|
|