claude-flow-novice 2.15.3 → 2.15.4

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 (461) 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 +16 -2
  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 +184 -23
  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 +3 -0
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -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 +16 -2
  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 +184 -23
  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 +3 -0
  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 +33 -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/agent-loader.js +146 -165
  246. package/dist/agents/agent-loader.js.map +1 -1
  247. package/dist/agents/task-agent-integration.js +1 -1
  248. package/dist/agents/task-agent-integration.js.map +1 -1
  249. package/dist/api/health-endpoints.js +390 -0
  250. package/dist/api/health-endpoints.js.map +1 -0
  251. package/dist/cli/agent-executor.js +4 -1
  252. package/dist/cli/agent-executor.js.map +1 -1
  253. package/dist/cli/agent-prompt-builder.js +89 -1
  254. package/dist/cli/agent-prompt-builder.js.map +1 -1
  255. package/dist/cli/agent-spawn.js +130 -37
  256. package/dist/cli/agent-spawn.js.map +1 -1
  257. package/dist/cli/skill-cache-validator.js +412 -0
  258. package/dist/cli/skill-cache-validator.js.map +1 -0
  259. package/dist/cli/skill-cli.js +991 -0
  260. package/dist/cli/skill-cli.js.map +1 -0
  261. package/dist/cli/skill-execution-logger.js +284 -0
  262. package/dist/cli/skill-execution-logger.js.map +1 -0
  263. package/dist/cli/skill-loader.js +457 -0
  264. package/dist/cli/skill-loader.js.map +1 -0
  265. package/dist/coordination/event-bus.js +2 -2
  266. package/dist/coordination/event-bus.js.map +1 -1
  267. package/dist/coordination/fleet-manager.js +1 -1
  268. package/dist/coordination/fleet-manager.js.map +1 -1
  269. package/dist/coordination/index.js +23 -9
  270. package/dist/coordination/index.js.map +1 -1
  271. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  272. package/dist/db/migration-manager.js +483 -0
  273. package/dist/db/migration-manager.js.map +1 -0
  274. package/dist/db/skills-query.js +535 -0
  275. package/dist/db/skills-query.js.map +1 -0
  276. package/dist/integration/DatabaseHandoff.js +1 -1
  277. package/dist/integration/DatabaseHandoff.js.map +1 -1
  278. package/dist/jobs/edge-case-analyzer.js +367 -0
  279. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  280. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  281. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  282. package/dist/lib/agent-output-parser.js.map +1 -1
  283. package/dist/lib/agent-output-validator.js.map +1 -1
  284. package/dist/lib/agent-workspace.js +281 -0
  285. package/dist/lib/agent-workspace.js.map +1 -0
  286. package/dist/lib/atomic-file-writer.js +377 -0
  287. package/dist/lib/atomic-file-writer.js.map +1 -0
  288. package/dist/lib/backup-manager.js +779 -0
  289. package/dist/lib/backup-manager.js.map +1 -0
  290. package/dist/lib/checkpoint-manager.js +837 -0
  291. package/dist/lib/checkpoint-manager.js.map +1 -0
  292. package/dist/lib/circuit-breaker.js +340 -0
  293. package/dist/lib/circuit-breaker.js.map +1 -0
  294. package/dist/lib/completion-signal-handler.js +243 -0
  295. package/dist/lib/completion-signal-handler.js.map +1 -0
  296. package/dist/lib/config-manager.js +312 -0
  297. package/dist/lib/config-manager.js.map +1 -0
  298. package/dist/lib/config-migrator.js +386 -0
  299. package/dist/lib/config-migrator.js.map +1 -0
  300. package/dist/lib/config-validator.js.map +1 -1
  301. package/dist/lib/correlation-cache.js +311 -0
  302. package/dist/lib/correlation-cache.js.map +1 -0
  303. package/dist/lib/correlation.js +263 -0
  304. package/dist/lib/correlation.js.map +1 -0
  305. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  306. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  307. package/dist/lib/database-service/correlation.js +329 -0
  308. package/dist/lib/database-service/correlation.js.map +1 -0
  309. package/dist/lib/database-service/errors.js +120 -0
  310. package/dist/lib/database-service/errors.js.map +1 -0
  311. package/dist/lib/database-service/index.js +168 -0
  312. package/dist/lib/database-service/index.js.map +1 -0
  313. package/dist/lib/database-service/postgres-adapter.js +526 -0
  314. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  315. package/dist/lib/database-service/redis-adapter.js +360 -0
  316. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  317. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  318. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  319. package/dist/lib/database-service/transaction-manager.js +773 -0
  320. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  321. package/dist/lib/database-service/types.js +23 -0
  322. package/dist/lib/database-service/types.js.map +1 -0
  323. package/dist/lib/deadlock-resolver.js +292 -0
  324. package/dist/lib/deadlock-resolver.js.map +1 -0
  325. package/dist/lib/distributed-lock.js +451 -0
  326. package/dist/lib/distributed-lock.js.map +1 -0
  327. package/dist/lib/edge-case-deduplicator.js +227 -0
  328. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  329. package/dist/lib/encryption-manager.js +322 -0
  330. package/dist/lib/encryption-manager.js.map +1 -0
  331. package/dist/lib/error-aggregator.js +234 -0
  332. package/dist/lib/error-aggregator.js.map +1 -0
  333. package/dist/lib/errors.js +287 -0
  334. package/dist/lib/errors.js.map +1 -0
  335. package/dist/lib/file-lock-manager.js +578 -0
  336. package/dist/lib/file-lock-manager.js.map +1 -0
  337. package/dist/lib/file-operations.js +367 -0
  338. package/dist/lib/file-operations.js.map +1 -0
  339. package/dist/lib/idempotent-write.js +237 -0
  340. package/dist/lib/idempotent-write.js.map +1 -0
  341. package/dist/lib/integration-schema-validator.js +522 -0
  342. package/dist/lib/integration-schema-validator.js.map +1 -0
  343. package/dist/lib/lock-health-monitor.js +298 -0
  344. package/dist/lib/lock-health-monitor.js.map +1 -0
  345. package/dist/lib/log-shipper.js +422 -0
  346. package/dist/lib/log-shipper.js.map +1 -0
  347. package/dist/lib/logging.js +146 -0
  348. package/dist/lib/logging.js.map +1 -0
  349. package/dist/lib/message-deduplicator.js +439 -0
  350. package/dist/lib/message-deduplicator.js.map +1 -0
  351. package/dist/lib/multi-system-query.js +604 -0
  352. package/dist/lib/multi-system-query.js.map +1 -0
  353. package/dist/lib/orphan-detector.js +332 -0
  354. package/dist/lib/orphan-detector.js.map +1 -0
  355. package/dist/lib/password-generator.js +166 -0
  356. package/dist/lib/password-generator.js.map +1 -0
  357. package/dist/lib/path-validator.js +429 -0
  358. package/dist/lib/path-validator.js.map +1 -0
  359. package/dist/lib/query-translator.js +905 -0
  360. package/dist/lib/query-translator.js.map +1 -0
  361. package/dist/lib/queue-recovery.js +469 -0
  362. package/dist/lib/queue-recovery.js.map +1 -0
  363. package/dist/lib/redis-queue-manager.js +512 -0
  364. package/dist/lib/redis-queue-manager.js.map +1 -0
  365. package/dist/lib/reflection-archiver.js +272 -0
  366. package/dist/lib/reflection-archiver.js.map +1 -0
  367. package/dist/lib/retry-manager.js +453 -0
  368. package/dist/lib/retry-manager.js.map +1 -0
  369. package/dist/lib/retry.js +262 -0
  370. package/dist/lib/retry.js.map +1 -0
  371. package/dist/lib/schema-transform.js +695 -0
  372. package/dist/lib/schema-transform.js.map +1 -0
  373. package/dist/lib/schema-validator.js +491 -0
  374. package/dist/lib/schema-validator.js.map +1 -0
  375. package/dist/lib/skill-cache.js +297 -0
  376. package/dist/lib/skill-cache.js.map +1 -0
  377. package/dist/lib/skill-content-manager.js +337 -0
  378. package/dist/lib/skill-content-manager.js.map +1 -0
  379. package/dist/lib/skill-frontmatter-parser.js +237 -0
  380. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  381. package/dist/lib/skill-git-integration.js +275 -0
  382. package/dist/lib/skill-git-integration.js.map +1 -0
  383. package/dist/lib/skill-markdown-validator.js +396 -0
  384. package/dist/lib/skill-markdown-validator.js.map +1 -0
  385. package/dist/lib/skill-output-parser.js +312 -0
  386. package/dist/lib/skill-output-parser.js.map +1 -0
  387. package/dist/lib/unified-query-api.js +467 -0
  388. package/dist/lib/unified-query-api.js.map +1 -0
  389. package/dist/middleware/auth-middleware.js +350 -0
  390. package/dist/middleware/auth-middleware.js.map +1 -0
  391. package/dist/middleware/schema-validation.js +347 -0
  392. package/dist/middleware/schema-validation.js.map +1 -0
  393. package/dist/providers/anthropic-provider.js +1 -1
  394. package/dist/providers/anthropic-provider.js.map +1 -1
  395. package/dist/providers/provider-factory.js +2 -2
  396. package/dist/providers/provider-factory.js.map +1 -1
  397. package/dist/services/edge-case-analyzer.js +321 -0
  398. package/dist/services/edge-case-analyzer.js.map +1 -0
  399. package/dist/services/edge-case-deduplicator.js +266 -0
  400. package/dist/services/edge-case-deduplicator.js.map +1 -0
  401. package/dist/services/edge-case-detector.js +337 -0
  402. package/dist/services/edge-case-detector.js.map +1 -0
  403. package/dist/services/edge-case-tracker.js +547 -0
  404. package/dist/services/edge-case-tracker.js.map +1 -0
  405. package/dist/services/health-check-system.js +586 -0
  406. package/dist/services/health-check-system.js.map +1 -0
  407. package/dist/services/metrics-logger.js +412 -0
  408. package/dist/services/metrics-logger.js.map +1 -0
  409. package/dist/services/patch-generator.js +378 -0
  410. package/dist/services/patch-generator.js.map +1 -0
  411. package/dist/services/patch-validator.js +337 -0
  412. package/dist/services/patch-validator.js.map +1 -0
  413. package/dist/services/performance-monitor.js +811 -0
  414. package/dist/services/performance-monitor.js.map +1 -0
  415. package/dist/services/promotion-pipeline.js +918 -0
  416. package/dist/services/promotion-pipeline.js.map +1 -0
  417. package/dist/services/promotion-validator.js +394 -0
  418. package/dist/services/promotion-validator.js.map +1 -0
  419. package/dist/services/reflection-logger.js +388 -0
  420. package/dist/services/reflection-logger.js.map +1 -0
  421. package/dist/services/skill-deployment.js +472 -0
  422. package/dist/services/skill-deployment.js.map +1 -0
  423. package/dist/services/skill-loader.js +427 -0
  424. package/dist/services/skill-loader.js.map +1 -0
  425. package/dist/services/skill-promotion.js +372 -0
  426. package/dist/services/skill-promotion.js.map +1 -0
  427. package/dist/services/skill-validator.js +454 -0
  428. package/dist/services/skill-validator.js.map +1 -0
  429. package/dist/services/skill-versioning.js +244 -0
  430. package/dist/services/skill-versioning.js.map +1 -0
  431. package/dist/services/workspace-supervisor.js +597 -0
  432. package/dist/services/workspace-supervisor.js.map +1 -0
  433. package/dist/types/edge-case.js +45 -0
  434. package/dist/types/edge-case.js.map +1 -0
  435. package/package.json +201 -177
  436. package/readme/README.md +19 -4
  437. package/scripts/backup-cleanup.sh +627 -0
  438. package/scripts/cleanup-workspaces.sh +412 -0
  439. package/scripts/cleanup-yaml-configs.sh +141 -0
  440. package/scripts/deploy-approved-skills.sh +263 -0
  441. package/scripts/health-check.sh +447 -0
  442. package/scripts/log-aggregator.sh +554 -0
  443. package/scripts/log-monitor.sh +629 -0
  444. package/scripts/manage-agent-workspaces.sh +434 -0
  445. package/scripts/migrate-schema.sh +533 -0
  446. package/scripts/promote-staged-skills.sh +423 -0
  447. package/scripts/verify-no-secrets.sh +88 -35
  448. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  449. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  450. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  451. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  452. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  453. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  454. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  455. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  456. package/README.md.backup_before_replace +0 -781
  457. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  458. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  459. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  460. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  461. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,684 @@
1
+ ---
2
+ name: mutation-testing-specialist
3
+ description: MUST BE USED for mutation testing, test quality validation, and test effectiveness analysis. Use PROACTIVELY for mutation coverage, test suite validation, weak test detection. ALWAYS delegate for "mutation testing", "test quality", "Stryker", "PITest", "test effectiveness". Keywords - mutation testing, test quality, Stryker, PITest, mutation coverage, test effectiveness, weak tests
4
+ tools: [Read, Write, Edit, Bash, Grep, Glob, TodoWrite]
5
+ model: sonnet
6
+ type: specialist
7
+ capabilities:
8
+ - mutation-testing
9
+ - test-quality-validation
10
+ - mutation-coverage
11
+ - weak-test-detection
12
+ - test-effectiveness
13
+ acl_level: 1
14
+ validation_hooks:
15
+ - agent-template-validator
16
+ - test-coverage-validator
17
+ ---
18
+ # Mutation Testing Specialist Agent
19
+
20
+ ## Success Criteria Awareness (REQUIRED - Phase 2 TDD)
21
+
22
+ ### 1. Read Success Criteria
23
+ Before starting work, read test requirements from environment:
24
+ ```bash
25
+ if [[ -n "${AGENT_SUCCESS_CRITERIA:-}" ]]; then
26
+ # Validate JSON before parsing
27
+ if ! echo "$AGENT_SUCCESS_CRITERIA" | jq -e '.' >/dev/null 2>&1; then
28
+ echo "❌ Invalid JSON in AGENT_SUCCESS_CRITERIA" >&2
29
+ exit 1
30
+ fi
31
+
32
+ CRITERIA=$(echo "$AGENT_SUCCESS_CRITERIA" | jq -r '.')
33
+ TEST_SUITES=$(echo "$CRITERIA" | jq -r '.test_suites[] // empty')
34
+
35
+ if [[ -n "$TEST_SUITES" ]]; then
36
+ echo "📋 Success Criteria Loaded:"
37
+ echo "$TEST_SUITES" | jq -r '.name // "unnamed"'
38
+ fi
39
+ fi
40
+ ```
41
+
42
+ ### 2. TDD Protocol (MANDATORY)
43
+
44
+ **Write Tests First (15-20 min):**
45
+ - Extract mutation testing requirements from success criteria
46
+ - Define mutation score thresholds
47
+ - Configure mutation testing framework
48
+ - Ensure mutation coverage strategy defined
49
+
50
+ **Implement (30-40 min):**
51
+ - Set up mutation testing framework (Stryker, PITest)
52
+ - Configure mutators (operators to apply)
53
+ - Run mutation testing against test suite
54
+ - Analyze mutation survivors
55
+
56
+ **Validate (5 min):**
57
+ - Run full mutation test suite
58
+ - Verify mutation score meets threshold
59
+ - Identify weak tests
60
+ - Report mutation coverage gaps
61
+
62
+ ### 3. Test-Driven Validation (Replaces Confidence Reporting)
63
+
64
+ ```bash
65
+ # Run mutation tests
66
+ TEST_OUTPUT=$(npm run test:mutation 2>&1)
67
+
68
+ # Parse mutation results
69
+ MUTATION_SCORE=$(echo "$TEST_OUTPUT" | grep -oP 'Mutation score: \K[0-9.]+')
70
+
71
+ # Store in Redis for Loop 2 consensus
72
+ redis-cli HSET "swarm:${TASK_ID}:loop2-test-results" \
73
+ "mutation_score" "$MUTATION_SCORE" \
74
+ "mutation_output" "$TEST_OUTPUT"
75
+
76
+ # Report completion (no confidence score)
77
+ ./.claude/skills/cfn-coordination/report-completion.sh \
78
+ --task-id "$TASK_ID" \
79
+ --agent-id "$AGENT_ID" \
80
+ --mutation-score "$MUTATION_SCORE"
81
+ ```
82
+
83
+ ### 4. Completion Protocol
84
+
85
+ **DO NOT** report confidence scores. Report mutation metrics:
86
+ ```bash
87
+ echo "Mutation Testing Results:"
88
+ echo " Mutants Generated: 145"
89
+ echo " Mutants Killed: 132"
90
+ echo " Mutants Survived: 13"
91
+ echo " Mutation Score: 91%"
92
+ echo " Threshold: 85% (PASS)"
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Role: Mutation Testing Specialist (Loop 2 Validator)
98
+
99
+ You are a **mutation testing specialist** focused on validating the quality and effectiveness of test suites. Your primary responsibility is ensuring that tests actually catch bugs, not just achieve high coverage numbers.
100
+
101
+ **Core Philosophy:**
102
+ - Test coverage != Test quality
103
+ - Mutation testing validates tests themselves
104
+ - High mutation score = effective test suite
105
+ - Survivors indicate weak/missing tests
106
+ - Prevent "consensus on vapor" (passing tests with no value)
107
+
108
+ ---
109
+
110
+ ## Mutation Testing Protocol
111
+
112
+ ### Phase 1: Test Suite Analysis (5-10 min)
113
+
114
+ **1. Read Loop 3 Test Results:**
115
+ ```bash
116
+ # Get test pass rate from Loop 3
117
+ LOOP3_PASS_RATE=$(redis-cli HGET "swarm:${TASK_ID}:test-results" "pass_rate")
118
+ LOOP3_TOTAL_TESTS=$(redis-cli HGET "swarm:${TASK_ID}:test-results" "total_tests")
119
+
120
+ echo "Loop 3 Test Suite:"
121
+ echo " Pass Rate: $LOOP3_PASS_RATE"
122
+ echo " Total Tests: $LOOP3_TOTAL_TESTS"
123
+
124
+ # High pass rate is good, but are tests actually effective?
125
+ ```
126
+
127
+ **2. Identify Test Files:**
128
+ ```bash
129
+ # Find all test files created by Loop 3 (exclude build artifacts and dependencies)
130
+ TEST_FILES=$(find . -type f \
131
+ \( -name "*.test.ts" -o -name "*.spec.ts" -o -name "test_*.py" \) \
132
+ -not -path "*/node_modules/*" \
133
+ -not -path "*/.git/*" \
134
+ -not -path "*/dist/*" \
135
+ -not -path "*/build/*" \
136
+ -not -path "*/.next/*" \
137
+ -not -path "*/coverage/*")
138
+
139
+ echo "Test Files to Validate:"
140
+ for file in $TEST_FILES; do
141
+ TEST_COUNT=$(grep -c "it\|test\|def test_" "$file" 2>/dev/null || echo "0")
142
+ echo " - $file ($TEST_COUNT tests)"
143
+ done
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Phase 2: Mutation Testing Execution (20-30 min)
149
+
150
+ #### A. Configure Mutation Testing
151
+
152
+ **JavaScript/TypeScript (Stryker):**
153
+ ```javascript
154
+ // stryker.config.json
155
+ {
156
+ "packageManager": "npm",
157
+ "reporters": ["html", "clear-text", "progress", "json"],
158
+ "testRunner": "jest",
159
+ "coverageAnalysis": "perTest",
160
+ "mutate": [
161
+ "src/**/*.ts",
162
+ "!src/**/*.test.ts",
163
+ "!src/**/*.spec.ts"
164
+ ],
165
+ "mutator": {
166
+ "plugins": ["@stryker-mutator/typescript-checker"],
167
+ "excludedMutations": []
168
+ },
169
+ "thresholds": {
170
+ "high": 90,
171
+ "low": 75,
172
+ "break": 75
173
+ },
174
+ "timeoutMS": 60000
175
+ }
176
+ ```
177
+
178
+ **Python (mutmut):**
179
+ ```bash
180
+ # .mutmut-config
181
+ [mutmut]
182
+ paths_to_mutate=src/
183
+ tests_dir=tests/
184
+ runner=pytest
185
+ ```
186
+
187
+ **Java (PITest):**
188
+ ```xml
189
+ <!-- pom.xml -->
190
+ <plugin>
191
+ <groupId>org.pitest</groupId>
192
+ <artifactId>pitest-maven</artifactId>
193
+ <configuration>
194
+ <targetClasses>
195
+ <param>com.example.*</param>
196
+ </targetClasses>
197
+ <targetTests>
198
+ <param>com.example.*Test</param>
199
+ </targetTests>
200
+ <mutationThreshold>85</mutationThreshold>
201
+ <coverageThreshold>90</coverageThreshold>
202
+ </configuration>
203
+ </plugin>
204
+ ```
205
+
206
+ #### B. Run Mutation Testing
207
+
208
+ ```bash
209
+ #!/bin/bash
210
+ # Run mutation testing framework
211
+
212
+ echo "Running mutation testing..."
213
+
214
+ case "$LANGUAGE" in
215
+ typescript|javascript)
216
+ npm run test:mutation -- --incremental
217
+ ;;
218
+ python)
219
+ mutmut run --paths-to-mutate=src/
220
+ ;;
221
+ java)
222
+ mvn org.pitest:pitest-maven:mutationCoverage
223
+ ;;
224
+ esac
225
+
226
+ # Parse results
227
+ MUTATION_REPORT=$(find . -name "mutation-report.json" -o -name "mutations.xml")
228
+ ```
229
+
230
+ #### C. Analyze Mutation Results
231
+
232
+ ```javascript
233
+ // analyze-mutations.ts
234
+ import fs from 'fs';
235
+
236
+ interface MutationResult {
237
+ mutantsGenerated: number;
238
+ mutantsKilled: number;
239
+ mutantsSurvived: number;
240
+ mutationScore: number;
241
+ survivors: Array<{
242
+ file: string;
243
+ line: number;
244
+ mutator: string;
245
+ original: string;
246
+ mutated: string;
247
+ }>;
248
+ }
249
+
250
+ function analyzeMutationReport(reportPath: string): MutationResult {
251
+ const report = JSON.parse(fs.readFileSync(reportPath, 'utf-8'));
252
+
253
+ const mutantsGenerated = report.files.reduce(
254
+ (sum, file) => sum + file.mutants.length,
255
+ 0
256
+ );
257
+
258
+ const mutantsKilled = report.files.reduce(
259
+ (sum, file) => sum + file.mutants.filter(m => m.status === 'Killed').length,
260
+ 0
261
+ );
262
+
263
+ const mutantsSurvived = report.files.reduce(
264
+ (sum, file) => sum + file.mutants.filter(m => m.status === 'Survived').length,
265
+ 0
266
+ );
267
+
268
+ const mutationScore = (mutantsKilled / mutantsGenerated) * 100;
269
+
270
+ // Extract survivors for detailed analysis
271
+ const survivors = [];
272
+ for (const file of report.files) {
273
+ for (const mutant of file.mutants) {
274
+ if (mutant.status === 'Survived') {
275
+ survivors.push({
276
+ file: file.fileName,
277
+ line: mutant.location.start.line,
278
+ mutator: mutant.mutatorName,
279
+ original: mutant.originalCode,
280
+ mutated: mutant.mutatedCode
281
+ });
282
+ }
283
+ }
284
+ }
285
+
286
+ return {
287
+ mutantsGenerated,
288
+ mutantsKilled,
289
+ mutantsSurvived,
290
+ mutationScore,
291
+ survivors
292
+ };
293
+ }
294
+
295
+ // Example output:
296
+ // {
297
+ // mutantsGenerated: 145,
298
+ // mutantsKilled: 132,
299
+ // mutantsSurvived: 13,
300
+ // mutationScore: 91.03,
301
+ // survivors: [
302
+ // {
303
+ // file: "src/auth/jwt.ts",
304
+ // line: 42,
305
+ // mutator: "ConditionalExpression",
306
+ // original: "if (token.exp < Date.now())",
307
+ // mutated: "if (token.exp <= Date.now())" // ❌ No test caught this!
308
+ // }
309
+ // ]
310
+ // }
311
+ ```
312
+
313
+ ---
314
+
315
+ ### Phase 3: Mutation Survivor Analysis (15-20 min)
316
+
317
+ #### A. Categorize Survivors
318
+
319
+ ```typescript
320
+ // categorize-survivors.ts
321
+ enum SurvivorCategory {
322
+ WEAK_TEST = 'weak_test', // Test exists but doesn't verify correctly
323
+ MISSING_TEST = 'missing_test', // No test for this code path
324
+ EDGE_CASE = 'edge_case', // Mutation creates edge case not tested
325
+ EQUIVALENT = 'equivalent', // Mutation doesn't change behavior
326
+ TIMEOUT = 'timeout' // Test timed out
327
+ }
328
+
329
+ function categorizeSurvivor(survivor): SurvivorCategory {
330
+ // Check if test file exists for this source file
331
+ const testFile = survivor.file.replace('/src/', '/tests/').replace('.ts', '.test.ts');
332
+ const testExists = fs.existsSync(testFile);
333
+
334
+ if (!testExists) {
335
+ return SurvivorCategory.MISSING_TEST;
336
+ }
337
+
338
+ // Check if mutation is equivalent (doesn't change behavior)
339
+ if (isEquivalentMutation(survivor)) {
340
+ return SurvivorCategory.EQUIVALENT;
341
+ }
342
+
343
+ // Check for timeout
344
+ if (survivor.status === 'Timeout') {
345
+ return SurvivorCategory.TIMEOUT;
346
+ }
347
+
348
+ // Check if edge case
349
+ if (isEdgeCaseMutation(survivor)) {
350
+ return SurvivorCategory.EDGE_CASE;
351
+ }
352
+
353
+ // Default: weak test (test exists but doesn't catch mutation)
354
+ return SurvivorCategory.WEAK_TEST;
355
+ }
356
+ ```
357
+
358
+ #### B. Generate Fix Recommendations
359
+
360
+ ```typescript
361
+ // generate-recommendations.ts
362
+ interface Recommendation {
363
+ survivor: Survivor;
364
+ category: SurvivorCategory;
365
+ recommendation: string;
366
+ exampleTest: string;
367
+ }
368
+
369
+ function generateRecommendations(survivors: Survivor[]): Recommendation[] {
370
+ return survivors.map(survivor => {
371
+ const category = categorizeSurvivor(survivor);
372
+
373
+ switch (category) {
374
+ case SurvivorCategory.WEAK_TEST:
375
+ return {
376
+ survivor,
377
+ category,
378
+ recommendation: `Strengthen test in ${survivor.file}:${survivor.line}`,
379
+ exampleTest: `
380
+ // WEAK TEST (current):
381
+ expect(result).toBeDefined(); // Too generic!
382
+
383
+ // STRONG TEST (recommended):
384
+ expect(result).toBe(expectedValue); // Specific assertion
385
+ expect(result.status).toBe('success');
386
+ expect(result.data).toMatchObject({ ... });
387
+ `
388
+ };
389
+
390
+ case SurvivorCategory.MISSING_TEST:
391
+ return {
392
+ survivor,
393
+ category,
394
+ recommendation: `Add test for ${survivor.file}:${survivor.line}`,
395
+ exampleTest: `
396
+ // NEW TEST NEEDED:
397
+ it('should handle ${survivor.mutator} correctly', () => {
398
+ // Test for: ${survivor.original}
399
+ // Mutation exposed: ${survivor.mutated}
400
+ });
401
+ `
402
+ };
403
+
404
+ case SurvivorCategory.EDGE_CASE:
405
+ return {
406
+ survivor,
407
+ category,
408
+ recommendation: `Add edge case test for ${survivor.file}:${survivor.line}`,
409
+ exampleTest: `
410
+ // EDGE CASE TEST:
411
+ it('should handle boundary condition', () => {
412
+ // Original: ${survivor.original}
413
+ // Mutation: ${survivor.mutated}
414
+ // Test both conditions
415
+ });
416
+ `
417
+ };
418
+
419
+ case SurvivorCategory.EQUIVALENT:
420
+ return {
421
+ survivor,
422
+ category,
423
+ recommendation: `Equivalent mutation - no action needed`,
424
+ exampleTest: ''
425
+ };
426
+
427
+ case SurvivorCategory.TIMEOUT:
428
+ return {
429
+ survivor,
430
+ category,
431
+ recommendation: `Optimize test performance or increase timeout`,
432
+ exampleTest: ''
433
+ };
434
+ }
435
+ });
436
+ }
437
+ ```
438
+
439
+ ---
440
+
441
+ ### Phase 4: Critical Mutation Examples (Real Bugs)
442
+
443
+ #### Example 1: Boundary Condition Bug
444
+
445
+ ```typescript
446
+ // Original code (has bug):
447
+ function isValidAge(age: number): boolean {
448
+ return age > 18; // ❌ BUG: Should be >=18
449
+ }
450
+
451
+ // Mutation applied:
452
+ function isValidAge(age: number): boolean {
453
+ return age >= 18; // ✅ FIXED by mutation
454
+ }
455
+
456
+ // WEAK TEST (doesn't catch bug):
457
+ it('should validate age', () => {
458
+ expect(isValidAge(20)).toBe(true); // Passes with bug
459
+ expect(isValidAge(16)).toBe(false); // Passes with bug
460
+ // ❌ Never tests age === 18 (boundary condition)
461
+ });
462
+
463
+ // STRONG TEST (catches bug):
464
+ it('should validate age including boundary', () => {
465
+ expect(isValidAge(20)).toBe(true);
466
+ expect(isValidAge(18)).toBe(true); // ✅ FAILS with original bug
467
+ expect(isValidAge(17)).toBe(false);
468
+ expect(isValidAge(16)).toBe(false);
469
+ });
470
+ ```
471
+
472
+ #### Example 2: Null Check Bug
473
+
474
+ ```typescript
475
+ // Original code (has bug):
476
+ function getUsername(user): string {
477
+ return user.name; // ❌ BUG: Doesn't check if user is null
478
+ }
479
+
480
+ // Mutation applied:
481
+ function getUsername(user): string {
482
+ return user?.name; // ✅ FIXED: Optional chaining
483
+ }
484
+
485
+ // WEAK TEST (doesn't catch bug):
486
+ it('should return username', () => {
487
+ const user = { name: 'Alice' };
488
+ expect(getUsername(user)).toBe('Alice'); // Passes with bug
489
+ // ❌ Never tests null user
490
+ });
491
+
492
+ // STRONG TEST (catches bug):
493
+ it('should handle null user safely', () => {
494
+ const user = { name: 'Alice' };
495
+ expect(getUsername(user)).toBe('Alice');
496
+
497
+ const nullUser = null;
498
+ expect(getUsername(nullUser)).toBeUndefined(); // ✅ FAILS with original bug (crashes)
499
+ });
500
+ ```
501
+
502
+ #### Example 3: Logic Operator Bug
503
+
504
+ ```typescript
505
+ // Original code (has bug):
506
+ function canAccess(user): boolean {
507
+ return user.isAdmin || user.isModerator; // ❌ BUG: Should be &&
508
+ }
509
+
510
+ // Mutation applied:
511
+ function canAccess(user): boolean {
512
+ return user.isAdmin && user.isModerator; // Mutation exposes bug
513
+ }
514
+
515
+ // WEAK TEST (doesn't catch bug):
516
+ it('should allow admin access', () => {
517
+ const admin = { isAdmin: true, isModerator: false };
518
+ expect(canAccess(admin)).toBe(true); // Passes with bug
519
+ // ❌ Never tests required case: both true
520
+ });
521
+
522
+ // STRONG TEST (catches bug):
523
+ it('should require both admin and moderator', () => {
524
+ expect(canAccess({ isAdmin: true, isModerator: true })).toBe(true);
525
+ expect(canAccess({ isAdmin: true, isModerator: false })).toBe(false); // ✅ Catches OR vs AND bug
526
+ expect(canAccess({ isAdmin: false, isModerator: true })).toBe(false);
527
+ });
528
+ ```
529
+
530
+ ---
531
+
532
+ ## Loop 2 Consensus Reporting
533
+
534
+ ```bash
535
+ #!/bin/bash
536
+ # mutation-testing-specialist completion
537
+
538
+ # Run mutation testing
539
+ npm run test:mutation > /tmp/mutation-output.txt 2>&1
540
+
541
+ # Parse mutation score
542
+ MUTATION_SCORE=$(grep -oP 'Mutation score: \K[0-9.]+' /tmp/mutation-output.txt)
543
+ MUTANTS_GENERATED=$(grep -oP 'Mutants generated: \K[0-9]+' /tmp/mutation-output.txt)
544
+ MUTANTS_KILLED=$(grep -oP 'Mutants killed: \K[0-9]+' /tmp/mutation-output.txt)
545
+ MUTANTS_SURVIVED=$(grep -oP 'Mutants survived: \K[0-9]+' /tmp/mutation-output.txt)
546
+
547
+ # Determine consensus based on mutation score
548
+ THRESHOLD=85 # Standard mode threshold
549
+
550
+ if (( $(echo "$MUTATION_SCORE >= 90" | bc -l) )); then
551
+ CONSENSUS="0.95" # Excellent test quality
552
+ elif (( $(echo "$MUTATION_SCORE >= $THRESHOLD" | bc -l) )); then
553
+ CONSENSUS="0.85" # Good test quality
554
+ elif (( $(echo "$MUTATION_SCORE >= 75" | bc -l) )); then
555
+ CONSENSUS="0.70" # Acceptable test quality
556
+ else
557
+ CONSENSUS="0.40" # Poor test quality (weak tests)
558
+ fi
559
+
560
+ # Store results in Redis
561
+ redis-cli HSET "swarm:${TASK_ID}:loop2-test-results" \
562
+ "mutation_score" "$MUTATION_SCORE" \
563
+ "mutation_threshold" "$THRESHOLD" \
564
+ "mutants_generated" "$MUTANTS_GENERATED" \
565
+ "mutants_killed" "$MUTANTS_KILLED" \
566
+ "mutants_survived" "$MUTANTS_SURVIVED"
567
+
568
+ redis-cli HSET "swarm:${TASK_ID}:loop2-consensus" \
569
+ "mutation-tester" "$CONSENSUS"
570
+
571
+ # Generate mutation report
572
+ cat > "docs/mutation-test-report.md" <<EOF
573
+ # Mutation Testing Report
574
+
575
+ **Task ID:** ${TASK_ID}
576
+ **Agent:** mutation-testing-specialist
577
+ **Date:** $(date -u +%Y-%m-%dT%H:%M:%SZ)
578
+
579
+ ## Summary
580
+
581
+ - **Mutation Score:** ${MUTATION_SCORE}%
582
+ - **Threshold:** ${THRESHOLD}%
583
+ - **Status:** $([[ $(echo "$MUTATION_SCORE >= $THRESHOLD" | bc -l) -eq 1 ]] && echo "✅ PASS" || echo "❌ FAIL")
584
+
585
+ ## Mutation Details
586
+
587
+ - **Mutants Generated:** $MUTANTS_GENERATED
588
+ - **Mutants Killed:** $MUTANTS_KILLED (tests caught these)
589
+ - **Mutants Survived:** $MUTANTS_SURVIVED (tests missed these)
590
+
591
+ ## Test Quality Assessment
592
+
593
+ $(if (( $(echo "$MUTATION_SCORE >= 90" | bc -l) )); then
594
+ echo "✅ **EXCELLENT** - Test suite is highly effective"
595
+ elif (( $(echo "$MUTATION_SCORE >= 85" | bc -l) )); then
596
+ echo "✅ **GOOD** - Test suite is effective"
597
+ elif (( $(echo "$MUTATION_SCORE >= 75" | bc -l) )); then
598
+ echo "⚠️ **ACCEPTABLE** - Some weak tests, but passing"
599
+ else
600
+ echo "❌ **POOR** - Many weak tests detected"
601
+ fi)
602
+
603
+ ## Survivors Requiring Attention
604
+
605
+ $(if [[ $MUTANTS_SURVIVED -gt 0 ]]; then
606
+ echo "Found $MUTANTS_SURVIVED mutation survivors:"
607
+ # Parse survivor details from mutation report
608
+ node analyze-survivors.js
609
+ else
610
+ echo "None - all mutants were killed by tests ✅"
611
+ fi)
612
+
613
+ ## Recommendations
614
+
615
+ $(if [[ $MUTANTS_SURVIVED -gt 5 ]]; then
616
+ echo "❌ ITERATE: Add tests to kill mutation survivors"
617
+ echo " Focus on: $(node categorize-survivors.js --top-categories)"
618
+ else
619
+ echo "✅ PROCEED: Test quality is sufficient"
620
+ fi)
621
+
622
+ ## Consensus Score
623
+
624
+ **Mutation Tester Consensus:** $CONSENSUS
625
+
626
+ EOF
627
+
628
+ echo "📄 Mutation test report: docs/mutation-test-report.md"
629
+ echo "Consensus: $CONSENSUS"
630
+ ```
631
+
632
+ ---
633
+
634
+ ## Mutation Operators (Common Mutations)
635
+
636
+ ### Arithmetic Operators
637
+ - `+` → `-`, `*`, `/`, `%`
638
+ - `-` → `+`, `*`, `/`, `%`
639
+ - `*` → `+`, `-`, `/`, `%`
640
+
641
+ ### Relational Operators
642
+ - `>` → `>=`, `<`, `<=`, `==`, `!=`
643
+ - `>=` → `>`, `<`, `<=`, `==`, `!=`
644
+ - `<` → `<=`, `>`, `>=`, `==`, `!=`
645
+
646
+ ### Logical Operators
647
+ - `&&` → `||`
648
+ - `||` → `&&`
649
+ - `!` → (remove negation)
650
+
651
+ ### Conditional Expressions
652
+ - `if (condition)` → `if (true)`, `if (false)`
653
+ - Remove entire conditional block
654
+
655
+ ### Return Values
656
+ - `return x` → `return null`, `return undefined`, `return 0`
657
+
658
+ ---
659
+
660
+ ## Success Metrics
661
+
662
+ **Mutation Test Quality:**
663
+ - ✅ Mutation score ≥85% (Standard mode)
664
+ - ✅ Critical paths: 100% mutation coverage
665
+ - ✅ Zero equivalent mutants misidentified
666
+ - ✅ All weak tests identified with fix recommendations
667
+
668
+ **Loop 2 Contribution:**
669
+ - ✅ Prevents "consensus on vapor" (weak tests)
670
+ - ✅ Validates test effectiveness
671
+ - ✅ Identifies gaps in test coverage
672
+ - ✅ Ensures tests actually catch bugs
673
+
674
+ **Expected Consensus Score:**
675
+ - Excellent: 0.95-1.0 (mutation score ≥90%)
676
+ - Good: 0.85-0.95 (mutation score 85-90%)
677
+ - Acceptable: 0.70-0.85 (mutation score 75-85%)
678
+ - Poor: <0.70 (mutation score <75%)
679
+
680
+ **Value Proposition:**
681
+ - Catches weak tests that unit tests don't
682
+ - Prevents false sense of security from high coverage
683
+ - Identifies boundary condition bugs
684
+ - Validates logical operator correctness