claude-flow-novice 2.15.3 → 2.15.5

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 (473) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +29 -6
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  36. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  37. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  38. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  39. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  40. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  41. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  42. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  43. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  44. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +238 -29
  45. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  46. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  47. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  48. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  49. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  50. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  51. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  52. package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
  53. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  54. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +6 -2
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +34 -0
  57. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  58. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  59. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  60. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  61. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  62. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  63. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  64. package/README.md +116 -475
  65. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  66. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  67. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  68. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  69. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  70. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  71. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  72. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  73. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  74. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  75. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  76. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  77. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  78. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  79. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  80. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  81. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  82. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  83. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  84. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  85. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  86. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  87. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  88. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  89. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  90. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  91. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  92. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  93. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  94. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  95. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  96. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  97. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  98. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  99. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  100. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  101. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  102. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  103. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  104. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  105. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  106. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  107. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  108. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  110. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  111. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  112. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  114. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  115. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  116. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  117. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  118. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  119. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  120. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  121. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  137. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  138. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  139. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  140. package/claude-assets/commands/cfn-loop-cli.md +29 -6
  141. package/claude-assets/commands/switch-api.md +31 -10
  142. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  143. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  144. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  145. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  146. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  147. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
  148. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
  149. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  150. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  151. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  152. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  153. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  154. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  155. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  156. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  157. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  158. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  159. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  160. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  161. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  162. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  163. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  164. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  165. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  166. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  167. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  168. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  169. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  170. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  171. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  172. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  173. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  174. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  175. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  176. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  177. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  178. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  179. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  180. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +238 -29
  181. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  182. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  183. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  184. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  185. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  186. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  187. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  188. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  189. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  190. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  191. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  192. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  193. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
  194. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  195. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +6 -2
  196. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  197. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +34 -0
  198. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  199. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  200. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  201. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  202. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  203. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  204. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  205. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  206. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  207. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  208. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  209. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  210. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  211. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  212. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  213. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  214. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  215. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  216. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  217. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  218. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  219. package/claude-assets/skills/integration/agent-handoff.sh +62 -64
  220. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  221. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  222. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  223. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  224. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  225. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  226. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  227. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  228. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  229. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  230. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  231. package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
  232. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  233. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
  234. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  235. package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
  236. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  237. package/dist/ace/ace-curator.js +10 -2
  238. package/dist/ace/ace-curator.js.map +1 -1
  239. package/dist/ace/ace-generator.js +4 -0
  240. package/dist/ace/ace-generator.js.map +1 -1
  241. package/dist/ace/ace-reflector.js +1 -1
  242. package/dist/ace/ace-reflector.js.map +1 -1
  243. package/dist/ace/context-injection.js +24 -2
  244. package/dist/ace/context-injection.js.map +1 -1
  245. package/dist/agents/task-agent-integration.js +1 -1
  246. package/dist/agents/task-agent-integration.js.map +1 -1
  247. package/dist/api/health-endpoints.js +390 -0
  248. package/dist/api/health-endpoints.js.map +1 -0
  249. package/dist/cli/agent-executor.js +4 -1
  250. package/dist/cli/agent-executor.js.map +1 -1
  251. package/dist/cli/agent-prompt-builder.js +89 -1
  252. package/dist/cli/agent-prompt-builder.js.map +1 -1
  253. package/dist/cli/agent-spawn.js +130 -37
  254. package/dist/cli/agent-spawn.js.map +1 -1
  255. package/dist/cli/config-manager.js +109 -91
  256. package/dist/cli/config-manager.js.map +1 -1
  257. package/dist/cli/conversation-fork-cleanup.js +201 -0
  258. package/dist/cli/conversation-fork-cleanup.js.map +1 -0
  259. package/dist/cli/conversation-fork.js +16 -3
  260. package/dist/cli/conversation-fork.js.map +1 -1
  261. package/dist/cli/skill-cache-validator.js +412 -0
  262. package/dist/cli/skill-cache-validator.js.map +1 -0
  263. package/dist/cli/skill-cli.js +991 -0
  264. package/dist/cli/skill-cli.js.map +1 -0
  265. package/dist/cli/skill-execution-logger.js +284 -0
  266. package/dist/cli/skill-execution-logger.js.map +1 -0
  267. package/dist/cli/skill-loader.js +457 -0
  268. package/dist/cli/skill-loader.js.map +1 -0
  269. package/dist/coordination/event-bus.js +2 -2
  270. package/dist/coordination/event-bus.js.map +1 -1
  271. package/dist/coordination/fleet-manager.js +1 -1
  272. package/dist/coordination/fleet-manager.js.map +1 -1
  273. package/dist/coordination/index.js +23 -9
  274. package/dist/coordination/index.js.map +1 -1
  275. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  276. package/dist/db/migration-manager.js +483 -0
  277. package/dist/db/migration-manager.js.map +1 -0
  278. package/dist/db/skills-query.js +535 -0
  279. package/dist/db/skills-query.js.map +1 -0
  280. package/dist/integration/DatabaseHandoff.js +1 -1
  281. package/dist/integration/DatabaseHandoff.js.map +1 -1
  282. package/dist/jobs/edge-case-analyzer.js +367 -0
  283. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  284. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  285. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  286. package/dist/lib/agent-output-parser.js.map +1 -1
  287. package/dist/lib/agent-output-validator.js.map +1 -1
  288. package/dist/lib/agent-workspace.js +281 -0
  289. package/dist/lib/agent-workspace.js.map +1 -0
  290. package/dist/lib/atomic-file-writer.js +377 -0
  291. package/dist/lib/atomic-file-writer.js.map +1 -0
  292. package/dist/lib/backup-manager.js +779 -0
  293. package/dist/lib/backup-manager.js.map +1 -0
  294. package/dist/lib/checkpoint-manager.js +837 -0
  295. package/dist/lib/checkpoint-manager.js.map +1 -0
  296. package/dist/lib/circuit-breaker.js +340 -0
  297. package/dist/lib/circuit-breaker.js.map +1 -0
  298. package/dist/lib/completion-signal-handler.js +243 -0
  299. package/dist/lib/completion-signal-handler.js.map +1 -0
  300. package/dist/lib/config-manager.js +312 -0
  301. package/dist/lib/config-manager.js.map +1 -0
  302. package/dist/lib/config-migrator.js +386 -0
  303. package/dist/lib/config-migrator.js.map +1 -0
  304. package/dist/lib/config-validator.js.map +1 -1
  305. package/dist/lib/correlation-cache.js +311 -0
  306. package/dist/lib/correlation-cache.js.map +1 -0
  307. package/dist/lib/correlation.js +263 -0
  308. package/dist/lib/correlation.js.map +1 -0
  309. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  310. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  311. package/dist/lib/database-service/correlation.js +329 -0
  312. package/dist/lib/database-service/correlation.js.map +1 -0
  313. package/dist/lib/database-service/errors.js +120 -0
  314. package/dist/lib/database-service/errors.js.map +1 -0
  315. package/dist/lib/database-service/index.js +168 -0
  316. package/dist/lib/database-service/index.js.map +1 -0
  317. package/dist/lib/database-service/postgres-adapter.js +526 -0
  318. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  319. package/dist/lib/database-service/redis-adapter.js +360 -0
  320. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  321. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  322. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  323. package/dist/lib/database-service/transaction-manager.js +773 -0
  324. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  325. package/dist/lib/database-service/types.js +23 -0
  326. package/dist/lib/database-service/types.js.map +1 -0
  327. package/dist/lib/deadlock-resolver.js +292 -0
  328. package/dist/lib/deadlock-resolver.js.map +1 -0
  329. package/dist/lib/distributed-lock.js +451 -0
  330. package/dist/lib/distributed-lock.js.map +1 -0
  331. package/dist/lib/edge-case-deduplicator.js +227 -0
  332. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  333. package/dist/lib/encryption-manager.js +322 -0
  334. package/dist/lib/encryption-manager.js.map +1 -0
  335. package/dist/lib/error-aggregator.js +234 -0
  336. package/dist/lib/error-aggregator.js.map +1 -0
  337. package/dist/lib/errors.js +287 -0
  338. package/dist/lib/errors.js.map +1 -0
  339. package/dist/lib/file-lock-manager.js +578 -0
  340. package/dist/lib/file-lock-manager.js.map +1 -0
  341. package/dist/lib/file-operations.js +367 -0
  342. package/dist/lib/file-operations.js.map +1 -0
  343. package/dist/lib/idempotent-write.js +237 -0
  344. package/dist/lib/idempotent-write.js.map +1 -0
  345. package/dist/lib/integration-schema-validator.js +522 -0
  346. package/dist/lib/integration-schema-validator.js.map +1 -0
  347. package/dist/lib/lock-health-monitor.js +298 -0
  348. package/dist/lib/lock-health-monitor.js.map +1 -0
  349. package/dist/lib/log-shipper.js +422 -0
  350. package/dist/lib/log-shipper.js.map +1 -0
  351. package/dist/lib/logging.js +146 -0
  352. package/dist/lib/logging.js.map +1 -0
  353. package/dist/lib/message-deduplicator.js +439 -0
  354. package/dist/lib/message-deduplicator.js.map +1 -0
  355. package/dist/lib/multi-system-query.js +604 -0
  356. package/dist/lib/multi-system-query.js.map +1 -0
  357. package/dist/lib/orphan-detector.js +332 -0
  358. package/dist/lib/orphan-detector.js.map +1 -0
  359. package/dist/lib/password-generator.js +166 -0
  360. package/dist/lib/password-generator.js.map +1 -0
  361. package/dist/lib/path-validator.js +429 -0
  362. package/dist/lib/path-validator.js.map +1 -0
  363. package/dist/lib/query-translator.js +905 -0
  364. package/dist/lib/query-translator.js.map +1 -0
  365. package/dist/lib/queue-recovery.js +469 -0
  366. package/dist/lib/queue-recovery.js.map +1 -0
  367. package/dist/lib/redis-queue-manager.js +512 -0
  368. package/dist/lib/redis-queue-manager.js.map +1 -0
  369. package/dist/lib/reflection-archiver.js +272 -0
  370. package/dist/lib/reflection-archiver.js.map +1 -0
  371. package/dist/lib/retry-manager.js +453 -0
  372. package/dist/lib/retry-manager.js.map +1 -0
  373. package/dist/lib/retry.js +262 -0
  374. package/dist/lib/retry.js.map +1 -0
  375. package/dist/lib/schema-transform.js +695 -0
  376. package/dist/lib/schema-transform.js.map +1 -0
  377. package/dist/lib/schema-validator.js +491 -0
  378. package/dist/lib/schema-validator.js.map +1 -0
  379. package/dist/lib/skill-cache.js +297 -0
  380. package/dist/lib/skill-cache.js.map +1 -0
  381. package/dist/lib/skill-content-manager.js +337 -0
  382. package/dist/lib/skill-content-manager.js.map +1 -0
  383. package/dist/lib/skill-frontmatter-parser.js +237 -0
  384. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  385. package/dist/lib/skill-git-integration.js +275 -0
  386. package/dist/lib/skill-git-integration.js.map +1 -0
  387. package/dist/lib/skill-markdown-validator.js +396 -0
  388. package/dist/lib/skill-markdown-validator.js.map +1 -0
  389. package/dist/lib/skill-output-parser.js +312 -0
  390. package/dist/lib/skill-output-parser.js.map +1 -0
  391. package/dist/lib/unified-query-api.js +467 -0
  392. package/dist/lib/unified-query-api.js.map +1 -0
  393. package/dist/middleware/auth-middleware.js +350 -0
  394. package/dist/middleware/auth-middleware.js.map +1 -0
  395. package/dist/middleware/schema-validation.js +347 -0
  396. package/dist/middleware/schema-validation.js.map +1 -0
  397. package/dist/providers/anthropic-provider.js +1 -1
  398. package/dist/providers/anthropic-provider.js.map +1 -1
  399. package/dist/providers/provider-factory.js +2 -2
  400. package/dist/providers/provider-factory.js.map +1 -1
  401. package/dist/services/edge-case-analyzer.js +321 -0
  402. package/dist/services/edge-case-analyzer.js.map +1 -0
  403. package/dist/services/edge-case-deduplicator.js +266 -0
  404. package/dist/services/edge-case-deduplicator.js.map +1 -0
  405. package/dist/services/edge-case-detector.js +337 -0
  406. package/dist/services/edge-case-detector.js.map +1 -0
  407. package/dist/services/edge-case-tracker.js +547 -0
  408. package/dist/services/edge-case-tracker.js.map +1 -0
  409. package/dist/services/health-check-system.js +586 -0
  410. package/dist/services/health-check-system.js.map +1 -0
  411. package/dist/services/metrics-logger.js +412 -0
  412. package/dist/services/metrics-logger.js.map +1 -0
  413. package/dist/services/patch-generator.js +378 -0
  414. package/dist/services/patch-generator.js.map +1 -0
  415. package/dist/services/patch-validator.js +337 -0
  416. package/dist/services/patch-validator.js.map +1 -0
  417. package/dist/services/performance-monitor.js +811 -0
  418. package/dist/services/performance-monitor.js.map +1 -0
  419. package/dist/services/promotion-pipeline.js +918 -0
  420. package/dist/services/promotion-pipeline.js.map +1 -0
  421. package/dist/services/promotion-validator.js +394 -0
  422. package/dist/services/promotion-validator.js.map +1 -0
  423. package/dist/services/reflection-logger.js +388 -0
  424. package/dist/services/reflection-logger.js.map +1 -0
  425. package/dist/services/skill-deployment.js +472 -0
  426. package/dist/services/skill-deployment.js.map +1 -0
  427. package/dist/services/skill-loader.js +427 -0
  428. package/dist/services/skill-loader.js.map +1 -0
  429. package/dist/services/skill-promotion.js +372 -0
  430. package/dist/services/skill-promotion.js.map +1 -0
  431. package/dist/services/skill-validator.js +454 -0
  432. package/dist/services/skill-validator.js.map +1 -0
  433. package/dist/services/skill-versioning.js +244 -0
  434. package/dist/services/skill-versioning.js.map +1 -0
  435. package/dist/services/workspace-supervisor.js +597 -0
  436. package/dist/services/workspace-supervisor.js.map +1 -0
  437. package/dist/types/edge-case.js +45 -0
  438. package/dist/types/edge-case.js.map +1 -0
  439. package/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +405 -0
  440. package/docs/MEMORY_CLEANUP_GUIDE.md +358 -0
  441. package/docs/MEMORY_LEAK_FIX_SUMMARY.md +322 -0
  442. package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +319 -0
  443. package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +574 -0
  444. package/package.json +35 -4
  445. package/readme/README.md +53 -5
  446. package/scripts/backup-cleanup.sh +627 -0
  447. package/scripts/cleanup-workspaces.sh +412 -0
  448. package/scripts/cleanup-yaml-configs.sh +141 -0
  449. package/scripts/deploy-approved-skills.sh +263 -0
  450. package/scripts/health-check.sh +447 -0
  451. package/scripts/log-aggregator.sh +554 -0
  452. package/scripts/log-monitor.sh +629 -0
  453. package/scripts/manage-agent-workspaces.sh +434 -0
  454. package/scripts/migrate-schema.sh +533 -0
  455. package/scripts/promote-staged-skills.sh +423 -0
  456. package/scripts/verify-no-secrets.sh +88 -35
  457. package/scripts/verify-redis-cleanup.sh +173 -0
  458. package/tests/README.md +84 -0
  459. package/tests/test-memory-leak-task-mode.sh +435 -0
  460. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  461. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  462. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  463. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  464. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  465. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  466. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  467. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  468. package/README.md.backup_before_replace +0 -781
  469. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  470. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  471. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  472. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  473. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -2,6 +2,37 @@
2
2
 
3
3
  # Post-Edit Hook for CFN Retrospective Skills
4
4
 
5
+ # Determine PROJECT_ROOT portably
6
+ if [[ -z "$PROJECT_ROOT" ]]; then
7
+ # Resolve script location (handle symlinks)
8
+ SCRIPT_SOURCE="${BASH_SOURCE[0]}"
9
+ if [[ -L "$SCRIPT_SOURCE" ]]; then
10
+ SCRIPT_SOURCE="$(readlink -f "$SCRIPT_SOURCE" 2>/dev/null)" || {
11
+ echo "❌ Failed to resolve symlink for ${BASH_SOURCE[0]}" >&2
12
+ exit 1
13
+ }
14
+ fi
15
+
16
+ # Get script directory
17
+ SCRIPT_DIR="$(dirname "$SCRIPT_SOURCE")"
18
+ if ! cd "$SCRIPT_DIR" 2>/dev/null; then
19
+ echo "❌ Failed to cd to script directory: $SCRIPT_DIR" >&2
20
+ exit 1
21
+ fi
22
+ SCRIPT_DIR="$(pwd)"
23
+
24
+ # Navigate to project root (.claude/hooks -> ../..)
25
+ if ! cd "$SCRIPT_DIR/../.." 2>/dev/null; then
26
+ echo "❌ Failed to navigate to project root from $SCRIPT_DIR" >&2
27
+ exit 1
28
+ fi
29
+
30
+ export PROJECT_ROOT="$(pwd)"
31
+
32
+ # Return to original directory (optional, for safety)
33
+ cd - >/dev/null || true
34
+ fi
35
+
5
36
  # Validate script permissions
6
37
  validate_script_permissions() {
7
38
  local script_path="$1"
@@ -23,7 +54,7 @@ validate_json_syntax() {
23
54
 
24
55
  # Specific validation for retrospective components
25
56
  validate_retrospective_skills() {
26
- local base_path="/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills"
57
+ local base_path="${PROJECT_ROOT}/.claude/skills"
27
58
  local skills=(
28
59
  "pattern-extraction/extract-patterns.sh"
29
60
  "playbook-auto-update/auto-update-playbook.sh"
@@ -49,7 +80,7 @@ validate_retrospective_skills() {
49
80
 
50
81
  # Validate playbook JSON
51
82
  validate_playbook() {
52
- local playbook_path="/mnt/c/Users/masha/Documents/claude-flow-novice/docs/PLAYBOOK.json"
83
+ local playbook_path="${PROJECT_ROOT}/docs/PLAYBOOK.json"
53
84
  validate_json_syntax "$playbook_path"
54
85
  }
55
86
 
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+ #
3
+ # Pre-Edit Security Warning Hook
4
+ # Warns security-specialist agents when editing documentation files
5
+ # to remind them about credential redaction requirements
6
+ #
7
+ # Usage: Called automatically by cfn-invoke-pre-edit.sh
8
+ #
9
+
10
+ set -euo pipefail
11
+
12
+ FILE_PATH="${1:-}"
13
+ AGENT_TYPE="${2:-unknown}"
14
+
15
+ # Only warn when editing documentation as security-specialist
16
+ if [[ "$FILE_PATH" == docs/* ]] && [[ "$AGENT_TYPE" == "security-specialist" ]]; then
17
+ echo ""
18
+ echo "⚠️ SECURITY WARNING: Editing documentation as security-specialist"
19
+ echo " ════════════════════════════════════════════════════════════"
20
+ echo ""
21
+ echo " 📋 MANDATORY REDACTION PROTOCOL:"
22
+ echo " • ALWAYS redact sensitive values: API keys, passwords, tokens"
23
+ echo " • Use [REDACTED] or placeholder patterns only"
24
+ echo " • See: docs/templates/SECURITY_AUDIT_TEMPLATE.md"
25
+ echo ""
26
+ echo " ✅ CORRECT:"
27
+ echo " API_KEY=sk-ant-[REDACTED]"
28
+ echo " PASSWORD=[REDACTED]"
29
+ echo " JWT_TOKEN=eyJhbGci[REDACTED]..."
30
+ echo ""
31
+ echo " ❌ WRONG:"
32
+ echo " API_KEY=sk-ant-actual-key-value"
33
+ echo " PASSWORD=actual-password-123"
34
+ echo ""
35
+ echo " 🛡️ Pre-commit hook will BLOCK commits with exposed credentials"
36
+ echo ""
37
+ fi
38
+
39
+ # Exit 0 (non-blocking warning)
40
+ exit 0
@@ -6,24 +6,26 @@
6
6
  set -euo pipefail
7
7
 
8
8
 
9
- # ⚠️ ANTI-023 MEMORY LEAK PROTECTION: Environment Sanitization
10
- # Load and apply environment sanitization to prevent memory leaks
11
- # shellcheck source=../cfn-environment-sanitization/sanitize-environment.sh
12
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
- if [[ -f "$SCRIPT_DIR/../cfn-environment-sanitization/sanitize-environment.sh" ]]; then
14
- source "$SCRIPT_DIR/../cfn-environment-sanitization/sanitize-environment.sh" --strict
15
- echo "✅ Agent spawning environment sanitized" >&2
16
- else
17
- echo "⚠️ Environment sanitization not available - proceeding without protection" >&2
18
- fi
19
-
20
9
  # ⚠️ ANTI-023 MEMORY LEAK PROTECTION: Block Task Mode agents
21
10
  # Task Mode agents spawn via Task() tool and should NOT use agent spawning CLI
22
- if [[ -z "${1:-}" || -z "${TASK_ID:-}" ]]; then
23
- echo "❌ TASK MODE DETECTED - Agent spawning CLI forbidden" >&2
11
+ # CLI mode requires TASK_ID environment variable (validates existence, not pattern)
12
+ if [[ -z "${TASK_ID:-}" ]]; then
13
+ echo "❌ ERROR: TASK_ID environment variable required for CLI mode" >&2
24
14
  echo "🚨 ANTI-023: This script is for CLI-spawned coordinators only" >&2
25
- echo "💡 Task Mode agent spawning should be handled directly by Main Chat" >&2
26
- echo "🔧 Agent spawned via Task() tool - use Task() tool for spawning instead" >&2
15
+ echo "💡 Task Mode agents should use Task() tool, not CLI spawning" >&2
16
+ exit 1
17
+ fi
18
+
19
+ # Sanitize TASK_ID to prevent command injection
20
+ if [[ "${TASK_ID}" =~ [^a-zA-Z0-9._-] ]]; then
21
+ echo "❌ ERROR: TASK_ID contains invalid characters: ${TASK_ID}" >&2
22
+ echo "Allowed: alphanumeric, dot, underscore, hyphen" >&2
23
+ exit 1
24
+ fi
25
+
26
+ # Validate required parameters for CLI mode
27
+ if [[ -z "${1:-}" ]]; then
28
+ echo "❌ ERROR: Agent type required" >&2
27
29
  exit 1
28
30
  fi
29
31
 
@@ -121,18 +123,14 @@ spawn_agents() {
121
123
  log_info "Spawning agents: $agents"
122
124
  log_info "Task: $task"
123
125
 
124
- # Build spawn command
125
- local spawn_cmd="npx claude-flow-spawn \"$task\" --agents=$agents --provider=$provider"
126
-
127
- # Add optional Redis channel
126
+ # Execute spawn command directly with proper quoting (no eval - prevents command injection)
127
+ local exit_code=0
128
128
  if [[ -n "$redis_channel" ]]; then
129
- spawn_cmd="$spawn_cmd --redis-channel=$redis_channel"
129
+ npx claude-flow-spawn "$task" --agents="$agents" --provider="$provider" --redis-channel="$redis_channel" || exit_code=$?
130
+ else
131
+ npx claude-flow-spawn "$task" --agents="$agents" --provider="$provider" || exit_code=$?
130
132
  fi
131
133
 
132
- # Execute spawn
133
- eval "$spawn_cmd"
134
- local exit_code=$?
135
-
136
134
  if [[ $exit_code -eq 0 ]]; then
137
135
  log_info "Agents spawned successfully"
138
136
  else
@@ -156,15 +156,39 @@ cfn-docker-agent-spawn \
156
156
  - **Batch Operations**: 0.3-0.5 CPU units per agent
157
157
 
158
158
  ### Network Configuration
159
+
160
+ **Multi-Worktree Network Isolation:**
161
+
162
+ For multi-worktree environments, use project-scoped network names:
163
+
159
164
  ```bash
160
- # Create isolated network for MCP communication
161
- docker network create mcp-network --driver bridge
165
+ # Set project name from environment (set by run-in-worktree.sh)
166
+ PROJECT_NAME="${COMPOSE_PROJECT_NAME:-cfn-default}"
167
+
168
+ # Create isolated network for MCP communication (worktree-scoped)
169
+ docker network create "${PROJECT_NAME}_mcp-network" --driver bridge
162
170
 
163
171
  # Connect containers to MCP network
164
- docker network connect mcp-network agent-frontend-001
165
- docker network connect mcp-network playwright-mcp
172
+ docker network connect "${PROJECT_NAME}_mcp-network" agent-frontend-001
173
+ docker network connect "${PROJECT_NAME}_mcp-network" playwright-mcp
166
174
  ```
167
175
 
176
+ **Service Discovery Within Networks:**
177
+
178
+ Agents within the Docker network can access services by name:
179
+ ```bash
180
+ # Use service names (not container names) for connections
181
+ redis-cli -h redis # Resolves to Redis service
182
+ psql -h postgres # Resolves to PostgreSQL service
183
+ curl http://orchestrator:3001 # Resolves to orchestrator service
184
+ ```
185
+
186
+ **Why Project-Scoped Networks?**
187
+ - Prevents network name conflicts between worktrees
188
+ - Isolates agent communication per branch
189
+ - Enables simultaneous multi-worktree development
190
+ - Automatically managed by docker-compose with COMPOSE_PROJECT_NAME
191
+
168
192
  ## Integration with CFN Docker Skills
169
193
 
170
194
  ### Skill-Based MCP Selection
@@ -8,7 +8,9 @@ set -euo pipefail
8
8
  # Default configuration
9
9
  DEFAULT_MEMORY_LIMIT="1g"
10
10
  DEFAULT_CPU_LIMIT="1.0"
11
- DEFAULT_NETWORK="mcp-network"
11
+ # Dynamic network detection for multi-worktree support
12
+ DEFAULT_NETWORK="${COMPOSE_PROJECT_NAME:+${COMPOSE_PROJECT_NAME}_mcp-network}"
13
+ DEFAULT_NETWORK="${DEFAULT_NETWORK:-mcp-network}"
12
14
  DEFAULT_IMAGE="claude-flow-novice-agent:latest"
13
15
 
14
16
  # Colors for output
@@ -1,9 +1,16 @@
1
1
  #!/bin/bash
2
+ set -euo pipefail
2
3
 
3
4
  # CFN Docker Loop Orchestration Implementation
4
5
  # Usage: ./orchestrate.sh [OPERATION] [TASK_ID] [OPTIONS]
5
6
 
6
- set -euo pipefail
7
+ # Determine PROJECT_ROOT
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
10
+
11
+ # Detect worktree/branch for environment injection
12
+ CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
13
+ export WORKTREE_BRANCH="${CURRENT_BRANCH}"
7
14
 
8
15
  # Default configuration
9
16
  DEFAULT_MAX_ITERATIONS=10
@@ -75,6 +82,7 @@ Options:
75
82
  --gate-threshold NUM Gate threshold (default: 0.75)
76
83
  --consensus-threshold NUM Consensus threshold (default: 0.90)
77
84
  --context-file PATH Task context file
85
+ --success-criteria JSON Success criteria for test-driven validation
78
86
  --timeout SECONDS Operation timeout
79
87
  --memory-limit LIMIT Agent memory limit
80
88
  --network NAME Docker network
@@ -98,6 +106,72 @@ Examples:
98
106
  EOF
99
107
  }
100
108
 
109
+ # JSON validation helper with security bounds checking
110
+ validate_json_context() {
111
+ local json_str="$1"
112
+
113
+ if [ -z "$json_str" ]; then
114
+ return 1
115
+ fi
116
+
117
+ # Security: Check size (max 10MB) BEFORE parsing
118
+ local size=$(echo -n "$json_str" | wc -c)
119
+ local MAX_JSON_SIZE=10485760 # 10MB limit
120
+
121
+ if [ "$size" -gt "$MAX_JSON_SIZE" ]; then
122
+ log_error "JSON exceeds maximum size (10MB): ${size} bytes"
123
+ log_error "Security Risk: DoS via excessive memory consumption"
124
+ return 1
125
+ fi
126
+
127
+ # Validate JSON structure
128
+ if ! echo "$json_str" | jq empty 2>/dev/null; then
129
+ log_error "Invalid JSON structure"
130
+ return 1
131
+ fi
132
+
133
+ # Security: Bounds check - validate array sizes if success criteria
134
+ if echo "$json_str" | jq -e '.test_suites' >/dev/null 2>&1; then
135
+ local TEST_SUITE_COUNT=$(echo "$json_str" | jq '.test_suites | length' 2>/dev/null || echo "0")
136
+ local MAX_TEST_SUITES=50
137
+
138
+ if [ "$TEST_SUITE_COUNT" -gt "$MAX_TEST_SUITES" ]; then
139
+ log_error "Test suites exceed maximum ($MAX_TEST_SUITES): $TEST_SUITE_COUNT"
140
+ log_error "Security Risk: DoS via resource exhaustion"
141
+ return 1
142
+ fi
143
+ fi
144
+
145
+ return 0
146
+ }
147
+
148
+ # Input sanitization helper
149
+ sanitize_input() {
150
+ local input="$1"
151
+ local max_length="${2:-256}"
152
+
153
+ # SECURITY FIX #2: Command injection prevention - strict alphanumeric whitelist
154
+ # Allows ONLY: letters, numbers, dash, underscore, space, comma, period, colon
155
+ local sanitized=$(echo "$input" | tr -cd '[:alnum:] _,.:-')
156
+
157
+ # Length bounds check
158
+ if [ ${#input} -gt "$max_length" ]; then
159
+ log_error "Input exceeds maximum length ($max_length): ${#input}"
160
+ return 1
161
+ fi
162
+
163
+ # Reject if input contains shell metacharacters: $, `, ;, |, &, >, <, (, ), {, }, [, ], \, ", ', =
164
+ if [[ "$input" =~ (\$|`|;|\||&|>|<|\(|\)|\{|\}|\[|\]|\\|\"|\'|=) ]]; then
165
+ log_error "Input contains dangerous shell metacharacters"
166
+ log_error "Original: $input"
167
+ log_error "Security Risk: Command injection attack prevented"
168
+ return 1
169
+ fi
170
+
171
+ echo "$sanitized"
172
+ return 0
173
+ }
174
+
101
175
  # Mode configuration
102
176
  get_mode_config() {
103
177
  local mode="$1"
@@ -118,10 +192,6 @@ get_mode_config() {
118
192
  esac
119
193
  }
120
194
 
121
- # Get script directory
122
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
123
- PROJECT_ROOT="$(cd "$(dirname "$SCRIPT_DIR")/../.." && pwd)"
124
-
125
195
  # Path to skills
126
196
  REDIS_COORDINATION_SKILL="$PROJECT_ROOT/.claude/skills/cfn-docker-redis-coordination/coordinate.sh"
127
197
  AGENT_SPAWNING_SKILL="$PROJECT_ROOT/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh"
@@ -144,6 +214,7 @@ GATE_THRESHOLD="$DEFAULT_GATE_THRESHOLD"
144
214
  CONSENSUS_THRESHOLD="$DEFAULT_CONSENSUS_THRESHOLD"
145
215
  CONTEXT_FILE=""
146
216
  TIMEOUT=""
217
+ SUCCESS_CRITERIA=""
147
218
  MEMORY_LIMIT=""
148
219
  NETWORK=""
149
220
  ADAPTIVE_SELECTION=false
@@ -187,6 +258,10 @@ while [[ $# -gt 0 ]]; do
187
258
  CONTEXT_FILE="$2"
188
259
  shift 2
189
260
  ;;
261
+ --success-criteria)
262
+ SUCCESS_CRITERIA="$2"
263
+ shift 2
264
+ ;;
190
265
  --timeout)
191
266
  TIMEOUT="$2"
192
267
  shift 2
@@ -534,6 +609,23 @@ init() {
534
609
  }
535
610
  EOF
536
611
 
612
+ # Store success criteria if provided
613
+ if [[ -n "$SUCCESS_CRITERIA" ]]; then
614
+ if validate_json_context "$SUCCESS_CRITERIA"; then
615
+ # Store in Redis using coordination skill
616
+ if command -v redis-cli >/dev/null 2>&1; then
617
+ redis-cli HSET "task:${task_id}:context" "success-criteria" "$SUCCESS_CRITERIA" >/dev/null 2>&1 || {
618
+ log_warning "Failed to store success criteria in Redis, will pass via env vars"
619
+ }
620
+ log "Stored success criteria ($(echo "$SUCCESS_CRITERIA" | jq -r '.test_suites | length' 2>/dev/null || echo '0') test suites)"
621
+ else
622
+ log_warning "Redis not available, success criteria will be passed via environment variables"
623
+ fi
624
+ else
625
+ log_error "Invalid success criteria JSON, skipping storage"
626
+ fi
627
+ fi
628
+
537
629
  log_success "Loop orchestration initialized: $task_id"
538
630
  }
539
631
 
@@ -550,6 +642,36 @@ spawn_loop3() {
550
642
  log_loop "Spawning Loop 3 implementers (iteration $iteration)"
551
643
  log "Agents: $agents"
552
644
 
645
+ # Load success criteria from Redis (if available)
646
+ local AGENT_SUCCESS_CRITERIA=""
647
+ local AGENT_SUCCESS_CRITERIA_B64=""
648
+
649
+ if command -v redis-cli >/dev/null 2>&1; then
650
+ local LOADED_CRITERIA=$(redis-cli HGET "task:${task_id}:context" "success-criteria" 2>/dev/null || echo "")
651
+
652
+ if [[ -n "$LOADED_CRITERIA" && "$LOADED_CRITERIA" != "null" ]]; then
653
+ # Validate JSON
654
+ if echo "$LOADED_CRITERIA" | jq empty 2>/dev/null; then
655
+ AGENT_SUCCESS_CRITERIA="$LOADED_CRITERIA"
656
+
657
+ # Base64-encode for safe environment variable passing
658
+ AGENT_SUCCESS_CRITERIA_B64=$(echo -n "$AGENT_SUCCESS_CRITERIA" | base64 -w 0 2>/dev/null || echo -n "$AGENT_SUCCESS_CRITERIA" | base64)
659
+
660
+ local TEST_SUITE_COUNT=$(echo "$AGENT_SUCCESS_CRITERIA" | jq -r '.test_suites | length' 2>/dev/null || echo "0")
661
+ log "Success criteria loaded ($TEST_SUITE_COUNT test suites)"
662
+ else
663
+ log_warning "Invalid success criteria JSON in Redis, skipping"
664
+ fi
665
+ fi
666
+ fi
667
+
668
+ # Fallback to global SUCCESS_CRITERIA if not in Redis
669
+ if [[ -z "$AGENT_SUCCESS_CRITERIA" && -n "$SUCCESS_CRITERIA" ]]; then
670
+ AGENT_SUCCESS_CRITERIA="$SUCCESS_CRITERIA"
671
+ AGENT_SUCCESS_CRITERIA_B64=$(echo -n "$AGENT_SUCCESS_CRITERIA" | base64 -w 0 2>/dev/null || echo -n "$AGENT_SUCCESS_CRITERIA" | base64)
672
+ log "Using global success criteria (not in Redis)"
673
+ fi
674
+
553
675
  # Check for execution plan
554
676
  local plan_file="/tmp/cfn-docker-plan-${task_id}.json"
555
677
  local has_plan=false
@@ -587,7 +709,7 @@ spawn_loop3() {
587
709
  local context_file="/tmp/task-context-${task_id}-loop3-${iteration}-${agent_type}.json"
588
710
 
589
711
  # Create enhanced context with atomic task assignment
590
- cat > "$context_file" << EOF
712
+ local context_json=$(cat << EOF
591
713
  {
592
714
  "task_id": "$task_id",
593
715
  "loop_number": 3,
@@ -603,6 +725,14 @@ spawn_loop3() {
603
725
  "created_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
604
726
  }
605
727
  EOF
728
+ )
729
+
730
+ # Add success criteria if available (stored separately due to potential size)
731
+ if [[ -n "$AGENT_SUCCESS_CRITERIA_B64" ]]; then
732
+ context_json=$(echo "$context_json" | jq --arg criteria_b64 "$AGENT_SUCCESS_CRITERIA_B64" '. + {success_criteria_b64: $criteria_b64}')
733
+ fi
734
+
735
+ echo "$context_json" > "$context_file"
606
736
 
607
737
  # Get task context from Redis if available
608
738
  if [[ -n "$CONTEXT_FILE" ]]; then
@@ -612,6 +742,11 @@ EOF
612
742
  fi
613
743
 
614
744
  if [[ "$DRY_RUN" == false ]]; then
745
+ # Docker container environment: Agent spawning skill will extract
746
+ # success_criteria_b64 from context file and pass to container via:
747
+ # docker run --env AGENT_SUCCESS_CRITERIA_B64=<base64-encoded-json>
748
+ # This enables secure test-driven validation in containerized agents
749
+
615
750
  local agent_id
616
751
  agent_id=$("$AGENT_SPAWNING_SKILL" \
617
752
  "$agent_type" \
@@ -726,26 +861,95 @@ gate_check() {
726
861
 
727
862
  log_loop "Performing gate check for iteration $iteration"
728
863
 
729
- if monitor_loop3 "$task_id" "$gate_threshold" "$iteration"; then
730
- # Gate passed - proceed to Loop 2
731
- log_success "Gate PASSED - proceeding to Loop 2 validation"
864
+ # First, ensure Loop 3 agents have completed
865
+ if ! monitor_loop3 "$task_id" "$gate_threshold" "$iteration"; then
866
+ log_error "Loop 3 monitoring failed"
867
+ return 1
868
+ fi
732
869
 
733
- # Signal gate passed for Loop 2 agents
734
- "$REDIS_COORDINATION_SKILL" "$REDIS_CMD" LPUSH "cfn_docker:task:$task_id:gate-passed" "proceed" > /dev/null
870
+ # Get Loop 3 agent IDs for gate check
871
+ local agents_file="/tmp/loop3-agents-${task_id}-${iteration}.txt"
872
+ local loop3_agent_ids=""
735
873
 
736
- return 0
874
+ if [[ -f "$agents_file" ]]; then
875
+ loop3_agent_ids=$(cat "$agents_file" | tr '\n' ',' | sed 's/,$//')
737
876
  else
738
- # Gate failed - check if we can iterate
739
- if [[ $iteration -lt $max_iterations ]]; then
740
- log_warning "Gate FAILED - iterating Loop 3 ($iteration/$max_iterations)"
877
+ log_error "No Loop 3 agent IDs found for gate check"
878
+ return 1
879
+ fi
741
880
 
742
- # Force next iteration
743
- spawn_loop3 "$task_id" "$AGENTS" $((iteration + 1))
744
- return 2 # Signal to iterate
881
+ # Load success criteria from Redis
882
+ local gate_success_criteria=""
883
+ if command -v redis-cli >/dev/null 2>&1; then
884
+ gate_success_criteria=$(redis-cli HGET "task:${task_id}:context" "success-criteria" 2>/dev/null || echo "")
885
+ fi
886
+
887
+ # Fallback to global SUCCESS_CRITERIA
888
+ if [[ -z "$gate_success_criteria" && -n "$SUCCESS_CRITERIA" ]]; then
889
+ gate_success_criteria="$SUCCESS_CRITERIA"
890
+ fi
891
+
892
+ # Use test-driven gate check helper if available
893
+ local GATE_CHECK_HELPER="$PROJECT_ROOT/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh"
894
+
895
+ if [[ -x "$GATE_CHECK_HELPER" ]]; then
896
+ log "Using test-driven gate check"
897
+
898
+ # Prepare arguments
899
+ local gate_args=(
900
+ --task-id "$task_id"
901
+ --agents "$loop3_agent_ids"
902
+ --threshold "$gate_threshold"
903
+ --min-quorum "0.66"
904
+ --mode "$MODE"
905
+ )
906
+
907
+ # Add success criteria if available
908
+ if [[ -n "$gate_success_criteria" ]]; then
909
+ gate_args+=(--success-criteria "$gate_success_criteria")
910
+ gate_args+=(--strategy "test-driven")
745
911
  else
746
- log_error "Gate FAILED - max iterations reached ($max_iterations)"
747
- return 1
912
+ gate_args+=(--strategy "confidence")
913
+ log_warning "No success criteria available, using confidence-based gate check"
914
+ fi
915
+
916
+ if "$GATE_CHECK_HELPER" "${gate_args[@]}"; then
917
+ # Gate passed - proceed to Loop 2
918
+ log_success "Gate PASSED - proceeding to Loop 2 validation"
919
+
920
+ # Signal gate passed for Loop 2 agents
921
+ if command -v redis-cli >/dev/null 2>&1; then
922
+ redis-cli LPUSH "cfn_docker:task:$task_id:gate-passed" "proceed" > /dev/null 2>&1 || true
923
+ fi
924
+
925
+ return 0
926
+ else
927
+ # Gate failed - check if we can iterate
928
+ if [[ $iteration -lt $max_iterations ]]; then
929
+ log_warning "Gate FAILED - iterating Loop 3 ($iteration/$max_iterations)"
930
+
931
+ # Force next iteration
932
+ spawn_loop3 "$task_id" "$AGENTS" $((iteration + 1))
933
+ return 2 # Signal to iterate
934
+ else
935
+ log_error "Gate FAILED - max iterations reached ($max_iterations)"
936
+ return 1
937
+ fi
748
938
  fi
939
+ else
940
+ # Fallback to legacy confidence-based gate check
941
+ log_warning "Gate check helper not found, using legacy confidence-based validation"
942
+
943
+ # The monitor_loop3 function already checked confidence
944
+ # If we got here, monitoring succeeded, so gate passes
945
+ log_success "Gate PASSED (legacy mode)"
946
+
947
+ # Signal gate passed
948
+ if command -v redis-cli >/dev/null 2>&1; then
949
+ redis-cli LPUSH "cfn_docker:task:$task_id:gate-passed" "proceed" > /dev/null 2>&1 || true
950
+ fi
951
+
952
+ return 0
749
953
  fi
750
954
  }
751
955