claude-flow-novice 2.15.2 → 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 (533) 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-BACKUP_USAGE.md +243 -243
  36. package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
  37. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  38. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  39. package/.claude/hooks/cfn-post-edit.config.json +44 -44
  40. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  41. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  42. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  43. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  44. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  45. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  46. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  47. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  48. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  49. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  50. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  51. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  52. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  53. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  54. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  55. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  56. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  57. package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
  58. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  59. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  60. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  61. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  62. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  63. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  64. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  65. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  66. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  67. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  68. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  69. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  70. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  71. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  72. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  73. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  74. package/README.md +116 -475
  75. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  76. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  77. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  78. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  79. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  80. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  81. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  82. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  83. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  84. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  85. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  86. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  87. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  88. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  89. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  90. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  91. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  92. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  93. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  94. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  95. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  96. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  97. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  98. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  99. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  100. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  101. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  102. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  103. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  104. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  105. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  106. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  107. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  108. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  109. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  110. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  111. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  112. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  113. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  114. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  115. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  116. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  117. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  118. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  119. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  120. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  121. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  122. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  123. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  124. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  125. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  126. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  127. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  128. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  129. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  130. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  131. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  147. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  148. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  149. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  150. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  151. package/claude-assets/commands/switch-api.md +31 -10
  152. package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
  153. package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
  154. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  155. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  156. package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
  157. package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
  158. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  159. package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
  160. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  161. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  162. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
  163. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
  164. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  165. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  166. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  167. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  168. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  169. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  170. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  171. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  172. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  173. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  174. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  175. package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
  176. package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
  177. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  178. package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
  179. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  180. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  181. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  182. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  183. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  184. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  185. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  186. package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
  187. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  188. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  189. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  190. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  191. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  192. package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  193. package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
  194. package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
  195. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  196. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  197. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  198. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  199. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  200. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  201. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  202. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  203. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  204. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  205. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  206. package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
  207. package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
  208. package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
  209. package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
  210. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  211. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  212. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  213. package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
  214. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  215. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  216. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  217. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  218. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  219. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  220. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  221. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
  222. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  223. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  224. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  225. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  226. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  227. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  228. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  229. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  230. package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
  231. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  232. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  233. package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
  234. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  235. package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
  236. package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
  237. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  238. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  239. package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
  240. package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
  241. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  242. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  243. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  244. package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  245. package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  246. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  247. package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  248. package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  249. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  250. package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  251. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  252. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  253. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  254. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  255. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  256. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  257. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  258. package/claude-assets/skills/docker-build/SKILL.md +96 -203
  259. package/claude-assets/skills/docker-build/build.sh +73 -73
  260. package/claude-assets/skills/integration/agent-handoff.sh +492 -0
  261. package/claude-assets/skills/integration/file-operations.sh +414 -0
  262. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  263. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  264. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  265. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  266. package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
  267. package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
  268. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  269. package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
  270. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  271. package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
  272. package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
  273. package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
  274. package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
  275. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  276. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  277. package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
  278. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  279. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  280. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  281. package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
  282. package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
  283. package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
  284. package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
  285. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  286. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
  287. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  288. package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
  289. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  290. package/dist/ace/ace-curator.js +10 -2
  291. package/dist/ace/ace-curator.js.map +1 -1
  292. package/dist/ace/ace-generator.js +4 -0
  293. package/dist/ace/ace-generator.js.map +1 -1
  294. package/dist/ace/ace-reflector.js +1 -1
  295. package/dist/ace/ace-reflector.js.map +1 -1
  296. package/dist/ace/context-injection.js +24 -2
  297. package/dist/ace/context-injection.js.map +1 -1
  298. package/dist/agents/agent-loader.js +146 -165
  299. package/dist/agents/agent-loader.js.map +1 -1
  300. package/dist/agents/task-agent-integration.js +1 -1
  301. package/dist/agents/task-agent-integration.js.map +1 -1
  302. package/dist/api/health-endpoints.js +390 -0
  303. package/dist/api/health-endpoints.js.map +1 -0
  304. package/dist/cli/agent-executor.js +4 -1
  305. package/dist/cli/agent-executor.js.map +1 -1
  306. package/dist/cli/agent-prompt-builder.js +89 -1
  307. package/dist/cli/agent-prompt-builder.js.map +1 -1
  308. package/dist/cli/agent-spawn.js +130 -37
  309. package/dist/cli/agent-spawn.js.map +1 -1
  310. package/dist/cli/config-manager.js +91 -109
  311. package/dist/cli/config-manager.js.map +1 -1
  312. package/dist/cli/skill-cache-validator.js +412 -0
  313. package/dist/cli/skill-cache-validator.js.map +1 -0
  314. package/dist/cli/skill-cli.js +991 -0
  315. package/dist/cli/skill-cli.js.map +1 -0
  316. package/dist/cli/skill-execution-logger.js +284 -0
  317. package/dist/cli/skill-execution-logger.js.map +1 -0
  318. package/dist/cli/skill-loader.js +457 -0
  319. package/dist/cli/skill-loader.js.map +1 -0
  320. package/dist/coordination/event-bus.js +2 -2
  321. package/dist/coordination/event-bus.js.map +1 -1
  322. package/dist/coordination/fleet-manager.js +1 -1
  323. package/dist/coordination/fleet-manager.js.map +1 -1
  324. package/dist/coordination/index.js +23 -9
  325. package/dist/coordination/index.js.map +1 -1
  326. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  327. package/dist/db/migration-manager.js +483 -0
  328. package/dist/db/migration-manager.js.map +1 -0
  329. package/dist/db/skills-query.js +535 -0
  330. package/dist/db/skills-query.js.map +1 -0
  331. package/dist/integration/DatabaseHandoff.js +507 -0
  332. package/dist/integration/DatabaseHandoff.js.map +1 -0
  333. package/dist/integration/StandardAdapter.js +291 -0
  334. package/dist/integration/StandardAdapter.js.map +1 -0
  335. package/dist/jobs/edge-case-analyzer.js +367 -0
  336. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  337. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  338. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  339. package/dist/lib/agent-output-parser.js +518 -0
  340. package/dist/lib/agent-output-parser.js.map +1 -0
  341. package/dist/lib/agent-output-validator.js +950 -0
  342. package/dist/lib/agent-output-validator.js.map +1 -0
  343. package/dist/lib/agent-workspace.js +281 -0
  344. package/dist/lib/agent-workspace.js.map +1 -0
  345. package/dist/lib/artifact-registry.js +443 -0
  346. package/dist/lib/artifact-registry.js.map +1 -0
  347. package/dist/lib/atomic-file-writer.js +377 -0
  348. package/dist/lib/atomic-file-writer.js.map +1 -0
  349. package/dist/lib/backup-manager.js +779 -0
  350. package/dist/lib/backup-manager.js.map +1 -0
  351. package/dist/lib/checkpoint-manager.js +837 -0
  352. package/dist/lib/checkpoint-manager.js.map +1 -0
  353. package/dist/lib/circuit-breaker.js +340 -0
  354. package/dist/lib/circuit-breaker.js.map +1 -0
  355. package/dist/lib/completion-signal-handler.js +243 -0
  356. package/dist/lib/completion-signal-handler.js.map +1 -0
  357. package/dist/lib/config-manager.js +312 -0
  358. package/dist/lib/config-manager.js.map +1 -0
  359. package/dist/lib/config-migrator.js +386 -0
  360. package/dist/lib/config-migrator.js.map +1 -0
  361. package/dist/lib/config-validator.js +687 -0
  362. package/dist/lib/config-validator.js.map +1 -0
  363. package/dist/lib/correlation-cache.js +311 -0
  364. package/dist/lib/correlation-cache.js.map +1 -0
  365. package/dist/lib/correlation.js +263 -0
  366. package/dist/lib/correlation.js.map +1 -0
  367. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  368. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  369. package/dist/lib/database-service/correlation.js +329 -0
  370. package/dist/lib/database-service/correlation.js.map +1 -0
  371. package/dist/lib/database-service/errors.js +120 -0
  372. package/dist/lib/database-service/errors.js.map +1 -0
  373. package/dist/lib/database-service/index.js +168 -0
  374. package/dist/lib/database-service/index.js.map +1 -0
  375. package/dist/lib/database-service/postgres-adapter.js +526 -0
  376. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  377. package/dist/lib/database-service/redis-adapter.js +360 -0
  378. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  379. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  380. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  381. package/dist/lib/database-service/transaction-manager.js +773 -0
  382. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  383. package/dist/lib/database-service/types.js +23 -0
  384. package/dist/lib/database-service/types.js.map +1 -0
  385. package/dist/lib/deadlock-resolver.js +292 -0
  386. package/dist/lib/deadlock-resolver.js.map +1 -0
  387. package/dist/lib/distributed-lock.js +451 -0
  388. package/dist/lib/distributed-lock.js.map +1 -0
  389. package/dist/lib/edge-case-deduplicator.js +227 -0
  390. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  391. package/dist/lib/encryption-manager.js +322 -0
  392. package/dist/lib/encryption-manager.js.map +1 -0
  393. package/dist/lib/error-aggregator.js +234 -0
  394. package/dist/lib/error-aggregator.js.map +1 -0
  395. package/dist/lib/errors.js +287 -0
  396. package/dist/lib/errors.js.map +1 -0
  397. package/dist/lib/file-lock-manager.js +578 -0
  398. package/dist/lib/file-lock-manager.js.map +1 -0
  399. package/dist/lib/file-operations.js +367 -0
  400. package/dist/lib/file-operations.js.map +1 -0
  401. package/dist/lib/idempotent-write.js +237 -0
  402. package/dist/lib/idempotent-write.js.map +1 -0
  403. package/dist/lib/integration-schema-validator.js +522 -0
  404. package/dist/lib/integration-schema-validator.js.map +1 -0
  405. package/dist/lib/lock-health-monitor.js +298 -0
  406. package/dist/lib/lock-health-monitor.js.map +1 -0
  407. package/dist/lib/log-shipper.js +422 -0
  408. package/dist/lib/log-shipper.js.map +1 -0
  409. package/dist/lib/logging.js +146 -0
  410. package/dist/lib/logging.js.map +1 -0
  411. package/dist/lib/message-deduplicator.js +439 -0
  412. package/dist/lib/message-deduplicator.js.map +1 -0
  413. package/dist/lib/multi-system-query.js +604 -0
  414. package/dist/lib/multi-system-query.js.map +1 -0
  415. package/dist/lib/orphan-detector.js +332 -0
  416. package/dist/lib/orphan-detector.js.map +1 -0
  417. package/dist/lib/password-generator.js +166 -0
  418. package/dist/lib/password-generator.js.map +1 -0
  419. package/dist/lib/path-validator.js +429 -0
  420. package/dist/lib/path-validator.js.map +1 -0
  421. package/dist/lib/query-translator.js +905 -0
  422. package/dist/lib/query-translator.js.map +1 -0
  423. package/dist/lib/queue-recovery.js +469 -0
  424. package/dist/lib/queue-recovery.js.map +1 -0
  425. package/dist/lib/redis-queue-manager.js +512 -0
  426. package/dist/lib/redis-queue-manager.js.map +1 -0
  427. package/dist/lib/reflection-archiver.js +272 -0
  428. package/dist/lib/reflection-archiver.js.map +1 -0
  429. package/dist/lib/retry-manager.js +453 -0
  430. package/dist/lib/retry-manager.js.map +1 -0
  431. package/dist/lib/retry.js +262 -0
  432. package/dist/lib/retry.js.map +1 -0
  433. package/dist/lib/schema-transform.js +695 -0
  434. package/dist/lib/schema-transform.js.map +1 -0
  435. package/dist/lib/schema-validator.js +491 -0
  436. package/dist/lib/schema-validator.js.map +1 -0
  437. package/dist/lib/skill-cache.js +297 -0
  438. package/dist/lib/skill-cache.js.map +1 -0
  439. package/dist/lib/skill-content-manager.js +337 -0
  440. package/dist/lib/skill-content-manager.js.map +1 -0
  441. package/dist/lib/skill-frontmatter-parser.js +237 -0
  442. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  443. package/dist/lib/skill-git-integration.js +275 -0
  444. package/dist/lib/skill-git-integration.js.map +1 -0
  445. package/dist/lib/skill-markdown-validator.js +396 -0
  446. package/dist/lib/skill-markdown-validator.js.map +1 -0
  447. package/dist/lib/skill-output-parser.js +312 -0
  448. package/dist/lib/skill-output-parser.js.map +1 -0
  449. package/dist/lib/unified-query-api.js +467 -0
  450. package/dist/lib/unified-query-api.js.map +1 -0
  451. package/dist/middleware/auth-middleware.js +350 -0
  452. package/dist/middleware/auth-middleware.js.map +1 -0
  453. package/dist/middleware/schema-validation.js +347 -0
  454. package/dist/middleware/schema-validation.js.map +1 -0
  455. package/dist/providers/anthropic-provider.js +1 -1
  456. package/dist/providers/anthropic-provider.js.map +1 -1
  457. package/dist/providers/provider-factory.js +2 -2
  458. package/dist/providers/provider-factory.js.map +1 -1
  459. package/dist/services/edge-case-analyzer.js +321 -0
  460. package/dist/services/edge-case-analyzer.js.map +1 -0
  461. package/dist/services/edge-case-deduplicator.js +266 -0
  462. package/dist/services/edge-case-deduplicator.js.map +1 -0
  463. package/dist/services/edge-case-detector.js +337 -0
  464. package/dist/services/edge-case-detector.js.map +1 -0
  465. package/dist/services/edge-case-tracker.js +547 -0
  466. package/dist/services/edge-case-tracker.js.map +1 -0
  467. package/dist/services/health-check-system.js +586 -0
  468. package/dist/services/health-check-system.js.map +1 -0
  469. package/dist/services/metrics-logger.js +412 -0
  470. package/dist/services/metrics-logger.js.map +1 -0
  471. package/dist/services/patch-generator.js +378 -0
  472. package/dist/services/patch-generator.js.map +1 -0
  473. package/dist/services/patch-validator.js +337 -0
  474. package/dist/services/patch-validator.js.map +1 -0
  475. package/dist/services/performance-monitor.js +811 -0
  476. package/dist/services/performance-monitor.js.map +1 -0
  477. package/dist/services/promotion-pipeline.js +918 -0
  478. package/dist/services/promotion-pipeline.js.map +1 -0
  479. package/dist/services/promotion-validator.js +394 -0
  480. package/dist/services/promotion-validator.js.map +1 -0
  481. package/dist/services/reflection-logger.js +388 -0
  482. package/dist/services/reflection-logger.js.map +1 -0
  483. package/dist/services/skill-deployment.js +472 -0
  484. package/dist/services/skill-deployment.js.map +1 -0
  485. package/dist/services/skill-loader.js +427 -0
  486. package/dist/services/skill-loader.js.map +1 -0
  487. package/dist/services/skill-promotion.js +372 -0
  488. package/dist/services/skill-promotion.js.map +1 -0
  489. package/dist/services/skill-validator.js +454 -0
  490. package/dist/services/skill-validator.js.map +1 -0
  491. package/dist/services/skill-versioning.js +244 -0
  492. package/dist/services/skill-versioning.js.map +1 -0
  493. package/dist/services/workspace-supervisor.js +597 -0
  494. package/dist/services/workspace-supervisor.js.map +1 -0
  495. package/dist/types/agent-output.js +44 -0
  496. package/dist/types/agent-output.js.map +1 -0
  497. package/dist/types/config.js +28 -0
  498. package/dist/types/config.js.map +1 -0
  499. package/dist/types/edge-case.js +45 -0
  500. package/dist/types/edge-case.js.map +1 -0
  501. package/package.json +201 -176
  502. package/readme/README.md +19 -4
  503. package/scripts/artifact-cleanup.sh +392 -0
  504. package/scripts/backup-cleanup.sh +627 -0
  505. package/scripts/cleanup-workspaces.sh +412 -0
  506. package/scripts/cleanup-yaml-configs.sh +141 -0
  507. package/scripts/deploy-approved-skills.sh +263 -0
  508. package/scripts/deploy-production.sh +355 -355
  509. package/scripts/docker-playwright-fix.sh +311 -311
  510. package/scripts/docker-rebuild-all-agents.sh +127 -127
  511. package/scripts/health-check.sh +447 -0
  512. package/scripts/log-aggregator.sh +554 -0
  513. package/scripts/log-monitor.sh +629 -0
  514. package/scripts/manage-agent-workspaces.sh +434 -0
  515. package/scripts/memory-leak-prevention.sh +305 -305
  516. package/scripts/migrate-artifacts.sh +563 -0
  517. package/scripts/migrate-schema.sh +533 -0
  518. package/scripts/migrate-yaml-to-json.sh +465 -0
  519. package/scripts/promote-staged-skills.sh +423 -0
  520. package/scripts/run-marketing-tests.sh +42 -42
  521. package/scripts/update_paths.sh +46 -46
  522. package/scripts/verify-no-secrets.sh +88 -35
  523. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  524. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  525. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  526. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  527. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  528. package/README.md.backup_before_replace +0 -781
  529. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  530. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  531. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  532. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  533. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,643 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # review-skill.sh - Expert Review CLI for Workflow Codification Approval
4
+ #
5
+ # Actions: approve, reject, correct
6
+ #
7
+ # Usage:
8
+ # ./review-skill.sh --skill-id UUID --action approve|reject|correct [--feedback TEXT]
9
+ # ./review-skill.sh --list-pending [--team TEAM_NAME]
10
+ # ./review-skill.sh --check-sla
11
+ #
12
+
13
+ set -euo pipefail
14
+
15
+ # Configuration
16
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
17
+ PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
18
+
19
+ # Load environment
20
+ if [ -f "${PROJECT_ROOT}/.env" ]; then
21
+ # shellcheck source=/dev/null
22
+ source "${PROJECT_ROOT}/.env"
23
+ fi
24
+
25
+ DB_HOST="${CFN_DB_HOST:-localhost}"
26
+ DB_PORT="${CFN_DB_PORT:-5432}"
27
+ DB_NAME="${CFN_DB_NAME:-cfn_workflow}"
28
+ DB_USER="${CFN_DB_USER:-postgres}"
29
+ DB_PASSWORD="${CFN_DB_PASSWORD:-}"
30
+
31
+ # Expert information (from env or defaults)
32
+ EXPERT_ID="${CFN_EXPERT_ID:-$(whoami)}"
33
+ EXPERT_EMAIL="${CFN_EXPERT_EMAIL:-}"
34
+
35
+ # SLA thresholds (in hours)
36
+ SLA_HIGH_PRIORITY=48
37
+ SLA_MEDIUM_LOW_PRIORITY=168 # 7 days
38
+
39
+ # Color codes
40
+ RED='\033[0;31m'
41
+ GREEN='\033[0;32m'
42
+ YELLOW='\033[1;33m'
43
+ BLUE='\033[0;34m'
44
+ CYAN='\033[0;36m'
45
+ NC='\033[0m'
46
+
47
+ #######################################
48
+ # Utility functions
49
+ #######################################
50
+ error_exit() {
51
+ echo -e "${RED}ERROR: $1${NC}" >&2
52
+ exit 1
53
+ }
54
+
55
+ success_msg() {
56
+ echo -e "${GREEN}✓ $1${NC}"
57
+ }
58
+
59
+ warn_msg() {
60
+ echo -e "${YELLOW}⚠ $1${NC}"
61
+ }
62
+
63
+ info_msg() {
64
+ echo -e "${BLUE}ℹ $1${NC}"
65
+ }
66
+
67
+ #######################################
68
+ # Execute PostgreSQL query
69
+ #######################################
70
+ execute_query() {
71
+ local query="$1"
72
+
73
+ PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" -t -A -c "$query" 2>&1
74
+ }
75
+
76
+ execute_query_formatted() {
77
+ local query="$1"
78
+
79
+ PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" -c "$query" 2>&1
80
+ }
81
+
82
+ #######################################
83
+ # Get skill details by skill_id
84
+ # Arguments:
85
+ # $1 - Skill ID (UUID)
86
+ #######################################
87
+ get_skill_details() {
88
+ local skill_id="$1"
89
+
90
+ local query="
91
+ SELECT
92
+ wp.id,
93
+ wp.pattern_name,
94
+ wp.status,
95
+ wp.priority,
96
+ wp.occurrence_count,
97
+ wp.teams_affected,
98
+ wp.estimated_savings_usd,
99
+ wp.created_at,
100
+ EXTRACT(EPOCH FROM (NOW() - wp.created_at))/3600 as hours_pending
101
+ FROM workflow_patterns wp
102
+ WHERE wp.id = '${skill_id}'
103
+ LIMIT 1;
104
+ "
105
+
106
+ execute_query "$query"
107
+ }
108
+
109
+ #######################################
110
+ # Approve skill
111
+ # Arguments:
112
+ # $1 - Skill ID
113
+ # $2 - Feedback (optional)
114
+ #######################################
115
+ approve_skill() {
116
+ local skill_id="$1"
117
+ local feedback="${2:-Approved for deployment}"
118
+ local timestamp
119
+ timestamp=$(date -u +"%Y-%m-%d %H:%M:%S")
120
+
121
+ info_msg "Approving skill ${skill_id}..."
122
+
123
+ # Get current status
124
+ local current_status
125
+ current_status=$(execute_query "SELECT status FROM workflow_patterns WHERE id = '${skill_id}';")
126
+
127
+ if [ -z "$current_status" ]; then
128
+ error_exit "Skill ID not found: ${skill_id}"
129
+ fi
130
+
131
+ if [ "$current_status" != "PENDING_REVIEW" ] && [ "$current_status" != "NEEDS_CORRECTION" ]; then
132
+ error_exit "Cannot approve skill in state: ${current_status}. Must be PENDING_REVIEW or NEEDS_CORRECTION."
133
+ fi
134
+
135
+ # Log approval in skill_approvals table
136
+ local approval_query="
137
+ BEGIN;
138
+
139
+ -- Insert approval record
140
+ INSERT INTO skill_approvals (
141
+ skill_id,
142
+ expert_id,
143
+ action,
144
+ feedback,
145
+ timestamp
146
+ ) VALUES (
147
+ '${skill_id}',
148
+ '${EXPERT_ID}',
149
+ 'approve',
150
+ '${feedback}',
151
+ '${timestamp}'
152
+ );
153
+
154
+ -- Transition state to APPROVED (using approval-workflow.sh would be better, but inline for atomicity)
155
+ UPDATE workflow_patterns
156
+ SET status = 'APPROVED', updated_at = '${timestamp}'
157
+ WHERE id = '${skill_id}';
158
+
159
+ -- Log state transition
160
+ INSERT INTO pattern_state_history (pattern_id, from_state, to_state, metadata, timestamp)
161
+ VALUES (
162
+ '${skill_id}',
163
+ '${current_status}',
164
+ 'APPROVED',
165
+ '{\"approved_by\": \"${EXPERT_ID}\", \"feedback\": \"${feedback}\"}'::jsonb,
166
+ '${timestamp}'
167
+ );
168
+
169
+ -- Log audit event
170
+ INSERT INTO workflow_audit_log (pattern_id, event_type, description, metadata, timestamp)
171
+ VALUES (
172
+ '${skill_id}',
173
+ 'SKILL_APPROVED',
174
+ 'Expert approved skill for deployment',
175
+ '{\"expert_id\": \"${EXPERT_ID}\", \"feedback\": \"${feedback}\"}'::jsonb,
176
+ '${timestamp}'
177
+ );
178
+
179
+ COMMIT;
180
+ "
181
+
182
+ if execute_query "$approval_query" > /dev/null 2>&1; then
183
+ success_msg "Skill approved successfully!"
184
+ info_msg "Skill is now ready for deployment to production."
185
+
186
+ # Trigger deployment notification (optional)
187
+ send_approval_notification "$skill_id" "approved"
188
+ else
189
+ error_exit "Failed to approve skill. Transaction rolled back."
190
+ fi
191
+ }
192
+
193
+ #######################################
194
+ # Reject skill
195
+ # Arguments:
196
+ # $1 - Skill ID
197
+ # $2 - Feedback (required)
198
+ #######################################
199
+ reject_skill() {
200
+ local skill_id="$1"
201
+ local feedback="${2:-}"
202
+ local timestamp
203
+ timestamp=$(date -u +"%Y-%m-%d %H:%M:%S")
204
+
205
+ if [ -z "$feedback" ]; then
206
+ error_exit "Feedback is required when rejecting a skill. Use --feedback 'reason for rejection'"
207
+ fi
208
+
209
+ warn_msg "Rejecting skill ${skill_id}..."
210
+
211
+ # Get current status
212
+ local current_status
213
+ current_status=$(execute_query "SELECT status FROM workflow_patterns WHERE id = '${skill_id}';")
214
+
215
+ if [ -z "$current_status" ]; then
216
+ error_exit "Skill ID not found: ${skill_id}"
217
+ fi
218
+
219
+ if [ "$current_status" != "PENDING_REVIEW" ] && [ "$current_status" != "NEEDS_CORRECTION" ]; then
220
+ error_exit "Cannot reject skill in state: ${current_status}. Must be PENDING_REVIEW or NEEDS_CORRECTION."
221
+ fi
222
+
223
+ # Log rejection
224
+ local rejection_query="
225
+ BEGIN;
226
+
227
+ -- Insert rejection record
228
+ INSERT INTO skill_approvals (
229
+ skill_id,
230
+ expert_id,
231
+ action,
232
+ feedback,
233
+ timestamp
234
+ ) VALUES (
235
+ '${skill_id}',
236
+ '${EXPERT_ID}',
237
+ 'reject',
238
+ '${feedback}',
239
+ '${timestamp}'
240
+ );
241
+
242
+ -- Transition state to REJECTED
243
+ UPDATE workflow_patterns
244
+ SET status = 'REJECTED', updated_at = '${timestamp}'
245
+ WHERE id = '${skill_id}';
246
+
247
+ -- Log state transition
248
+ INSERT INTO pattern_state_history (pattern_id, from_state, to_state, metadata, timestamp)
249
+ VALUES (
250
+ '${skill_id}',
251
+ '${current_status}',
252
+ 'REJECTED',
253
+ '{\"rejected_by\": \"${EXPERT_ID}\", \"feedback\": \"${feedback}\"}'::jsonb,
254
+ '${timestamp}'
255
+ );
256
+
257
+ -- Log audit event
258
+ INSERT INTO workflow_audit_log (pattern_id, event_type, description, metadata, timestamp)
259
+ VALUES (
260
+ '${skill_id}',
261
+ 'SKILL_REJECTED',
262
+ 'Expert rejected skill',
263
+ '{\"expert_id\": \"${EXPERT_ID}\", \"reason\": \"${feedback}\"}'::jsonb,
264
+ '${timestamp}'
265
+ );
266
+
267
+ COMMIT;
268
+ "
269
+
270
+ if execute_query "$rejection_query" > /dev/null 2>&1; then
271
+ success_msg "Skill rejected successfully."
272
+ info_msg "Reason: ${feedback}"
273
+
274
+ # Send rejection notification
275
+ send_approval_notification "$skill_id" "rejected"
276
+ else
277
+ error_exit "Failed to reject skill. Transaction rolled back."
278
+ fi
279
+ }
280
+
281
+ #######################################
282
+ # Request correction for skill
283
+ # Arguments:
284
+ # $1 - Skill ID
285
+ # $2 - Feedback (required)
286
+ #######################################
287
+ request_correction() {
288
+ local skill_id="$1"
289
+ local feedback="${2:-}"
290
+ local timestamp
291
+ timestamp=$(date -u +"%Y-%m-%d %H:%M:%S")
292
+
293
+ if [ -z "$feedback" ]; then
294
+ error_exit "Feedback is required when requesting corrections. Use --feedback 'what needs to be corrected'"
295
+ fi
296
+
297
+ info_msg "Requesting corrections for skill ${skill_id}..."
298
+
299
+ # Get current status
300
+ local current_status
301
+ current_status=$(execute_query "SELECT status FROM workflow_patterns WHERE id = '${skill_id}';")
302
+
303
+ if [ -z "$current_status" ]; then
304
+ error_exit "Skill ID not found: ${skill_id}"
305
+ fi
306
+
307
+ if [ "$current_status" != "PENDING_REVIEW" ]; then
308
+ error_exit "Cannot request corrections for skill in state: ${current_status}. Must be PENDING_REVIEW."
309
+ fi
310
+
311
+ # Log correction request
312
+ local correction_query="
313
+ BEGIN;
314
+
315
+ -- Insert correction request record
316
+ INSERT INTO skill_approvals (
317
+ skill_id,
318
+ expert_id,
319
+ action,
320
+ feedback,
321
+ timestamp
322
+ ) VALUES (
323
+ '${skill_id}',
324
+ '${EXPERT_ID}',
325
+ 'correct',
326
+ '${feedback}',
327
+ '${timestamp}'
328
+ );
329
+
330
+ -- Transition state to NEEDS_CORRECTION
331
+ UPDATE workflow_patterns
332
+ SET status = 'NEEDS_CORRECTION', updated_at = '${timestamp}'
333
+ WHERE id = '${skill_id}';
334
+
335
+ -- Log state transition
336
+ INSERT INTO pattern_state_history (pattern_id, from_state, to_state, metadata, timestamp)
337
+ VALUES (
338
+ '${skill_id}',
339
+ '${current_status}',
340
+ 'NEEDS_CORRECTION',
341
+ '{\"requested_by\": \"${EXPERT_ID}\", \"feedback\": \"${feedback}\"}'::jsonb,
342
+ '${timestamp}'
343
+ );
344
+
345
+ -- Log audit event
346
+ INSERT INTO workflow_audit_log (pattern_id, event_type, description, metadata, timestamp)
347
+ VALUES (
348
+ '${skill_id}',
349
+ 'CORRECTION_REQUESTED',
350
+ 'Expert requested corrections',
351
+ '{\"expert_id\": \"${EXPERT_ID}\", \"corrections\": \"${feedback}\"}'::jsonb,
352
+ '${timestamp}'
353
+ );
354
+
355
+ COMMIT;
356
+ "
357
+
358
+ if execute_query "$correction_query" > /dev/null 2>&1; then
359
+ success_msg "Correction request submitted successfully."
360
+ info_msg "Feedback: ${feedback}"
361
+ info_msg "Skill will be regenerated with your feedback."
362
+
363
+ # Send correction notification
364
+ send_approval_notification "$skill_id" "needs_correction"
365
+ else
366
+ error_exit "Failed to request corrections. Transaction rolled back."
367
+ fi
368
+ }
369
+
370
+ #######################################
371
+ # List pending skills for review
372
+ # Arguments:
373
+ # $1 - Team filter (optional)
374
+ #######################################
375
+ list_pending_skills() {
376
+ local team_filter="${1:-}"
377
+
378
+ info_msg "Fetching pending skills for review..."
379
+
380
+ local query="
381
+ SELECT
382
+ wp.id,
383
+ wp.pattern_name,
384
+ wp.status,
385
+ wp.priority,
386
+ wp.occurrence_count,
387
+ wp.estimated_savings_usd,
388
+ ROUND(EXTRACT(EPOCH FROM (NOW() - wp.created_at))/3600, 1) as hours_pending,
389
+ CASE
390
+ WHEN wp.priority = 'high' AND EXTRACT(EPOCH FROM (NOW() - wp.created_at))/3600 > ${SLA_HIGH_PRIORITY} THEN 'SLA_BREACH'
391
+ WHEN wp.priority IN ('medium', 'low') AND EXTRACT(EPOCH FROM (NOW() - wp.created_at))/3600 > ${SLA_MEDIUM_LOW_PRIORITY} THEN 'SLA_BREACH'
392
+ ELSE 'OK'
393
+ END as sla_status
394
+ FROM workflow_patterns wp
395
+ WHERE wp.status IN ('PENDING_REVIEW', 'NEEDS_CORRECTION')
396
+ "
397
+
398
+ if [ -n "$team_filter" ]; then
399
+ query+=" AND '${team_filter}' = ANY(wp.teams_affected)"
400
+ fi
401
+
402
+ query+=" ORDER BY
403
+ CASE wp.priority
404
+ WHEN 'high' THEN 1
405
+ WHEN 'medium' THEN 2
406
+ WHEN 'low' THEN 3
407
+ END,
408
+ wp.created_at ASC;"
409
+
410
+ echo -e "${CYAN}=== Pending Skills for Review ===${NC}"
411
+ execute_query_formatted "$query"
412
+ }
413
+
414
+ #######################################
415
+ # Check SLA status for pending reviews
416
+ #######################################
417
+ check_sla_status() {
418
+ info_msg "Checking SLA status for pending reviews..."
419
+
420
+ local query="
421
+ SELECT
422
+ COUNT(*) FILTER (WHERE
423
+ priority = 'high' AND
424
+ EXTRACT(EPOCH FROM (NOW() - created_at))/3600 > ${SLA_HIGH_PRIORITY}
425
+ ) as high_priority_breaches,
426
+ COUNT(*) FILTER (WHERE
427
+ priority IN ('medium', 'low') AND
428
+ EXTRACT(EPOCH FROM (NOW() - created_at))/3600 > ${SLA_MEDIUM_LOW_PRIORITY}
429
+ ) as medium_low_breaches,
430
+ COUNT(*) as total_pending
431
+ FROM workflow_patterns
432
+ WHERE status IN ('PENDING_REVIEW', 'NEEDS_CORRECTION');
433
+ "
434
+
435
+ echo -e "${CYAN}=== SLA Status ===${NC}"
436
+ local result
437
+ result=$(execute_query "$query")
438
+
439
+ # Parse result (format: high_breaches|medium_breaches|total)
440
+ IFS='|' read -r high_breaches medium_breaches total <<< "$result"
441
+
442
+ echo "High Priority Breaches (>48h): ${high_breaches}"
443
+ echo "Medium/Low Priority Breaches (>7d): ${medium_breaches}"
444
+ echo "Total Pending Reviews: ${total}"
445
+
446
+ if [ "$high_breaches" -gt 0 ] || [ "$medium_breaches" -gt 0 ]; then
447
+ warn_msg "SLA breaches detected! Please review pending skills urgently."
448
+ return 1
449
+ else
450
+ success_msg "All pending reviews within SLA."
451
+ return 0
452
+ fi
453
+ }
454
+
455
+ #######################################
456
+ # Send approval notification
457
+ # Arguments:
458
+ # $1 - Skill ID
459
+ # $2 - Action (approved|rejected|needs_correction)
460
+ #######################################
461
+ send_approval_notification() {
462
+ local skill_id="$1"
463
+ local action="$2"
464
+
465
+ # Get skill details
466
+ local skill_name
467
+ skill_name=$(execute_query "SELECT pattern_name FROM workflow_patterns WHERE id = '${skill_id}';")
468
+
469
+ # Placeholder for notification integration
470
+ # In production, integrate with email/Slack services
471
+
472
+ info_msg "Notification: Skill '${skill_name}' has been ${action}"
473
+
474
+ # TODO: Integrate with notification service
475
+ # - Send email using templates/email-notification.txt
476
+ # - Send Slack message using templates/slack-notification.md
477
+ }
478
+
479
+ #######################################
480
+ # Initialize skill_approvals table
481
+ #######################################
482
+ init_approvals_table() {
483
+ info_msg "Initializing skill_approvals table..."
484
+
485
+ local schema_query="
486
+ CREATE TABLE IF NOT EXISTS skill_approvals (
487
+ id SERIAL PRIMARY KEY,
488
+ skill_id UUID REFERENCES workflow_patterns(id) ON DELETE CASCADE,
489
+ expert_id VARCHAR(255) NOT NULL,
490
+ action VARCHAR(50) NOT NULL,
491
+ feedback TEXT,
492
+ timestamp TIMESTAMP DEFAULT NOW()
493
+ );
494
+
495
+ CREATE INDEX IF NOT EXISTS idx_skill_approvals_skill_id ON skill_approvals(skill_id);
496
+ CREATE INDEX IF NOT EXISTS idx_skill_approvals_expert_id ON skill_approvals(expert_id);
497
+ CREATE INDEX IF NOT EXISTS idx_skill_approvals_timestamp ON skill_approvals(timestamp);
498
+ "
499
+
500
+ if execute_query "$schema_query" > /dev/null 2>&1; then
501
+ success_msg "skill_approvals table initialized successfully"
502
+ else
503
+ error_exit "Failed to initialize skill_approvals table"
504
+ fi
505
+ }
506
+
507
+ #######################################
508
+ # Show usage information
509
+ #######################################
510
+ usage() {
511
+ cat << EOF
512
+ Usage: $0 [COMMAND] [OPTIONS]
513
+
514
+ Commands:
515
+ (default) Review a specific skill (requires --skill-id and --action)
516
+ --list-pending List all pending skills for review
517
+ --check-sla Check SLA status for pending reviews
518
+ --init Initialize skill_approvals table
519
+
520
+ Review Options:
521
+ --skill-id UUID Skill ID to review (required for review action)
522
+ --action ACTION Action to take: approve, reject, correct (required)
523
+ --feedback TEXT Feedback/reason for action (required for reject/correct)
524
+
525
+ List Options:
526
+ --team TEAM_NAME Filter pending skills by team (optional)
527
+
528
+ Examples:
529
+ # Approve a skill
530
+ $0 --skill-id "123e4567-e89b-12d3-a456-426614174000" --action approve
531
+
532
+ # Reject a skill with feedback
533
+ $0 --skill-id "123e4567-e89b-12d3-a456-426614174000" \\
534
+ --action reject --feedback "Script has security vulnerabilities"
535
+
536
+ # Request corrections
537
+ $0 --skill-id "123e4567-e89b-12d3-a456-426614174000" \\
538
+ --action correct --feedback "Add input validation for domain parameter"
539
+
540
+ # List all pending skills
541
+ $0 --list-pending
542
+
543
+ # List pending skills for frontend team
544
+ $0 --list-pending --team frontend
545
+
546
+ # Check SLA status
547
+ $0 --check-sla
548
+
549
+ EOF
550
+ exit 1
551
+ }
552
+
553
+ #######################################
554
+ # Main execution
555
+ #######################################
556
+ main() {
557
+ local skill_id=""
558
+ local action=""
559
+ local feedback=""
560
+ local team_filter=""
561
+ local list_pending=false
562
+ local check_sla=false
563
+ local init_table=false
564
+
565
+ # Parse arguments
566
+ while [ $# -gt 0 ]; do
567
+ case "$1" in
568
+ --skill-id)
569
+ skill_id="$2"
570
+ shift 2
571
+ ;;
572
+ --action)
573
+ action="$2"
574
+ shift 2
575
+ ;;
576
+ --feedback)
577
+ feedback="$2"
578
+ shift 2
579
+ ;;
580
+ --team)
581
+ team_filter="$2"
582
+ shift 2
583
+ ;;
584
+ --list-pending)
585
+ list_pending=true
586
+ shift
587
+ ;;
588
+ --check-sla)
589
+ check_sla=true
590
+ shift
591
+ ;;
592
+ --init)
593
+ init_table=true
594
+ shift
595
+ ;;
596
+ --help|-h)
597
+ usage
598
+ ;;
599
+ *)
600
+ error_exit "Unknown option: $1"
601
+ ;;
602
+ esac
603
+ done
604
+
605
+ # Execute command
606
+ if [ "$init_table" = true ]; then
607
+ init_approvals_table
608
+ exit 0
609
+ fi
610
+
611
+ if [ "$list_pending" = true ]; then
612
+ list_pending_skills "$team_filter"
613
+ exit 0
614
+ fi
615
+
616
+ if [ "$check_sla" = true ]; then
617
+ check_sla_status
618
+ exit $?
619
+ fi
620
+
621
+ # Default: review action
622
+ if [ -z "$skill_id" ] || [ -z "$action" ]; then
623
+ usage
624
+ fi
625
+
626
+ # Validate action
627
+ case "$action" in
628
+ approve)
629
+ approve_skill "$skill_id" "$feedback"
630
+ ;;
631
+ reject)
632
+ reject_skill "$skill_id" "$feedback"
633
+ ;;
634
+ correct)
635
+ request_correction "$skill_id" "$feedback"
636
+ ;;
637
+ *)
638
+ error_exit "Invalid action: $action. Must be approve, reject, or correct."
639
+ ;;
640
+ esac
641
+ }
642
+
643
+ main "$@"