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
@@ -0,0 +1,344 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ ###############################################################################
5
+ # CFN Skill Loader - Execution Script
6
+ #
7
+ # High-performance skill loading with LRU caching and hash validation.
8
+ # Provides command-line interface for skill loading operations.
9
+ #
10
+ # Usage:
11
+ # ./execute.sh --agent-type <type> [options]
12
+ #
13
+ # Options:
14
+ # --agent-type <type> Agent type to load skills for (required)
15
+ # --task-context <keywords> Comma-separated context keywords (optional)
16
+ # --max-skills <num> Maximum skills to load (default: 20)
17
+ # --phase <phase> CFN Loop phase filter (optional)
18
+ # --no-bootstrap Exclude bootstrap skills (default: include)
19
+ # --benchmark Run performance benchmarks
20
+ # --iterations <num> Benchmark iteration count (default: 10)
21
+ # --clear-cache Clear skill cache before loading
22
+ # --preload <skills> Preload specified skills (comma-separated)
23
+ # --validate-only Only validate cached skills, don't load
24
+ # --stats Show cache statistics only
25
+ # --help Show this help message
26
+ #
27
+ # Examples:
28
+ # # Load skills for backend developer with authentication context
29
+ # ./execute.sh --agent-type backend-developer --task-context "authentication,api"
30
+ #
31
+ # # Load Loop 3 skills with limit
32
+ # ./execute.sh --agent-type tester --phase loop3 --max-skills 10
33
+ #
34
+ # # Benchmark performance
35
+ # ./execute.sh --benchmark --iterations 20
36
+ #
37
+ # # Preload common skills for cache warming
38
+ # ./execute.sh --preload "cfn-coordination,hook-pipeline,pre-edit-backup"
39
+ #
40
+ ###############################################################################
41
+
42
+ # Default values
43
+ AGENT_TYPE=""
44
+ TASK_CONTEXT=""
45
+ MAX_SKILLS=20
46
+ PHASE=""
47
+ INCLUDE_BOOTSTRAP="true"
48
+ BENCHMARK="false"
49
+ ITERATIONS=10
50
+ CLEAR_CACHE="false"
51
+ PRELOAD_SKILLS=""
52
+ VALIDATE_ONLY="false"
53
+ STATS_ONLY="false"
54
+
55
+ # Parse arguments
56
+ while [[ $# -gt 0 ]]; do
57
+ case $1 in
58
+ --agent-type)
59
+ AGENT_TYPE="$2"
60
+ shift 2
61
+ ;;
62
+ --task-context)
63
+ TASK_CONTEXT="$2"
64
+ shift 2
65
+ ;;
66
+ --max-skills)
67
+ MAX_SKILLS="$2"
68
+ shift 2
69
+ ;;
70
+ --phase)
71
+ PHASE="$2"
72
+ shift 2
73
+ ;;
74
+ --no-bootstrap)
75
+ INCLUDE_BOOTSTRAP="false"
76
+ shift
77
+ ;;
78
+ --benchmark)
79
+ BENCHMARK="true"
80
+ shift
81
+ ;;
82
+ --iterations)
83
+ ITERATIONS="$2"
84
+ shift 2
85
+ ;;
86
+ --clear-cache)
87
+ CLEAR_CACHE="true"
88
+ shift
89
+ ;;
90
+ --preload)
91
+ PRELOAD_SKILLS="$2"
92
+ shift 2
93
+ ;;
94
+ --validate-only)
95
+ VALIDATE_ONLY="true"
96
+ shift
97
+ ;;
98
+ --stats)
99
+ STATS_ONLY="true"
100
+ shift
101
+ ;;
102
+ --help)
103
+ head -n 50 "$0" | grep '^#' | sed 's/^# //'
104
+ exit 0
105
+ ;;
106
+ *)
107
+ echo "Unknown option: $1"
108
+ echo "Use --help for usage information"
109
+ exit 1
110
+ ;;
111
+ esac
112
+ done
113
+
114
+ # Script directory
115
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
116
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
117
+
118
+ # TypeScript execution helper
119
+ run_typescript() {
120
+ local code="$1"
121
+
122
+ npx tsx -e "
123
+ import { SkillLoader, getGlobalLoader } from '${PROJECT_ROOT}/src/cli/skill-loader';
124
+ import { SkillCacheValidator, getGlobalValidator } from '${PROJECT_ROOT}/src/cli/skill-cache-validator';
125
+ import { DatabaseService } from '${PROJECT_ROOT}/src/lib/database-service';
126
+ import { createLogger } from '${PROJECT_ROOT}/src/lib/logging';
127
+
128
+ const logger = createLogger('skill-loader-cli');
129
+
130
+ async function main() {
131
+ ${code}
132
+ }
133
+
134
+ main().catch(error => {
135
+ console.error('ERROR:', error.message);
136
+ process.exit(1);
137
+ });
138
+ "
139
+ }
140
+
141
+ # Show cache statistics
142
+ if [[ "$STATS_ONLY" == "true" ]]; then
143
+ run_typescript "
144
+ const loader = getGlobalLoader(undefined, logger);
145
+ const stats = loader.getCacheStats();
146
+
147
+ console.log(JSON.stringify({
148
+ cacheSize: stats.size,
149
+ maxSize: stats.maxSize,
150
+ ttlMinutes: stats.ttlMinutes,
151
+ utilizationPercent: ((stats.size / stats.maxSize) * 100).toFixed(2)
152
+ }, null, 2));
153
+ "
154
+ exit 0
155
+ fi
156
+
157
+ # Clear cache if requested
158
+ if [[ "$CLEAR_CACHE" == "true" ]]; then
159
+ echo "Clearing skill cache..."
160
+ run_typescript "
161
+ const loader = getGlobalLoader(undefined, logger);
162
+ loader.clearCache();
163
+ console.log('Cache cleared successfully');
164
+ "
165
+ fi
166
+
167
+ # Preload skills
168
+ if [[ -n "$PRELOAD_SKILLS" ]]; then
169
+ echo "Preloading skills: $PRELOAD_SKILLS"
170
+ run_typescript "
171
+ const skillIds = '${PRELOAD_SKILLS}'.split(',').map(s => s.trim());
172
+ const loader = getGlobalLoader(undefined, logger);
173
+
174
+ await loader.preloadSkills(skillIds);
175
+
176
+ const stats = loader.getCacheStats();
177
+ console.log(\`Preloaded \${skillIds.length} skills. Cache size: \${stats.size}\`);
178
+ "
179
+ exit 0
180
+ fi
181
+
182
+ # Validate cached skills only
183
+ if [[ "$VALIDATE_ONLY" == "true" ]]; then
184
+ echo "Validating cached skills..."
185
+ run_typescript "
186
+ const validator = getGlobalValidator(logger);
187
+ const loader = getGlobalLoader(undefined, logger);
188
+
189
+ const stats = loader.getCacheStats();
190
+ console.log(\`Validating \${stats.size} cached skills...\`);
191
+
192
+ // Note: Actual validation requires access to cache internals
193
+ // This is a placeholder for the validation logic
194
+ console.log('Validation completed');
195
+ "
196
+ exit 0
197
+ fi
198
+
199
+ # Run benchmark
200
+ if [[ "$BENCHMARK" == "true" ]]; then
201
+ echo "Running performance benchmark ($ITERATIONS iterations)..."
202
+ run_typescript "
203
+ const dbService = new DatabaseService({
204
+ sqlite: {
205
+ type: 'sqlite',
206
+ database: '${PROJECT_ROOT}/.claude/skills/cfn-redis-coordination/data/cfn-loop.db'
207
+ }
208
+ });
209
+
210
+ await dbService.connect();
211
+
212
+ const loader = new SkillLoader(dbService, logger);
213
+
214
+ const coldStartTime = Date.now();
215
+ const coldResult = await loader.loadContextualSkills({
216
+ agentType: 'backend-developer',
217
+ taskContext: ['authentication', 'api'],
218
+ maxSkills: 20,
219
+ includeBootstrap: true
220
+ });
221
+ const coldDuration = Date.now() - coldStartTime;
222
+
223
+ // Warm loads
224
+ const warmDurations: number[] = [];
225
+ for (let i = 0; i < ${ITERATIONS}; i++) {
226
+ const startTime = Date.now();
227
+ await loader.loadContextualSkills({
228
+ agentType: 'backend-developer',
229
+ taskContext: ['authentication', 'api'],
230
+ maxSkills: 20,
231
+ includeBootstrap: true
232
+ });
233
+ warmDurations.push(Date.now() - startTime);
234
+ }
235
+
236
+ const avgWarmDuration = warmDurations.reduce((a, b) => a + b, 0) / warmDurations.length;
237
+ const minWarmDuration = Math.min(...warmDurations);
238
+ const maxWarmDuration = Math.max(...warmDurations);
239
+
240
+ console.log(JSON.stringify({
241
+ coldLoad: {
242
+ durationMs: coldDuration,
243
+ skillsLoaded: coldResult.totalSkills,
244
+ slaTarget: 1000,
245
+ passedSLA: coldDuration < 1000
246
+ },
247
+ warmLoad: {
248
+ iterations: ${ITERATIONS},
249
+ avgDurationMs: avgWarmDuration.toFixed(2),
250
+ minDurationMs: minWarmDuration,
251
+ maxDurationMs: maxWarmDuration,
252
+ slaTarget: 100,
253
+ passedSLA: avgWarmDuration < 100
254
+ },
255
+ cache: {
256
+ hits: coldResult.cacheHitCount,
257
+ misses: coldResult.cacheMissCount
258
+ }
259
+ }, null, 2));
260
+
261
+ await dbService.disconnect();
262
+ "
263
+ exit 0
264
+ fi
265
+
266
+ # Load skills (main operation)
267
+ if [[ -z "$AGENT_TYPE" ]]; then
268
+ echo "ERROR: --agent-type is required"
269
+ echo "Use --help for usage information"
270
+ exit 1
271
+ fi
272
+
273
+ echo "Loading skills for agent type: $AGENT_TYPE"
274
+
275
+ # Build task context array
276
+ TASK_CONTEXT_ARRAY="[]"
277
+ if [[ -n "$TASK_CONTEXT" ]]; then
278
+ TASK_CONTEXT_ARRAY="['$(echo "$TASK_CONTEXT" | sed "s/,/', '/g")']"
279
+ fi
280
+
281
+ # Build phase parameter
282
+ PHASE_PARAM="undefined"
283
+ if [[ -n "$PHASE" ]]; then
284
+ PHASE_PARAM="'$PHASE'"
285
+ fi
286
+
287
+ run_typescript "
288
+ const dbService = new DatabaseService({
289
+ sqlite: {
290
+ type: 'sqlite',
291
+ database: '${PROJECT_ROOT}/.claude/skills/cfn-redis-coordination/data/cfn-loop.db'
292
+ }
293
+ });
294
+
295
+ try {
296
+ await dbService.connect();
297
+ } catch (error) {
298
+ logger.warn('Database connection failed, using bootstrap skills only');
299
+ }
300
+
301
+ const loader = new SkillLoader(dbService, logger);
302
+
303
+ const result = await loader.loadContextualSkills({
304
+ agentType: '${AGENT_TYPE}',
305
+ taskContext: ${TASK_CONTEXT_ARRAY},
306
+ maxSkills: ${MAX_SKILLS},
307
+ includeBootstrap: ${INCLUDE_BOOTSTRAP},
308
+ phase: ${PHASE_PARAM}
309
+ });
310
+
311
+ console.log(JSON.stringify({
312
+ success: true,
313
+ agentType: '${AGENT_TYPE}',
314
+ skillsLoaded: result.totalSkills,
315
+ bootstrapSkills: result.bootstrapCount,
316
+ agentSkills: result.totalSkills - result.bootstrapCount,
317
+ loadTimeMs: result.loadTimeMs,
318
+ cache: {
319
+ hits: result.cacheHitCount,
320
+ misses: result.cacheMissCount,
321
+ hitRate: result.cacheHitCount > 0
322
+ ? ((result.cacheHitCount / (result.cacheHitCount + result.cacheMissCount)) * 100).toFixed(2) + '%'
323
+ : 'N/A'
324
+ },
325
+ performance: {
326
+ metColdSLA: result.loadTimeMs < 1000,
327
+ metWarmSLA: result.cacheHitCount > 0 && result.loadTimeMs < 100
328
+ },
329
+ skills: result.skills.map(s => ({
330
+ id: s.id,
331
+ name: s.name,
332
+ version: s.version,
333
+ namespace: s.namespace,
334
+ priority: s.priority
335
+ }))
336
+ }, null, 2));
337
+
338
+ if (dbService) {
339
+ await dbService.disconnect();
340
+ }
341
+ "
342
+
343
+ echo ""
344
+ echo "Skill loading completed successfully"
@@ -6,6 +6,10 @@
6
6
 
7
7
  set -e # Exit on error
8
8
 
9
+ # Source parameterized query library for SQL injection prevention
10
+ PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
11
+ source "$PROJECT_ROOT/.claude/skills/bootstrap/sqlite-params.sh"
12
+
9
13
  # Configuration
10
14
  DB_PATH="${DB_PATH:-./swarm-memory.db}"
11
15
  REDIS_HOST="${REDIS_HOST:-localhost}"
@@ -66,28 +70,20 @@ EOF
66
70
  cleanup_acl_level() {
67
71
  local acl_level=$1
68
72
  local retention_days=$2
69
-
73
+
70
74
  log "Cleaning up ACL Level $acl_level entries older than $retention_days days..."
71
-
72
- # SQLite cleanup query
73
- local cleanup_sql="
74
- DELETE FROM memory_store
75
- WHERE acl_level = $acl_level
76
- AND expires_at <= datetime('now', '-$retention_days days')
77
- AND acl_level != 5; -- Skip system audit logs (level 5)
78
- "
79
-
75
+
80
76
  if [ "$DRY_RUN" = "true" ]; then
81
- # Count what would be deleted
82
- local count=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM memory_store WHERE acl_level = $acl_level AND expires_at <= datetime('now', '-$retention_days days') AND acl_level != 5;")
77
+ # Count what would be deleted - using parameterized query
78
+ local count=$(sqlite_select "$DB_PATH" "SELECT COUNT(*) FROM memory_store WHERE acl_level = ?1 AND expires_at <= datetime('now', '-' || ?2 || ' days') AND acl_level != 5;" "$acl_level" "$retention_days")
83
79
  log "[DRY RUN] Would delete $count entries from ACL Level $acl_level"
84
80
  return 0
85
81
  fi
86
-
87
- # Execute cleanup
88
- local deleted_count=$(sqlite3 "$DB_PATH" "$cleanup_sql")
89
- log "Deleted $deleted_count entries from ACL Level $acl_level"
90
-
82
+
83
+ # Execute cleanup - using parameterized query (Pattern B)
84
+ sqlite_delete "$DB_PATH" "DELETE FROM memory_store WHERE acl_level = ?1 AND expires_at <= datetime('now', '-' || ?2 || ' days') AND acl_level != 5;" "$acl_level" "$retention_days"
85
+ log "Deleted entries from ACL Level $acl_level"
86
+
91
87
  # Sync with Redis if available
92
88
  if check_redis; then
93
89
  sync_redis_cleanup "$acl_level"
@@ -100,12 +96,8 @@ sync_redis_cleanup() {
100
96
 
101
97
  log "Syncing Redis cleanup for ACL Level $acl_level..."
102
98
 
103
- # Get keys that should be removed from Redis
104
- local redis_keys=$(sqlite3 "$DB_PATH" "
105
- SELECT key FROM memory_store
106
- WHERE acl_level = $acl_level
107
- AND expires_at <= datetime('now')
108
- ")
99
+ # Get keys that should be removed from Redis - using parameterized query
100
+ local redis_keys=$(sqlite_select "$DB_PATH" "SELECT key FROM memory_store WHERE acl_level = ?1 AND expires_at <= datetime('now')" "$acl_level")
109
101
 
110
102
  # Remove from Redis
111
103
  while IFS= read -r key; do
@@ -138,8 +130,8 @@ cleanup_redis_ttl() {
138
130
  # Key doesn't exist in Redis but exists in SQLite (stale)
139
131
  redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" DEL "$key" > /dev/null 2>&1 || true
140
132
  elif [ "$ttl" -eq -1 ]; then
141
- # Key has no TTL, check if it should have one based on ACL level
142
- local acl_level=$(sqlite3 "$DB_PATH" "SELECT acl_level FROM memory_store WHERE key = '$key' LIMIT 1")
133
+ # Key has no TTL, check if it should have one based on ACL level - using parameterized query
134
+ local acl_level=$(sqlite_select "$DB_PATH" "SELECT acl_level FROM memory_store WHERE key = ?1 LIMIT 1" "$key")
143
135
  if [ -n "$acl_level" ] && [ "$acl_level" -le 4 ]; then
144
136
  # Should have TTL, remove it
145
137
  redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" DEL "$key" > /dev/null 2>&1 || true
@@ -9,6 +9,10 @@
9
9
 
10
10
  set -euo pipefail
11
11
 
12
+ # Import parameterized query library
13
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14
+ source "${SCRIPT_DIR}/../bootstrap/sqlite-params.sh"
15
+
12
16
  # Colors for output
13
17
  RED='\033[0;31m'
14
18
  GREEN='\033[0;32m'
@@ -214,28 +218,45 @@ retrieve_sqlite_data() {
214
218
  return
215
219
  fi
216
220
 
217
- local where_clause="task_id = '$task_id'"
218
- if [ "$mode" != "combined" ]; then
219
- where_clause="$where_clause AND mode = '$mode'"
221
+ # Build parameterized query based on mode
222
+ if [ "$mode" = "combined" ]; then
223
+ # Query for all modes
224
+ sqlite_data=$(sqlite_select "$DB_PATH" "
225
+ SELECT
226
+ task_id,
227
+ agent_type,
228
+ decision,
229
+ reasoning,
230
+ confidence,
231
+ mode,
232
+ deliverables,
233
+ timestamp,
234
+ created_at,
235
+ metadata
236
+ FROM agent_audit
237
+ WHERE task_id = ?1
238
+ ORDER BY timestamp, agent_type;" \
239
+ "$task_id" || echo "")
240
+ else
241
+ # Query for specific mode
242
+ sqlite_data=$(sqlite_select "$DB_PATH" "
243
+ SELECT
244
+ task_id,
245
+ agent_type,
246
+ decision,
247
+ reasoning,
248
+ confidence,
249
+ mode,
250
+ deliverables,
251
+ timestamp,
252
+ created_at,
253
+ metadata
254
+ FROM agent_audit
255
+ WHERE task_id = ?1 AND mode = ?2
256
+ ORDER BY timestamp, agent_type;" \
257
+ "$task_id" "$mode" || echo "")
220
258
  fi
221
259
 
222
- sqlite_data=$(sqlite3 "$DB_PATH" 2>/dev/null "
223
- SELECT
224
- task_id,
225
- agent_type,
226
- decision,
227
- reasoning,
228
- confidence,
229
- mode,
230
- deliverables,
231
- timestamp,
232
- created_at,
233
- metadata
234
- FROM agent_audit
235
- WHERE $where_clause
236
- ORDER BY timestamp, agent_type;
237
- " || echo "")
238
-
239
260
  if [ -z "$sqlite_data" ]; then
240
261
  echo "[]"
241
262
  return
@@ -373,4 +394,4 @@ case "$FORMAT" in
373
394
  ;;
374
395
  esac
375
396
 
376
- log_verbose "Audit data retrieval completed for task: $TASK_ID"
397
+ log_verbose "Audit data retrieval completed for task: $TASK_ID"
@@ -9,6 +9,11 @@
9
9
 
10
10
  set -euo pipefail
11
11
 
12
+ # Import SQLite parameterized query library for SQL injection prevention
13
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
15
+ source "${SCRIPT_DIR}/../bootstrap/sqlite-params.sh"
16
+
12
17
  # Colors for output
13
18
  RED='\033[0;31m'
14
19
  GREEN='\033[0;32m'
@@ -132,16 +137,18 @@ redis-cli EXPIRE "$REDIS_KEY" 86400 > /dev/null
132
137
  echo -e "${GREEN}💾 Storing Task Mode audit data in SQLite...${NC}"
133
138
  UNIX_TIMESTAMP=$(date -d "$TIMESTAMP" +%s 2>/dev/null || date +%s)
134
139
 
135
- sqlite3 "$DB_PATH" <<EOF
136
- INSERT OR REPLACE INTO agent_audit (
137
- task_id, agent_type, decision, reasoning, confidence, mode,
138
- deliverables, timestamp, created_at, metadata
139
- ) VALUES (
140
- '$TASK_ID', '$AGENT_TYPE', '$DECISION', '$REASONING', $CONFIDENCE, '$MODE',
141
- '$DELIVERABLES', $UNIX_TIMESTAMP, '$TIMESTAMP',
142
- '{"stored_via": "store-task-audit.sh", "version": "1.0.0"}'
143
- );
144
- EOF
140
+ # Use parameterized query to prevent SQL injection
141
+ sqlite_insert "$DB_PATH" \
142
+ "INSERT OR REPLACE INTO agent_audit (
143
+ task_id, agent_type, decision, reasoning, confidence, mode,
144
+ deliverables, timestamp, created_at, metadata
145
+ ) VALUES (
146
+ ?1, ?2, ?3, ?4, $CONFIDENCE, ?5,
147
+ ?6, $UNIX_TIMESTAMP, ?7,
148
+ '{\"stored_via\": \"store-task-audit.sh\", \"version\": \"1.0.0\"}'
149
+ )" \
150
+ "$TASK_ID" "$AGENT_TYPE" "$DECISION" "$REASONING" "$MODE" \
151
+ "$DELIVERABLES" "$TIMESTAMP"
145
152
 
146
153
  # Store metadata in Redis for quick access
147
154
  METADATA_KEY="swarm:${TASK_ID}:metadata"
@@ -4,6 +4,10 @@ set -euo pipefail
4
4
 
5
5
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
6
  PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
7
+
8
+ # Load parameterized query library (SQL injection prevention)
9
+ source "$PROJECT_ROOT/.claude/skills/bootstrap/sqlite-params.sh"
10
+
7
11
  DB_FILE="$PROJECT_ROOT/.artifacts/test-benchmarks.db"
8
12
 
9
13
  THRESHOLD=0.10
@@ -16,7 +20,7 @@ while [[ $# -gt 0 ]]; do
16
20
  done
17
21
 
18
22
  # Get latest run
19
- LATEST_RUN=$(sqlite3 "$DB_FILE" "SELECT id FROM test_runs ORDER BY run_timestamp DESC LIMIT 1")
23
+ LATEST_RUN=$(sqlite_select "$DB_FILE" "SELECT id FROM test_runs ORDER BY run_timestamp DESC LIMIT 1")
20
24
 
21
25
  if [ -z "$LATEST_RUN" ]; then
22
26
  echo "No test runs found"
@@ -24,29 +28,28 @@ if [ -z "$LATEST_RUN" ]; then
24
28
  fi
25
29
 
26
30
  # Get baseline (average of last 10 runs excluding latest)
27
- BASELINE_SUCCESS_RATE=$(sqlite3 "$DB_FILE" "
31
+ BASELINE_SUCCESS_RATE=$(sqlite_select "$DB_FILE" "
28
32
  SELECT AVG(success_rate) FROM (
29
- SELECT success_rate FROM test_runs
30
- WHERE id != $LATEST_RUN
31
- ORDER BY run_timestamp DESC
33
+ SELECT success_rate FROM test_runs
34
+ WHERE id != ?1
35
+ ORDER BY run_timestamp DESC
32
36
  LIMIT 10
33
37
  )
34
- ")
38
+ " "$LATEST_RUN")
35
39
 
36
- LATEST_SUCCESS_RATE=$(sqlite3 "$DB_FILE" "SELECT success_rate FROM test_runs WHERE id = $LATEST_RUN")
40
+ LATEST_SUCCESS_RATE=$(sqlite_select "$DB_FILE" "SELECT success_rate FROM test_runs WHERE id = ?1" "$LATEST_RUN")
37
41
 
38
42
  # Check for regression
39
43
  REGRESSION=$(awk "BEGIN {print ($BASELINE_SUCCESS_RATE - $LATEST_SUCCESS_RATE) > $THRESHOLD}")
40
44
 
41
45
  if [ "$REGRESSION" = "1" ]; then
42
46
  DIFF=$(awk "BEGIN {printf \"%.1f\", ($BASELINE_SUCCESS_RATE - $LATEST_SUCCESS_RATE) * 100}")
43
-
44
- sqlite3 "$DB_FILE" << EOFSQL
45
- INSERT INTO regression_alerts (run_id, alert_type, severity, message)
46
- VALUES ($LATEST_RUN, 'success_rate_drop', 'warning',
47
- 'Success rate dropped ${DIFF}% (baseline: ${BASELINE_SUCCESS_RATE}, current: ${LATEST_SUCCESS_RATE})');
48
- EOFSQL
49
-
47
+ MESSAGE="Success rate dropped ${DIFF}% (baseline: ${BASELINE_SUCCESS_RATE}, current: ${LATEST_SUCCESS_RATE})"
48
+
49
+ sqlite_exec "$DB_FILE" \
50
+ "INSERT INTO regression_alerts (run_id, alert_type, severity, message) VALUES (?1, ?2, ?3, ?4)" \
51
+ "$LATEST_RUN" "success_rate_drop" "warning" "$MESSAGE"
52
+
50
53
  echo "⚠️ Regression detected: Success rate dropped ${DIFF}%"
51
54
  exit 1
52
55
  fi
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+ # Detect test regressions
3
+ set -euo pipefail
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
7
+ DB_FILE="$PROJECT_ROOT/.artifacts/test-benchmarks.db"
8
+
9
+ THRESHOLD=0.10
10
+
11
+ while [[ $# -gt 0 ]]; do
12
+ case $1 in
13
+ --threshold) THRESHOLD="$2"; shift 2 ;;
14
+ *) shift ;;
15
+ esac
16
+ done
17
+
18
+ # Get latest run
19
+ LATEST_RUN=$(sqlite3 "$DB_FILE" "SELECT id FROM test_runs ORDER BY run_timestamp DESC LIMIT 1")
20
+
21
+ if [ -z "$LATEST_RUN" ]; then
22
+ echo "No test runs found"
23
+ exit 0
24
+ fi
25
+
26
+ # Get baseline (average of last 10 runs excluding latest)
27
+ BASELINE_SUCCESS_RATE=$(sqlite3 "$DB_FILE" "
28
+ SELECT AVG(success_rate) FROM (
29
+ SELECT success_rate FROM test_runs
30
+ WHERE id != $LATEST_RUN
31
+ ORDER BY run_timestamp DESC
32
+ LIMIT 10
33
+ )
34
+ ")
35
+
36
+ LATEST_SUCCESS_RATE=$(sqlite3 "$DB_FILE" "SELECT success_rate FROM test_runs WHERE id = $LATEST_RUN")
37
+
38
+ # Check for regression
39
+ REGRESSION=$(awk "BEGIN {print ($BASELINE_SUCCESS_RATE - $LATEST_SUCCESS_RATE) > $THRESHOLD}")
40
+
41
+ if [ "$REGRESSION" = "1" ]; then
42
+ DIFF=$(awk "BEGIN {printf \"%.1f\", ($BASELINE_SUCCESS_RATE - $LATEST_SUCCESS_RATE) * 100}")
43
+
44
+ sqlite3 "$DB_FILE" << EOFSQL
45
+ INSERT INTO regression_alerts (run_id, alert_type, severity, message)
46
+ VALUES ($LATEST_RUN, 'success_rate_drop', 'warning',
47
+ 'Success rate dropped ${DIFF}% (baseline: ${BASELINE_SUCCESS_RATE}, current: ${LATEST_SUCCESS_RATE})');
48
+ EOFSQL
49
+
50
+ echo "⚠️ Regression detected: Success rate dropped ${DIFF}%"
51
+ exit 1
52
+ fi
53
+
54
+ echo "✅ No regressions detected"
55
+ exit 0