claude-flow-novice 2.9.1 → 2.10.0

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 (349) hide show
  1. package/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
  2. package/.claude/agents/cfn-dev-team/README.md +116 -0
  3. package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
  4. package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
  5. package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
  6. package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
  7. package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
  8. package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
  9. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
  10. package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
  11. package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
  12. package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
  13. package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
  14. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
  15. package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
  16. package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
  17. package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
  18. package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
  19. package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
  20. package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
  21. package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
  22. package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
  23. package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
  24. package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
  25. package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
  26. package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
  27. package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
  28. package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
  29. package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
  30. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
  31. package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
  32. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
  33. package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
  34. package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
  35. package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
  36. package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
  37. package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
  38. package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
  39. package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
  40. package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
  41. package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
  42. package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
  43. package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
  44. package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
  45. package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
  46. package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
  47. package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
  48. package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
  49. package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
  50. package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
  51. package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
  52. package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
  53. package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
  54. package/.claude/commands/cfn/cfn-loop.md +168 -7
  55. package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
  56. package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
  57. package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
  58. package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
  59. package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
  60. package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
  61. package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
  62. package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
  63. package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
  64. package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
  65. package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
  66. package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
  67. package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
  68. package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
  69. package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
  70. package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
  71. package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
  72. package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
  73. package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
  74. package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
  75. package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
  76. package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
  77. package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
  78. package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
  79. package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
  80. package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
  81. package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
  82. package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
  83. package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
  84. package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
  85. package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
  86. package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
  87. package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
  88. package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
  89. package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
  90. package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
  91. package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
  92. package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
  93. package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
  94. package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
  95. package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
  96. package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
  97. package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
  98. package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
  99. package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
  100. package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
  101. package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
  102. package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
  103. package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
  104. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
  105. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
  106. package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
  107. package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
  108. package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
  109. package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
  110. package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
  111. package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
  112. package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
  113. package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
  114. package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
  115. package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
  116. package/.claude/skills/cfn-config-management/SKILL.md +34 -0
  117. package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
  118. package/.claude/skills/cfn-config-management/config.json +32 -0
  119. package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
  120. package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
  121. package/.claude/skills/cfn-event-bus/config.json +111 -0
  122. package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
  123. package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
  124. package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
  125. package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
  126. package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
  127. package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
  128. package/.claude/skills/cfn-fleet-manager/config.json +60 -0
  129. package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
  130. package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
  131. package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
  132. package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
  133. package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
  134. package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
  135. package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
  136. package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
  137. package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
  138. package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
  139. package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
  140. package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
  141. package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
  142. package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
  143. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
  144. package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
  145. package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
  146. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  147. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  148. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  149. package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
  150. package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
  151. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  152. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  153. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  154. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
  155. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  156. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  157. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  158. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
  159. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
  160. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  161. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  162. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  163. package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
  164. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
  165. package/.claude/skills/cfn-loop-validation/config.json +161 -0
  166. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
  167. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
  168. package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
  169. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
  170. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
  171. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
  172. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
  173. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
  174. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
  175. package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
  176. package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
  177. package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
  178. package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
  179. package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
  180. package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
  181. package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
  182. package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
  183. package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
  184. package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
  185. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
  186. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
  187. package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
  188. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
  189. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
  190. package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
  191. package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
  193. package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
  194. package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
  195. package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
  196. package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
  197. package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
  198. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
  199. package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
  200. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
  201. package/.claude/skills/cfn-redis-coordination/config.json +61 -0
  202. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  203. package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
  204. package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
  205. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
  206. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
  207. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
  208. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
  209. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
  210. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
  211. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
  212. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
  213. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
  214. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
  215. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
  216. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
  217. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
  218. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
  219. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
  220. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
  221. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
  222. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
  223. package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
  224. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
  225. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
  226. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
  227. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
  228. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
  229. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
  230. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
  231. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
  232. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
  233. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
  234. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
  235. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
  236. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
  237. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  238. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
  239. package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
  240. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
  241. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
  242. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
  243. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
  244. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
  245. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  246. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
  247. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  248. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  249. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  250. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  251. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  252. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  253. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  254. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  255. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  256. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  257. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
  258. package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
  259. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
  260. package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
  261. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
  262. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
  263. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
  264. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
  265. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
  266. package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
  267. package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
  268. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
  269. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
  270. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
  271. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
  272. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
  273. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
  274. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
  275. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
  276. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
  277. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
  278. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
  279. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
  280. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
  281. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
  282. package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  283. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
  284. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  285. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
  286. package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
  287. package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
  288. package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
  289. package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
  290. package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
  291. package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
  292. package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
  293. package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
  294. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
  295. package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
  296. package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
  297. package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
  298. package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
  299. package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
  300. package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
  301. package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
  302. package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
  303. package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
  304. package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
  305. package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
  306. package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
  307. package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
  308. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
  309. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
  310. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
  311. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
  312. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
  313. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
  314. package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
  315. package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
  316. package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
  317. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
  318. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
  319. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
  320. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
  321. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
  322. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
  323. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
  324. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
  325. package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  326. package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
  327. package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
  328. package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
  329. package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
  330. package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
  331. package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
  332. package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
  333. package/README.md +51 -2
  334. package/dist/ace/ace-reflector.js +109 -10
  335. package/dist/ace/ace-reflector.js.map +1 -1
  336. package/dist/cli/agent-executor.js +1 -1
  337. package/dist/cli/agent-executor.js.map +1 -1
  338. package/package.json +43 -7
  339. package/readme/README.md +15 -4
  340. package/scripts/init-project.js +39 -2
  341. package/scripts/run-marketing-tests.sh +43 -0
  342. package/scripts/update_paths.sh +47 -0
  343. package/tools/install-lizard.sh +37 -0
  344. package/tools/simple-complexity.sh +44 -0
  345. package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
  346. package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
  347. package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
  348. /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
  349. /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
@@ -0,0 +1,145 @@
1
+ #!/bin/bash
2
+ # Add new bullet to adaptive_context table
3
+ # Usage: ./add-bullet.sh --bullet-id STRAT-007 --category strategy --content "..." --confidence 0.85
4
+
5
+ set -e
6
+
7
+ # Default values
8
+ DB_PATH="${ACE_DB_PATH:-./.artifacts/database/swarm-memory.db}"
9
+ BULLET_ID=""
10
+ CATEGORY=""
11
+ CONTENT=""
12
+ CONFIDENCE=0.5
13
+ PRIORITY=5
14
+ TAGS="[]"
15
+ SOURCE_CONTEXT=""
16
+ SOURCE_TASK_ID=""
17
+ ACL_LEVEL=4
18
+
19
+ # Parse arguments
20
+ while [[ $# -gt 0 ]]; do
21
+ case $1 in
22
+ --bullet-id)
23
+ BULLET_ID="$2"
24
+ shift 2
25
+ ;;
26
+ --category)
27
+ CATEGORY="$2"
28
+ shift 2
29
+ ;;
30
+ --content)
31
+ CONTENT="$2"
32
+ shift 2
33
+ ;;
34
+ --confidence)
35
+ CONFIDENCE="$2"
36
+ shift 2
37
+ ;;
38
+ --priority)
39
+ PRIORITY="$2"
40
+ shift 2
41
+ ;;
42
+ --tags)
43
+ TAGS="$2"
44
+ shift 2
45
+ ;;
46
+ --source-context)
47
+ SOURCE_CONTEXT="$2"
48
+ shift 2
49
+ ;;
50
+ --source-task-id)
51
+ SOURCE_TASK_ID="$2"
52
+ shift 2
53
+ ;;
54
+ --acl-level)
55
+ ACL_LEVEL="$2"
56
+ shift 2
57
+ ;;
58
+ *)
59
+ echo "Unknown option: $1"
60
+ exit 1
61
+ ;;
62
+ esac
63
+ done
64
+
65
+ # Validate required parameters
66
+ if [ -z "$BULLET_ID" ] || [ -z "$CATEGORY" ] || [ -z "$CONTENT" ]; then
67
+ echo "Error: Missing required parameters"
68
+ echo "Usage: $0 --bullet-id <id> --category <cat> --content <text>"
69
+ exit 1
70
+ fi
71
+
72
+ # Validate category
73
+ case $CATEGORY in
74
+ strategy|pattern|edge_case|domain_insight|anti_pattern|optimization)
75
+ ;;
76
+ *)
77
+ echo "Error: Invalid category. Must be: strategy, pattern, edge_case, domain_insight, anti_pattern, or optimization"
78
+ exit 1
79
+ ;;
80
+ esac
81
+
82
+ # Generate unique ID
83
+ UNIQUE_ID="$(echo -n "$BULLET_ID" | md5sum | cut -d' ' -f1)"
84
+
85
+ # Insert bullet into database
86
+ sqlite3 "$DB_PATH" <<EOF
87
+ -- Ensure table exists
88
+ CREATE TABLE IF NOT EXISTS adaptive_context (
89
+ id TEXT PRIMARY KEY,
90
+ bullet_id TEXT NOT NULL UNIQUE,
91
+ category TEXT NOT NULL CHECK (category IN ('strategy', 'pattern', 'edge_case', 'domain_insight', 'anti_pattern', 'optimization')),
92
+ content TEXT NOT NULL,
93
+ helpful_count INTEGER DEFAULT 0,
94
+ harmful_count INTEGER DEFAULT 0,
95
+ confidence_score REAL DEFAULT 0.5 CHECK (confidence_score BETWEEN 0.0 AND 1.0),
96
+ source_context TEXT NOT NULL,
97
+ source_task_id TEXT,
98
+ source_agent_id TEXT,
99
+ tags TEXT,
100
+ embedding_vector TEXT,
101
+ parent_bullet_id TEXT,
102
+ version INTEGER DEFAULT 1,
103
+ acl_level INTEGER NOT NULL DEFAULT 4 CHECK (acl_level BETWEEN 1 AND 6),
104
+ swarm_id TEXT,
105
+ project_id TEXT,
106
+ is_active BOOLEAN DEFAULT 1,
107
+ is_validated BOOLEAN DEFAULT 0,
108
+ validation_metadata TEXT,
109
+ priority INTEGER DEFAULT 5 CHECK (priority BETWEEN 1 AND 10),
110
+ last_used_at DATETIME,
111
+ usage_count INTEGER DEFAULT 0,
112
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
113
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
114
+ archived_at DATETIME
115
+ );
116
+
117
+ -- Insert bullet
118
+ INSERT INTO adaptive_context (
119
+ id, bullet_id, category, content, confidence_score, priority, tags,
120
+ source_context, source_task_id, acl_level, is_active
121
+ ) VALUES (
122
+ '${UNIQUE_ID}',
123
+ '${BULLET_ID}',
124
+ '${CATEGORY}',
125
+ '${CONTENT}',
126
+ ${CONFIDENCE},
127
+ ${PRIORITY},
128
+ '${TAGS}',
129
+ '${SOURCE_CONTEXT:-Unknown source}',
130
+ $([ -n "$SOURCE_TASK_ID" ] && echo "'$SOURCE_TASK_ID'" || echo "NULL"),
131
+ ${ACL_LEVEL},
132
+ 1
133
+ );
134
+ EOF
135
+
136
+ # Verify insertion
137
+ COUNT=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM adaptive_context WHERE bullet_id = '${BULLET_ID}';")
138
+
139
+ if [ "$COUNT" -eq 1 ]; then
140
+ echo "{\"status\":\"success\",\"bullet_id\":\"${BULLET_ID}\",\"category\":\"${CATEGORY}\",\"confidence\":${CONFIDENCE}}"
141
+ exit 0
142
+ else
143
+ echo "{\"status\":\"error\",\"message\":\"Bullet insertion failed\"}"
144
+ exit 1
145
+ fi
@@ -0,0 +1,56 @@
1
+ #!/bin/bash
2
+ # Extended ACE System Anti-Pattern Effectiveness Analysis
3
+
4
+ set -euo pipefail
5
+
6
+ analyze_ab_test_results() {
7
+ local task_id="${1:?Task ID required}"
8
+
9
+ # Retrieve A/B test results from Redis
10
+ local ab_results=$(redis-cli KEYS "ace:ab_test:${task_id}:*")
11
+
12
+ # SQLite query to calculate metrics
13
+ sqlite3 ace_system.db <<EOF
14
+ WITH ab_test_data AS (
15
+ SELECT
16
+ json_extract(data, '$.agent_id') as agent_id,
17
+ json_extract(data, '$.ace_enabled') as ace_enabled,
18
+ json_extract(data, '$.first_confidence') as first_confidence,
19
+ json_extract(data, '$.final_confidence') as final_confidence,
20
+ json_extract(data, '$.iterations') as iterations
21
+ FROM ace_effectiveness
22
+ WHERE task_id = '$task_id'
23
+ )
24
+ SELECT
25
+ CASE WHEN ace_enabled THEN 'ACE' ELSE 'Control' END AS group_name,
26
+ AVG(first_confidence) AS avg_first_confidence,
27
+ AVG(final_confidence) AS avg_final_confidence,
28
+ AVG(iterations) AS avg_iterations,
29
+ COUNT(*) AS sample_size
30
+ FROM ab_test_data
31
+ GROUP BY group_name;
32
+ EOF
33
+ }
34
+
35
+ calculate_roi() {
36
+ local task_id="${1:?Task ID required}"
37
+
38
+ sqlite3 ace_system.db <<EOF
39
+ WITH timing_data AS (
40
+ SELECT
41
+ json_extract(data, '$.context_injection_time') as injection_time,
42
+ json_extract(data, '$.iteration_time') as iteration_time
43
+ FROM ace_performance
44
+ WHERE task_id = '$task_id'
45
+ )
46
+ SELECT
47
+ AVG(injection_time) as avg_injection_time,
48
+ AVG(iteration_time) as avg_iteration_time,
49
+ AVG(iteration_time - injection_time) as time_saved
50
+ FROM timing_data;
51
+ EOF
52
+ }
53
+
54
+ # Main execution
55
+ analyze_ab_test_results "$@"
56
+ calculate_roi "$@"
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ # ACE System - Task Classifier Wrapper
4
+ # Delegates to cfn-task-classifier skill for domain classification
5
+
6
+ set -euo pipefail
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ CLASSIFIER_PATH="${SCRIPT_DIR}/../cfn-task-classifier/classify-task.sh"
10
+
11
+ # Validate classifier exists
12
+ if [[ ! -f "$CLASSIFIER_PATH" ]]; then
13
+ echo "ERROR: Task classifier not found at: $CLASSIFIER_PATH" >&2
14
+ exit 1
15
+ fi
16
+
17
+ # Delegate to task classifier with all arguments
18
+ exec "$CLASSIFIER_PATH" "$@"
@@ -0,0 +1,48 @@
1
+ #!/bin/bash
2
+ # ACE System Metrics Dashboard Export
3
+
4
+ set -euo pipefail
5
+
6
+ EXPORT_DIR="${1:?Export directory required}"
7
+ TIMEFRAME="${2:-7d}"
8
+
9
+ # Function to generate JSON metrics
10
+ generate_metrics_json() {
11
+ local task_id="$1"
12
+
13
+ # A/B Test Results
14
+ local ab_results=$(sqlite3 ace_system.db \
15
+ "SELECT json_group_array(
16
+ json_object(
17
+ 'group', CASE WHEN ace_enabled THEN 'ACE' ELSE 'Control' END,
18
+ 'avg_first_confidence', AVG(first_confidence),
19
+ 'avg_final_confidence', AVG(final_confidence),
20
+ 'avg_iterations', AVG(iterations)
21
+ )
22
+ ) FROM ace_effectiveness WHERE timestamp >= datetime('now', '-$TIMEFRAME')")
23
+
24
+ # Performance Metrics
25
+ local perf_metrics=$(sqlite3 ace_system.db \
26
+ "SELECT json_group_array(
27
+ json_object(
28
+ 'injection_time', AVG(context_injection_time),
29
+ 'iteration_time', AVG(iteration_time),
30
+ 'time_saved', AVG(iteration_time - context_injection_time)
31
+ )
32
+ ) FROM ace_performance WHERE timestamp >= datetime('now', '-$TIMEFRAME')")
33
+
34
+ # Combine metrics
35
+ jq -n \
36
+ --argjson ab_results "$ab_results" \
37
+ --argjson perf_metrics "$perf_metrics" \
38
+ '{
39
+ "ab_test_results": $ab_results,
40
+ "performance_metrics": $perf_metrics,
41
+ "timestamp": now
42
+ }' > "${EXPORT_DIR}/ace_metrics_$(date +%Y%m%d_%H%M%S).json"
43
+ }
44
+
45
+ # Export metrics for each tracked task
46
+ for task_id in $(sqlite3 ace_system.db "SELECT DISTINCT task_id FROM ace_effectiveness"); do
47
+ generate_metrics_json "$task_id"
48
+ done
@@ -0,0 +1,385 @@
1
+ #!/usr/bin/env bash
2
+ # extract-tags.sh - Automatic tag extraction from sprint execution data
3
+ # Part of ACE System Phase 2.1
4
+
5
+ set -euo pipefail
6
+
7
+ # Default values
8
+ TASK_DESCRIPTION=""
9
+ FILES=""
10
+ AGENTS=""
11
+ OUTPUT_FORMAT="json"
12
+ MIN_TAGS=5
13
+ MAX_TAGS=15
14
+
15
+ # Stopwords for keyword filtering
16
+ STOPWORDS="the and or but for with from this that these those then than will can could should would"
17
+
18
+ # Usage function
19
+ usage() {
20
+ cat <<EOF
21
+ Usage: $0 [OPTIONS]
22
+
23
+ Extract tags from sprint execution data
24
+
25
+ OPTIONS:
26
+ --task-description TEXT Sprint task description
27
+ --files LIST Comma-separated list of modified files
28
+ --agents LIST Comma-separated list of agent types
29
+ --output FORMAT Output format: json|text (default: json)
30
+ --min-tags NUM Minimum tags to extract (default: 5)
31
+ --max-tags NUM Maximum tags to extract (default: 15)
32
+ -h, --help Show this help message
33
+
34
+ EXAMPLES:
35
+ $0 --task-description "Implement JWT authentication" \\
36
+ --files "src/auth.ts,tests/auth.test.ts" \\
37
+ --agents "backend-dev,security-specialist" \\
38
+ --output json
39
+ EOF
40
+ exit 1
41
+ }
42
+
43
+ # Parse arguments
44
+ while [[ $# -gt 0 ]]; do
45
+ case $1 in
46
+ --task-description)
47
+ TASK_DESCRIPTION="$2"
48
+ shift 2
49
+ ;;
50
+ --files)
51
+ FILES="$2"
52
+ shift 2
53
+ ;;
54
+ --agents)
55
+ AGENTS="$2"
56
+ shift 2
57
+ ;;
58
+ --output)
59
+ OUTPUT_FORMAT="$2"
60
+ shift 2
61
+ ;;
62
+ --min-tags)
63
+ MIN_TAGS="$2"
64
+ shift 2
65
+ ;;
66
+ --max-tags)
67
+ MAX_TAGS="$2"
68
+ shift 2
69
+ ;;
70
+ -h|--help)
71
+ usage
72
+ ;;
73
+ *)
74
+ echo "Unknown option: $1"
75
+ usage
76
+ ;;
77
+ esac
78
+ done
79
+
80
+ # Validate required parameters
81
+ if [[ -z "$TASK_DESCRIPTION" ]]; then
82
+ echo "Error: --task-description is required"
83
+ usage
84
+ fi
85
+
86
+ # Extract keywords from task description (frequency-based)
87
+ extract_keywords() {
88
+ local text="$1"
89
+ local keywords=()
90
+
91
+ # Convert to lowercase, extract words (3+ chars), filter stopwords
92
+ local words=$(echo "$text" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '\n' | grep -E '^.{3,}$' || true)
93
+
94
+ # Filter stopwords and count frequencies
95
+ local filtered_words=""
96
+ while IFS= read -r word; do
97
+ if [[ -n "$word" ]] && ! echo "$STOPWORDS" | grep -wq "$word"; then
98
+ filtered_words="$filtered_words$word"$'\n'
99
+ fi
100
+ done <<< "$words"
101
+
102
+ # Get top keywords by frequency (unique + sorted)
103
+ if [[ -n "$filtered_words" ]]; then
104
+ keywords=($(echo "$filtered_words" | sort | uniq -c | sort -rn | head -10 | awk '{print $2}'))
105
+ fi
106
+
107
+ # Return as JSON array
108
+ if [[ ${#keywords[@]} -gt 0 ]]; then
109
+ printf '%s\n' "${keywords[@]}" | jq -R . | jq -s .
110
+ else
111
+ echo "[]"
112
+ fi
113
+ }
114
+
115
+ # Infer domains from file extensions and paths
116
+ infer_domains_from_files() {
117
+ local files="$1"
118
+ local domains=()
119
+
120
+ if [[ -z "$files" ]]; then
121
+ echo "[]"
122
+ return
123
+ fi
124
+
125
+ # Split files by comma
126
+ IFS=',' read -ra file_array <<< "$files"
127
+
128
+ for file in "${file_array[@]}"; do
129
+ file=$(echo "$file" | xargs) # Trim whitespace
130
+
131
+ # Frontend patterns
132
+ if [[ "$file" =~ \.(tsx|jsx|css|html|scss|sass)$ ]] || [[ "$file" =~ /frontend/ ]] || [[ "$file" =~ /ui/ ]]; then
133
+ domains+=("frontend")
134
+ fi
135
+
136
+ # Backend patterns
137
+ if [[ "$file" =~ \.(ts|js|py|java|go|rb)$ ]] && [[ ! "$file" =~ \.(tsx|jsx)$ ]] && [[ "$file" =~ /(api|backend|server|services)/ ]]; then
138
+ domains+=("backend")
139
+ fi
140
+
141
+ # Security patterns
142
+ if [[ "$file" =~ /(auth|security|jwt|oauth)/ ]]; then
143
+ domains+=("security")
144
+ fi
145
+
146
+ # DevOps patterns
147
+ if [[ "$file" =~ \.(yaml|yml|dockerfile)$ ]] || [[ "$file" =~ /(docker|k8s|kubernetes|helm|terraform)/ ]]; then
148
+ domains+=("devops")
149
+ fi
150
+
151
+ # Testing patterns
152
+ if [[ "$file" =~ \.(test|spec)\. ]] || [[ "$file" =~ /__tests__/ ]] || [[ "$file" =~ /tests?/ ]]; then
153
+ domains+=("testing")
154
+ fi
155
+
156
+ # Database patterns
157
+ if [[ "$file" =~ /(database|db|migrations|models|schema)/ ]] || [[ "$file" =~ \.(sql)$ ]]; then
158
+ domains+=("database")
159
+ fi
160
+
161
+ # Documentation patterns
162
+ if [[ "$file" =~ \.(md|rst|txt)$ ]] || [[ "$file" =~ /(docs|documentation)/ ]]; then
163
+ domains+=("documentation")
164
+ fi
165
+ done
166
+
167
+ # Deduplicate and return as JSON array
168
+ if [[ ${#domains[@]} -gt 0 ]]; then
169
+ printf '%s\n' "${domains[@]}" | sort -u | jq -R . | jq -s .
170
+ else
171
+ echo "[]"
172
+ fi
173
+ }
174
+
175
+ # Infer domains from keywords
176
+ infer_domains_from_keywords() {
177
+ local keywords_json="$1"
178
+ local domains=()
179
+
180
+ # Extract keywords from JSON array
181
+ local keywords=$(echo "$keywords_json" | jq -r '.[]')
182
+
183
+ while IFS= read -r keyword; do
184
+ [[ -z "$keyword" ]] && continue
185
+
186
+ # Security domain
187
+ if [[ "$keyword" =~ (auth|jwt|token|oauth|security|encryption|hash|password|credential) ]]; then
188
+ domains+=("security")
189
+ fi
190
+
191
+ # API domain
192
+ if [[ "$keyword" =~ (api|rest|graphql|endpoint|route|controller) ]]; then
193
+ domains+=("api")
194
+ fi
195
+
196
+ # Database domain
197
+ if [[ "$keyword" =~ (database|sql|query|migration|model|schema|orm) ]]; then
198
+ domains+=("database")
199
+ fi
200
+
201
+ # Testing domain
202
+ if [[ "$keyword" =~ (test|testing|spec|assertion|mock|coverage) ]]; then
203
+ domains+=("testing")
204
+ fi
205
+
206
+ # DevOps domain
207
+ if [[ "$keyword" =~ (docker|kubernetes|deploy|cicd|pipeline|container) ]]; then
208
+ domains+=("devops")
209
+ fi
210
+
211
+ # Performance domain
212
+ if [[ "$keyword" =~ (performance|optimization|cache|latency|speed) ]]; then
213
+ domains+=("performance")
214
+ fi
215
+ done <<< "$keywords"
216
+
217
+ # Deduplicate and return as JSON array
218
+ if [[ ${#domains[@]} -gt 0 ]]; then
219
+ printf '%s\n' "${domains[@]}" | sort -u | jq -R . | jq -s .
220
+ else
221
+ echo "[]"
222
+ fi
223
+ }
224
+
225
+ # Extract file type tags
226
+ extract_file_tags() {
227
+ local files="$1"
228
+ local file_tags=()
229
+
230
+ if [[ -z "$files" ]]; then
231
+ echo "[]"
232
+ return
233
+ fi
234
+
235
+ # Split files by comma
236
+ IFS=',' read -ra file_array <<< "$files"
237
+
238
+ for file in "${file_array[@]}"; do
239
+ file=$(echo "$file" | xargs) # Trim whitespace
240
+
241
+ # Extract extension
242
+ if [[ "$file" =~ \.([^.]+)$ ]]; then
243
+ ext="${BASH_REMATCH[1]}"
244
+
245
+ case "$ext" in
246
+ ts|tsx)
247
+ file_tags+=("typescript")
248
+ ;;
249
+ js|jsx)
250
+ file_tags+=("javascript")
251
+ ;;
252
+ py)
253
+ file_tags+=("python")
254
+ ;;
255
+ java)
256
+ file_tags+=("java")
257
+ ;;
258
+ go)
259
+ file_tags+=("golang")
260
+ ;;
261
+ rb)
262
+ file_tags+=("ruby")
263
+ ;;
264
+ sh|bash)
265
+ file_tags+=("bash")
266
+ ;;
267
+ yaml|yml)
268
+ file_tags+=("yaml")
269
+ ;;
270
+ json)
271
+ file_tags+=("json")
272
+ ;;
273
+ md)
274
+ file_tags+=("markdown")
275
+ ;;
276
+ esac
277
+ fi
278
+ done
279
+
280
+ # Deduplicate and return as JSON array
281
+ if [[ ${#file_tags[@]} -gt 0 ]]; then
282
+ printf '%s\n' "${file_tags[@]}" | sort -u | jq -R . | jq -s .
283
+ else
284
+ echo "[]"
285
+ fi
286
+ }
287
+
288
+ # Extract agent tags
289
+ extract_agent_tags() {
290
+ local agents="$1"
291
+ local agent_tags=()
292
+
293
+ if [[ -z "$agents" ]]; then
294
+ echo "[]"
295
+ return
296
+ fi
297
+
298
+ # Split agents by comma
299
+ IFS=',' read -ra agent_array <<< "$agents"
300
+
301
+ for agent in "${agent_array[@]}"; do
302
+ agent=$(echo "$agent" | xargs | tr '[:upper:]' '[:lower:]') # Trim and lowercase
303
+ [[ -n "$agent" ]] && agent_tags+=("$agent")
304
+ done
305
+
306
+ # Return as JSON array
307
+ if [[ ${#agent_tags[@]} -gt 0 ]]; then
308
+ printf '%s\n' "${agent_tags[@]}" | jq -R . | jq -s .
309
+ else
310
+ echo "[]"
311
+ fi
312
+ }
313
+
314
+ # Combine and deduplicate all tags
315
+ combine_tags() {
316
+ local keywords_json="$1"
317
+ local domains_file_json="$2"
318
+ local domains_keyword_json="$3"
319
+ local file_tags_json="$4"
320
+ local agent_tags_json="$5"
321
+
322
+ # Merge all JSON arrays
323
+ local all_tags=$(jq -s 'add | unique' <(echo "$keywords_json") <(echo "$domains_file_json") <(echo "$domains_keyword_json") <(echo "$file_tags_json") <(echo "$agent_tags_json"))
324
+
325
+ # Limit to MIN_TAGS - MAX_TAGS range
326
+ local tag_count=$(echo "$all_tags" | jq 'length')
327
+
328
+ if [[ $tag_count -lt $MIN_TAGS ]]; then
329
+ # If below minimum, return all we have
330
+ echo "$all_tags"
331
+ elif [[ $tag_count -gt $MAX_TAGS ]]; then
332
+ # If above maximum, truncate to MAX_TAGS
333
+ echo "$all_tags" | jq ".[:$MAX_TAGS]"
334
+ else
335
+ echo "$all_tags"
336
+ fi
337
+ }
338
+
339
+ # Main execution
340
+ main() {
341
+ # Extract components
342
+ local keywords_json=$(extract_keywords "$TASK_DESCRIPTION")
343
+ local domains_file_json=$(infer_domains_from_files "$FILES")
344
+ local domains_keyword_json=$(infer_domains_from_keywords "$keywords_json")
345
+ local file_tags_json=$(extract_file_tags "$FILES")
346
+ local agent_tags_json=$(extract_agent_tags "$AGENTS")
347
+
348
+ # Combine domains (file + keyword based)
349
+ local all_domains=$(jq -s 'add | unique' <(echo "$domains_file_json") <(echo "$domains_keyword_json"))
350
+
351
+ # Combine all tags
352
+ local combined_tags=$(combine_tags "$keywords_json" "$domains_file_json" "$domains_keyword_json" "$file_tags_json" "$agent_tags_json")
353
+
354
+ local tag_count=$(echo "$combined_tags" | jq 'length')
355
+
356
+ # Output format
357
+ if [[ "$OUTPUT_FORMAT" == "json" ]]; then
358
+ jq -n \
359
+ --argjson tags "$combined_tags" \
360
+ --argjson keywords "$keywords_json" \
361
+ --argjson domains "$all_domains" \
362
+ --argjson file_tags "$file_tags_json" \
363
+ --argjson agents "$agent_tags_json" \
364
+ --arg tag_count "$tag_count" \
365
+ '{
366
+ tags: $tags,
367
+ keywords: $keywords,
368
+ domains: $domains,
369
+ agents: $agents,
370
+ file_tags: $file_tags,
371
+ tag_count: ($tag_count | tonumber)
372
+ }'
373
+ else
374
+ # Text format
375
+ echo "Tags: $(echo "$combined_tags" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')"
376
+ echo "Keywords: $(echo "$keywords_json" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')"
377
+ echo "Domains: $(echo "$all_domains" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')"
378
+ echo "Agents: $(echo "$agent_tags_json" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')"
379
+ echo "File Tags: $(echo "$file_tags_json" | jq -r '.[]' | tr '\n' ',' | sed 's/,$//')"
380
+ echo "Tag Count: $tag_count"
381
+ fi
382
+ }
383
+
384
+ # Run main
385
+ main