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,40 @@
1
+ #!/bin/bash
2
+ # Dependency checker for Hook Pipeline
3
+
4
+ check_command() {
5
+ if command -v "$1" &> /dev/null; then
6
+ VERSION=$($1 --version 2>&1 | head -n1)
7
+ echo "✅ $1: $VERSION"
8
+ return 0
9
+ else
10
+ echo "❌ $1: NOT FOUND"
11
+ return 1
12
+ fi
13
+ }
14
+
15
+ echo "Checking dependencies for Hook Pipeline..."
16
+ MISSING=0
17
+
18
+ # Required dependencies
19
+ check_command "node" || MISSING=$((MISSING+1))
20
+ check_command "jq" || MISSING=$((MISSING+1))
21
+ check_command "tsc" || MISSING=$((MISSING+1))
22
+
23
+ # Optional dependencies (warnings only)
24
+ optional_deps=("pylint" "black" "cargo" "clippy" "rustfmt" "gofmt" "go" "vet" "google-java-format" "clang-format" "cppcheck")
25
+
26
+ for dep in "${optional_deps[@]}"; do
27
+ if ! command -v "$dep" &> /dev/null; then
28
+ echo "⚠️ $dep: NOT FOUND (optional)"
29
+ fi
30
+ done
31
+
32
+ if [ $MISSING -eq 0 ]; then
33
+ echo ""
34
+ echo "✅ All required dependencies installed"
35
+ exit 0
36
+ else
37
+ echo ""
38
+ echo "❌ Missing $MISSING required dependencies"
39
+ exit 1
40
+ fi
@@ -0,0 +1,452 @@
1
+ #!/bin/bash
2
+
3
+ # Feedback Resolver - Sprint 2.2
4
+ # Intelligent feedback resolution with auto-fix capabilities
5
+ #
6
+ # Usage:
7
+ # ./feedback-resolver.sh [--type TYPE] [--auto-resolve] [--resolve-last] [--edit-id ID]
8
+ #
9
+ # Examples:
10
+ # ./feedback-resolver.sh --resolve-last
11
+ # ./feedback-resolver.sh --type ROOT_WARNING --auto-resolve
12
+ # ./feedback-resolver.sh --edit-id "edit-1729123456789-abc123"
13
+
14
+ set -euo pipefail
15
+
16
+ # Parse arguments
17
+ FEEDBACK_TYPE=""
18
+ AUTO_RESOLVE=false
19
+ RESOLVE_LAST=false
20
+ EDIT_ID=""
21
+ FEEDBACK_FILE=""
22
+
23
+ while [[ $# -gt 0 ]]; do
24
+ case $1 in
25
+ --type)
26
+ FEEDBACK_TYPE="$2"
27
+ shift 2
28
+ ;;
29
+ --auto-resolve)
30
+ AUTO_RESOLVE=true
31
+ shift
32
+ ;;
33
+ --resolve-last)
34
+ RESOLVE_LAST=true
35
+ shift
36
+ ;;
37
+ --edit-id)
38
+ EDIT_ID="$2"
39
+ shift 2
40
+ ;;
41
+ *)
42
+ if [ -z "$FEEDBACK_FILE" ]; then
43
+ FEEDBACK_FILE="$1"
44
+ fi
45
+ shift
46
+ ;;
47
+ esac
48
+ done
49
+
50
+ # Determine feedback file to process
51
+ FEEDBACK_DIR=".artifacts/feedback"
52
+
53
+ if [ "$RESOLVE_LAST" = true ]; then
54
+ # Find most recent pending feedback file
55
+ FEEDBACK_FILE=$(find "$FEEDBACK_DIR" -name "pending-*.json" -type f -printf '%T@ %p\n' 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
56
+ if [ -z "$FEEDBACK_FILE" ]; then
57
+ echo "No pending feedback found"
58
+ exit 0
59
+ fi
60
+ echo "Resolving most recent feedback: $FEEDBACK_FILE"
61
+ elif [ -n "$EDIT_ID" ]; then
62
+ # Search for feedback by edit ID
63
+ FEEDBACK_FILE=$(grep -l "\"editId\": \"$EDIT_ID\"" "$FEEDBACK_DIR"/pending-*.json 2>/dev/null | head -1)
64
+ if [ -z "$FEEDBACK_FILE" ]; then
65
+ echo "No feedback found for edit ID: $EDIT_ID"
66
+ exit 1
67
+ fi
68
+ echo "Resolving feedback for edit ID: $EDIT_ID"
69
+ elif [ -n "$FEEDBACK_TYPE" ]; then
70
+ # Use type-specific file
71
+ FEEDBACK_FILE="$FEEDBACK_DIR/pending-${FEEDBACK_TYPE,,}.json"
72
+ if [ ! -f "$FEEDBACK_FILE" ]; then
73
+ FEEDBACK_FILE="$FEEDBACK_DIR/pending-$(echo "$FEEDBACK_TYPE" | tr '[:upper:]' '[:lower:]' | tr '_' '-').json"
74
+ fi
75
+ elif [ -z "$FEEDBACK_FILE" ]; then
76
+ # Default to root warning
77
+ FEEDBACK_FILE="$FEEDBACK_DIR/pending-root-warning.json"
78
+ fi
79
+
80
+ # Validate feedback file exists
81
+ if [ ! -f "$FEEDBACK_FILE" ]; then
82
+ echo "Feedback file not found: $FEEDBACK_FILE"
83
+ echo "Available feedback files:"
84
+ find "$FEEDBACK_DIR" -name "pending-*.json" -type f 2>/dev/null || echo " (none)"
85
+ exit 1
86
+ fi
87
+
88
+ echo "Processing feedback: $FEEDBACK_FILE"
89
+
90
+ # Extract feedback details
91
+ STATUS=$(jq -r '.status // .type // "UNKNOWN"' "$FEEDBACK_FILE")
92
+ FILE_PATH=$(jq -r '.file // ""' "$FEEDBACK_FILE")
93
+ TIMESTAMP=$(jq -r '.timestamp // ""' "$FEEDBACK_FILE")
94
+
95
+ echo "Feedback type: $STATUS"
96
+ echo "File: $FILE_PATH"
97
+ echo "Timestamp: $TIMESTAMP"
98
+ echo ""
99
+
100
+ # Resolution functions
101
+ resolve_root_warning() {
102
+ local suggestions=$(jq -r '.rootWarning.suggestions // .suggestions // []' "$FEEDBACK_FILE")
103
+ local suggested_location=$(echo "$suggestions" | jq -r '.[0].location // ""')
104
+ local reason=$(echo "$suggestions" | jq -r '.[0].reason // ""')
105
+
106
+ if [ -z "$suggested_location" ]; then
107
+ echo "❌ No suggested location found in feedback"
108
+ return 1
109
+ fi
110
+
111
+ if [ ! -f "$FILE_PATH" ]; then
112
+ echo "❌ Source file not found: $FILE_PATH"
113
+ return 1
114
+ fi
115
+
116
+ echo "📦 ROOT_WARNING Auto-Resolution"
117
+ echo " Moving: $FILE_PATH"
118
+ echo " To: $suggested_location"
119
+ echo " Reason: $reason"
120
+ echo ""
121
+
122
+ # Create target directory
123
+ mkdir -p "$(dirname "$suggested_location")"
124
+
125
+ # Move file
126
+ mv "$FILE_PATH" "$suggested_location"
127
+ echo "✅ File moved successfully"
128
+
129
+ # Re-run hook validation on new location
130
+ echo ""
131
+ echo "🔍 Re-validating at new location..."
132
+ if node config/hooks/post-edit-pipeline.js "$suggested_location" >/dev/null 2>&1; then
133
+ echo "✅ Validation passed"
134
+ return 0
135
+ else
136
+ echo "⚠️ Validation failed - may require additional fixes"
137
+ return 0 # Still consider ROOT_WARNING resolved
138
+ fi
139
+ }
140
+
141
+ handle_tdd_violation() {
142
+ local has_tests=$(jq -r '.hasTests // false' "$FEEDBACK_FILE")
143
+ local test_file=$(jq -r '.testFile // ""' "$FEEDBACK_FILE")
144
+ local recommendations=$(jq -r '.recommendations // []' "$FEEDBACK_FILE")
145
+
146
+ echo "🧪 TDD_VIOLATION Semi-Auto Resolution"
147
+ echo " Has tests: $has_tests"
148
+ echo " Test file: $test_file"
149
+ echo ""
150
+
151
+ if [ "$has_tests" = "false" ] || [ -z "$test_file" ]; then
152
+ # Generate test file template
153
+ local ext="${FILE_PATH##*.}"
154
+ local base_name=$(basename "$FILE_PATH" ".$ext")
155
+ local dir_name=$(dirname "$FILE_PATH")
156
+
157
+ # Determine test file name based on extension
158
+ case "$ext" in
159
+ js|jsx)
160
+ test_file="${dir_name}/${base_name}.test.js"
161
+ ;;
162
+ ts|tsx)
163
+ test_file="${dir_name}/${base_name}.test.ts"
164
+ ;;
165
+ py)
166
+ test_file="${dir_name}/test_${base_name}.py"
167
+ ;;
168
+ go)
169
+ test_file="${dir_name}/${base_name}_test.go"
170
+ ;;
171
+ rs)
172
+ # Rust tests are usually in the same file
173
+ echo "⚠️ Rust uses inline tests - add #[cfg(test)] module to: $FILE_PATH"
174
+ return 0
175
+ ;;
176
+ *)
177
+ echo "⚠️ Unknown file type: $ext - manual test creation required"
178
+ return 1
179
+ ;;
180
+ esac
181
+
182
+ if [ -f "$test_file" ]; then
183
+ echo "⚠️ Test file already exists: $test_file"
184
+ echo " Manual review required"
185
+ return 0
186
+ fi
187
+
188
+ echo "📝 Generating test template: $test_file"
189
+
190
+ # Generate test template based on language
191
+ case "$ext" in
192
+ js|jsx|ts|tsx)
193
+ cat > "$test_file" <<EOF
194
+ import { describe, it, expect } from 'vitest';
195
+ // TODO: Import functions from $(basename "$FILE_PATH")
196
+ // import { functionName } from './$(basename "$FILE_PATH")';
197
+
198
+ describe('$(basename "$FILE_PATH" ".$ext")', () => {
199
+ it('should pass basic test', () => {
200
+ // TODO: Write test implementation
201
+ expect(true).toBe(true);
202
+ });
203
+
204
+ // TODO: Add more test cases
205
+ });
206
+ EOF
207
+ ;;
208
+ py)
209
+ cat > "$test_file" <<EOF
210
+ import pytest
211
+ # TODO: Import functions from $(basename "$FILE_PATH")
212
+ # from $(basename "$FILE_PATH" .py) import function_name
213
+
214
+ def test_basic():
215
+ """Basic test case"""
216
+ # TODO: Write test implementation
217
+ assert True
218
+
219
+ # TODO: Add more test cases
220
+ EOF
221
+ ;;
222
+ go)
223
+ cat > "$test_file" <<EOF
224
+ package $(basename "$dir_name")
225
+
226
+ import "testing"
227
+
228
+ // TODO: Add test cases
229
+ func TestBasic(t *testing.T) {
230
+ // TODO: Write test implementation
231
+ if true != true {
232
+ t.Error("Basic test failed")
233
+ }
234
+ }
235
+ EOF
236
+ ;;
237
+ esac
238
+
239
+ echo "✅ Test template created"
240
+ echo ""
241
+ echo "⚠️ MANUAL ACTION REQUIRED:"
242
+ echo " 1. Complete test implementation in: $test_file"
243
+ echo " 2. Run tests: npm test $test_file"
244
+ echo " 3. Verify tests pass before continuing"
245
+
246
+ return 0
247
+ else
248
+ echo "⚠️ Test file exists but may be incomplete"
249
+ echo " Review recommendations:"
250
+ echo "$recommendations" | jq -r '.[] | " - \(.message // .type)"'
251
+ return 0
252
+ fi
253
+ }
254
+
255
+ resolve_low_coverage() {
256
+ local current=$(jq -r '.current // 0' "$FEEDBACK_FILE")
257
+ local required=$(jq -r '.required // 80' "$FEEDBACK_FILE")
258
+ local uncovered=$(jq -r '.uncovered // []' "$FEEDBACK_FILE")
259
+
260
+ echo "📊 LOW_COVERAGE Semi-Auto Resolution"
261
+ echo " Current coverage: $current%"
262
+ echo " Required coverage: $required%"
263
+ echo " Gap: $((required - current))%"
264
+ echo ""
265
+
266
+ echo "🔍 Analyzing uncovered code paths..."
267
+ if [ "$uncovered" != "[]" ]; then
268
+ echo "$uncovered" | jq -r '.[] | " Line \(.line): \(.code)"'
269
+ else
270
+ echo " Run: npm test -- --coverage $FILE_PATH"
271
+ echo " to identify uncovered lines"
272
+ fi
273
+
274
+ echo ""
275
+ echo "⚠️ MANUAL ACTION REQUIRED:"
276
+ echo " 1. Review uncovered lines above"
277
+ echo " 2. Add test cases for uncovered code paths"
278
+ echo " 3. Run: npm test -- --coverage"
279
+ echo " 4. Verify coverage meets threshold: $required%"
280
+
281
+ return 0
282
+ }
283
+
284
+ auto_rust_quality() {
285
+ local issues=$(jq -r '.issues // []' "$FEEDBACK_FILE")
286
+ local issue_count=$(echo "$issues" | jq -r 'length')
287
+
288
+ echo "🦀 RUST_QUALITY Auto-Resolution"
289
+ echo " Issues found: $issue_count"
290
+ echo ""
291
+
292
+ if [ ! -f "Cargo.toml" ]; then
293
+ echo "❌ Not a Rust project (Cargo.toml not found)"
294
+ return 1
295
+ fi
296
+
297
+ echo "🔧 Running cargo fmt..."
298
+ if cargo fmt 2>&1; then
299
+ echo "✅ Formatting complete"
300
+ else
301
+ echo "⚠️ Formatting failed - manual review required"
302
+ fi
303
+
304
+ echo ""
305
+ echo "🔍 Running cargo clippy --fix..."
306
+ if cargo clippy --fix --allow-dirty --allow-staged 2>&1; then
307
+ echo "✅ Clippy auto-fixes applied"
308
+ else
309
+ echo "⚠️ Some clippy issues require manual fixes"
310
+ fi
311
+
312
+ echo ""
313
+ echo "🔍 Re-validating..."
314
+ if node config/hooks/post-edit-pipeline.js "$FILE_PATH" >/dev/null 2>&1; then
315
+ echo "✅ Validation passed"
316
+ return 0
317
+ else
318
+ echo "⚠️ Validation failed - manual review required"
319
+ return 1
320
+ fi
321
+ }
322
+
323
+ resolve_lint_issues() {
324
+ local linter=$(jq -r '.linter // "unknown"' "$FEEDBACK_FILE")
325
+ local issues=$(jq -r '.issues // ""' "$FEEDBACK_FILE")
326
+
327
+ echo "🔍 LINT_ISSUES Auto-Resolution"
328
+ echo " Linter: $linter"
329
+ echo ""
330
+
331
+ local ext="${FILE_PATH##*.}"
332
+
333
+ case "$ext" in
334
+ js|jsx|ts|tsx)
335
+ echo "🔧 Running eslint --fix..."
336
+ if npx eslint --fix "$FILE_PATH" 2>&1; then
337
+ echo "✅ ESLint auto-fixes applied"
338
+ else
339
+ echo "⚠️ Some ESLint issues require manual fixes"
340
+ fi
341
+
342
+ echo ""
343
+ echo "🔧 Running prettier --write..."
344
+ if npx prettier --write "$FILE_PATH" 2>&1; then
345
+ echo "✅ Prettier formatting applied"
346
+ else
347
+ echo "⚠️ Prettier failed - check configuration"
348
+ fi
349
+ ;;
350
+ py)
351
+ echo "🔧 Running black..."
352
+ if python -m black "$FILE_PATH" 2>&1; then
353
+ echo "✅ Black formatting applied"
354
+ else
355
+ echo "⚠️ Black not available - install with: pip install black"
356
+ fi
357
+ ;;
358
+ *)
359
+ echo "⚠️ No auto-fix available for file type: $ext"
360
+ return 1
361
+ ;;
362
+ esac
363
+
364
+ echo ""
365
+ echo "🔍 Re-validating..."
366
+ if node config/hooks/post-edit-pipeline.js "$FILE_PATH" >/dev/null 2>&1; then
367
+ echo "✅ Validation passed"
368
+ return 0
369
+ else
370
+ echo "⚠️ Some issues remain - manual review required"
371
+ return 1
372
+ fi
373
+ }
374
+
375
+ # Main resolution logic
376
+ RESOLVED=false
377
+
378
+ case "$STATUS" in
379
+ "ROOT_WARNING")
380
+ if [ "$AUTO_RESOLVE" = true ] || [ "$RESOLVE_LAST" = true ]; then
381
+ if resolve_root_warning; then
382
+ RESOLVED=true
383
+ fi
384
+ else
385
+ echo "⚠️ Auto-resolve not enabled"
386
+ echo " Run with --auto-resolve to move file automatically"
387
+ echo " Suggested location: $(jq -r '.rootWarning.suggestions[0].location // ""' "$FEEDBACK_FILE")"
388
+ fi
389
+ ;;
390
+ "TDD_VIOLATION")
391
+ if handle_tdd_violation; then
392
+ RESOLVED=true
393
+ fi
394
+ ;;
395
+ "LOW_COVERAGE")
396
+ if resolve_low_coverage; then
397
+ RESOLVED=true
398
+ fi
399
+ ;;
400
+ "RUST_QUALITY")
401
+ if [ "$AUTO_RESOLVE" = true ] || [ "$RESOLVE_LAST" = true ]; then
402
+ if auto_rust_quality; then
403
+ RESOLVED=true
404
+ fi
405
+ else
406
+ echo "⚠️ Auto-resolve not enabled"
407
+ echo " Run with --auto-resolve to apply cargo fmt and clippy --fix"
408
+ fi
409
+ ;;
410
+ "LINT_ISSUES")
411
+ if [ "$AUTO_RESOLVE" = true ] || [ "$RESOLVE_LAST" = true ]; then
412
+ if resolve_lint_issues; then
413
+ RESOLVED=true
414
+ fi
415
+ else
416
+ echo "⚠️ Auto-resolve not enabled"
417
+ echo " Run with --auto-resolve to apply linter auto-fixes"
418
+ fi
419
+ ;;
420
+ *)
421
+ echo "❌ Unhandled feedback status: $STATUS"
422
+ exit 1
423
+ ;;
424
+ esac
425
+
426
+ # Cleanup and publish resolution status
427
+ if [ "$RESOLVED" = true ]; then
428
+ echo ""
429
+ echo "✅ Feedback resolved successfully"
430
+
431
+ # Archive feedback file
432
+ ARCHIVE_DIR=".artifacts/feedback/archive"
433
+ mkdir -p "$ARCHIVE_DIR"
434
+ ARCHIVE_FILE="$ARCHIVE_DIR/$(basename "$FEEDBACK_FILE" .json)-$(date +%s).json"
435
+ mv "$FEEDBACK_FILE" "$ARCHIVE_FILE"
436
+ echo "📦 Feedback archived: $ARCHIVE_FILE"
437
+
438
+ # Publish resolution to Redis
439
+ redis-cli lpush "swarm:skills:sprint-2.2:feedback:resolutions" "{
440
+ \"status\": \"$STATUS\",
441
+ \"file\": \"$FILE_PATH\",
442
+ \"resolved\": true,
443
+ \"timestamp\": $(date +%s),
444
+ \"archive\": \"$ARCHIVE_FILE\"
445
+ }" >/dev/null 2>&1 || true
446
+
447
+ exit 0
448
+ else
449
+ echo ""
450
+ echo "⚠️ Feedback processed but manual action may be required"
451
+ exit 2
452
+ fi
@@ -0,0 +1,154 @@
1
+ #!/bin/bash
2
+
3
+ # Post-Edit Hook Handler - Sprint 2.2
4
+ # Reusable wrapper for post-edit-pipeline.js with automatic feedback capture
5
+ #
6
+ # Usage:
7
+ # ./post-edit-handler.sh <file_path> [--memory-key <key>] [--agent-id <id>] [--coordinator-id <id>]
8
+ #
9
+ # Examples:
10
+ # ./post-edit-handler.sh src/example.js --memory-key "swarm/coder-1/step-2"
11
+ # ./post-edit-handler.sh test.js --agent-id "coder-1" --coordinator-id "coordinator-cfn"
12
+
13
+ set -euo pipefail
14
+
15
+ # Parse arguments
16
+ FILE_PATH=""
17
+ MEMORY_KEY=""
18
+ AGENT_ID=""
19
+ COORDINATOR_ID=""
20
+
21
+ while [[ $# -gt 0 ]]; do
22
+ case $1 in
23
+ --memory-key)
24
+ MEMORY_KEY="$2"
25
+ shift 2
26
+ ;;
27
+ --agent-id)
28
+ AGENT_ID="$2"
29
+ shift 2
30
+ ;;
31
+ --coordinator-id)
32
+ COORDINATOR_ID="$2"
33
+ shift 2
34
+ ;;
35
+ *)
36
+ if [ -z "$FILE_PATH" ]; then
37
+ FILE_PATH="$1"
38
+ fi
39
+ shift
40
+ ;;
41
+ esac
42
+ done
43
+
44
+ # Validate required arguments
45
+ if [ -z "$FILE_PATH" ]; then
46
+ echo "Error: File path required"
47
+ echo "Usage: $0 <file_path> [--memory-key <key>] [--agent-id <id>] [--coordinator-id <id>]"
48
+ exit 1
49
+ fi
50
+
51
+ # Auto-detect agent context from memory key if not provided
52
+ if [ -z "$AGENT_ID" ] && [ -n "$MEMORY_KEY" ]; then
53
+ # Extract agent ID from memory key pattern: swarm/{agentId}/...
54
+ AGENT_ID=$(echo "$MEMORY_KEY" | grep -oP 'swarm/\K[^/]+' || echo "")
55
+ fi
56
+
57
+ # Set default memory key if not provided
58
+ if [ -z "$MEMORY_KEY" ]; then
59
+ MEMORY_KEY="swarm/${AGENT_ID:-unknown}/hook-pipeline"
60
+ fi
61
+
62
+ # Build command arguments
63
+ CMD_ARGS="$FILE_PATH --memory-key $MEMORY_KEY"
64
+ if [ -n "$AGENT_ID" ]; then
65
+ CMD_ARGS="$CMD_ARGS --agent-id $AGENT_ID"
66
+ fi
67
+ if [ -n "$COORDINATOR_ID" ]; then
68
+ CMD_ARGS="$CMD_ARGS --coordinator-id $COORDINATOR_ID"
69
+ fi
70
+
71
+ echo "Executing post-edit pipeline: $FILE_PATH"
72
+ echo "Memory key: $MEMORY_KEY"
73
+ [ -n "$AGENT_ID" ] && echo "Agent ID: $AGENT_ID"
74
+ [ -n "$COORDINATOR_ID" ] && echo "Coordinator ID: $COORDINATOR_ID"
75
+
76
+ # Execute post-edit pipeline
77
+ set +e # Temporarily disable exit on error to capture exit code
78
+ node config/hooks/post-edit-pipeline.js $CMD_ARGS
79
+ EXIT_CODE=$?
80
+ set -e # Re-enable exit on error
81
+
82
+ # Extract feedback from log
83
+ LOG_FILE=".artifacts/logs/post-edit-pipeline.log"
84
+ if [ ! -f "$LOG_FILE" ]; then
85
+ echo "Warning: Log file not found: $LOG_FILE"
86
+ exit $EXIT_CODE
87
+ fi
88
+
89
+ LAST_LOG_ENTRY=$(tail -n 1 "$LOG_FILE")
90
+ STATUS=$(echo "$LAST_LOG_ENTRY" | jq -r '.status // "NO_STATUS"' 2>/dev/null || echo "NO_STATUS")
91
+
92
+ echo "Validation status: $STATUS"
93
+
94
+ # Handle feedback types
95
+ case "$STATUS" in
96
+ "ROOT_WARNING")
97
+ echo "⚠️ ROOT_WARNING detected - automatic resolution available"
98
+ FEEDBACK_DIR=".artifacts/feedback"
99
+ mkdir -p "$FEEDBACK_DIR"
100
+ echo "$LAST_LOG_ENTRY" > "$FEEDBACK_DIR/pending-root-warning.json"
101
+ echo "Feedback saved to: $FEEDBACK_DIR/pending-root-warning.json"
102
+ echo "Run: ./claude/skills/hook-pipeline/feedback-resolver.sh --type ROOT_WARNING --auto-resolve"
103
+ exit 2 # Special exit code for ROOT_WARNING
104
+ ;;
105
+ "TDD_VIOLATION")
106
+ echo "⚠️ TDD_VIOLATION detected - test file missing or incomplete"
107
+ FEEDBACK_DIR=".artifacts/feedback"
108
+ mkdir -p "$FEEDBACK_DIR"
109
+ echo "$LAST_LOG_ENTRY" > "$FEEDBACK_DIR/pending-tdd-violation.json"
110
+ echo "Feedback saved to: $FEEDBACK_DIR/pending-tdd-violation.json"
111
+ echo "Run: ./claude/skills/hook-pipeline/feedback-resolver.sh --type TDD_VIOLATION"
112
+ exit 3 # Special exit code for TDD_VIOLATION
113
+ ;;
114
+ "LOW_COVERAGE")
115
+ echo "⚠️ LOW_COVERAGE detected - test coverage below threshold"
116
+ CURRENT=$(echo "$LAST_LOG_ENTRY" | jq -r '.current // 0')
117
+ REQUIRED=$(echo "$LAST_LOG_ENTRY" | jq -r '.required // 80')
118
+ echo "Current coverage: $CURRENT% (required: $REQUIRED%)"
119
+ FEEDBACK_DIR=".artifacts/feedback"
120
+ mkdir -p "$FEEDBACK_DIR"
121
+ echo "$LAST_LOG_ENTRY" > "$FEEDBACK_DIR/pending-low-coverage.json"
122
+ exit 4 # Special exit code for LOW_COVERAGE
123
+ ;;
124
+ "RUST_QUALITY")
125
+ echo "⚠️ RUST_QUALITY issues detected - run cargo clippy and rustfmt"
126
+ FEEDBACK_DIR=".artifacts/feedback"
127
+ mkdir -p "$FEEDBACK_DIR"
128
+ echo "$LAST_LOG_ENTRY" > "$FEEDBACK_DIR/pending-rust-quality.json"
129
+ echo "Run: ./claude/skills/hook-pipeline/feedback-resolver.sh --type RUST_QUALITY --auto-resolve"
130
+ exit 5 # Special exit code for RUST_QUALITY
131
+ ;;
132
+ "LINT_ISSUES")
133
+ echo "⚠️ LINT_ISSUES detected - run linter auto-fix"
134
+ FEEDBACK_DIR=".artifacts/feedback"
135
+ mkdir -p "$FEEDBACK_DIR"
136
+ echo "$LAST_LOG_ENTRY" > "$FEEDBACK_DIR/pending-lint-issues.json"
137
+ echo "Run: ./claude/skills/hook-pipeline/feedback-resolver.sh --type LINT_ISSUES --auto-resolve"
138
+ exit 6 # Special exit code for LINT_ISSUES
139
+ ;;
140
+ "NO_STATUS"|"SUCCESS")
141
+ echo "✅ Validation passed"
142
+ ;;
143
+ *)
144
+ echo "⚠️ Unknown status: $STATUS"
145
+ ;;
146
+ esac
147
+
148
+ # Publish completion to Redis (if agent context available)
149
+ if [ -n "$AGENT_ID" ]; then
150
+ REDIS_CHANNEL="swarm:skills:sprint-2.2:${AGENT_ID}:hooks"
151
+ redis-cli lpush "$REDIS_CHANNEL" "{\"file\": \"$FILE_PATH\", \"status\": \"$STATUS\", \"timestamp\": $(date +%s)}" >/dev/null 2>&1 || true
152
+ fi
153
+
154
+ exit $EXIT_CODE