claude-flow-novice 2.14.37 → 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 (608) 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 +48 -13
  29. package/.claude/root-claude-distribute/CFN-CLAUDE.md +177 -426
  30. package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +107 -0
  31. package/.claude/skills/cfn-agent-spawning/parse-agent-provider.sh +59 -0
  32. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +51 -24
  33. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  34. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  35. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  36. package/.claude/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  37. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +18 -9
  38. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  39. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  40. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  41. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  42. package/.claude/skills/cfn-redis-coordination/report-completion.sh +7 -7
  43. package/claude-assets/agents/cfn-dev-team/architecture/api-designer-persona.md +2 -0
  44. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +2 -0
  45. package/claude-assets/agents/cfn-dev-team/architecture/planner.md +2 -0
  46. package/claude-assets/agents/cfn-dev-team/architecture/system-architect.md +2 -0
  47. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +419 -563
  48. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +2 -0
  49. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +5 -0
  50. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +2 -0
  51. package/claude-assets/agents/cfn-dev-team/documentation/README-VALIDATION.md +2 -0
  52. package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +2 -0
  53. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +1 -1
  54. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +1 -1
  55. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +2 -0
  56. package/claude-assets/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +2 -0
  57. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +2 -0
  58. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +1 -1
  59. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  60. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +2 -0
  61. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +2 -0
  62. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +2 -0
  63. package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +4 -0
  64. package/claude-assets/agents/cfn-dev-team/testers/validation/validation-production-validator.md +1 -1
  65. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +825 -17
  66. package/claude-assets/agents/docker-team/micro-sprint-planner.md +747 -0
  67. package/claude-assets/agents/docker-ts-fixer.md +56 -0
  68. package/claude-assets/agents/typescript-specialist.md +280 -0
  69. package/claude-assets/cfn-extras/agents/cfn-coordinator-enterprise.md +1303 -0
  70. package/claude-assets/cfn-extras/agents/cfn-coordinator-mvp.md +942 -0
  71. package/claude-assets/cfn-extras/agents/cfn-coordinator-standard.md +1062 -0
  72. package/claude-assets/cfn-extras/agents/cfn-loop-coordinator.md +157 -0
  73. package/claude-assets/cfn-extras/agents/coordinator.md +182 -0
  74. package/claude-assets/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +760 -0
  75. package/claude-assets/cfn-extras/agents/cost-savings-coordinator.md +173 -0
  76. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +147 -0
  77. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +162 -0
  78. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +161 -0
  79. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +729 -0
  80. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +728 -0
  81. package/claude-assets/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +100 -0
  82. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +323 -0
  83. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +157 -0
  84. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +229 -0
  85. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +149 -0
  86. package/claude-assets/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +231 -0
  87. package/claude-assets/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +165 -0
  88. package/claude-assets/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +95 -0
  89. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +132 -0
  90. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +131 -0
  91. package/claude-assets/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +109 -0
  92. package/claude-assets/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +142 -0
  93. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/SKILL.md +36 -0
  94. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +60 -0
  95. package/claude-assets/cfn-extras/skills/advanced-features/cfn-api-validation/test-endpoints.sh +54 -0
  96. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/SKILL.md +75 -0
  97. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/prune-context.sh +73 -0
  98. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/cli-coordination.sh +519 -0
  99. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/mode-detection.sh +326 -0
  100. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +267 -0
  101. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/SKILL.md +33 -0
  102. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +92 -0
  103. package/claude-assets/cfn-extras/skills/analytics/cfn-memory-monitoring/SKILL.md +531 -0
  104. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/SKILL.md +30 -0
  105. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +80 -0
  106. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/SKILL.md +31 -0
  107. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +101 -0
  108. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/collect-metrics.sh +249 -0
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +111 -0
  110. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +192 -0
  111. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  112. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/DESIGN.md +98 -0
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  114. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/SKILL.md +392 -0
  115. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -0
  116. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -0
  117. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -0
  118. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -0
  119. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -0
  120. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/SKILL.md +124 -0
  121. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-ad-performance.sh +105 -0
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +102 -0
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-email-performance.sh +105 -0
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-social-engagement.sh +105 -0
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-website-traffic.sh +107 -0
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/SKILL.md +340 -0
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -0
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -0
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -0
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -0
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -0
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/SKILL.md +350 -0
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +154 -0
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +173 -0
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +147 -0
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +146 -0
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +167 -0
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/SKILL.md +116 -0
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/add-to-segment.sh +78 -0
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/create-contact.sh +113 -0
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/get-contact.sh +86 -0
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +78 -0
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/update-contact.sh +120 -0
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/SKILL.md +106 -0
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/create-campaign.sh +123 -0
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +66 -0
  147. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/list-templates.sh +68 -0
  148. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +85 -0
  149. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/send-test-email.sh +81 -0
  150. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md +366 -0
  151. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-ab-test.sh +231 -0
  152. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-landing-page.sh +190 -0
  153. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/get-page-performance.sh +137 -0
  154. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/publish-page.sh +120 -0
  155. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/unpublish-page.sh +108 -0
  156. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/SKILL.md +202 -0
  157. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +104 -0
  158. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/export-report.sh +92 -0
  159. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +85 -0
  160. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/search-mentions.sh +86 -0
  161. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/SKILL.md +168 -0
  162. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/search-journalists.sh +74 -0
  163. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/send-pitch.sh +80 -0
  164. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/submit-haro-response.sh +88 -0
  165. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +66 -0
  166. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/SKILL.md +159 -0
  167. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/distribute-press-release.sh +94 -0
  168. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-distribution-status.sh +59 -0
  169. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +72 -0
  170. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/list-templates.sh +53 -0
  171. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/SKILL.md +429 -0
  172. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -0
  173. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -0
  174. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -0
  175. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -0
  176. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -0
  177. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/SKILL.md +108 -0
  178. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/create-post.sh +104 -0
  179. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/delete-post.sh +76 -0
  180. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/get-post-stats.sh +66 -0
  181. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/schedule-post.sh +85 -0
  182. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/upload-media.sh +88 -0
  183. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/DESIGN.md +117 -0
  184. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/SKILL.md +679 -0
  185. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-agents.sh +129 -0
  186. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-dashboard.sh +85 -0
  187. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-events.sh +125 -0
  188. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-metrics.sh +112 -0
  189. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-start.sh +135 -0
  190. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-stop.sh +121 -0
  191. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +51 -0
  192. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +85 -0
  193. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/SKILL.md +200 -0
  194. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +244 -0
  195. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/SKILL.md +279 -0
  196. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/instrument-process.sh +327 -0
  197. package/claude-assets/commands/cfn-docker/CFN_DOCKER_NATIVE.md +295 -0
  198. package/claude-assets/commands/cfn-docker-core-test-suite.md +326 -0
  199. package/claude-assets/commands/cfn-loop-cli.md +1 -1
  200. package/claude-assets/commands/switch-api.md +48 -13
  201. package/claude-assets/root-claude-distribute/CFN-CLAUDE.md +177 -426
  202. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +107 -0
  203. package/claude-assets/skills/cfn-agent-spawning/parse-agent-provider.sh +59 -0
  204. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +51 -24
  205. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  206. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  207. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  208. package/claude-assets/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  209. package/claude-assets/skills/cfn-docker-wave-execution/SKILL.md +936 -0
  210. package/claude-assets/skills/cfn-docker-wave-execution/cleanup-wave.sh +445 -0
  211. package/claude-assets/skills/cfn-docker-wave-execution/lib/docker-helpers.sh +804 -0
  212. package/claude-assets/skills/cfn-docker-wave-execution/monitor-wave.sh +485 -0
  213. package/claude-assets/skills/cfn-docker-wave-execution/spawn-wave.sh +547 -0
  214. package/claude-assets/skills/cfn-error-batching-strategy/README.md +323 -0
  215. package/claude-assets/skills/cfn-error-batching-strategy/SKILL.md +1016 -0
  216. package/claude-assets/skills/cfn-error-batching-strategy/analyze-errors.sh +327 -0
  217. package/claude-assets/skills/cfn-error-batching-strategy/calculate-waves.sh +256 -0
  218. package/claude-assets/skills/cfn-error-batching-strategy/cli.sh +523 -0
  219. package/claude-assets/skills/cfn-error-batching-strategy/cluster-files.sh +196 -0
  220. package/claude-assets/skills/cfn-error-batching-strategy/create-batches.sh +261 -0
  221. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -0
  222. package/claude-assets/skills/cfn-error-batching-strategy/templates/default-tiers.json +22 -0
  223. package/claude-assets/skills/cfn-error-batching-strategy/tests/test-batching-strategy.sh +498 -0
  224. package/claude-assets/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +18 -9
  225. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  226. package/claude-assets/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  227. package/claude-assets/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  228. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  229. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +7 -7
  230. package/claude-assets/skills/cfn-wave-checkpoint/SKILL.md +333 -0
  231. package/claude-assets/skills/cfn-wave-checkpoint/cleanup-orphans.sh +374 -0
  232. package/claude-assets/skills/cfn-wave-checkpoint/resume-wave.sh +325 -0
  233. package/claude-assets/skills/cfn-wave-checkpoint/save-checkpoint.sh +284 -0
  234. package/claude-assets/skills/docker-build/SKILL.md +203 -0
  235. package/claude-assets/skills/docker-build/build.sh +73 -0
  236. package/dist/agent/skill-mcp-selector.js +1 -1
  237. package/dist/agent/skill-mcp-selector.js.map +1 -1
  238. package/dist/agents/agent-loader.js +146 -165
  239. package/dist/agents/agent-loader.js.map +1 -1
  240. package/dist/cli/agent-definition-parser.js +36 -16
  241. package/dist/cli/agent-definition-parser.js.map +1 -1
  242. package/dist/cli/agent-executor.js +48 -13
  243. package/dist/cli/agent-executor.js.map +1 -1
  244. package/dist/cli/agent-prompt-builder.js +28 -2
  245. package/dist/cli/agent-prompt-builder.js.map +1 -1
  246. package/dist/cli/agent-spawn.js +57 -18
  247. package/dist/cli/agent-spawn.js.map +1 -1
  248. package/dist/cli/agent-token-manager.js +5 -1
  249. package/dist/cli/agent-token-manager.js.map +1 -1
  250. package/dist/cli/anthropic-client.js +35 -4
  251. package/dist/cli/anthropic-client.js.map +1 -1
  252. package/dist/cli/cfn-context.js +9 -6
  253. package/dist/cli/cfn-context.js.map +1 -1
  254. package/dist/cli/cfn-metrics.js +8 -1
  255. package/dist/cli/cfn-metrics.js.map +1 -1
  256. package/dist/cli/cfn-redis.js +7 -0
  257. package/dist/cli/cfn-redis.js.map +1 -1
  258. package/dist/cli/conversation-fork.js +14 -11
  259. package/dist/cli/conversation-fork.js.map +1 -1
  260. package/dist/cli/index.js +6 -1
  261. package/dist/cli/index.js.map +1 -1
  262. package/dist/cli/iteration-history.js +8 -5
  263. package/dist/cli/iteration-history.js.map +1 -1
  264. package/dist/coordination/enhanced-progress-tracker.js +1 -1
  265. package/dist/coordination/enhanced-progress-tracker.js.map +1 -1
  266. package/dist/coordination/event-bus.js +1 -1
  267. package/dist/coordination/event-bus.js.map +1 -1
  268. package/dist/coordination/redis-messaging-infrastructure.js +1 -1
  269. package/dist/coordination/redis-messaging-infrastructure.js.map +1 -1
  270. package/dist/mcp/auth-middleware.js +1 -1
  271. package/dist/mcp/auth-middleware.js.map +1 -1
  272. package/dist/mcp/playwright-mcp-server-auth.js +1 -1
  273. package/dist/mcp/playwright-mcp-server-auth.js.map +1 -1
  274. package/dist/utils/secret-filter.js +145 -0
  275. package/dist/utils/secret-filter.js.map +1 -0
  276. package/package.json +5 -4
  277. package/scripts/docker-agent-init.sh +106 -0
  278. package/scripts/docker-rebuild-all-agents.sh +127 -0
  279. package/scripts/init-project.js +4 -4
  280. package/scripts/switch-api.sh +151 -16
  281. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  282. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  283. package/.claude/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  284. package/.claude/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  285. package/.claude/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  286. package/.claude/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  287. package/.claude/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  288. package/.claude/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  289. package/.claude/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  290. package/.claude/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  291. package/.claude/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  292. package/.claude/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  293. package/.claude/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  294. package/.claude/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  295. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  296. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  297. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  298. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  299. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  300. package/.claude/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  301. package/claude-assets/agents/AGENT_LIFECYCLE.md.backup_before_replace +0 -530
  302. package/claude-assets/agents/README-AGENT_LIFECYCLE.md.backup_before_replace +0 -522
  303. package/claude-assets/agents/cfn-dev-team/test-agent.md +0 -141
  304. package/claude-assets/agents/marketing_hybrid/cost_tracker.md +0 -13
  305. package/claude-assets/agents/marketing_hybrid/docker_deployer.md +0 -13
  306. package/claude-assets/agents/marketing_hybrid/zai_worker_spawner.md +0 -13
  307. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  308. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  309. package/claude-assets/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  310. package/claude-assets/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  311. package/claude-assets/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  312. package/claude-assets/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  313. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  314. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  315. package/claude-assets/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  316. package/claude-assets/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  317. package/claude-assets/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  318. package/claude-assets/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  319. package/claude-assets/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  320. package/claude-assets/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  321. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  322. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  323. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  324. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  325. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  326. package/claude-assets/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  327. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  328. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  329. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  330. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  331. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  332. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  333. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  334. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  335. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  336. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  337. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  338. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  339. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  340. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  341. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  342. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  343. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  344. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  345. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  346. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/SKILL.md +0 -0
  347. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/recommend-swap.sh +0 -0
  348. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-api-validation/test-endpoints.sh +0 -0
  349. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/SKILL.md +0 -0
  350. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/prune-context.sh +0 -0
  351. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  352. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  353. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  354. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  355. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  356. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  357. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  358. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  359. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  360. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  361. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  362. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  363. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  364. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  365. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  366. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  367. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/cli-coordination.sh +0 -0
  368. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/mode-detection.sh +0 -0
  369. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +0 -0
  370. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  371. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  372. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  373. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  374. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  375. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  376. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  377. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  378. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  379. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  380. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  381. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/SKILL.md +0 -0
  382. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/recommend-improvements.sh +0 -0
  383. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-memory-monitoring/SKILL.md +0 -0
  384. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/SKILL.md +0 -0
  385. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/extract-patterns.sh +0 -0
  386. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/SKILL.md +0 -0
  387. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/generate-report.sh +0 -0
  388. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/collect-metrics.sh +0 -0
  389. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/start-telemetry.sh +0 -0
  390. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  391. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  392. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  393. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  394. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  395. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  396. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  397. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  398. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  399. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  400. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  401. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  402. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  403. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  404. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  405. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  406. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  407. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  408. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  409. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  410. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  411. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  412. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  413. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  414. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  415. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  416. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  417. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  418. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  419. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  420. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  421. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  422. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  423. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  424. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  425. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  426. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  427. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  428. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  429. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  430. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  431. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  432. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
  433. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-cli-setup/validate-cli-environment.sh +0 -0
  434. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +0 -0
  435. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/DESIGN.md +0 -0
  436. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +0 -0
  437. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/SKILL.md +0 -0
  438. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/create-campaign.sh +0 -0
  439. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +0 -0
  440. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +0 -0
  441. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/set-budget.sh +0 -0
  442. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +0 -0
  443. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/SKILL.md +0 -0
  444. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-ad-performance.sh +0 -0
  445. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +0 -0
  446. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-email-performance.sh +0 -0
  447. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-social-engagement.sh +0 -0
  448. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-website-traffic.sh +0 -0
  449. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/SKILL.md +0 -0
  450. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +0 -0
  451. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +0 -0
  452. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +0 -0
  453. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/send-message.sh +0 -0
  454. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +0 -0
  455. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/SKILL.md +0 -0
  456. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +0 -0
  457. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +0 -0
  458. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +0 -0
  459. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +0 -0
  460. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +0 -0
  461. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/SKILL.md +0 -0
  462. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/add-to-segment.sh +0 -0
  463. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/create-contact.sh +0 -0
  464. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/get-contact.sh +0 -0
  465. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +0 -0
  466. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/update-contact.sh +0 -0
  467. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/SKILL.md +0 -0
  468. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/create-campaign.sh +0 -0
  469. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +0 -0
  470. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/list-templates.sh +0 -0
  471. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +0 -0
  472. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/send-test-email.sh +0 -0
  473. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/SKILL.md +0 -0
  474. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-ab-test.sh +0 -0
  475. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-landing-page.sh +0 -0
  476. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/get-page-performance.sh +0 -0
  477. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/publish-page.sh +0 -0
  478. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/unpublish-page.sh +0 -0
  479. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/SKILL.md +0 -0
  480. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +0 -0
  481. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/export-report.sh +0 -0
  482. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +0 -0
  483. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/search-mentions.sh +0 -0
  484. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/SKILL.md +0 -0
  485. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/search-journalists.sh +0 -0
  486. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/send-pitch.sh +0 -0
  487. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/submit-haro-response.sh +0 -0
  488. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +0 -0
  489. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/SKILL.md +0 -0
  490. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/distribute-press-release.sh +0 -0
  491. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-distribution-status.sh +0 -0
  492. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +0 -0
  493. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/list-templates.sh +0 -0
  494. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/SKILL.md +0 -0
  495. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/create-campaign.sh +0 -0
  496. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +0 -0
  497. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/opt-out.sh +0 -0
  498. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +0 -0
  499. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/send-sms.sh +0 -0
  500. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/SKILL.md +0 -0
  501. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/create-post.sh +0 -0
  502. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/delete-post.sh +0 -0
  503. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/get-post-stats.sh +0 -0
  504. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/schedule-post.sh +0 -0
  505. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/upload-media.sh +0 -0
  506. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/DESIGN.md +0 -0
  507. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/SKILL.md +0 -0
  508. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-agents.sh +0 -0
  509. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-dashboard.sh +0 -0
  510. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-events.sh +0 -0
  511. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-metrics.sh +0 -0
  512. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-start.sh +0 -0
  513. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-stop.sh +0 -0
  514. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/test-web-portal-skill.sh +0 -0
  515. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/validate-deployment.sh +0 -0
  516. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/SKILL.md +0 -0
  517. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/sanitize-environment.sh +0 -0
  518. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/SKILL.md +0 -0
  519. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/instrument-process.sh +0 -0
  520. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  521. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  522. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  523. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  524. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  525. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  526. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  527. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  528. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  529. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  530. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  531. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  532. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  533. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  534. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  535. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  536. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  537. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  538. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  539. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  540. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  541. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  542. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  543. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  544. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  545. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  546. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  547. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  548. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  549. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  550. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  551. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  552. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  553. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  554. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  555. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  556. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  557. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  558. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  559. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  560. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  561. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  562. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  563. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  564. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  565. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  566. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  567. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  568. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  569. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  570. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  571. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  572. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  573. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  574. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  575. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  576. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  577. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  578. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  579. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  580. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  581. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  582. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  583. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  584. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  585. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  586. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  587. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  588. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  589. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  590. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  591. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  592. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  593. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  594. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  595. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  596. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  597. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  598. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  599. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  600. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  601. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  602. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  603. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  604. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  605. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  606. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  607. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  608. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
@@ -0,0 +1,183 @@
1
+ #!/bin/bash
2
+ # CFN Marketing SMS Campaigns - Create Campaign Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Create SMS campaign configuration
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ NAME=""
10
+ MESSAGE=""
11
+ AUDIENCE="{}"
12
+ SENDER_ID="${SMS_SENDER_ID:-CFN Marketing}"
13
+ SCHEDULE=""
14
+
15
+ while [[ $# -gt 0 ]]; do
16
+ case $1 in
17
+ --name)
18
+ NAME="$2"
19
+ shift 2
20
+ ;;
21
+ --message)
22
+ MESSAGE="$2"
23
+ shift 2
24
+ ;;
25
+ --audience)
26
+ AUDIENCE="$2"
27
+ shift 2
28
+ ;;
29
+ --sender-id)
30
+ SENDER_ID="$2"
31
+ shift 2
32
+ ;;
33
+ --schedule)
34
+ SCHEDULE="$2"
35
+ shift 2
36
+ ;;
37
+ *)
38
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
39
+ exit 1
40
+ ;;
41
+ esac
42
+ done
43
+
44
+ # Validate required parameters
45
+ if [[ -z "$NAME" ]]; then
46
+ echo '{"error": "Missing required parameter: --name", "code": "MISSING_PARAMETER"}' >&2
47
+ exit 1
48
+ fi
49
+
50
+ if [[ -z "$MESSAGE" ]]; then
51
+ echo '{"error": "Missing required parameter: --message", "code": "MISSING_PARAMETER"}' >&2
52
+ exit 1
53
+ fi
54
+
55
+ if [[ -z "$AUDIENCE" || "$AUDIENCE" == "{}" ]]; then
56
+ echo '{"error": "Missing required parameter: --audience", "code": "MISSING_PARAMETER"}' >&2
57
+ exit 1
58
+ fi
59
+
60
+ # Validate message length
61
+ if [[ ${#MESSAGE} -gt 160 ]]; then
62
+ echo '{"error": "Message too long. Maximum 160 characters", "code": "MESSAGE_TOO_LONG", "length": '${#MESSAGE}'}' >&2
63
+ exit 1
64
+ fi
65
+
66
+ # Ensure opt-out instructions included (TCPA requirement)
67
+ if ! echo "$MESSAGE" | grep -qiE 'STOP|opt.*out|unsubscribe'; then
68
+ echo '{"error": "Message must include opt-out instructions (TCPA requirement)", "code": "MISSING_OPT_OUT", "severity": "critical"}' >&2
69
+ exit 3
70
+ fi
71
+
72
+ # Validate audience JSON
73
+ if ! echo "$AUDIENCE" | jq empty 2>/dev/null; then
74
+ echo '{"error": "Invalid audience JSON format", "code": "INVALID_AUDIENCE"}' >&2
75
+ exit 1
76
+ fi
77
+
78
+ # Validate environment variables
79
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
80
+ echo '{"error": "Environment variable N8N_BASE_URL not set", "code": "MISSING_ENV_VAR"}' >&2
81
+ exit 2
82
+ fi
83
+
84
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
85
+ echo '{"error": "Environment variable N8N_API_KEY not set", "code": "MISSING_ENV_VAR"}' >&2
86
+ exit 2
87
+ fi
88
+
89
+ # CRITICAL: TCPA Compliance - Verify audience excludes opted-out numbers
90
+ EXCLUDE_SEGMENTS=$(echo "$AUDIENCE" | jq -r '.exclude_segments // [] | @json' 2>/dev/null || echo "[]")
91
+ if ! echo "$EXCLUDE_SEGMENTS" | grep -q "opted_out"; then
92
+ echo '{"error": "Audience must explicitly exclude opted_out segment (TCPA requirement)", "code": "MISSING_EXCLUSION", "severity": "critical"}' >&2
93
+ exit 3
94
+ fi
95
+
96
+ if ! echo "$EXCLUDE_SEGMENTS" | grep -q "dnc"; then
97
+ echo '{"error": "Audience must explicitly exclude dnc segment (TCPA requirement)", "code": "MISSING_EXCLUSION", "severity": "critical"}' >&2
98
+ exit 3
99
+ fi
100
+
101
+ # Generate campaign ID
102
+ CAMPAIGN_ID="camp_$(date +%s)_$(shuf -i 10000-99999 -n 1)"
103
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
104
+
105
+ # Prepare request payload
106
+ PAYLOAD=$(jq -n \
107
+ --arg campaign_id "$CAMPAIGN_ID" \
108
+ --arg name "$NAME" \
109
+ --arg message "$MESSAGE" \
110
+ --argjson audience "$AUDIENCE" \
111
+ --arg sender_id "$SENDER_ID" \
112
+ --arg schedule "$SCHEDULE" \
113
+ --arg timestamp "$TIMESTAMP" \
114
+ '{
115
+ campaign_id: $campaign_id,
116
+ name: $name,
117
+ message: $message,
118
+ audience: $audience,
119
+ sender_id: $sender_id,
120
+ schedule: $schedule,
121
+ created_at: $timestamp,
122
+ status: "draft",
123
+ compliance_verified: true
124
+ }')
125
+
126
+ # Create campaign via n8n webhook
127
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
128
+ -X POST \
129
+ -H "Content-Type: application/json" \
130
+ -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
131
+ -d "$PAYLOAD" \
132
+ "${N8N_BASE_URL}/webhook/sms/create-campaign" 2>&1) || {
133
+ echo '{"error": "Network error: Failed to connect to n8n", "code": "NETWORK_ERROR"}' >&2
134
+ exit 2
135
+ }
136
+
137
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
138
+ BODY=$(echo "$RESPONSE" | sed '$d')
139
+
140
+ # Handle HTTP errors
141
+ if [[ "$HTTP_CODE" -ge 400 ]]; then
142
+ if [[ "$HTTP_CODE" -eq 401 ]]; then
143
+ echo '{"error": "Authentication failed", "code": "AUTH_ERROR"}' >&2
144
+ exit 2
145
+ else
146
+ ERROR_MSG=$(echo "$BODY" | jq -r '.error // "Unknown API error"' 2>/dev/null || echo "Unknown API error")
147
+ echo '{"error": "'"$ERROR_MSG"'", "code": "API_ERROR", "http_code": '$HTTP_CODE'}' >&2
148
+ exit 2
149
+ fi
150
+ fi
151
+
152
+ # Parse response
153
+ if ! echo "$BODY" | jq empty 2>/dev/null; then
154
+ echo '{"error": "Invalid JSON response from API", "code": "INVALID_RESPONSE"}' >&2
155
+ exit 2
156
+ fi
157
+
158
+ # Store campaign metadata in Redis
159
+ if command -v redis-cli &> /dev/null; then
160
+ redis-cli HMSET "sms:campaign:${CAMPAIGN_ID}" \
161
+ name "$NAME" \
162
+ message "$MESSAGE" \
163
+ created_at "$TIMESTAMP" \
164
+ status "draft" \
165
+ > /dev/null 2>&1 || true
166
+ redis-cli EXPIRE "sms:campaign:${CAMPAIGN_ID}" 2592000 > /dev/null 2>&1 || true
167
+ fi
168
+
169
+ # Return success response
170
+ echo "$BODY" | jq \
171
+ --arg campaign_id "$CAMPAIGN_ID" \
172
+ --arg name "$NAME" \
173
+ --arg timestamp "$TIMESTAMP" \
174
+ '{
175
+ campaign_id: ($campaign_id),
176
+ name: $name,
177
+ status: (.status // "draft"),
178
+ created_at: $timestamp,
179
+ estimated_recipients: (.estimated_recipients // 0),
180
+ compliance_cleared: true
181
+ }'
182
+
183
+ exit 0
@@ -0,0 +1,139 @@
1
+ #!/bin/bash
2
+ # CFN Marketing SMS Campaigns - Get Delivery Status Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Check SMS delivery status
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ MESSAGE_ID=""
10
+ PHONE=""
11
+ CAMPAIGN_ID=""
12
+
13
+ while [[ $# -gt 0 ]]; do
14
+ case $1 in
15
+ --message-id)
16
+ MESSAGE_ID="$2"
17
+ shift 2
18
+ ;;
19
+ --phone)
20
+ PHONE="$2"
21
+ shift 2
22
+ ;;
23
+ --campaign-id)
24
+ CAMPAIGN_ID="$2"
25
+ shift 2
26
+ ;;
27
+ *)
28
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
29
+ exit 1
30
+ ;;
31
+ esac
32
+ done
33
+
34
+ # Validate required parameters (at least one must be provided)
35
+ if [[ -z "$MESSAGE_ID" && -z "$PHONE" && -z "$CAMPAIGN_ID" ]]; then
36
+ echo '{"error": "Missing required parameter: --message-id, --phone, or --campaign-id", "code": "MISSING_PARAMETER"}' >&2
37
+ exit 1
38
+ fi
39
+
40
+ # Validate phone format if provided
41
+ if [[ -n "$PHONE" ]] && ! echo "$PHONE" | grep -qE '^\+[1-9][0-9]{1,14}$'; then
42
+ echo '{"error": "Invalid phone format. Use E.164 format (+1XXXXXXXXXX)", "code": "INVALID_PHONE"}' >&2
43
+ exit 1
44
+ fi
45
+
46
+ # Validate environment variables
47
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
48
+ echo '{"error": "Environment variable N8N_BASE_URL not set", "code": "MISSING_ENV_VAR"}' >&2
49
+ exit 2
50
+ fi
51
+
52
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
53
+ echo '{"error": "Environment variable N8N_API_KEY not set", "code": "MISSING_ENV_VAR"}' >&2
54
+ exit 2
55
+ fi
56
+
57
+ # Build query parameters
58
+ QUERY_PARAMS=""
59
+ if [[ -n "$MESSAGE_ID" ]]; then
60
+ QUERY_PARAMS="message_id=${MESSAGE_ID}"
61
+ fi
62
+
63
+ if [[ -n "$PHONE" ]]; then
64
+ if [[ -n "$QUERY_PARAMS" ]]; then
65
+ QUERY_PARAMS="${QUERY_PARAMS}&phone=${PHONE}"
66
+ else
67
+ QUERY_PARAMS="phone=${PHONE}"
68
+ fi
69
+ fi
70
+
71
+ if [[ -n "$CAMPAIGN_ID" ]]; then
72
+ if [[ -n "$QUERY_PARAMS" ]]; then
73
+ QUERY_PARAMS="${QUERY_PARAMS}&campaign_id=${CAMPAIGN_ID}"
74
+ else
75
+ QUERY_PARAMS="campaign_id=${CAMPAIGN_ID}"
76
+ fi
77
+ fi
78
+
79
+ # Get delivery status via n8n webhook
80
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
81
+ -X GET \
82
+ -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
83
+ "${N8N_BASE_URL}/webhook/sms/delivery-status?${QUERY_PARAMS}" 2>&1) || {
84
+ echo '{"error": "Network error: Failed to connect to n8n", "code": "NETWORK_ERROR"}' >&2
85
+ exit 2
86
+ }
87
+
88
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
89
+ BODY=$(echo "$RESPONSE" | sed '$d')
90
+
91
+ # Handle HTTP errors
92
+ if [[ "$HTTP_CODE" -ge 400 ]]; then
93
+ if [[ "$HTTP_CODE" -eq 404 ]]; then
94
+ echo '{"error": "Message not found", "code": "MESSAGE_NOT_FOUND", "message_id": "'"$MESSAGE_ID"'"}' >&2
95
+ exit 3
96
+ elif [[ "$HTTP_CODE" -eq 401 ]]; then
97
+ echo '{"error": "Authentication failed", "code": "AUTH_ERROR"}' >&2
98
+ exit 2
99
+ else
100
+ ERROR_MSG=$(echo "$BODY" | jq -r '.error // "Unknown API error"' 2>/dev/null || echo "Unknown API error")
101
+ echo '{"error": "'"$ERROR_MSG"'", "code": "API_ERROR", "http_code": '$HTTP_CODE'}' >&2
102
+ exit 2
103
+ fi
104
+ fi
105
+
106
+ # Parse response
107
+ if ! echo "$BODY" | jq empty 2>/dev/null; then
108
+ echo '{"error": "Invalid JSON response from API", "code": "INVALID_RESPONSE"}' >&2
109
+ exit 2
110
+ fi
111
+
112
+ # Handle bulk status (campaign-level)
113
+ if [[ -n "$CAMPAIGN_ID" ]]; then
114
+ echo "$BODY" | jq \
115
+ --arg campaign_id "$CAMPAIGN_ID" \
116
+ '{
117
+ campaign_id: $campaign_id,
118
+ total_messages: (.total_messages // 0),
119
+ delivered: (.delivered // 0),
120
+ failed: (.failed // 0),
121
+ pending: (.pending // 0),
122
+ delivery_rate: (.delivery_rate // 0),
123
+ messages: (.messages // [])
124
+ }'
125
+ else
126
+ # Handle single message status
127
+ echo "$BODY" | jq \
128
+ --arg message_id "$MESSAGE_ID" \
129
+ '{
130
+ message_id: ($message_id),
131
+ phone: (.phone // ""),
132
+ status: (.status // "unknown"),
133
+ delivered_at: (.delivered_at // null),
134
+ carrier: (.carrier // "unknown"),
135
+ error: (.error // null)
136
+ }'
137
+ fi
138
+
139
+ exit 0
@@ -0,0 +1,150 @@
1
+ #!/bin/bash
2
+ # CFN Marketing SMS Campaigns - Opt-Out Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Process opt-out request (CRITICAL - must execute within seconds)
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ PHONE=""
10
+ SOURCE="manual"
11
+ REASON=""
12
+
13
+ while [[ $# -gt 0 ]]; do
14
+ case $1 in
15
+ --phone)
16
+ PHONE="$2"
17
+ shift 2
18
+ ;;
19
+ --source)
20
+ SOURCE="$2"
21
+ shift 2
22
+ ;;
23
+ --reason)
24
+ REASON="$2"
25
+ shift 2
26
+ ;;
27
+ *)
28
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
29
+ exit 1
30
+ ;;
31
+ esac
32
+ done
33
+
34
+ # Validate required parameters
35
+ if [[ -z "$PHONE" ]]; then
36
+ echo '{"error": "Missing required parameter: --phone", "code": "MISSING_PARAMETER"}' >&2
37
+ exit 1
38
+ fi
39
+
40
+ # Validate phone format (E.164: +1XXXXXXXXXX)
41
+ if ! echo "$PHONE" | grep -qE '^\+[1-9][0-9]{1,14}$'; then
42
+ echo '{"error": "Invalid phone format. Use E.164 format (+1XXXXXXXXXX)", "code": "INVALID_PHONE"}' >&2
43
+ exit 1
44
+ fi
45
+
46
+ # Validate source
47
+ if [[ "$SOURCE" != "inbound_sms" && "$SOURCE" != "web" && "$SOURCE" != "manual" ]]; then
48
+ echo '{"error": "Invalid source. Must be inbound_sms, web, or manual", "code": "INVALID_SOURCE"}' >&2
49
+ exit 1
50
+ fi
51
+
52
+ # Check if already opted out
53
+ if command -v redis-cli &> /dev/null; then
54
+ CURRENT_OPT_IN=$(redis-cli GET "sms:opt_in:$PHONE" 2>/dev/null || echo "")
55
+ if [[ "$CURRENT_OPT_IN" == "false" ]]; then
56
+ OPTED_OUT_AT=$(redis-cli HGET "sms:opt_out:$PHONE" "opted_out_at" 2>/dev/null || echo "")
57
+ echo '{"error": "Phone number already opted out", "code": "ALREADY_OPTED_OUT", "phone": "'"$PHONE"'", "opted_out_at": "'"$OPTED_OUT_AT"'"}' >&2
58
+ exit 3
59
+ fi
60
+ else
61
+ echo '{"error": "Redis not available for opt-out processing", "code": "REDIS_UNAVAILABLE"}' >&2
62
+ exit 2
63
+ fi
64
+
65
+ # Generate timestamp
66
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
67
+
68
+ # CRITICAL: TCPA Compliance - Immediate opt-out processing
69
+ # Step 1: Update opt-in status (blocks all future sends)
70
+ redis-cli SET "sms:opt_in:$PHONE" "false" > /dev/null 2>&1 || {
71
+ echo '{"error": "Failed to update opt-in status", "code": "REDIS_ERROR"}' >&2
72
+ exit 2
73
+ }
74
+
75
+ # Step 2: Add to Do Not Call registry
76
+ redis-cli SET "sms:dnc:$PHONE" "true" > /dev/null 2>&1 || {
77
+ echo '{"error": "Failed to update DNC registry", "code": "REDIS_ERROR"}' >&2
78
+ exit 2
79
+ }
80
+
81
+ # Step 3: Add to global opt-out set
82
+ redis-cli SADD "sms:global_opt_out" "$PHONE" > /dev/null 2>&1 || {
83
+ echo '{"error": "Failed to add to global opt-out set", "code": "REDIS_ERROR"}' >&2
84
+ exit 2
85
+ }
86
+
87
+ # Step 4: Store detailed opt-out metadata
88
+ redis-cli HMSET "sms:opt_out:$PHONE" \
89
+ phone "$PHONE" \
90
+ opted_out_at "$TIMESTAMP" \
91
+ source "$SOURCE" \
92
+ reason "$REASON" \
93
+ > /dev/null 2>&1 || true
94
+
95
+ redis-cli EXPIRE "sms:opt_out:$PHONE" 31536000 > /dev/null 2>&1 || true # 1 year retention
96
+
97
+ # Step 5: Cancel any pending messages for this phone number
98
+ redis-cli SADD "sms:cancelled_recipients" "$PHONE" > /dev/null 2>&1 || true
99
+
100
+ # Validate environment variables for confirmation message
101
+ CONFIRMATION_SENT=false
102
+ if [[ -n "${N8N_BASE_URL:-}" && -n "${N8N_API_KEY:-}" ]]; then
103
+ # Prepare confirmation payload
104
+ CONFIRMATION_MESSAGE="You have been unsubscribed. No further messages will be sent."
105
+
106
+ PAYLOAD=$(jq -n \
107
+ --arg phone "$PHONE" \
108
+ --arg message "$CONFIRMATION_MESSAGE" \
109
+ --arg opted_out_at "$TIMESTAMP" \
110
+ --arg source "$SOURCE" \
111
+ '{
112
+ phone: $phone,
113
+ message: $message,
114
+ opted_out_at: $opted_out_at,
115
+ source: $source,
116
+ type: "opt_out_confirmation"
117
+ }')
118
+
119
+ # Send confirmation and persist to database (async, non-blocking)
120
+ curl -s -X POST \
121
+ -H "Content-Type: application/json" \
122
+ -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
123
+ -d "$PAYLOAD" \
124
+ "${N8N_BASE_URL}/webhook/sms/opt-out" > /dev/null 2>&1 &
125
+
126
+ CONFIRMATION_SENT=true
127
+ fi
128
+
129
+ # Log opt-out for audit trail
130
+ redis-cli LPUSH "sms:opt_out_log" "$PHONE:$TIMESTAMP:$SOURCE" > /dev/null 2>&1 || true
131
+ redis-cli LTRIM "sms:opt_out_log" 0 9999 > /dev/null 2>&1 || true
132
+
133
+ # Return success response
134
+ jq -n \
135
+ --arg phone "$PHONE" \
136
+ --argjson opted_out "true" \
137
+ --arg opted_out_at "$TIMESTAMP" \
138
+ --arg source "$SOURCE" \
139
+ --argjson confirmation_sent "$CONFIRMATION_SENT" \
140
+ --arg message "You have been unsubscribed. No further messages will be sent." \
141
+ '{
142
+ phone: $phone,
143
+ opted_out: $opted_out,
144
+ opted_out_at: $opted_out_at,
145
+ source: $source,
146
+ confirmation_sent: $confirmation_sent,
147
+ message: $message
148
+ }'
149
+
150
+ exit 0
@@ -0,0 +1,187 @@
1
+ #!/bin/bash
2
+ # CFN Marketing SMS Campaigns - Schedule Campaign Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Schedule bulk SMS campaign
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ CAMPAIGN_ID=""
10
+ SCHEDULE_TIME=""
11
+ TIMEZONE=""
12
+ BATCH_SIZE=100
13
+ BATCH_DELAY=60
14
+
15
+ while [[ $# -gt 0 ]]; do
16
+ case $1 in
17
+ --campaign-id)
18
+ CAMPAIGN_ID="$2"
19
+ shift 2
20
+ ;;
21
+ --schedule-time)
22
+ SCHEDULE_TIME="$2"
23
+ shift 2
24
+ ;;
25
+ --timezone)
26
+ TIMEZONE="$2"
27
+ shift 2
28
+ ;;
29
+ --batch-size)
30
+ BATCH_SIZE="$2"
31
+ shift 2
32
+ ;;
33
+ --batch-delay)
34
+ BATCH_DELAY="$2"
35
+ shift 2
36
+ ;;
37
+ *)
38
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
39
+ exit 1
40
+ ;;
41
+ esac
42
+ done
43
+
44
+ # Validate required parameters
45
+ if [[ -z "$CAMPAIGN_ID" ]]; then
46
+ echo '{"error": "Missing required parameter: --campaign-id", "code": "MISSING_PARAMETER"}' >&2
47
+ exit 1
48
+ fi
49
+
50
+ if [[ -z "$SCHEDULE_TIME" ]]; then
51
+ echo '{"error": "Missing required parameter: --schedule-time", "code": "MISSING_PARAMETER"}' >&2
52
+ exit 1
53
+ fi
54
+
55
+ if [[ -z "$TIMEZONE" ]]; then
56
+ echo '{"error": "Missing required parameter: --timezone", "code": "MISSING_PARAMETER"}' >&2
57
+ exit 1
58
+ fi
59
+
60
+ # Validate ISO 8601 date format
61
+ if ! echo "$SCHEDULE_TIME" | grep -qE '^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}'; then
62
+ echo '{"error": "Invalid date format. Use ISO 8601 (YYYY-MM-DDTHH:MM:SS)", "code": "INVALID_DATE"}' >&2
63
+ exit 1
64
+ fi
65
+
66
+ # Validate batch size
67
+ if ! [[ "$BATCH_SIZE" =~ ^[0-9]+$ ]] || [[ "$BATCH_SIZE" -lt 1 ]] || [[ "$BATCH_SIZE" -gt 1000 ]]; then
68
+ echo '{"error": "Invalid batch size. Must be between 1 and 1000", "code": "INVALID_BATCH_SIZE"}' >&2
69
+ exit 1
70
+ fi
71
+
72
+ # Validate batch delay
73
+ if ! [[ "$BATCH_DELAY" =~ ^[0-9]+$ ]] || [[ "$BATCH_DELAY" -lt 1 ]]; then
74
+ echo '{"error": "Invalid batch delay. Must be >= 1 second", "code": "INVALID_BATCH_DELAY"}' >&2
75
+ exit 1
76
+ fi
77
+
78
+ # Validate environment variables
79
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
80
+ echo '{"error": "Environment variable N8N_BASE_URL not set", "code": "MISSING_ENV_VAR"}' >&2
81
+ exit 2
82
+ fi
83
+
84
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
85
+ echo '{"error": "Environment variable N8N_API_KEY not set", "code": "MISSING_ENV_VAR"}' >&2
86
+ exit 2
87
+ fi
88
+
89
+ # CRITICAL: TCPA Compliance - Validate time restrictions
90
+ # Extract hour from schedule time and validate against 8 AM - 9 PM
91
+ SCHEDULE_HOUR=$(echo "$SCHEDULE_TIME" | grep -oP '\d{2}(?=:)' | head -1)
92
+ if [[ "$SCHEDULE_HOUR" -lt 8 ]] || [[ "$SCHEDULE_HOUR" -ge 21 ]]; then
93
+ echo '{"error": "Schedule time violates TCPA time restrictions (8 AM - 9 PM)", "code": "TIME_RESTRICTION", "scheduled_hour": '$SCHEDULE_HOUR', "severity": "critical"}' >&2
94
+ exit 3
95
+ fi
96
+
97
+ # Verify campaign exists
98
+ if command -v redis-cli &> /dev/null; then
99
+ CAMPAIGN_EXISTS=$(redis-cli EXISTS "sms:campaign:${CAMPAIGN_ID}" 2>/dev/null || echo "0")
100
+ if [[ "$CAMPAIGN_EXISTS" -eq 0 ]]; then
101
+ echo '{"error": "Campaign not found", "code": "CAMPAIGN_NOT_FOUND", "campaign_id": "'"$CAMPAIGN_ID"'"}' >&2
102
+ exit 3
103
+ fi
104
+ fi
105
+
106
+ # Prepare request payload
107
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
108
+
109
+ PAYLOAD=$(jq -n \
110
+ --arg campaign_id "$CAMPAIGN_ID" \
111
+ --arg schedule_time "$SCHEDULE_TIME" \
112
+ --arg timezone "$TIMEZONE" \
113
+ --arg batch_size "$BATCH_SIZE" \
114
+ --arg batch_delay "$BATCH_DELAY" \
115
+ --arg timestamp "$TIMESTAMP" \
116
+ '{
117
+ campaign_id: $campaign_id,
118
+ schedule_time: $schedule_time,
119
+ timezone: $timezone,
120
+ batch_size: ($batch_size | tonumber),
121
+ batch_delay: ($batch_delay | tonumber),
122
+ scheduled_at: $timestamp,
123
+ compliance_verified: true
124
+ }')
125
+
126
+ # Schedule campaign via n8n webhook
127
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
128
+ -X POST \
129
+ -H "Content-Type: application/json" \
130
+ -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
131
+ -d "$PAYLOAD" \
132
+ "${N8N_BASE_URL}/webhook/sms/schedule-campaign" 2>&1) || {
133
+ echo '{"error": "Network error: Failed to connect to n8n", "code": "NETWORK_ERROR"}' >&2
134
+ exit 2
135
+ }
136
+
137
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
138
+ BODY=$(echo "$RESPONSE" | sed '$d')
139
+
140
+ # Handle HTTP errors
141
+ if [[ "$HTTP_CODE" -ge 400 ]]; then
142
+ if [[ "$HTTP_CODE" -eq 404 ]]; then
143
+ echo '{"error": "Campaign not found", "code": "CAMPAIGN_NOT_FOUND", "campaign_id": "'"$CAMPAIGN_ID"'"}' >&2
144
+ exit 3
145
+ elif [[ "$HTTP_CODE" -eq 401 ]]; then
146
+ echo '{"error": "Authentication failed", "code": "AUTH_ERROR"}' >&2
147
+ exit 2
148
+ else
149
+ ERROR_MSG=$(echo "$BODY" | jq -r '.error // "Unknown API error"' 2>/dev/null || echo "Unknown API error")
150
+ echo '{"error": "'"$ERROR_MSG"'", "code": "API_ERROR", "http_code": '$HTTP_CODE'}' >&2
151
+ exit 2
152
+ fi
153
+ fi
154
+
155
+ # Parse response
156
+ if ! echo "$BODY" | jq empty 2>/dev/null; then
157
+ echo '{"error": "Invalid JSON response from API", "code": "INVALID_RESPONSE"}' >&2
158
+ exit 2
159
+ fi
160
+
161
+ # Update campaign status in Redis
162
+ if command -v redis-cli &> /dev/null; then
163
+ redis-cli HSET "sms:campaign:${CAMPAIGN_ID}" status "scheduled" > /dev/null 2>&1 || true
164
+ redis-cli HSET "sms:campaign:${CAMPAIGN_ID}" scheduled_at "$SCHEDULE_TIME" > /dev/null 2>&1 || true
165
+ fi
166
+
167
+ # Calculate estimated duration
168
+ TOTAL_RECIPIENTS=$(echo "$BODY" | jq -r '.total_recipients // 0')
169
+ BATCH_COUNT=$(( (TOTAL_RECIPIENTS + BATCH_SIZE - 1) / BATCH_SIZE ))
170
+ ESTIMATED_DURATION=$(( BATCH_COUNT * BATCH_DELAY / 60 ))
171
+
172
+ # Return success response
173
+ echo "$BODY" | jq \
174
+ --arg campaign_id "$CAMPAIGN_ID" \
175
+ --arg scheduled_at "$SCHEDULE_TIME" \
176
+ --arg estimated_duration "$ESTIMATED_DURATION" \
177
+ --arg batch_count "$BATCH_COUNT" \
178
+ '{
179
+ campaign_id: ($campaign_id),
180
+ scheduled_at: $scheduled_at,
181
+ status: (.status // "scheduled"),
182
+ estimated_duration_minutes: ($estimated_duration | tonumber),
183
+ batch_count: ($batch_count | tonumber),
184
+ total_recipients: (.total_recipients // 0)
185
+ }'
186
+
187
+ exit 0