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.
Files changed (46) hide show
  1. package/.claude/commands/cfn-loop-cli.md +1 -1
  2. package/.claude/skills/cfn-agent-selector/SKILL.md +2 -2
  3. package/.claude/skills/cfn-agent-selector/SKILL.md.backup_before_replace +91 -0
  4. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +26 -0
  5. package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +81 -14
  6. package/.claude/skills/cfn-product-owner-decision/test-backlog-integration.sh +148 -0
  7. package/README.md +4 -4
  8. package/README.md.backup_before_replace +781 -0
  9. package/claude-assets/agents/AGENT_LIFECYCLE.md +3 -3
  10. package/claude-assets/agents/AGENT_LIFECYCLE.md.backup_before_replace +530 -0
  11. package/claude-assets/agents/README-AGENT_LIFECYCLE.md +3 -3
  12. package/claude-assets/agents/README-AGENT_LIFECYCLE.md.backup_before_replace +522 -0
  13. package/claude-assets/agents/cfn-dev-team/CLAUDE.md +3 -3
  14. package/claude-assets/agents/cfn-dev-team/CLAUDE.md.backup_before_replace +1086 -0
  15. package/claude-assets/agents/cfn-dev-team/README.md +1 -1
  16. package/claude-assets/agents/cfn-dev-team/README.md.backup_before_replace +116 -0
  17. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +10 -8
  18. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md.backup_before_replace +451 -0
  19. package/claude-assets/agents/cfn-dev-team/developers/README.md +3 -3
  20. package/claude-assets/agents/cfn-dev-team/developers/README.md.backup_before_replace +69 -0
  21. package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +1 -1
  22. package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md.backup_before_replace +465 -0
  23. package/claude-assets/agents/cfn-dev-team/test-agent.md +2 -2
  24. package/claude-assets/agents/cfn-dev-team/test-agent.md.backup_before_replace +141 -0
  25. package/claude-assets/commands/cfn-loop-cli.md +1 -1
  26. package/claude-assets/skills/cfn-agent-selector/SKILL.md +2 -2
  27. package/claude-assets/skills/cfn-agent-selector/SKILL.md.backup_before_replace +91 -0
  28. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +26 -0
  29. package/claude-assets/skills/cfn-mcp-container-selector/SKILL.md +555 -0
  30. package/claude-assets/skills/cfn-memory-monitoring/SKILL.md +531 -0
  31. package/claude-assets/skills/cfn-product-owner-decision/execute-decision.sh +81 -14
  32. package/claude-assets/skills/cfn-product-owner-decision/test-backlog-integration.sh +148 -0
  33. package/claude-assets/skills/cfn-redis-cleanup/cleanup-redis.sh +130 -0
  34. package/dist/agents/agent-loader.js +146 -165
  35. package/dist/agents/agent-loader.js.map +1 -1
  36. package/dist/cli/cli-agent-context.js +6 -0
  37. package/dist/cli/cli-agent-context.js.map +1 -1
  38. package/dist/types/index.js +11 -0
  39. package/dist/types/index.js.map +1 -0
  40. package/dist/types/user.js +22 -0
  41. package/dist/types/user.js.map +1 -0
  42. package/package.json +1 -1
  43. package/readme/README.md +1 -1
  44. package/scripts/docker-playwright-fix.sh +312 -0
  45. package/scripts/switch-api.sh +7 -7
  46. 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-dev", "security-specialist"]
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-dev, coder
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
- PO_OUTPUT=$(cat "$PO_OUTPUT_FILE")
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
- # Try multiple parsing patterns
130
- DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oiE "Decision:\s*(PROCEED|ITERATE|ABORT)" | grep -oiE "(PROCEED|ITERATE|ABORT)" | head -1 | tr '[:lower:]' '[:upper:]' || echo "")
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
- if [ -z "$DECISION_TYPE" ]; then
133
- DECISION_TYPE=$(echo "$PO_OUTPUT" | grep -oE "(PROCEED|ITERATE|ABORT)" | head -1 || echo "")
134
- fi
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
- # Parse reasoning
141
- REASONING=$(echo "$PO_OUTPUT" | grep -oiE "Reasoning:\s*.*" | sed 's/Reasoning:\s*//' || echo "No reasoning provided")
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
- # Parse confidence
144
- CONFIDENCE=$(echo "$PO_OUTPUT" | grep -oE "Confidence:\s*[0-9]+\.?[0-9]*" | grep -oE "[0-9]+\.?[0-9]*" || echo "0.85")
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-dev --task-id auth-task
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-dev, coder, devops-engineer, etc │ │
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-dev` - Backend services and APIs
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-dev, coder, devops-engineer, security-specialist
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