claude-flow-novice 2.15.0 → 2.15.1

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 (601) hide show
  1. package/.claude/cfn-extras/agents/cfn-coordinator-enterprise.md +1303 -0
  2. package/.claude/cfn-extras/agents/cfn-coordinator-mvp.md +942 -0
  3. package/.claude/cfn-extras/agents/cfn-coordinator-standard.md +1062 -0
  4. package/.claude/cfn-extras/agents/cfn-loop-coordinator.md +157 -0
  5. package/.claude/cfn-extras/agents/coordinator.md +182 -0
  6. package/.claude/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +760 -0
  7. package/.claude/cfn-extras/agents/cost-savings-coordinator.md +173 -0
  8. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +147 -0
  9. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +162 -0
  10. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +161 -0
  11. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +729 -0
  12. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +728 -0
  13. package/.claude/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +100 -0
  14. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +323 -0
  15. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +157 -0
  16. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +229 -0
  17. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +149 -0
  18. package/.claude/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +231 -0
  19. package/.claude/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +165 -0
  20. package/.claude/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +95 -0
  21. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +132 -0
  22. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +131 -0
  23. package/.claude/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +109 -0
  24. package/.claude/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +142 -0
  25. package/.claude/commands/cfn-docker/CFN_DOCKER_NATIVE.md +295 -0
  26. package/.claude/commands/cfn-docker-core-test-suite.md +326 -0
  27. package/.claude/commands/cfn-loop-cli.md +1 -1
  28. package/.claude/commands/switch-api.md +20 -6
  29. package/.claude/root-claude-distribute/CFN-CLAUDE.md +177 -426
  30. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +27 -18
  31. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  32. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  33. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  34. package/.claude/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  35. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  36. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  37. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  38. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  39. package/.claude/skills/cfn-redis-coordination/report-completion.sh +7 -7
  40. package/claude-assets/agents/cfn-dev-team/architecture/api-designer-persona.md +2 -0
  41. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +2 -0
  42. package/claude-assets/agents/cfn-dev-team/architecture/planner.md +2 -0
  43. package/claude-assets/agents/cfn-dev-team/architecture/system-architect.md +2 -0
  44. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +419 -563
  45. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +2 -0
  46. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +2 -0
  47. package/claude-assets/agents/cfn-dev-team/documentation/README-VALIDATION.md +2 -0
  48. package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +2 -0
  49. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +1 -1
  50. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +1 -1
  51. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +2 -0
  52. package/claude-assets/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +2 -0
  53. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +2 -0
  54. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +1 -1
  55. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  56. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +2 -0
  57. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +2 -0
  58. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +2 -0
  59. package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +4 -0
  60. package/claude-assets/agents/cfn-dev-team/testers/validation/validation-production-validator.md +1 -1
  61. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +825 -17
  62. package/claude-assets/agents/docker-team/micro-sprint-planner.md +747 -0
  63. package/claude-assets/agents/docker-ts-fixer.md +56 -0
  64. package/claude-assets/agents/typescript-specialist.md +280 -0
  65. package/claude-assets/cfn-extras/agents/cfn-coordinator-enterprise.md +1303 -0
  66. package/claude-assets/cfn-extras/agents/cfn-coordinator-mvp.md +942 -0
  67. package/claude-assets/cfn-extras/agents/cfn-coordinator-standard.md +1062 -0
  68. package/claude-assets/cfn-extras/agents/cfn-loop-coordinator.md +157 -0
  69. package/claude-assets/cfn-extras/agents/coordinator.md +182 -0
  70. package/claude-assets/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +760 -0
  71. package/claude-assets/cfn-extras/agents/cost-savings-coordinator.md +173 -0
  72. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +147 -0
  73. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +162 -0
  74. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +161 -0
  75. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +729 -0
  76. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +728 -0
  77. package/claude-assets/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +100 -0
  78. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +323 -0
  79. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +157 -0
  80. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +229 -0
  81. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +149 -0
  82. package/claude-assets/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +231 -0
  83. package/claude-assets/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +165 -0
  84. package/claude-assets/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +95 -0
  85. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +132 -0
  86. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +131 -0
  87. package/claude-assets/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +109 -0
  88. package/claude-assets/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +142 -0
  89. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/SKILL.md +36 -0
  90. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +60 -0
  91. package/claude-assets/cfn-extras/skills/advanced-features/cfn-api-validation/test-endpoints.sh +54 -0
  92. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/SKILL.md +75 -0
  93. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/prune-context.sh +73 -0
  94. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/cli-coordination.sh +519 -0
  95. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/mode-detection.sh +326 -0
  96. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +267 -0
  97. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/SKILL.md +33 -0
  98. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +92 -0
  99. package/claude-assets/cfn-extras/skills/analytics/cfn-memory-monitoring/SKILL.md +531 -0
  100. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/SKILL.md +30 -0
  101. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +80 -0
  102. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/SKILL.md +31 -0
  103. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +101 -0
  104. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/collect-metrics.sh +249 -0
  105. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +111 -0
  106. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +192 -0
  107. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  108. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/DESIGN.md +98 -0
  109. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  110. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/SKILL.md +392 -0
  111. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -0
  112. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -0
  113. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -0
  114. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -0
  115. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -0
  116. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/SKILL.md +124 -0
  117. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-ad-performance.sh +105 -0
  118. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +102 -0
  119. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-email-performance.sh +105 -0
  120. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-social-engagement.sh +105 -0
  121. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-website-traffic.sh +107 -0
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/SKILL.md +340 -0
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -0
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -0
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -0
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -0
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -0
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/SKILL.md +350 -0
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +154 -0
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +173 -0
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +147 -0
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +146 -0
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +167 -0
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/SKILL.md +116 -0
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/add-to-segment.sh +78 -0
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/create-contact.sh +113 -0
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/get-contact.sh +86 -0
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +78 -0
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/update-contact.sh +120 -0
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/SKILL.md +106 -0
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/create-campaign.sh +123 -0
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +66 -0
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/list-templates.sh +68 -0
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +85 -0
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/send-test-email.sh +81 -0
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md +366 -0
  147. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-ab-test.sh +231 -0
  148. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-landing-page.sh +190 -0
  149. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/get-page-performance.sh +137 -0
  150. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/publish-page.sh +120 -0
  151. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/unpublish-page.sh +108 -0
  152. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/SKILL.md +202 -0
  153. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +104 -0
  154. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/export-report.sh +92 -0
  155. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +85 -0
  156. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/search-mentions.sh +86 -0
  157. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/SKILL.md +168 -0
  158. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/search-journalists.sh +74 -0
  159. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/send-pitch.sh +80 -0
  160. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/submit-haro-response.sh +88 -0
  161. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +66 -0
  162. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/SKILL.md +159 -0
  163. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/distribute-press-release.sh +94 -0
  164. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-distribution-status.sh +59 -0
  165. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +72 -0
  166. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/list-templates.sh +53 -0
  167. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/SKILL.md +429 -0
  168. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -0
  169. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -0
  170. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -0
  171. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -0
  172. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -0
  173. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/SKILL.md +108 -0
  174. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/create-post.sh +104 -0
  175. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/delete-post.sh +76 -0
  176. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/get-post-stats.sh +66 -0
  177. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/schedule-post.sh +85 -0
  178. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/upload-media.sh +88 -0
  179. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/DESIGN.md +117 -0
  180. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/SKILL.md +679 -0
  181. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-agents.sh +129 -0
  182. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-dashboard.sh +85 -0
  183. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-events.sh +125 -0
  184. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-metrics.sh +112 -0
  185. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-start.sh +135 -0
  186. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-stop.sh +121 -0
  187. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +51 -0
  188. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +85 -0
  189. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/SKILL.md +200 -0
  190. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +244 -0
  191. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/SKILL.md +279 -0
  192. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/instrument-process.sh +327 -0
  193. package/claude-assets/commands/cfn-docker/CFN_DOCKER_NATIVE.md +295 -0
  194. package/claude-assets/commands/cfn-docker-core-test-suite.md +326 -0
  195. package/claude-assets/commands/cfn-loop-cli.md +1 -1
  196. package/claude-assets/commands/switch-api.md +20 -6
  197. package/claude-assets/root-claude-distribute/CFN-CLAUDE.md +177 -426
  198. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +27 -18
  199. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  200. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  201. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  202. package/claude-assets/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  203. package/claude-assets/skills/cfn-docker-wave-execution/SKILL.md +936 -0
  204. package/claude-assets/skills/cfn-docker-wave-execution/cleanup-wave.sh +445 -0
  205. package/claude-assets/skills/cfn-docker-wave-execution/lib/docker-helpers.sh +804 -0
  206. package/claude-assets/skills/cfn-docker-wave-execution/monitor-wave.sh +485 -0
  207. package/claude-assets/skills/cfn-docker-wave-execution/spawn-wave.sh +547 -0
  208. package/claude-assets/skills/cfn-error-batching-strategy/README.md +323 -0
  209. package/claude-assets/skills/cfn-error-batching-strategy/SKILL.md +1016 -0
  210. package/claude-assets/skills/cfn-error-batching-strategy/analyze-errors.sh +327 -0
  211. package/claude-assets/skills/cfn-error-batching-strategy/calculate-waves.sh +256 -0
  212. package/claude-assets/skills/cfn-error-batching-strategy/cli.sh +523 -0
  213. package/claude-assets/skills/cfn-error-batching-strategy/cluster-files.sh +196 -0
  214. package/claude-assets/skills/cfn-error-batching-strategy/create-batches.sh +261 -0
  215. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -0
  216. package/claude-assets/skills/cfn-error-batching-strategy/templates/default-tiers.json +22 -0
  217. package/claude-assets/skills/cfn-error-batching-strategy/tests/test-batching-strategy.sh +498 -0
  218. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  219. package/claude-assets/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  220. package/claude-assets/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  221. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  222. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +7 -7
  223. package/claude-assets/skills/cfn-wave-checkpoint/SKILL.md +333 -0
  224. package/claude-assets/skills/cfn-wave-checkpoint/cleanup-orphans.sh +374 -0
  225. package/claude-assets/skills/cfn-wave-checkpoint/resume-wave.sh +325 -0
  226. package/claude-assets/skills/cfn-wave-checkpoint/save-checkpoint.sh +284 -0
  227. package/claude-assets/skills/docker-build/SKILL.md +203 -0
  228. package/claude-assets/skills/docker-build/build.sh +73 -0
  229. package/dist/agent/skill-mcp-selector.js +1 -1
  230. package/dist/agent/skill-mcp-selector.js.map +1 -1
  231. package/dist/agents/agent-loader.js +146 -165
  232. package/dist/agents/agent-loader.js.map +1 -1
  233. package/dist/cli/agent-definition-parser.js +36 -16
  234. package/dist/cli/agent-definition-parser.js.map +1 -1
  235. package/dist/cli/agent-executor.js +48 -13
  236. package/dist/cli/agent-executor.js.map +1 -1
  237. package/dist/cli/agent-prompt-builder.js +28 -2
  238. package/dist/cli/agent-prompt-builder.js.map +1 -1
  239. package/dist/cli/agent-spawn.js +57 -18
  240. package/dist/cli/agent-spawn.js.map +1 -1
  241. package/dist/cli/agent-token-manager.js +5 -1
  242. package/dist/cli/agent-token-manager.js.map +1 -1
  243. package/dist/cli/anthropic-client.js +35 -4
  244. package/dist/cli/anthropic-client.js.map +1 -1
  245. package/dist/cli/cfn-context.js +9 -6
  246. package/dist/cli/cfn-context.js.map +1 -1
  247. package/dist/cli/cfn-metrics.js +8 -1
  248. package/dist/cli/cfn-metrics.js.map +1 -1
  249. package/dist/cli/cfn-redis.js +7 -0
  250. package/dist/cli/cfn-redis.js.map +1 -1
  251. package/dist/cli/conversation-fork.js +14 -11
  252. package/dist/cli/conversation-fork.js.map +1 -1
  253. package/dist/cli/index.js +6 -1
  254. package/dist/cli/index.js.map +1 -1
  255. package/dist/cli/iteration-history.js +8 -5
  256. package/dist/cli/iteration-history.js.map +1 -1
  257. package/dist/coordination/enhanced-progress-tracker.js +1 -1
  258. package/dist/coordination/enhanced-progress-tracker.js.map +1 -1
  259. package/dist/coordination/event-bus.js +1 -1
  260. package/dist/coordination/event-bus.js.map +1 -1
  261. package/dist/coordination/redis-messaging-infrastructure.js +1 -1
  262. package/dist/coordination/redis-messaging-infrastructure.js.map +1 -1
  263. package/dist/mcp/auth-middleware.js +1 -1
  264. package/dist/mcp/auth-middleware.js.map +1 -1
  265. package/dist/mcp/playwright-mcp-server-auth.js +1 -1
  266. package/dist/mcp/playwright-mcp-server-auth.js.map +1 -1
  267. package/dist/utils/secret-filter.js +145 -0
  268. package/dist/utils/secret-filter.js.map +1 -0
  269. package/package.json +5 -4
  270. package/scripts/docker-agent-init.sh +106 -0
  271. package/scripts/docker-rebuild-all-agents.sh +127 -0
  272. package/scripts/init-project.js +4 -4
  273. package/scripts/switch-api.sh +11 -4
  274. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  275. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  276. package/.claude/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  277. package/.claude/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  278. package/.claude/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  279. package/.claude/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  280. package/.claude/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  281. package/.claude/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  282. package/.claude/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  283. package/.claude/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  284. package/.claude/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  285. package/.claude/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  286. package/.claude/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  287. package/.claude/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  288. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  289. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  290. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  291. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  292. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  293. package/.claude/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  294. package/claude-assets/agents/AGENT_LIFECYCLE.md.backup_before_replace +0 -530
  295. package/claude-assets/agents/README-AGENT_LIFECYCLE.md.backup_before_replace +0 -522
  296. package/claude-assets/agents/cfn-dev-team/test-agent.md +0 -141
  297. package/claude-assets/agents/marketing_hybrid/cost_tracker.md +0 -13
  298. package/claude-assets/agents/marketing_hybrid/docker_deployer.md +0 -13
  299. package/claude-assets/agents/marketing_hybrid/zai_worker_spawner.md +0 -13
  300. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  301. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  302. package/claude-assets/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  303. package/claude-assets/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  304. package/claude-assets/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  305. package/claude-assets/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  306. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  307. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  308. package/claude-assets/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  309. package/claude-assets/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  310. package/claude-assets/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  311. package/claude-assets/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  312. package/claude-assets/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  313. package/claude-assets/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  314. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  315. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  316. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  317. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  318. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  319. package/claude-assets/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  320. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  321. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  322. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  323. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  324. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  325. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  326. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  327. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  328. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  329. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  330. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  331. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  332. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  333. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  334. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  335. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  336. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  337. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  338. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  339. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/SKILL.md +0 -0
  340. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/recommend-swap.sh +0 -0
  341. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-api-validation/test-endpoints.sh +0 -0
  342. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/SKILL.md +0 -0
  343. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/prune-context.sh +0 -0
  344. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  345. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  346. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  347. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  348. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  349. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  350. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  351. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  352. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  353. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  354. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  355. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  356. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  357. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  358. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  359. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  360. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/cli-coordination.sh +0 -0
  361. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/mode-detection.sh +0 -0
  362. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +0 -0
  363. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  364. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  365. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  366. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  367. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  368. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  369. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  370. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  371. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  372. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  373. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  374. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/SKILL.md +0 -0
  375. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/recommend-improvements.sh +0 -0
  376. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-memory-monitoring/SKILL.md +0 -0
  377. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/SKILL.md +0 -0
  378. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/extract-patterns.sh +0 -0
  379. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/SKILL.md +0 -0
  380. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/generate-report.sh +0 -0
  381. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/collect-metrics.sh +0 -0
  382. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/start-telemetry.sh +0 -0
  383. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  384. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  385. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  386. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  387. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  388. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  389. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  390. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  391. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  392. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  393. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  394. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  395. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  396. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  397. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  398. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  399. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  400. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  401. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  402. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  403. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  404. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  405. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  406. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  407. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  408. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  409. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  410. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  411. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  412. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  413. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  414. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  415. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  416. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  417. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  418. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  419. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  420. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  421. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  422. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  423. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  424. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  425. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
  426. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-cli-setup/validate-cli-environment.sh +0 -0
  427. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +0 -0
  428. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/DESIGN.md +0 -0
  429. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +0 -0
  430. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/SKILL.md +0 -0
  431. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/create-campaign.sh +0 -0
  432. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +0 -0
  433. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +0 -0
  434. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/set-budget.sh +0 -0
  435. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +0 -0
  436. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/SKILL.md +0 -0
  437. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-ad-performance.sh +0 -0
  438. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +0 -0
  439. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-email-performance.sh +0 -0
  440. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-social-engagement.sh +0 -0
  441. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-website-traffic.sh +0 -0
  442. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/SKILL.md +0 -0
  443. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +0 -0
  444. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +0 -0
  445. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +0 -0
  446. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/send-message.sh +0 -0
  447. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +0 -0
  448. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/SKILL.md +0 -0
  449. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +0 -0
  450. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +0 -0
  451. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +0 -0
  452. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +0 -0
  453. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +0 -0
  454. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/SKILL.md +0 -0
  455. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/add-to-segment.sh +0 -0
  456. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/create-contact.sh +0 -0
  457. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/get-contact.sh +0 -0
  458. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +0 -0
  459. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/update-contact.sh +0 -0
  460. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/SKILL.md +0 -0
  461. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/create-campaign.sh +0 -0
  462. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +0 -0
  463. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/list-templates.sh +0 -0
  464. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +0 -0
  465. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/send-test-email.sh +0 -0
  466. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/SKILL.md +0 -0
  467. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-ab-test.sh +0 -0
  468. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-landing-page.sh +0 -0
  469. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/get-page-performance.sh +0 -0
  470. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/publish-page.sh +0 -0
  471. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/unpublish-page.sh +0 -0
  472. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/SKILL.md +0 -0
  473. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +0 -0
  474. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/export-report.sh +0 -0
  475. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +0 -0
  476. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/search-mentions.sh +0 -0
  477. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/SKILL.md +0 -0
  478. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/search-journalists.sh +0 -0
  479. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/send-pitch.sh +0 -0
  480. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/submit-haro-response.sh +0 -0
  481. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +0 -0
  482. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/SKILL.md +0 -0
  483. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/distribute-press-release.sh +0 -0
  484. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-distribution-status.sh +0 -0
  485. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +0 -0
  486. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/list-templates.sh +0 -0
  487. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/SKILL.md +0 -0
  488. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/create-campaign.sh +0 -0
  489. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +0 -0
  490. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/opt-out.sh +0 -0
  491. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +0 -0
  492. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/send-sms.sh +0 -0
  493. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/SKILL.md +0 -0
  494. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/create-post.sh +0 -0
  495. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/delete-post.sh +0 -0
  496. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/get-post-stats.sh +0 -0
  497. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/schedule-post.sh +0 -0
  498. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/upload-media.sh +0 -0
  499. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/DESIGN.md +0 -0
  500. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/SKILL.md +0 -0
  501. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-agents.sh +0 -0
  502. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-dashboard.sh +0 -0
  503. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-events.sh +0 -0
  504. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-metrics.sh +0 -0
  505. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-start.sh +0 -0
  506. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-stop.sh +0 -0
  507. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/test-web-portal-skill.sh +0 -0
  508. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/validate-deployment.sh +0 -0
  509. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/SKILL.md +0 -0
  510. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/sanitize-environment.sh +0 -0
  511. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/SKILL.md +0 -0
  512. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/instrument-process.sh +0 -0
  513. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  514. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  515. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  516. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  517. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  518. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  519. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  520. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  521. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  522. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  523. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  524. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  525. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  526. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  527. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  528. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  529. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  530. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  531. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  532. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  533. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  534. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  535. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  536. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  537. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  538. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  539. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  540. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  541. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  542. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  543. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  544. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  545. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  546. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  547. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  548. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  549. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  550. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  551. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  552. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  553. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  554. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  555. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  556. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  557. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  558. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  559. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  560. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  561. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  562. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  563. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  564. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  565. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  566. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  567. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  568. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  569. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  570. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  571. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  572. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  573. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  574. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  575. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  576. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  577. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  578. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  579. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  580. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  581. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  582. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  583. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  584. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  585. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  586. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  587. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  588. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  589. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  590. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  591. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  592. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  593. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  594. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  595. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  596. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  597. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  598. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  599. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  600. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  601. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
@@ -0,0 +1,804 @@
1
+ #!/bin/bash
2
+
3
+ ################################################################################
4
+ # CFN Docker Wave Execution - Helper Functions Library
5
+ # Purpose: Shared utilities for Docker container lifecycle management
6
+ # Version: 1.0.0
7
+ # Usage: source ./lib/docker-helpers.sh
8
+ ################################################################################
9
+
10
+ set -euo pipefail
11
+
12
+ # Color codes for output
13
+ readonly RED='\033[0;31m'
14
+ readonly GREEN='\033[0;32m'
15
+ readonly YELLOW='\033[1;33m'
16
+ readonly BLUE='\033[0;34m'
17
+ readonly CYAN='\033[0;36m'
18
+ readonly NC='\033[0m' # No Color
19
+
20
+ # Logging configuration
21
+ readonly LOG_TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
22
+ readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
23
+ readonly SKILL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
24
+
25
+ ################################################################################
26
+ # LOGGING FUNCTIONS
27
+ ################################################################################
28
+
29
+ log_info() {
30
+ echo -e "${BLUE}[INFO]${NC} $(date '+%H:%M:%S') $*" >&2
31
+ }
32
+
33
+ log_success() {
34
+ echo -e "${GREEN}[SUCCESS]${NC} $(date '+%H:%M:%S') $*" >&2
35
+ }
36
+
37
+ log_warn() {
38
+ echo -e "${YELLOW}[WARN]${NC} $(date '+%H:%M:%S') $*" >&2
39
+ }
40
+
41
+ log_error() {
42
+ echo -e "${RED}[ERROR]${NC} $(date '+%H:%M:%S') $*" >&2
43
+ }
44
+
45
+ log_debug() {
46
+ if [[ "${CFN_DEBUG:-false}" == "true" ]]; then
47
+ echo -e "${CYAN}[DEBUG]${NC} $(date '+%H:%M:%S') $*" >&2
48
+ fi
49
+ }
50
+
51
+ ################################################################################
52
+ # VALIDATION FUNCTIONS
53
+ ################################################################################
54
+
55
+ # Validate environment variable format and safety (CRITICAL FIX #1)
56
+ validate_environment_variable() {
57
+ local var="$1"
58
+
59
+ # Format check: VAR_NAME=value
60
+ if ! [[ "$var" =~ ^[A-Za-z_][A-Za-z0-9_]*=.* ]]; then
61
+ log_error "Invalid environment variable format: $var"
62
+ log_error "Expected format: VAR_NAME=value"
63
+ return 1
64
+ fi
65
+
66
+ local var_name="${var%%=*}"
67
+
68
+ # Block dangerous variable names that could compromise container security
69
+ local -a dangerous_vars=(
70
+ "LD_PRELOAD"
71
+ "LD_LIBRARY_PATH"
72
+ "LD_DEBUG"
73
+ "DOCKER_HOST"
74
+ "DOCKER_CERT_PATH"
75
+ "DOCKER_TLS"
76
+ "DOCKER_TLS_VERIFY"
77
+ "DOCKER_API_VERSION"
78
+ "DOCKER_CONFIG"
79
+ "DOCKERHOST"
80
+ "DOCKER_SOCKET"
81
+ )
82
+
83
+ for dangerous in "${dangerous_vars[@]}"; do
84
+ if [[ "$var_name" == "$dangerous" ]]; then
85
+ log_error "Blocked dangerous environment variable: $var_name"
86
+ return 1
87
+ fi
88
+ done
89
+
90
+ # Validate value doesn't contain shell metacharacters (belt-and-suspenders)
91
+ local var_value="${var#*=}"
92
+ if [[ "$var_value" =~ [\$\`\(\)\{\}\&\|\;\<\>] ]]; then
93
+ log_warn "Environment variable contains special characters (not necessarily invalid): $var_name"
94
+ # Allow but warn - Docker API will handle escaping
95
+ fi
96
+
97
+ log_debug "Environment variable validated: $var_name"
98
+ return 0
99
+ }
100
+
101
+ # Validate Docker is accessible
102
+ validate_docker_access() {
103
+ if ! command -v docker &> /dev/null; then
104
+ log_error "Docker CLI not found. Please install Docker."
105
+ return 1
106
+ fi
107
+
108
+ if ! docker version &> /dev/null; then
109
+ log_error "Docker daemon not accessible. Is it running?"
110
+ return 1
111
+ fi
112
+
113
+ # Verify socket access
114
+ if ! docker ps &> /dev/null; then
115
+ log_error "No permission to access Docker socket. Check user group."
116
+ return 1
117
+ fi
118
+
119
+ log_debug "Docker access validated"
120
+ return 0
121
+ }
122
+
123
+ # Validate jq is available
124
+ validate_jq() {
125
+ if ! command -v jq &> /dev/null; then
126
+ log_error "jq not found. Please install jq for JSON processing."
127
+ return 1
128
+ fi
129
+ return 0
130
+ }
131
+
132
+ # Validate JSON file format
133
+ validate_json_file() {
134
+ local file="$1"
135
+
136
+ if [[ ! -f "$file" ]]; then
137
+ log_error "File not found: $file"
138
+ return 1
139
+ fi
140
+
141
+ if ! jq . "$file" > /dev/null 2>&1; then
142
+ log_error "Invalid JSON in file: $file"
143
+ return 1
144
+ fi
145
+
146
+ log_debug "JSON file validated: $file"
147
+ return 0
148
+ }
149
+
150
+ # Validate memory string format (512m, 1g, etc.)
151
+ validate_memory_string() {
152
+ local memory="$1"
153
+
154
+ if ! [[ "$memory" =~ ^[0-9]+(b|k|m|g|gb|mb|kb)$ ]] && ! [[ "$memory" =~ ^[0-9]+$ ]]; then
155
+ log_error "Invalid memory format: $memory (expected: 512m, 1g, 100, etc.)"
156
+ return 1
157
+ fi
158
+
159
+ log_debug "Memory string validated: $memory"
160
+ return 0
161
+ }
162
+
163
+ # Validate container cleanup pattern for safety (MEDIUM FIX #3)
164
+ validate_container_cleanup_pattern() {
165
+ local pattern="$1"
166
+
167
+ # Only allow specific, safe patterns
168
+ # Valid: cfn-wave1-*, cfn-wave2-*, cfn-wave3-batch-1, etc.
169
+ if ! [[ "$pattern" =~ ^cfn-wave[0-9]+-[a-zA-Z0-9_-]+(\*)?$ ]]; then
170
+ log_error "Container cleanup pattern does not match safety requirements"
171
+ log_error "Pattern: $pattern"
172
+ log_error "Expected format: cfn-wave<N>-<batch-id> or cfn-wave<N>-*"
173
+ log_error "Examples: cfn-wave1-batch-1, cfn-wave2-*, cfn-wave3-batch_123"
174
+ return 1
175
+ fi
176
+
177
+ return 0
178
+ }
179
+
180
+ ################################################################################
181
+ # MEMORY CONVERSION FUNCTIONS
182
+ ################################################################################
183
+
184
+ # Parse memory string to bytes
185
+ # Supports: 512m, 1g, 100, 512mb, 1gb, etc.
186
+ # Returns byte count as integer
187
+ parse_memory() {
188
+ local memory="$1"
189
+ local bytes
190
+
191
+ if ! validate_memory_string "$memory"; then
192
+ return 1
193
+ fi
194
+
195
+ # Extract number and unit
196
+ local num="${memory%[a-zA-Z]*}"
197
+ local unit="${memory#$num}"
198
+
199
+ # Convert to lowercase for consistency
200
+ unit="${unit,,}"
201
+
202
+ case "$unit" in
203
+ b|'')
204
+ bytes=$((num))
205
+ ;;
206
+ k|kb)
207
+ bytes=$((num * 1024))
208
+ ;;
209
+ m|mb)
210
+ bytes=$((num * 1024 * 1024))
211
+ ;;
212
+ g|gb)
213
+ bytes=$((num * 1024 * 1024 * 1024))
214
+ ;;
215
+ *)
216
+ log_error "Unknown memory unit: $unit"
217
+ return 1
218
+ ;;
219
+ esac
220
+
221
+ echo "$bytes"
222
+ log_debug "Parsed memory: $memory -> $bytes bytes"
223
+ }
224
+
225
+ # Convert bytes to human-readable format
226
+ format_memory() {
227
+ local bytes="$1"
228
+
229
+ if (( bytes < 1024 )); then
230
+ echo "${bytes}B"
231
+ elif (( bytes < 1024 * 1024 )); then
232
+ echo "$((bytes / 1024))KB"
233
+ elif (( bytes < 1024 * 1024 * 1024 )); then
234
+ echo "$((bytes / 1024 / 1024))MB"
235
+ else
236
+ echo "$((bytes / 1024 / 1024 / 1024))GB"
237
+ fi
238
+ }
239
+
240
+ ################################################################################
241
+ # ENVIRONMENT VALUE SANITIZATION (CRITICAL FIX #3)
242
+ ################################################################################
243
+
244
+ # Sanitize environment variable values for safe Docker injection
245
+ sanitize_env_value() {
246
+ local value="$1"
247
+
248
+ # Remove control characters (newlines, tabs, null bytes, etc.) AND shell metacharacters
249
+ # Keep printable ASCII + common UTF-8 characters
250
+ value=$(echo "$value" | LC_ALL=C tr -d '[:cntrl:];|&$(){}[]<>*?~`')
251
+
252
+ # Replace multiple spaces with single space
253
+ value=$(echo "$value" | sed 's/[[:space:]]\+/ /g')
254
+
255
+ # Trim leading/trailing whitespace
256
+ value=$(echo "$value" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
257
+
258
+ # Limit length to prevent environment pollution (2048 chars max)
259
+ if (( ${#value} > 2048 )); then
260
+ log_warn "Environment value truncated from ${#value} to 2048 chars"
261
+ value="${value:0:2048}"
262
+ fi
263
+
264
+ echo "$value"
265
+ }
266
+
267
+ ################################################################################
268
+ # CONTAINER NAMING SAFETY (CRITICAL FIX #2)
269
+ ################################################################################
270
+
271
+ # Generate collision-resistant container name using hash
272
+ generate_safe_container_name() {
273
+ local wave_num="$1"
274
+ local batch_id="$2"
275
+
276
+ # Generate short hash of full batch ID to ensure uniqueness
277
+ local batch_hash
278
+ batch_hash=$(echo -n "$batch_id" | sha256sum | cut -c1-12)
279
+
280
+ # Format: cfn-wave<N>-<12-char-hash>
281
+ local container_name="cfn-wave${wave_num}-${batch_hash}"
282
+
283
+ echo "$container_name"
284
+ }
285
+
286
+ # Check if container name already exists
287
+ container_name_exists() {
288
+ local container_name="$1"
289
+
290
+ # Use exact match filter to prevent false positives
291
+ if docker ps -a --filter "name=^${container_name}$" --format "{{.ID}}" | grep -q .; then
292
+ return 0 # Name exists
293
+ else
294
+ return 1 # Name available
295
+ fi
296
+ }
297
+
298
+ ################################################################################
299
+ # DOCKER CONTAINER STATUS FUNCTIONS
300
+ ################################################################################
301
+
302
+ # Get container status (running, exited, failed)
303
+ # Returns: "running" | "exited" | "failed" | "unknown"
304
+ get_container_status() {
305
+ local container_id="$1"
306
+
307
+ if [[ -z "$container_id" ]]; then
308
+ log_error "Container ID not provided"
309
+ return 1
310
+ fi
311
+
312
+ # Get container status from docker inspect
313
+ local status
314
+ status=$(docker inspect -f '{{.State.Status}}' "$container_id" 2>/dev/null || echo "unknown")
315
+
316
+ case "$status" in
317
+ running)
318
+ echo "running"
319
+ ;;
320
+ exited)
321
+ echo "exited"
322
+ ;;
323
+ *)
324
+ echo "unknown"
325
+ ;;
326
+ esac
327
+ }
328
+
329
+ # Extract exit code from container
330
+ # Returns: 0-255 or -1 if container is still running
331
+ extract_exit_code() {
332
+ local container_id="$1"
333
+
334
+ if [[ -z "$container_id" ]]; then
335
+ log_error "Container ID not provided"
336
+ return 1
337
+ fi
338
+
339
+ local status exit_code
340
+ status=$(docker inspect -f '{{.State.Status}}' "$container_id" 2>/dev/null)
341
+
342
+ if [[ "$status" != "exited" ]]; then
343
+ echo "-1"
344
+ return 0
345
+ fi
346
+
347
+ exit_code=$(docker inspect -f '{{.State.ExitCode}}' "$container_id" 2>/dev/null)
348
+ echo "$exit_code"
349
+ }
350
+
351
+ # Get container exit status string (success, failed, timeout)
352
+ get_exit_status() {
353
+ local exit_code="$1"
354
+
355
+ case "$exit_code" in
356
+ 0)
357
+ echo "success"
358
+ ;;
359
+ 124)
360
+ echo "timeout"
361
+ ;;
362
+ *)
363
+ echo "failed"
364
+ ;;
365
+ esac
366
+ }
367
+
368
+ # Get container creation timestamp
369
+ get_container_started_at() {
370
+ local container_id="$1"
371
+
372
+ if [[ -z "$container_id" ]]; then
373
+ return 1
374
+ fi
375
+
376
+ docker inspect -f '{{.State.StartedAt}}' "$container_id" 2>/dev/null || echo ""
377
+ }
378
+
379
+ # Get container finish timestamp
380
+ get_container_finished_at() {
381
+ local container_id="$1"
382
+
383
+ if [[ -z "$container_id" ]]; then
384
+ return 1
385
+ fi
386
+
387
+ docker inspect -f '{{.State.FinishedAt}}' "$container_id" 2>/dev/null || echo ""
388
+ }
389
+
390
+ ################################################################################
391
+ # CONTAINER MONITORING FUNCTIONS
392
+ ################################################################################
393
+
394
+ # Wait for container to complete (exit)
395
+ # Returns: 0 (success), 1 (failed), 2 (timeout), 3 (error)
396
+ wait_for_container() {
397
+ local container_id="$1"
398
+ local timeout="${2:-300}" # Default 5 minutes
399
+ local poll_interval="${3:-2}" # Default 2 seconds
400
+
401
+ if [[ -z "$container_id" ]]; then
402
+ log_error "Container ID not provided"
403
+ return 3
404
+ fi
405
+
406
+ local start_time elapsed_time
407
+ start_time=$(date +%s)
408
+
409
+ log_info "Waiting for container $container_id (timeout: ${timeout}s)"
410
+
411
+ while true; do
412
+ elapsed_time=$(($(date +%s) - start_time))
413
+
414
+ # Check if timeout exceeded
415
+ if (( elapsed_time > timeout )); then
416
+ log_warn "Container $container_id timeout after ${timeout}s"
417
+ return 2
418
+ fi
419
+
420
+ # Check container status
421
+ local status
422
+ status=$(docker inspect -f '{{.State.Status}}' "$container_id" 2>/dev/null || echo "unknown")
423
+
424
+ if [[ "$status" == "exited" ]]; then
425
+ local exit_code
426
+ exit_code=$(docker inspect -f '{{.State.ExitCode}}' "$container_id" 2>/dev/null)
427
+
428
+ if [[ "$exit_code" == "0" ]]; then
429
+ log_success "Container $container_id completed successfully"
430
+ return 0
431
+ else
432
+ log_error "Container $container_id failed with exit code: $exit_code"
433
+ return 1
434
+ fi
435
+ fi
436
+
437
+ # Wait before next check
438
+ sleep "$poll_interval"
439
+ done
440
+ }
441
+
442
+ # Wait for multiple containers to complete
443
+ # Returns: 0 (all success), 1 (some failed), 2 (timeout), 3 (error)
444
+ wait_for_containers() {
445
+ local -n container_ids=$1
446
+ local timeout="${2:-1800}" # Default 30 minutes
447
+ local poll_interval="${3:-5}" # Default 5 seconds
448
+
449
+ if [[ ${#container_ids[@]} -eq 0 ]]; then
450
+ log_error "No containers provided"
451
+ return 3
452
+ fi
453
+
454
+ local start_time elapsed_time failed_count timeout_count
455
+ start_time=$(date +%s)
456
+ failed_count=0
457
+ timeout_count=0
458
+
459
+ log_info "Waiting for ${#container_ids[@]} containers (timeout: ${timeout}s)"
460
+
461
+ while true; do
462
+ elapsed_time=$(($(date +%s) - start_time))
463
+
464
+ # Check if timeout exceeded
465
+ if (( elapsed_time > timeout )); then
466
+ log_warn "Timeout waiting for containers after ${timeout}s"
467
+ timeout_count=$((timeout_count + ${#container_ids[@]}))
468
+ return 2
469
+ fi
470
+
471
+ # Check all containers
472
+ local running_count=0
473
+ local completed_count=0
474
+
475
+ for cid in "${container_ids[@]}"; do
476
+ local status
477
+ status=$(docker inspect -f '{{.State.Status}}' "$cid" 2>/dev/null || echo "unknown")
478
+
479
+ if [[ "$status" == "exited" ]]; then
480
+ completed_count=$((completed_count + 1))
481
+ elif [[ "$status" == "running" ]]; then
482
+ running_count=$((running_count + 1))
483
+ fi
484
+ done
485
+
486
+ # Log progress
487
+ log_debug "Progress: $completed_count completed, $running_count still running"
488
+
489
+ # All completed?
490
+ if (( completed_count == ${#container_ids[@]} )); then
491
+ # Count failures
492
+ for cid in "${container_ids[@]}"; do
493
+ local exit_code
494
+ exit_code=$(docker inspect -f '{{.State.ExitCode}}' "$cid" 2>/dev/null || echo "1")
495
+ if [[ "$exit_code" != "0" ]]; then
496
+ failed_count=$((failed_count + 1))
497
+ fi
498
+ done
499
+
500
+ if (( failed_count == 0 )); then
501
+ log_success "All $completed_count containers completed successfully"
502
+ return 0
503
+ else
504
+ log_error "$failed_count out of $completed_count containers failed"
505
+ return 1
506
+ fi
507
+ fi
508
+
509
+ # Wait before next check
510
+ sleep "$poll_interval"
511
+ done
512
+ }
513
+
514
+ ################################################################################
515
+ # CONTAINER MANIFEST FUNCTIONS
516
+ ################################################################################
517
+
518
+ # Create container metadata object (for JSON output)
519
+ create_container_manifest() {
520
+ local container_id="$1"
521
+ local batch_id="$2"
522
+ local tier="${3:-1}"
523
+ local memory_limit="${4:-512m}"
524
+
525
+ jq -n \
526
+ --arg container_id "$container_id" \
527
+ --arg batch_id "$batch_id" \
528
+ --arg tier "$tier" \
529
+ --arg memory_limit "$memory_limit" \
530
+ --arg status "running" \
531
+ --arg started_at "$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
532
+ '{
533
+ container_id: $container_id,
534
+ batch_id: $batch_id,
535
+ tier: ($tier | tonumber),
536
+ memory_limit: $memory_limit,
537
+ status: $status,
538
+ started_at: $started_at
539
+ }'
540
+ }
541
+
542
+ # Update container manifest with completion info
543
+ update_container_manifest() {
544
+ local manifest="$1"
545
+ local exit_code="$2"
546
+
547
+ local status
548
+ status=$(get_exit_status "$exit_code")
549
+
550
+ jq -n \
551
+ --argjson manifest "$manifest" \
552
+ --arg exit_code "$exit_code" \
553
+ --arg status "$status" \
554
+ --arg finished_at "$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
555
+ '$manifest + {
556
+ status: "exited",
557
+ exit_code: ($exit_code | tonumber),
558
+ exit_status: $status,
559
+ finished_at: $finished_at
560
+ }'
561
+ }
562
+
563
+ ################################################################################
564
+ # LOGGING FUNCTIONS
565
+ ################################################################################
566
+
567
+ # Retrieve container logs
568
+ # Returns logs to stdout
569
+ get_container_logs() {
570
+ local container_id="$1"
571
+
572
+ if [[ -z "$container_id" ]]; then
573
+ log_error "Container ID not provided"
574
+ return 1
575
+ fi
576
+
577
+ docker logs "$container_id" 2>&1 || true
578
+ }
579
+
580
+ # Save container logs to file with restricted permissions (MEDIUM FIX #1)
581
+ save_container_logs() {
582
+ local container_id="$1"
583
+ local output_dir="$2"
584
+
585
+ if [[ -z "$container_id" ]] || [[ -z "$output_dir" ]]; then
586
+ log_error "Container ID and output directory required"
587
+ return 1
588
+ fi
589
+
590
+ mkdir -p "$output_dir"
591
+
592
+ # Create directory with restricted permissions (owner only)
593
+ chmod 700 "$output_dir" || {
594
+ log_warn "Failed to restrict log directory permissions: $output_dir"
595
+ }
596
+
597
+ local log_file="$output_dir/${container_id}.log"
598
+
599
+ # Create empty file with restricted permissions (0600 = owner read/write only)
600
+ touch "$log_file"
601
+ chmod 600 "$log_file" || {
602
+ log_error "Failed to set log file permissions: $log_file"
603
+ return 1
604
+ }
605
+
606
+ log_info "Saving logs for container $container_id to $log_file"
607
+
608
+ # Write logs to file with restricted permissions
609
+ docker logs "$container_id" > "$log_file" 2>&1 || {
610
+ log_error "Failed to save logs for container $container_id"
611
+ return 1
612
+ }
613
+
614
+ log_success "Logs saved: $log_file (permissions: 0600)"
615
+ return 0
616
+ }
617
+
618
+ ################################################################################
619
+ # CLEANUP FUNCTIONS
620
+ ################################################################################
621
+
622
+ # Remove container safely
623
+ remove_container() {
624
+ local container_id="$1"
625
+ local force="${2:-false}"
626
+
627
+ if [[ -z "$container_id" ]]; then
628
+ log_error "Container ID not provided"
629
+ return 1
630
+ fi
631
+
632
+ local remove_opts=()
633
+ if [[ "$force" == "true" ]]; then
634
+ remove_opts+=("-f")
635
+ fi
636
+
637
+ log_info "Removing container $container_id"
638
+ if docker rm "${remove_opts[@]}" "$container_id" > /dev/null 2>&1; then
639
+ log_success "Container removed: $container_id"
640
+ return 0
641
+ else
642
+ log_error "Failed to remove container: $container_id"
643
+ return 1
644
+ fi
645
+ }
646
+
647
+ # Remove multiple containers
648
+ remove_containers() {
649
+ local -n container_ids=$1
650
+ local force="${2:-false}"
651
+
652
+ if [[ ${#container_ids[@]} -eq 0 ]]; then
653
+ log_warn "No containers to remove"
654
+ return 0
655
+ fi
656
+
657
+ local removed_count=0
658
+ local failed_count=0
659
+
660
+ for cid in "${container_ids[@]}"; do
661
+ if remove_container "$cid" "$force"; then
662
+ removed_count=$((removed_count + 1))
663
+ else
664
+ failed_count=$((failed_count + 1))
665
+ fi
666
+ done
667
+
668
+ log_info "Removed $removed_count containers, failed: $failed_count"
669
+
670
+ if (( failed_count == 0 )); then
671
+ return 0
672
+ else
673
+ return 1
674
+ fi
675
+ }
676
+
677
+ # Remove containers by name pattern
678
+ remove_containers_by_pattern() {
679
+ local pattern="$1"
680
+ local force="${2:-false}"
681
+
682
+ if [[ -z "$pattern" ]]; then
683
+ log_error "Pattern not provided"
684
+ return 1
685
+ fi
686
+
687
+ log_info "Finding containers matching pattern: $pattern"
688
+
689
+ local container_ids=()
690
+ while IFS= read -r cid; do
691
+ container_ids+=("$cid")
692
+ done < <(docker ps -a --filter "name=$pattern" --format "{{.ID}}")
693
+
694
+ if [[ ${#container_ids[@]} -eq 0 ]]; then
695
+ log_warn "No containers found matching pattern: $pattern"
696
+ return 0
697
+ fi
698
+
699
+ log_info "Found ${#container_ids[@]} containers to remove"
700
+ remove_containers container_ids "$force"
701
+ }
702
+
703
+ # Remove dangling volumes
704
+ remove_dangling_volumes() {
705
+ log_info "Cleaning up dangling volumes"
706
+
707
+ local volume_count
708
+ volume_count=$(docker volume ls -qf dangling=true | wc -l)
709
+
710
+ if (( volume_count > 0 )); then
711
+ docker volume rm $(docker volume ls -qf dangling=true) 2>/dev/null || true
712
+ log_success "Removed $volume_count dangling volumes"
713
+ else
714
+ log_info "No dangling volumes to remove"
715
+ fi
716
+
717
+ return 0
718
+ }
719
+
720
+ ################################################################################
721
+ # NETWORK FUNCTIONS
722
+ ################################################################################
723
+
724
+ # Create Docker network if it doesn't exist
725
+ create_network_if_missing() {
726
+ local network_name="${1:-cfn-network}"
727
+
728
+ if docker network inspect "$network_name" > /dev/null 2>&1; then
729
+ log_debug "Network already exists: $network_name"
730
+ return 0
731
+ fi
732
+
733
+ log_info "Creating Docker network: $network_name"
734
+ if docker network create "$network_name" > /dev/null 2>&1; then
735
+ log_success "Network created: $network_name"
736
+ return 0
737
+ else
738
+ log_error "Failed to create network: $network_name"
739
+ return 1
740
+ fi
741
+ }
742
+
743
+ # Verify network exists
744
+ verify_network_exists() {
745
+ local network_name="${1:-cfn-network}"
746
+
747
+ if docker network inspect "$network_name" > /dev/null 2>&1; then
748
+ log_debug "Network verified: $network_name"
749
+ return 0
750
+ else
751
+ log_error "Network not found: $network_name"
752
+ return 1
753
+ fi
754
+ }
755
+
756
+ ################################################################################
757
+ # SUMMARY FUNCTIONS
758
+ ################################################################################
759
+
760
+ # Generate execution summary JSON
761
+ generate_execution_summary() {
762
+ local wave_number="$1"
763
+ local total_containers="$2"
764
+ local successful="$3"
765
+ local failed="$4"
766
+ local timeout="$5"
767
+
768
+ jq -n \
769
+ --arg wave_number "$wave_number" \
770
+ --arg total_containers "$total_containers" \
771
+ --arg successful "$successful" \
772
+ --arg failed "$failed" \
773
+ --arg timeout "$timeout" \
774
+ --arg summary_time "$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
775
+ '{
776
+ wave_number: ($wave_number | tonumber),
777
+ summary_time: $summary_time,
778
+ metrics: {
779
+ total: ($total_containers | tonumber),
780
+ success: ($successful | tonumber),
781
+ failed: ($failed | tonumber),
782
+ timeout: ($timeout | tonumber)
783
+ }
784
+ }'
785
+ }
786
+
787
+ ################################################################################
788
+ # EXPORT FUNCTIONS (for subshells)
789
+ ################################################################################
790
+
791
+ # Export all helper functions for use in subshells
792
+ export -f log_info log_success log_warn log_error log_debug
793
+ export -f validate_environment_variable validate_docker_access validate_jq validate_json_file validate_memory_string validate_container_cleanup_pattern
794
+ export -f sanitize_env_value generate_safe_container_name container_name_exists
795
+ export -f parse_memory format_memory
796
+ export -f get_container_status extract_exit_code get_exit_status get_container_started_at get_container_finished_at
797
+ export -f wait_for_container wait_for_containers
798
+ export -f create_container_manifest update_container_manifest
799
+ export -f get_container_logs save_container_logs
800
+ export -f remove_container remove_containers remove_containers_by_pattern remove_dangling_volumes
801
+ export -f create_network_if_missing verify_network_exists
802
+ export -f generate_execution_summary
803
+
804
+ log_debug "Docker helpers library loaded"