claude-flow-novice 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +76 -6
  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,150 @@
1
+ #!/bin/bash
2
+ # Webapp Testing Skill - Initialize Storage
3
+ # Purpose: Create SQLite schema and directory structure for screenshot management
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
9
+ cd "$PROJECT_ROOT"
10
+
11
+ FORCE=false
12
+
13
+ # Parse arguments
14
+ while [[ $# -gt 0 ]]; do
15
+ case $1 in
16
+ --force) FORCE=true; shift ;;
17
+ *) echo "Unknown parameter: $1"; exit 1 ;;
18
+ esac
19
+ done
20
+
21
+ DB_PATH="${HOME}/.claude/memory/adaptive-context.db"
22
+
23
+ echo "Initializing webapp-testing storage..." >&2
24
+
25
+ # Create directory structure
26
+ echo "Creating directory structure..." >&2
27
+ mkdir -p .screenshots/baselines
28
+ mkdir -p .screenshots/current
29
+ mkdir -p .screenshots/diffs
30
+ mkdir -p .screenshots/archive
31
+ echo "✅ Directories created" >&2
32
+
33
+ # Check if tables already exist
34
+ TABLES_EXIST=$(sqlite3 "$DB_PATH" \
35
+ "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('webapp_screenshots', 'screenshot_audit_log');" 2>/dev/null || echo "0")
36
+
37
+ if [ "$TABLES_EXIST" -eq 2 ] && [ "$FORCE" = false ]; then
38
+ echo "⚠️ SQLite tables already exist. Use --force to recreate (will drop existing data)" >&2
39
+ exit 0
40
+ fi
41
+
42
+ if [ "$FORCE" = true ] && [ "$TABLES_EXIST" -gt 0 ]; then
43
+ echo "⚠️ --force flag set. Dropping existing tables..." >&2
44
+ sqlite3 "$DB_PATH" <<EOF
45
+ DROP TABLE IF EXISTS webapp_screenshots;
46
+ DROP TABLE IF EXISTS screenshot_audit_log;
47
+ EOF
48
+ fi
49
+
50
+ # Create SQLite schema
51
+ echo "Creating SQLite schema..." >&2
52
+ sqlite3 "$DB_PATH" <<'EOF'
53
+ -- Main screenshots table
54
+ CREATE TABLE IF NOT EXISTS webapp_screenshots (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ screenshot_key TEXT UNIQUE NOT NULL,
57
+ project TEXT NOT NULL,
58
+ component TEXT NOT NULL,
59
+ viewport TEXT NOT NULL,
60
+ state TEXT NOT NULL,
61
+ variant TEXT NOT NULL DEFAULT 'default',
62
+ file_path TEXT NOT NULL,
63
+ file_hash TEXT NOT NULL,
64
+ baseline BOOLEAN DEFAULT 0,
65
+ captured_at INTEGER NOT NULL,
66
+ task_id TEXT,
67
+ agent_id TEXT,
68
+ metadata TEXT,
69
+ UNIQUE(project, component, viewport, state, variant, baseline)
70
+ );
71
+
72
+ -- Indexes for efficient querying
73
+ CREATE INDEX IF NOT EXISTS idx_baseline ON webapp_screenshots(project, component, viewport, state, variant, baseline);
74
+ CREATE INDEX IF NOT EXISTS idx_task ON webapp_screenshots(task_id);
75
+ CREATE INDEX IF NOT EXISTS idx_component ON webapp_screenshots(project, component);
76
+ CREATE INDEX IF NOT EXISTS idx_captured ON webapp_screenshots(captured_at DESC);
77
+ CREATE INDEX IF NOT EXISTS idx_screenshot_key ON webapp_screenshots(screenshot_key);
78
+
79
+ -- Audit log table
80
+ CREATE TABLE IF NOT EXISTS screenshot_audit_log (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ screenshot_key TEXT NOT NULL,
83
+ action TEXT NOT NULL,
84
+ reason TEXT,
85
+ old_file_hash TEXT,
86
+ new_file_hash TEXT,
87
+ approved_by TEXT,
88
+ created_at INTEGER NOT NULL,
89
+ task_id TEXT,
90
+ metadata TEXT
91
+ );
92
+
93
+ -- Indexes for audit log
94
+ CREATE INDEX IF NOT EXISTS idx_audit_screenshot ON screenshot_audit_log(screenshot_key);
95
+ CREATE INDEX IF NOT EXISTS idx_audit_created ON screenshot_audit_log(created_at DESC);
96
+ CREATE INDEX IF NOT EXISTS idx_audit_task ON screenshot_audit_log(task_id);
97
+ CREATE INDEX IF NOT EXISTS idx_audit_action ON screenshot_audit_log(action);
98
+ EOF
99
+
100
+ echo "✅ SQLite schema created" >&2
101
+
102
+ # Verify tables created
103
+ VERIFY=$(sqlite3 "$DB_PATH" \
104
+ "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('webapp_screenshots', 'screenshot_audit_log');" 2>/dev/null)
105
+
106
+ if [ "$VERIFY" -eq 2 ]; then
107
+ echo "✅ Verification passed: 2 tables created" >&2
108
+ else
109
+ echo "❌ Verification failed: Expected 2 tables, found $VERIFY" >&2
110
+ exit 1
111
+ fi
112
+
113
+ # Create .gitignore for ephemeral directories
114
+ cat > .screenshots/.gitignore <<'EOF'
115
+ # Ephemeral screenshot directories (not version controlled)
116
+ current/
117
+ diffs/
118
+ archive/
119
+
120
+ # Version control baselines only
121
+ !baselines/
122
+ EOF
123
+
124
+ echo "✅ .gitignore created for .screenshots/" >&2
125
+
126
+ # Output summary
127
+ cat <<EOF
128
+
129
+ ✅ Webapp-testing storage initialized successfully
130
+
131
+ Directory Structure:
132
+ .screenshots/
133
+ ├── baselines/ (version controlled - reference images)
134
+ ├── current/ (ephemeral - test captures)
135
+ ├── diffs/ (ephemeral - comparison outputs)
136
+ └── archive/ (ephemeral - historical captures)
137
+
138
+ SQLite Tables:
139
+ - webapp_screenshots (screenshot metadata and file references)
140
+ - screenshot_audit_log (baseline change audit trail)
141
+
142
+ Database Location:
143
+ ${DB_PATH}
144
+
145
+ Next Steps:
146
+ 1. Capture screenshot: ./.claude/skills/cfn-webapp-testing/capture-screenshot.sh --help
147
+ 2. Set baseline: ./.claude/skills/cfn-webapp-testing/set-baseline.sh --help
148
+ 3. Compare screenshots: ./.claude/skills/cfn-webapp-testing/compare-screenshots.sh --help
149
+
150
+ EOF
@@ -0,0 +1,196 @@
1
+ #!/bin/bash
2
+ # Webapp Testing Skill - Set Baseline
3
+ # Purpose: Set a captured screenshot as the baseline reference for future comparisons
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
9
+ cd "$PROJECT_ROOT"
10
+
11
+ REASON=""
12
+
13
+ # Parse arguments
14
+ while [[ $# -gt 0 ]]; do
15
+ case $1 in
16
+ --screenshot-key) SCREENSHOT_KEY="$2"; shift 2 ;;
17
+ --reason) REASON="$2"; shift 2 ;;
18
+ --current-file) CURRENT_FILE="$2"; shift 2 ;; # Optional: explicit file path
19
+ *) echo "Unknown parameter: $1"; exit 1 ;;
20
+ esac
21
+ done
22
+
23
+ # Validate required parameters
24
+ if [ -z "$SCREENSHOT_KEY" ]; then
25
+ echo "Error: Missing required parameter --screenshot-key" >&2
26
+ echo "Usage: $0 --screenshot-key <key> [--reason <reason>] [--current-file <path>]" >&2
27
+ echo "" >&2
28
+ echo "Required:" >&2
29
+ echo " --screenshot-key Screenshot identifier (e.g., 'auth-system/login-form/1920x1080/default/light-mode')" >&2
30
+ echo "" >&2
31
+ echo "Optional:" >&2
32
+ echo " --reason Reason for setting baseline (for audit trail)" >&2
33
+ echo " --current-file Explicit path to screenshot file (default: auto-detect latest)" >&2
34
+ exit 1
35
+ fi
36
+
37
+ DB_PATH="${HOME}/.claude/memory/adaptive-context.db"
38
+
39
+ # Parse screenshot key components
40
+ IFS='/' read -r PROJECT COMPONENT VIEWPORT STATE VARIANT <<< "$SCREENSHOT_KEY"
41
+
42
+ if [ -z "$PROJECT" ] || [ -z "$COMPONENT" ] || [ -z "$VIEWPORT" ] || [ -z "$STATE" ] || [ -z "$VARIANT" ]; then
43
+ echo "Error: Invalid screenshot key format. Expected: project/component/viewport/state/variant" >&2
44
+ exit 1
45
+ fi
46
+
47
+ # Get current screenshot from SQLite (if not explicitly provided)
48
+ if [ -z "$CURRENT_FILE" ]; then
49
+ CURRENT_PATH=$(sqlite3 "$DB_PATH" \
50
+ "SELECT file_path FROM webapp_screenshots WHERE screenshot_key = '${SCREENSHOT_KEY}' AND baseline = 0 ORDER BY captured_at DESC LIMIT 1" 2>/dev/null)
51
+
52
+ if [ -z "$CURRENT_PATH" ]; then
53
+ echo "Error: No current screenshot found for key: $SCREENSHOT_KEY" >&2
54
+ echo "Hint: Run capture-screenshot.sh first to create a capture" >&2
55
+ exit 1
56
+ fi
57
+ else
58
+ CURRENT_PATH="$CURRENT_FILE"
59
+ fi
60
+
61
+ # Verify current screenshot exists
62
+ if [ ! -f "$CURRENT_PATH" ]; then
63
+ echo "Error: Current screenshot file not found: $CURRENT_PATH" >&2
64
+ exit 1
65
+ fi
66
+
67
+ # Create baseline directory structure
68
+ BASELINE_DIR=".screenshots/baselines/${PROJECT}/${COMPONENT}/${VIEWPORT}/${STATE}"
69
+ mkdir -p "$BASELINE_DIR"
70
+ BASELINE_PATH="${BASELINE_DIR}/${VARIANT}.png"
71
+
72
+ echo "Setting baseline:" >&2
73
+ echo " Source: $CURRENT_PATH" >&2
74
+ echo " Baseline: $BASELINE_PATH" >&2
75
+
76
+ # Check if baseline already exists
77
+ if [ -f "$BASELINE_PATH" ]; then
78
+ echo "Warning: Baseline already exists at $BASELINE_PATH" >&2
79
+ echo "This will overwrite the existing baseline. Continue? (y/n)" >&2
80
+ read -r CONFIRM
81
+ if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
82
+ echo "Aborted" >&2
83
+ exit 1
84
+ fi
85
+
86
+ # Archive old baseline
87
+ ARCHIVE_DIR=".screenshots/archive/$(date +%Y-%m)"
88
+ ARCHIVE_PATH="${ARCHIVE_DIR}/${PROJECT}/${COMPONENT}/${VIEWPORT}/${STATE}/${VARIANT}_$(date +%Y%m%d%H%M%S).png"
89
+ mkdir -p "$(dirname "$ARCHIVE_PATH")"
90
+ cp "$BASELINE_PATH" "$ARCHIVE_PATH"
91
+ echo " Archived: $ARCHIVE_PATH" >&2
92
+
93
+ # Get old hash for audit log
94
+ OLD_FILE_HASH=$(sha256sum "$BASELINE_PATH" | awk '{print $1}')
95
+ else
96
+ OLD_FILE_HASH=""
97
+ fi
98
+
99
+ # Copy to baselines directory (remove timestamp from filename)
100
+ cp "$CURRENT_PATH" "$BASELINE_PATH"
101
+
102
+ # Calculate file hash
103
+ FILE_HASH=$(sha256sum "$BASELINE_PATH" | awk '{print $1}')
104
+
105
+ # Get metadata from current screenshot
106
+ METADATA=$(sqlite3 "$DB_PATH" \
107
+ "SELECT metadata FROM webapp_screenshots WHERE file_path = '${CURRENT_PATH}' LIMIT 1" 2>/dev/null || echo '{}')
108
+
109
+ TASK_ID=$(sqlite3 "$DB_PATH" \
110
+ "SELECT task_id FROM webapp_screenshots WHERE file_path = '${CURRENT_PATH}' LIMIT 1" 2>/dev/null || echo '')
111
+
112
+ AGENT_ID=$(sqlite3 "$DB_PATH" \
113
+ "SELECT agent_id FROM webapp_screenshots WHERE file_path = '${CURRENT_PATH}' LIMIT 1" 2>/dev/null || echo '')
114
+
115
+ # Update SQLite (set as baseline)
116
+ # First check if baseline entry already exists
117
+ BASELINE_EXISTS=$(sqlite3 "$DB_PATH" \
118
+ "SELECT COUNT(*) FROM webapp_screenshots WHERE screenshot_key = '${SCREENSHOT_KEY}' AND baseline = 1" 2>/dev/null || echo "0")
119
+
120
+ if [ "$BASELINE_EXISTS" -gt 0 ]; then
121
+ # Update existing baseline
122
+ sqlite3 "$DB_PATH" <<EOF
123
+ UPDATE webapp_screenshots
124
+ SET file_path = '${BASELINE_PATH}',
125
+ file_hash = 'sha256:${FILE_HASH}',
126
+ captured_at = $(date +%s),
127
+ task_id = '${TASK_ID}',
128
+ agent_id = '${AGENT_ID}',
129
+ metadata = '${METADATA}'
130
+ WHERE screenshot_key = '${SCREENSHOT_KEY}' AND baseline = 1;
131
+ EOF
132
+ ACTION="updated"
133
+ else
134
+ # Insert new baseline entry
135
+ sqlite3 "$DB_PATH" <<EOF
136
+ INSERT INTO webapp_screenshots (
137
+ screenshot_key, project, component, viewport, state, variant,
138
+ file_path, file_hash, baseline, captured_at, task_id, agent_id, metadata
139
+ ) VALUES (
140
+ '${SCREENSHOT_KEY}',
141
+ '${PROJECT}',
142
+ '${COMPONENT}',
143
+ '${VIEWPORT}',
144
+ '${STATE}',
145
+ '${VARIANT}',
146
+ '${BASELINE_PATH}',
147
+ 'sha256:${FILE_HASH}',
148
+ 1,
149
+ $(date +%s),
150
+ '${TASK_ID}',
151
+ '${AGENT_ID}',
152
+ '${METADATA}'
153
+ );
154
+ EOF
155
+ ACTION="created"
156
+ fi
157
+
158
+ # Insert audit log entry
159
+ REASON_ESCAPED=$(echo "$REASON" | sed "s/'/''/g") # Escape single quotes for SQL
160
+ sqlite3 "$DB_PATH" <<EOF
161
+ INSERT INTO screenshot_audit_log (
162
+ screenshot_key, action, reason, old_file_hash, new_file_hash, approved_by, created_at, task_id
163
+ ) VALUES (
164
+ '${SCREENSHOT_KEY}',
165
+ '${ACTION}',
166
+ '${REASON_ESCAPED}',
167
+ ${OLD_FILE_HASH:+'sha256:$OLD_FILE_HASH'}${OLD_FILE_HASH:-NULL},
168
+ 'sha256:${FILE_HASH}',
169
+ '${AGENT_ID:-system}',
170
+ $(date +%s),
171
+ '${TASK_ID}'
172
+ );
173
+ EOF
174
+
175
+ # Clear Redis baseline cache
176
+ redis-cli del "screenshot:baseline:${SCREENSHOT_KEY}" > /dev/null 2>&1 || \
177
+ echo "Warning: Failed to clear Redis cache" >&2
178
+
179
+ # Cache new baseline hash (TTL: 24 hours)
180
+ redis-cli setex "screenshot:baseline:${SCREENSHOT_KEY}" 86400 "sha256:${FILE_HASH}" > /dev/null 2>&1
181
+
182
+ # Output result
183
+ cat <<EOF | jq '.'
184
+ {
185
+ "status": "baseline-set",
186
+ "action": "${ACTION}",
187
+ "screenshot_key": "${SCREENSHOT_KEY}",
188
+ "baseline_path": "${BASELINE_PATH}",
189
+ "file_hash": "sha256:${FILE_HASH}",
190
+ "reason": "${REASON}",
191
+ "archived_previous": ${OLD_FILE_HASH:+true}${OLD_FILE_HASH:-false},
192
+ "created_at": $(date +%s)
193
+ }
194
+ EOF
195
+
196
+ echo "✅ Baseline ${ACTION}: $SCREENSHOT_KEY" >&2
@@ -0,0 +1,233 @@
1
+ #!/bin/bash
2
+ # Webapp Testing Skill - Test Suite
3
+ # Purpose: Validate webapp-testing skill functionality
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
9
+ cd "$PROJECT_ROOT"
10
+
11
+ # Colors for output
12
+ RED='\033[0;31m'
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ NC='\033[0m' # No Color
16
+
17
+ TESTS_PASSED=0
18
+ TESTS_FAILED=0
19
+ TESTS_SKIPPED=0
20
+
21
+ # Test result tracking
22
+ test_result() {
23
+ local TEST_NAME="$1"
24
+ local STATUS="$2"
25
+ local MESSAGE="$3"
26
+
27
+ case "$STATUS" in
28
+ PASS)
29
+ echo -e "${GREEN}✓${NC} $TEST_NAME"
30
+ TESTS_PASSED=$((TESTS_PASSED + 1))
31
+ ;;
32
+ FAIL)
33
+ echo -e "${RED}✗${NC} $TEST_NAME: $MESSAGE"
34
+ TESTS_FAILED=$((TESTS_FAILED + 1))
35
+ ;;
36
+ SKIP)
37
+ echo -e "${YELLOW}⊘${NC} $TEST_NAME: $MESSAGE"
38
+ TESTS_SKIPPED=$((TESTS_SKIPPED + 1))
39
+ ;;
40
+ esac
41
+ }
42
+
43
+ echo "=========================================="
44
+ echo "Webapp Testing Skill - Test Suite"
45
+ echo "=========================================="
46
+ echo ""
47
+
48
+ # Test 1: Storage Initialization
49
+ echo "Test 1: Storage Initialization"
50
+ if "$SCRIPT_DIR/init-storage.sh" --force >/dev/null 2>&1; then
51
+ if [ -d ".screenshots/baselines" ] && [ -d ".screenshots/current" ]; then
52
+ test_result "Storage initialization" "PASS"
53
+ else
54
+ test_result "Storage initialization" "FAIL" "Directories not created"
55
+ fi
56
+ else
57
+ test_result "Storage initialization" "FAIL" "init-storage.sh failed"
58
+ fi
59
+
60
+ # Test 2: SQLite Schema Validation
61
+ echo "Test 2: SQLite Schema Validation"
62
+ DB_PATH="${HOME}/.claude/memory/adaptive-context.db"
63
+ TABLE_COUNT=$(sqlite3 "$DB_PATH" \
64
+ "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('webapp_screenshots', 'screenshot_audit_log');" 2>/dev/null)
65
+
66
+ if [ "$TABLE_COUNT" -eq 2 ]; then
67
+ test_result "SQLite schema creation" "PASS"
68
+ else
69
+ test_result "SQLite schema creation" "FAIL" "Expected 2 tables, found $TABLE_COUNT"
70
+ fi
71
+
72
+ # Test 3: Playwright Availability
73
+ echo "Test 3: Playwright Availability"
74
+ if command -v npx >/dev/null 2>&1 && npx playwright --version >/dev/null 2>&1; then
75
+ test_result "Playwright installation" "PASS"
76
+ else
77
+ test_result "Playwright installation" "SKIP" "Playwright not installed (run: npx playwright install chromium)"
78
+ fi
79
+
80
+ # Test 4: Node Dependencies Check
81
+ echo "Test 4: Node Dependencies Check"
82
+ NODE_DEPS_MISSING=0
83
+ for PKG in playwright pngjs pixelmatch; do
84
+ if ! node -e "require('$PKG')" 2>/dev/null; then
85
+ test_result "$PKG dependency" "SKIP" "Not installed (run: npm install $PKG)"
86
+ NODE_DEPS_MISSING=1
87
+ else
88
+ test_result "$PKG dependency" "PASS"
89
+ fi
90
+ done
91
+
92
+ # Test 5: Redis Connectivity
93
+ echo "Test 5: Redis Connectivity"
94
+ if redis-cli ping >/dev/null 2>&1; then
95
+ test_result "Redis connectivity" "PASS"
96
+ else
97
+ test_result "Redis connectivity" "SKIP" "Redis not running"
98
+ fi
99
+
100
+ # Test 6: Screenshot Capture (requires test server)
101
+ echo "Test 6: Screenshot Capture (Integration Test)"
102
+ TEST_URL="https://example.com" # Use public URL for testing
103
+ TASK_ID="test-$(date +%s)"
104
+ AGENT_ID="test-agent"
105
+
106
+ if [ "$NODE_DEPS_MISSING" -eq 0 ]; then
107
+ CAPTURE_RESULT=$("$SCRIPT_DIR/capture-screenshot.sh" \
108
+ --project "test-project" \
109
+ --component "test-component" \
110
+ --viewport "800x600" \
111
+ --state "default" \
112
+ --variant "light-mode" \
113
+ --url "$TEST_URL" \
114
+ --task-id "$TASK_ID" \
115
+ --agent-id "$AGENT_ID" 2>&1)
116
+
117
+ if [ $? -eq 0 ] && echo "$CAPTURE_RESULT" | jq -e '.screenshot_key' >/dev/null 2>&1; then
118
+ SCREENSHOT_KEY=$(echo "$CAPTURE_RESULT" | jq -r '.screenshot_key')
119
+ test_result "Screenshot capture" "PASS"
120
+ else
121
+ test_result "Screenshot capture" "FAIL" "Capture failed or invalid output"
122
+ fi
123
+ else
124
+ test_result "Screenshot capture" "SKIP" "Node dependencies missing"
125
+ fi
126
+
127
+ # Test 7: Baseline Setting
128
+ echo "Test 7: Baseline Setting"
129
+ if [ -n "$SCREENSHOT_KEY" ]; then
130
+ BASELINE_RESULT=$("$SCRIPT_DIR/set-baseline.sh" \
131
+ --screenshot-key "$SCREENSHOT_KEY" \
132
+ --reason "Test baseline" 2>&1)
133
+
134
+ if [ $? -eq 0 ] && echo "$BASELINE_RESULT" | jq -e '.status' >/dev/null 2>&1; then
135
+ test_result "Baseline setting" "PASS"
136
+ else
137
+ test_result "Baseline setting" "FAIL" "set-baseline.sh failed"
138
+ fi
139
+ else
140
+ test_result "Baseline setting" "SKIP" "No screenshot to baseline"
141
+ fi
142
+
143
+ # Test 8: Screenshot Comparison
144
+ echo "Test 8: Screenshot Comparison"
145
+ if [ -n "$SCREENSHOT_KEY" ]; then
146
+ # Capture second screenshot for comparison
147
+ CAPTURE2_RESULT=$("$SCRIPT_DIR/capture-screenshot.sh" \
148
+ --project "test-project" \
149
+ --component "test-component" \
150
+ --viewport "800x600" \
151
+ --state "default" \
152
+ --variant "light-mode" \
153
+ --url "$TEST_URL" \
154
+ --task-id "$TASK_ID" \
155
+ --agent-id "$AGENT_ID" 2>&1)
156
+
157
+ if [ $? -eq 0 ]; then
158
+ COMPARE_RESULT=$("$SCRIPT_DIR/compare-screenshots.sh" \
159
+ --screenshot-key "$SCREENSHOT_KEY" \
160
+ --task-id "$TASK_ID" \
161
+ --threshold 0.95 2>&1)
162
+
163
+ if [ $? -eq 0 ] && echo "$COMPARE_RESULT" | jq -e '.similarity_score' >/dev/null 2>&1; then
164
+ SIMILARITY=$(echo "$COMPARE_RESULT" | jq -r '.similarity_score')
165
+ if (( $(echo "$SIMILARITY >= 0.95" | bc -l) )); then
166
+ test_result "Screenshot comparison" "PASS"
167
+ else
168
+ test_result "Screenshot comparison" "FAIL" "Low similarity: $SIMILARITY"
169
+ fi
170
+ else
171
+ test_result "Screenshot comparison" "FAIL" "compare-screenshots.sh failed"
172
+ fi
173
+ else
174
+ test_result "Screenshot comparison" "SKIP" "Second capture failed"
175
+ fi
176
+ else
177
+ test_result "Screenshot comparison" "SKIP" "No screenshot to compare"
178
+ fi
179
+
180
+ # Test 9: SQLite Data Persistence
181
+ echo "Test 9: SQLite Data Persistence"
182
+ SCREENSHOT_COUNT=$(sqlite3 "$DB_PATH" \
183
+ "SELECT COUNT(*) FROM webapp_screenshots WHERE project = 'test-project';" 2>/dev/null)
184
+
185
+ if [ "$SCREENSHOT_COUNT" -gt 0 ]; then
186
+ test_result "SQLite data persistence" "PASS"
187
+ else
188
+ test_result "SQLite data persistence" "FAIL" "No test screenshots in database"
189
+ fi
190
+
191
+ # Test 10: Redis Queue Integration
192
+ echo "Test 10: Redis Queue Integration"
193
+ if [ -n "$TASK_ID" ]; then
194
+ QUEUE_LENGTH=$(redis-cli llen "screenshot:queue:${TASK_ID}" 2>/dev/null || echo "0")
195
+ if [ "$QUEUE_LENGTH" -gt 0 ]; then
196
+ test_result "Redis queue integration" "PASS"
197
+ else
198
+ test_result "Redis queue integration" "SKIP" "Redis queue empty (may have been processed)"
199
+ fi
200
+ else
201
+ test_result "Redis queue integration" "SKIP" "No task ID available"
202
+ fi
203
+
204
+ # Cleanup test data
205
+ echo ""
206
+ echo "Cleaning up test data..."
207
+ if [ -n "$SCREENSHOT_KEY" ]; then
208
+ sqlite3 "$DB_PATH" "DELETE FROM webapp_screenshots WHERE project = 'test-project';" 2>/dev/null
209
+ sqlite3 "$DB_PATH" "DELETE FROM screenshot_audit_log WHERE screenshot_key LIKE 'test-project/%';" 2>/dev/null
210
+ rm -rf .screenshots/baselines/test-project 2>/dev/null
211
+ rm -rf .screenshots/current/test-project 2>/dev/null
212
+ rm -rf .screenshots/diffs/"$TASK_ID" 2>/dev/null
213
+ redis-cli del "screenshot:queue:${TASK_ID}" >/dev/null 2>&1
214
+ echo "✓ Test data cleaned"
215
+ fi
216
+
217
+ # Summary
218
+ echo ""
219
+ echo "=========================================="
220
+ echo "Test Summary"
221
+ echo "=========================================="
222
+ echo -e "${GREEN}Passed:${NC} $TESTS_PASSED"
223
+ echo -e "${RED}Failed:${NC} $TESTS_FAILED"
224
+ echo -e "${YELLOW}Skipped:${NC} $TESTS_SKIPPED"
225
+ echo ""
226
+
227
+ if [ "$TESTS_FAILED" -eq 0 ]; then
228
+ echo -e "${GREEN}✓ All tests passed${NC}"
229
+ exit 0
230
+ else
231
+ echo -e "${RED}✗ Some tests failed${NC}"
232
+ exit 1
233
+ fi
package/README.md CHANGED
@@ -9,16 +9,28 @@ A production-ready AI agent orchestration system with autonomous self-correcting
9
9
  ## 🚀 Quick Start
10
10
 
11
11
  ```bash
12
- # Install
12
+ # 1. Install package (automatically initializes CFN files)
13
13
  npm install claude-flow-novice
14
14
 
15
- # Execute CFN Loop for complex features
15
+ # 2. Activate CFN instructions for CLI agents
16
+ cp CFN-CLAUDE.md CLAUDE.md
17
+
18
+ # 3. Execute CFN Loop for complex features
16
19
  npx cfn-loop "Implement JWT authentication system" --mode=standard
17
20
 
18
21
  # Or spawn agents directly
19
22
  npx cfn-spawn backend-dev --task-id auth-task
20
23
  ```
21
24
 
25
+ **What happens on install**:
26
+ - Copies 23 agents to `.claude/agents/cfn-dev-team/`
27
+ - Copies 43 skills to `.claude/skills/cfn-*/`
28
+ - Copies 7 hooks to `.claude/hooks/cfn-*`
29
+ - Copies 45+ commands to `.claude/commands/cfn/`
30
+ - Copies `CFN-CLAUDE.md` reference file
31
+
32
+ **Important**: CLI-spawned agents read instructions from `CLAUDE.md` in your project root. Copy `CFN-CLAUDE.md` → `CLAUDE.md` to activate CFN workflows.
33
+
22
34
  ## ✨ What Makes CFN v3 Different
23
35
 
24
36
  **Self-Correcting Workflows** - Automatic iteration until quality gates met (≥0.75 confidence, ≥0.90 consensus)
@@ -410,6 +422,43 @@ cfn-redis # Redis coordination utilities
410
422
  # Hook pipeline orchestration
411
423
  ```
412
424
 
425
+ ### Complexity Analysis Tools
426
+
427
+ **Built-in Code Quality Monitoring**
428
+
429
+ **Simple Complexity Analyzer** (~23ms)
430
+ - Fast bash script analyzer
431
+ - Counts decision points (if/loops/case)
432
+ - Ratings: Simple (<10) → Very Complex (≥40)
433
+
434
+ **Per-Function Analyzer**
435
+ - Function-level complexity breakdown
436
+ - Identifies specific refactor targets
437
+ - Detailed reporting per method
438
+
439
+ **Lizard (Professional Multi-Language)**
440
+ - Auto-installed during npm install
441
+ - Supports 20+ languages (JS/TS/Python/Java/Go/etc)
442
+ - Industry-standard McCabe complexity metrics
443
+
444
+ **Automated Monitoring**
445
+ - Triggers on files >200 lines during post-edit
446
+ - Warning at complexity 30-39
447
+ - Critical at complexity ≥40 (auto-spawns refactor agent)
448
+
449
+ ```bash
450
+ # Quick analysis
451
+ ./tools/simple-complexity.sh script.sh
452
+
453
+ # Function-level breakdown
454
+ ./tools/calculate-complexity.sh script.sh
455
+
456
+ # Multi-language professional analysis
457
+ lizard src/module.ts --CCN 30
458
+ ```
459
+
460
+ **See:** `readme/logs-tools.md` for complete documentation
461
+
413
462
  ### Templates & Patterns
414
463
 
415
464
  - Agent creation templates (simple, standard, advanced)