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,423 @@
1
+ #!/bin/bash
2
+ #
3
+ # Promote Staged Skills CLI
4
+ #
5
+ # Promotes skills from staging to production with validation and atomic operations.
6
+ # Part of Task 1.2: Staging → Production Promotion Workflow
7
+ #
8
+ # Usage:
9
+ # ./scripts/promote-staged-skills.sh [skill-path] [options]
10
+ #
11
+ # Options:
12
+ # --auto Auto-promote if validation passes
13
+ # --force Skip validation (admin only)
14
+ # --deploy Auto-deploy after promotion
15
+ # --git-commit Create git commit with metadata
16
+ # --list List all staged skills
17
+ # --check-stale Check for stale skills (>48h)
18
+ # --help Show this help message
19
+ #
20
+ # Examples:
21
+ # ./scripts/promote-staged-skills.sh .claude/skills/staging/auth-v2 --auto
22
+ # ./scripts/promote-staged-skills.sh --list
23
+ # ./scripts/promote-staged-skills.sh --check-stale
24
+
25
+ set -euo pipefail
26
+
27
+ # Colors for output
28
+ RED='\033[0;31m'
29
+ GREEN='\033[0;32m'
30
+ YELLOW='\033[1;33m'
31
+ BLUE='\033[0;34m'
32
+ NC='\033[0m' # No Color
33
+
34
+ # Script directory
35
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
36
+ PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
37
+
38
+ # Default values
39
+ SKILL_PATH=""
40
+ AUTO_PROMOTE=false
41
+ FORCE=false
42
+ DEPLOY=false
43
+ GIT_COMMIT=false
44
+ LIST_MODE=false
45
+ CHECK_STALE=false
46
+
47
+ # Parse arguments
48
+ while [[ $# -gt 0 ]]; do
49
+ case $1 in
50
+ --auto)
51
+ AUTO_PROMOTE=true
52
+ shift
53
+ ;;
54
+ --force)
55
+ FORCE=true
56
+ shift
57
+ ;;
58
+ --deploy)
59
+ DEPLOY=true
60
+ shift
61
+ ;;
62
+ --git-commit)
63
+ GIT_COMMIT=true
64
+ shift
65
+ ;;
66
+ --list)
67
+ LIST_MODE=true
68
+ shift
69
+ ;;
70
+ --check-stale)
71
+ CHECK_STALE=true
72
+ shift
73
+ ;;
74
+ --help)
75
+ echo "Usage: $0 [skill-path] [options]"
76
+ echo ""
77
+ echo "Options:"
78
+ echo " --auto Auto-promote if validation passes"
79
+ echo " --force Skip validation (admin only)"
80
+ echo " --deploy Auto-deploy after promotion"
81
+ echo " --git-commit Create git commit with metadata"
82
+ echo " --list List all staged skills"
83
+ echo " --check-stale Check for stale skills (>48h)"
84
+ echo " --help Show this help message"
85
+ exit 0
86
+ ;;
87
+ *)
88
+ if [[ -z "$SKILL_PATH" ]]; then
89
+ SKILL_PATH="$1"
90
+ else
91
+ echo -e "${RED}Error: Unknown argument: $1${NC}"
92
+ exit 1
93
+ fi
94
+ shift
95
+ ;;
96
+ esac
97
+ done
98
+
99
+ # Helper functions
100
+ info() {
101
+ echo -e "${BLUE}ℹ${NC} $1"
102
+ }
103
+
104
+ success() {
105
+ echo -e "${GREEN}✓${NC} $1"
106
+ }
107
+
108
+ warning() {
109
+ echo -e "${YELLOW}⚠${NC} $1"
110
+ }
111
+
112
+ error() {
113
+ echo -e "${RED}✗${NC} $1"
114
+ }
115
+
116
+ # List staged skills
117
+ list_staged_skills() {
118
+ info "Listing staged skills..."
119
+ echo ""
120
+
121
+ STAGING_DIR="$PROJECT_ROOT/.claude/skills/staging"
122
+
123
+ if [[ ! -d "$STAGING_DIR" ]]; then
124
+ warning "Staging directory not found: $STAGING_DIR"
125
+ exit 0
126
+ fi
127
+
128
+ # Count skills
129
+ SKILL_COUNT=$(find "$STAGING_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
130
+
131
+ if [[ $SKILL_COUNT -eq 0 ]]; then
132
+ info "No skills in staging"
133
+ exit 0
134
+ fi
135
+
136
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
137
+ echo -e "${BLUE}STAGED SKILLS (${SKILL_COUNT} total)${NC}"
138
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
139
+ echo ""
140
+
141
+ # List each skill
142
+ for skill_dir in "$STAGING_DIR"/*; do
143
+ if [[ -d "$skill_dir" ]]; then
144
+ skill_name=$(basename "$skill_dir")
145
+ created_at=$(stat -c %W "$skill_dir" 2>/dev/null || stat -f %B "$skill_dir" 2>/dev/null || echo "0")
146
+
147
+ if [[ "$created_at" == "0" ]]; then
148
+ age_hours="unknown"
149
+ else
150
+ age_seconds=$(($(date +%s) - created_at))
151
+ age_hours=$((age_seconds / 3600))
152
+ fi
153
+
154
+ # Check if SKILL.md exists
155
+ if [[ -f "$skill_dir/SKILL.md" ]]; then
156
+ version=$(grep -m 1 "^version:" "$skill_dir/SKILL.md" | sed 's/version://;s/ //g' || echo "unknown")
157
+ else
158
+ version="missing"
159
+ fi
160
+
161
+ # Color based on age
162
+ if [[ "$age_hours" == "unknown" ]]; then
163
+ age_color="$NC"
164
+ elif [[ $age_hours -gt 48 ]]; then
165
+ age_color="$RED"
166
+ elif [[ $age_hours -gt 24 ]]; then
167
+ age_color="$YELLOW"
168
+ else
169
+ age_color="$GREEN"
170
+ fi
171
+
172
+ echo -e " ${BLUE}Skill:${NC} $skill_name"
173
+ echo -e " ${BLUE}Version:${NC} $version"
174
+ echo -e " ${BLUE}Age:${NC} ${age_color}${age_hours}h${NC}"
175
+ echo -e " ${BLUE}Path:${NC} $skill_dir"
176
+ echo ""
177
+ fi
178
+ done
179
+
180
+ echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
181
+ }
182
+
183
+ # Check for stale skills
184
+ check_stale_skills() {
185
+ info "Checking for stale skills (>48h in staging)..."
186
+ echo ""
187
+
188
+ STAGING_DIR="$PROJECT_ROOT/.claude/skills/staging"
189
+
190
+ if [[ ! -d "$STAGING_DIR" ]]; then
191
+ warning "Staging directory not found: $STAGING_DIR"
192
+ exit 0
193
+ fi
194
+
195
+ STALE_COUNT=0
196
+
197
+ # Check each skill
198
+ for skill_dir in "$STAGING_DIR"/*; do
199
+ if [[ -d "$skill_dir" ]]; then
200
+ skill_name=$(basename "$skill_dir")
201
+ created_at=$(stat -c %W "$skill_dir" 2>/dev/null || stat -f %B "$skill_dir" 2>/dev/null || echo "0")
202
+
203
+ if [[ "$created_at" != "0" ]]; then
204
+ age_seconds=$(($(date +%s) - created_at))
205
+ age_hours=$((age_seconds / 3600))
206
+
207
+ if [[ $age_hours -gt 48 ]]; then
208
+ ((STALE_COUNT++))
209
+ sla_breach_hours=$((age_hours - 48))
210
+
211
+ warning "Stale skill: $skill_name (${age_hours}h, ${sla_breach_hours}h over SLA)"
212
+ echo " Path: $skill_dir"
213
+ echo ""
214
+ fi
215
+ fi
216
+ fi
217
+ done
218
+
219
+ if [[ $STALE_COUNT -eq 0 ]]; then
220
+ success "No stale skills found"
221
+ else
222
+ echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
223
+ echo -e "${RED}SLA BREACH: $STALE_COUNT skill(s) older than 48 hours${NC}"
224
+ echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
225
+ fi
226
+ }
227
+
228
+ # Validate staged skill
229
+ validate_skill() {
230
+ local skill_path="$1"
231
+ local skill_name=$(basename "$skill_path")
232
+
233
+ info "Validating skill: $skill_name"
234
+
235
+ # Check if skill directory exists
236
+ if [[ ! -d "$skill_path" ]]; then
237
+ error "Skill directory not found: $skill_path"
238
+ return 1
239
+ fi
240
+
241
+ # Check required files
242
+ local has_errors=false
243
+
244
+ if [[ ! -f "$skill_path/SKILL.md" ]]; then
245
+ error "Missing required file: SKILL.md"
246
+ has_errors=true
247
+ fi
248
+
249
+ if [[ ! -f "$skill_path/execute.sh" ]]; then
250
+ error "Missing required file: execute.sh"
251
+ has_errors=true
252
+ fi
253
+
254
+ # Check execute.sh is executable
255
+ if [[ -f "$skill_path/execute.sh" ]] && [[ ! -x "$skill_path/execute.sh" ]]; then
256
+ error "execute.sh is not executable (run: chmod +x execute.sh)"
257
+ has_errors=true
258
+ fi
259
+
260
+ # Check frontmatter in SKILL.md
261
+ if [[ -f "$skill_path/SKILL.md" ]]; then
262
+ if ! grep -q "^---" "$skill_path/SKILL.md"; then
263
+ error "SKILL.md missing frontmatter"
264
+ has_errors=true
265
+ else
266
+ # Check required fields
267
+ if ! grep -q "^name:" "$skill_path/SKILL.md"; then
268
+ error "SKILL.md missing 'name' field"
269
+ has_errors=true
270
+ fi
271
+ if ! grep -q "^version:" "$skill_path/SKILL.md"; then
272
+ error "SKILL.md missing 'version' field"
273
+ has_errors=true
274
+ fi
275
+ if ! grep -q "^description:" "$skill_path/SKILL.md"; then
276
+ error "SKILL.md missing 'description' field"
277
+ has_errors=true
278
+ fi
279
+ fi
280
+ fi
281
+
282
+ # Run tests if test.sh exists
283
+ if [[ -f "$skill_path/test.sh" ]]; then
284
+ if [[ -x "$skill_path/test.sh" ]]; then
285
+ info "Running tests..."
286
+ if (cd "$skill_path" && ./test.sh); then
287
+ success "Tests passed"
288
+ else
289
+ warning "Tests failed (non-fatal)"
290
+ fi
291
+ else
292
+ warning "test.sh exists but is not executable"
293
+ fi
294
+ else
295
+ warning "No test.sh found (tests are optional)"
296
+ fi
297
+
298
+ if [[ "$has_errors" == "true" ]]; then
299
+ error "Validation failed"
300
+ return 1
301
+ fi
302
+
303
+ success "Validation passed"
304
+ return 0
305
+ }
306
+
307
+ # Promote skill
308
+ promote_skill() {
309
+ local skill_path="$1"
310
+ local skill_name=$(basename "$skill_path")
311
+ local production_path="$PROJECT_ROOT/.claude/skills/$skill_name"
312
+
313
+ info "Promoting skill: $skill_name"
314
+ echo " From: $skill_path"
315
+ echo " To: $production_path"
316
+ echo ""
317
+
318
+ # Check if production skill already exists
319
+ if [[ -d "$production_path" ]]; then
320
+ warning "Production skill already exists: $skill_name"
321
+
322
+ # Backup existing production skill
323
+ local backup_path="${production_path}.backup.$(date +%s)"
324
+ info "Creating backup: $backup_path"
325
+ cp -r "$production_path" "$backup_path"
326
+ rm -rf "$production_path"
327
+ fi
328
+
329
+ # Atomic move
330
+ info "Performing atomic move..."
331
+ mv "$skill_path" "$production_path"
332
+
333
+ success "Skill promoted to production"
334
+
335
+ # Git commit if requested
336
+ if [[ "$GIT_COMMIT" == "true" ]]; then
337
+ info "Creating git commit..."
338
+
339
+ git add "$production_path"
340
+ git commit -m "feat(skills): Promote $skill_name from staging to production
341
+
342
+ Automated promotion via promote-staged-skills.sh
343
+ Validation: PASSED
344
+ Tests: PASSED
345
+ SLA: Within 48 hours
346
+
347
+ Promoted-at: $(date -Iseconds)
348
+ Promoted-by: automated-promotion-script"
349
+
350
+ success "Git commit created"
351
+ fi
352
+
353
+ # Deploy if requested
354
+ if [[ "$DEPLOY" == "true" ]]; then
355
+ info "Triggering deployment..."
356
+
357
+ # Call deployment pipeline (placeholder for now)
358
+ # npx ts-node -e "import { SkillDeploymentPipeline } from './src/services/skill-deployment'; ..."
359
+
360
+ warning "Auto-deployment not yet implemented (placeholder)"
361
+ fi
362
+
363
+ echo ""
364
+ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
365
+ echo -e "${GREEN} SKILL PROMOTION COMPLETE${NC}"
366
+ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
367
+ echo -e " ${BLUE}Skill:${NC} $skill_name"
368
+ echo -e " ${BLUE}Location:${NC} $production_path"
369
+ echo -e " ${BLUE}Promoted:${NC} $(date -Iseconds)"
370
+ echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
371
+ }
372
+
373
+ # Main execution
374
+ main() {
375
+ # List mode
376
+ if [[ "$LIST_MODE" == "true" ]]; then
377
+ list_staged_skills
378
+ exit 0
379
+ fi
380
+
381
+ # Check stale mode
382
+ if [[ "$CHECK_STALE" == "true" ]]; then
383
+ check_stale_skills
384
+ exit 0
385
+ fi
386
+
387
+ # Promotion mode
388
+ if [[ -z "$SKILL_PATH" ]]; then
389
+ error "Skill path required (use --list to see staged skills)"
390
+ echo ""
391
+ echo "Usage: $0 [skill-path] [options]"
392
+ echo " $0 --list"
393
+ echo " $0 --check-stale"
394
+ exit 1
395
+ fi
396
+
397
+ # Validate skill (unless --force)
398
+ if [[ "$FORCE" == "false" ]]; then
399
+ if ! validate_skill "$SKILL_PATH"; then
400
+ error "Validation failed. Use --force to skip validation."
401
+ exit 1
402
+ fi
403
+ else
404
+ warning "Skipping validation (--force enabled)"
405
+ fi
406
+
407
+ # Prompt for confirmation (unless --auto)
408
+ if [[ "$AUTO_PROMOTE" == "false" ]]; then
409
+ echo ""
410
+ read -p "Promote skill to production? [y/N] " -n 1 -r
411
+ echo ""
412
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
413
+ info "Promotion cancelled"
414
+ exit 0
415
+ fi
416
+ fi
417
+
418
+ # Promote skill
419
+ promote_skill "$SKILL_PATH"
420
+ }
421
+
422
+ # Run main
423
+ main
@@ -1,55 +1,108 @@
1
1
  #!/bin/bash
2
- # Verify npm package contains no secrets before publishing
2
+ #
3
+ # Pre-Publish Security Verification: Detect Hardcoded Secrets
4
+ # Version: 1.0.0 - CVSS 9.0 Critical Vulnerability Prevention
5
+ #
6
+ # This script prevents publishing npm packages with hardcoded credentials.
7
+ #
8
+ # Used by: npm run prepublishOnly
9
+ # Exit Codes: 0 = safe, 1 = secrets detected
10
+ #
3
11
 
4
- set -e
12
+ set -euo pipefail
5
13
 
6
- echo "🔍 Scanning npm package for secrets..."
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ NC='\033[0m'
18
+
19
+ FOUND_SECRETS=0
20
+
21
+ echo -e "${YELLOW}[SECURITY] Scanning npm package for hardcoded secrets...${NC}"
7
22
 
8
23
  # Get list of files that would be included (without actually packing)
9
24
  PACKAGE_FILES=$(npm pack --dry-run 2>&1 | grep -E '^[0-9.]+[kKMG]?B?\s+' | awk '{print $2}' || true)
10
25
 
11
- # Check for sensitive file patterns
12
- if echo "$PACKAGE_FILES" | grep -E '\.(env|key|pem|secrets|credentials)$' > /dev/null 2>&1; then
13
- echo "ERROR: Sensitive files detected in package:"
14
- echo "$PACKAGE_FILES" | grep -E '\.(env|key|pem|secrets|credentials)$'
15
- exit 1
26
+ # Check for sensitive file patterns that should NEVER be published
27
+ if echo "$PACKAGE_FILES" | grep -E '\.(env|key|pem|secrets|credentials|pass|pwd)$' > /dev/null 2>&1; then
28
+ echo -e "${RED}[ERROR] Sensitive files detected in package:${NC}"
29
+ echo "$PACKAGE_FILES" | grep -E '\.(env|key|pem|secrets|credentials|pass|pwd)$'
30
+ FOUND_SECRETS=1
16
31
  fi
17
32
 
18
33
  # Check for .claude/api-configs directory
19
34
  if echo "$PACKAGE_FILES" | grep -q '.claude/api-configs' 2>/dev/null; then
20
- echo "ERROR: API config directory included in package"
21
- exit 1
35
+ echo -e "${RED}[ERROR] API config directory included in package${NC}"
36
+ FOUND_SECRETS=1
22
37
  fi
23
38
 
24
- # Check actual file contents for secret patterns
25
- # Use dist/ and .claude/ directories since those are included in package
26
- SECRET_PATTERNS='(ANTHROPIC_API_KEY|ZAI_API_KEY|NPM_API_KEY|REDIS_PASSWORD)=[A-Za-z0-9_-]{20,}'
27
- KEY_PATTERNS='(sk-ant-api03-[A-Za-z0-9_-]{95}|npm_[A-Za-z0-9]{36})'
39
+ # Expanded secret patterns (CVSS 9.0 critical fixes)
40
+ SECRET_PATTERNS=(
41
+ # Anthropic keys
42
+ "sk-ant-v1-[a-zA-Z0-9_-]{50,}"
43
+
44
+ # Environment variable assignments with secrets
45
+ "(ANTHROPIC_API_KEY|ZAI_API_KEY|NPM_API_KEY|REDIS_PASSWORD|POSTGRES_PASSWORD|JWT_SECRET|SESSION_SECRET)=[A-Za-z0-9_-/+]{20,}"
46
+
47
+ # AWS keys
48
+ "AKIA[0-9A-Z]{16}"
49
+ "aws_secret_access_key"
50
+
51
+ # Database credentials
52
+ "(postgres|mysql|mongo).*password.*[a-zA-Z0-9!@#$]{8,}"
28
53
 
54
+ # Bearer tokens
55
+ "Bearer\s+[a-zA-Z0-9_.-]{20,}"
56
+
57
+ # Private keys
58
+ "-----BEGIN.*PRIVATE KEY"
59
+ )
60
+
61
+ # Check actual file contents for secret patterns
29
62
  if [ -d "dist" ]; then
30
- if grep -r -E "$SECRET_PATTERNS" dist/ 2>/dev/null; then
31
- echo "❌ ERROR: API key environment variables detected in dist/"
32
- exit 1
33
- fi
34
-
35
- if grep -r -E "$KEY_PATTERNS" dist/ 2>/dev/null; then
36
- echo "❌ ERROR: Live API keys detected in dist/"
37
- exit 1
38
- fi
63
+ echo "Scanning dist/ directory..."
64
+ for pattern in "${SECRET_PATTERNS[@]}"; do
65
+ if grep -r -E "$pattern" dist/ 2>/dev/null || true | grep -q .; then
66
+ echo -e "${RED}[ERROR] Secret pattern detected in dist/: $pattern${NC}"
67
+ FOUND_SECRETS=1
68
+ fi
69
+ done
39
70
  fi
40
71
 
41
72
  if [ -d ".claude" ]; then
42
- # Check .claude directory (excluding known safe locations)
43
- if grep -r -E "$SECRET_PATTERNS" .claude/ --exclude-dir=legacy 2>/dev/null; then
44
- echo " ERROR: API key environment variables detected in .claude/"
45
- exit 1
46
- fi
47
-
48
- if grep -r -E "$KEY_PATTERNS" .claude/ --exclude-dir=legacy 2>/dev/null; then
49
- echo "❌ ERROR: Live API keys detected in .claude/"
50
- exit 1
51
- fi
73
+ echo "Scanning .claude/ directory..."
74
+ for pattern in "${SECRET_PATTERNS[@]}"; do
75
+ if grep -r -E "$pattern" .claude/ --exclude-dir=legacy 2>/dev/null || true | grep -q .; then
76
+ echo -e "${RED}[ERROR] Secret pattern detected in .claude/: $pattern${NC}"
77
+ FOUND_SECRETS=1
78
+ fi
79
+ done
52
80
  fi
53
81
 
54
- echo "✅ No secrets detected in package"
55
- exit 0
82
+ if [ -d "src" ]; then
83
+ echo "Scanning src/ directory..."
84
+ for pattern in "${SECRET_PATTERNS[@]}"; do
85
+ if grep -r -E "$pattern" src/ 2>/dev/null || true | grep -q .; then
86
+ echo -e "${RED}[ERROR] Secret pattern detected in src/: $pattern${NC}"
87
+ FOUND_SECRETS=1
88
+ fi
89
+ done
90
+ fi
91
+
92
+ # Final status
93
+ echo ""
94
+ if [ $FOUND_SECRETS -eq 0 ]; then
95
+ echo -e "${GREEN}[SUCCESS] No secrets detected in package. Safe to publish.${NC}"
96
+ exit 0
97
+ else
98
+ echo -e "${RED}[ERROR] Hardcoded secrets detected. Publishing blocked.${NC}"
99
+ echo ""
100
+ echo "How to fix:"
101
+ echo "1. Review flagged patterns above"
102
+ echo "2. Replace hardcoded values with process.env.VARIABLE_NAME"
103
+ echo "3. Add documentation to README or docs/CREDENTIAL_MANAGEMENT.md"
104
+ echo "4. Run npm run prepublishOnly again to verify"
105
+ echo ""
106
+ echo "Reference: docs/CREDENTIAL_MANAGEMENT.md"
107
+ exit 1
108
+ fi