claude-flow-novice 2.15.5 → 2.15.6

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 (440) hide show
  1. package/.claude/cfn-extras/.gs-api-quota.json +16 -0
  2. package/.claude/cfn-extras/.gs-progress-state.json +22 -0
  3. package/.claude/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
  4. package/.claude/cfn-extras/agents/google-sheets/README.md +114 -0
  5. package/.claude/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
  6. package/.claude/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
  7. package/.claude/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
  8. package/.claude/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
  9. package/.claude/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
  10. package/.claude/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
  11. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
  12. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
  13. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
  14. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
  15. package/.claude/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
  16. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
  17. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
  18. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
  19. package/.claude/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
  20. package/.claude/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
  21. package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
  22. package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
  23. package/.claude/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
  24. package/.claude/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
  25. package/.claude/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
  26. package/.claude/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
  27. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
  28. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
  29. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
  30. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
  31. package/.claude/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
  32. package/.claude/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
  33. package/.claude/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
  34. package/.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
  35. package/.claude/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
  36. package/.claude/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
  37. package/.claude/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
  38. package/.claude/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
  39. package/.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
  40. package/.claude/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
  41. package/.claude/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
  42. package/.claude/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
  43. package/.claude/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
  44. package/.claude/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
  45. package/.claude/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
  46. package/.claude/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
  47. package/.claude/commands/cfn-context.md +10 -0
  48. package/.claude/commands/cfn-loop-cli.md +36 -15
  49. package/.claude/commands/google-sheets/google-sheets-loop.md +289 -0
  50. package/.claude/skills/cfn-agent-selector/SKILL.md +143 -0
  51. package/.claude/skills/cfn-agent-selector/select-agents.sh +94 -0
  52. package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
  53. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
  54. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
  55. package/.claude/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
  56. package/.claude/skills/cfn-docker-redis-coordination/README.md +294 -0
  57. package/.claude/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
  58. package/.claude/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
  59. package/.claude/skills/cfn-docker-redis-coordination/package.json +40 -0
  60. package/.claude/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
  61. package/.claude/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
  62. package/.claude/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
  63. package/.claude/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
  64. package/.claude/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
  65. package/.claude/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
  66. package/.claude/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
  67. package/.claude/skills/cfn-loop-orchestration/README.md +149 -41
  68. package/.claude/skills/cfn-loop-orchestration/jest.config.js +67 -0
  69. package/.claude/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
  70. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +91 -8
  71. package/.claude/skills/cfn-loop-orchestration/package-lock.json +5470 -0
  72. package/.claude/skills/cfn-loop-orchestration/package.json +49 -0
  73. package/.claude/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
  74. package/.claude/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
  75. package/.claude/skills/cfn-loop-orchestration/src/index.ts +14 -0
  76. package/.claude/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
  77. package/.claude/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
  78. package/.claude/skills/cfn-loop-orchestration/src/types.ts +188 -0
  79. package/.claude/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
  80. package/.claude/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
  81. package/.claude/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
  82. package/.claude/skills/cfn-loop-orchestration/tsconfig.json +54 -0
  83. package/.claude/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
  84. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
  85. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
  86. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
  87. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
  88. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
  89. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
  90. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
  91. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
  92. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
  93. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
  94. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
  95. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
  96. package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
  97. package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
  98. package/.claude/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
  99. package/.claude/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
  100. package/.claude/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
  101. package/.claude/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
  102. package/.claude/skills/cfn-redis-coordination/dist/index.js +114 -0
  103. package/.claude/skills/cfn-redis-coordination/dist/index.js.map +1 -0
  104. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
  105. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
  106. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
  107. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
  108. package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
  109. package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
  110. package/.claude/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
  111. package/.claude/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
  112. package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
  113. package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
  114. package/.claude/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
  115. package/.claude/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
  116. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
  117. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
  118. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
  119. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
  120. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
  121. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
  122. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
  123. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
  124. package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
  125. package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
  126. package/.claude/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
  127. package/.claude/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
  128. package/.claude/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
  129. package/.claude/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
  130. package/.claude/skills/cfn-redis-coordination/dist/types.js +81 -0
  131. package/.claude/skills/cfn-redis-coordination/dist/types.js.map +1 -0
  132. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
  133. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
  134. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
  135. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
  136. package/.claude/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
  137. package/.claude/skills/cfn-redis-coordination/jest.config.js +23 -0
  138. package/.claude/skills/cfn-redis-coordination/package-lock.json +5272 -0
  139. package/.claude/skills/cfn-redis-coordination/package.json +45 -0
  140. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  141. package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  142. package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  143. package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  144. package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  145. package/.claude/skills/cfn-redis-coordination/src/index.ts +82 -0
  146. package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  147. package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  148. package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  149. package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  150. package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  151. package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  152. package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  153. package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  154. package/.claude/skills/cfn-redis-coordination/src/types.ts +235 -0
  155. package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  156. package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  157. package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  158. package/.claude/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  159. package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  160. package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  161. package/.claude/skills/cfn-redis-coordination/tsconfig.json +31 -0
  162. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +172 -2
  163. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +1 -1
  164. package/claude-assets/agents/custom/cfn-redis-operations.md +530 -0
  165. package/claude-assets/agents/custom/cfn-system-expert.md +77 -0
  166. package/claude-assets/cfn-extras/.gs-api-quota.json +16 -0
  167. package/claude-assets/cfn-extras/.gs-progress-state.json +22 -0
  168. package/claude-assets/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
  169. package/claude-assets/cfn-extras/agents/google-sheets/README.md +114 -0
  170. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
  171. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
  172. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
  173. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
  174. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
  175. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
  176. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
  177. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
  178. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
  179. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
  180. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
  181. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
  182. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
  183. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
  184. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
  185. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
  186. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
  187. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
  188. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
  189. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
  190. package/claude-assets/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
  191. package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
  192. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
  193. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
  194. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
  195. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
  196. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
  197. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
  198. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
  199. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
  200. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
  201. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
  202. package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
  203. package/claude-assets/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
  204. package/claude-assets/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
  205. package/claude-assets/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
  206. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
  207. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
  208. package/claude-assets/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
  209. package/claude-assets/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
  210. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
  211. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
  212. package/claude-assets/commands/cfn-context.md +10 -0
  213. package/claude-assets/commands/cfn-loop-cli.md +36 -15
  214. package/claude-assets/commands/google-sheets/google-sheets-loop.md +289 -0
  215. package/claude-assets/hooks/cfn-pre-execution/SESSION_START_README.md +87 -0
  216. package/claude-assets/hooks/cfn-pre-execution/TEST_SESSION_START.md +128 -0
  217. package/claude-assets/hooks/cfn-pre-execution/session-start-context.sh +111 -0
  218. package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_EXAMPLE.md +209 -0
  219. package/claude-assets/skills/cfn-agent-selection-with-fallback/README.md +130 -0
  220. package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +243 -0
  221. package/claude-assets/skills/cfn-agent-selection-with-fallback/agent-mappings.json +142 -0
  222. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +173 -0
  223. package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +71 -0
  224. package/claude-assets/skills/cfn-agent-selection-with-fallback/test-agent-selection.sh +282 -0
  225. package/claude-assets/skills/cfn-agent-selector/SKILL.md +143 -0
  226. package/claude-assets/skills/cfn-agent-selector/select-agents.sh +94 -0
  227. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
  228. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
  229. package/claude-assets/skills/cfn-docker-coordination/.eslintrc.json +33 -0
  230. package/claude-assets/skills/cfn-docker-coordination/README.md +349 -0
  231. package/claude-assets/skills/cfn-docker-coordination/docker-helpers.sh +433 -0
  232. package/claude-assets/skills/cfn-docker-coordination/jest.config.js +25 -0
  233. package/claude-assets/skills/cfn-docker-coordination/package-lock.json +6827 -0
  234. package/claude-assets/skills/cfn-docker-coordination/package.json +38 -0
  235. package/claude-assets/skills/cfn-docker-coordination/src/agent-container.ts +471 -0
  236. package/claude-assets/skills/cfn-docker-coordination/src/docker-client.ts +483 -0
  237. package/claude-assets/skills/cfn-docker-coordination/src/health-checker.ts +418 -0
  238. package/claude-assets/skills/cfn-docker-coordination/src/index.ts +45 -0
  239. package/claude-assets/skills/cfn-docker-coordination/src/network-manager.ts +377 -0
  240. package/claude-assets/skills/cfn-docker-coordination/src/types.ts +412 -0
  241. package/claude-assets/skills/cfn-docker-coordination/src/volume-manager.ts +389 -0
  242. package/claude-assets/skills/cfn-docker-coordination/tests/agent-container.test.ts +379 -0
  243. package/claude-assets/skills/cfn-docker-coordination/tests/docker-client.test.ts +345 -0
  244. package/claude-assets/skills/cfn-docker-coordination/tests/health-checker.test.ts +535 -0
  245. package/claude-assets/skills/cfn-docker-coordination/tests/integration.test.ts +193 -0
  246. package/claude-assets/skills/cfn-docker-coordination/tests/network-manager.test.ts +352 -0
  247. package/claude-assets/skills/cfn-docker-coordination/tests/setup.ts +36 -0
  248. package/claude-assets/skills/cfn-docker-coordination/tsconfig.json +29 -0
  249. package/claude-assets/skills/cfn-docker-logging/INTEGRATION.md +268 -0
  250. package/claude-assets/skills/cfn-docker-logging/SAMPLE_OUTPUTS.md +237 -0
  251. package/claude-assets/skills/cfn-docker-logging/SKILL.md +442 -0
  252. package/claude-assets/skills/cfn-docker-logging/capture-container-logs.sh +120 -0
  253. package/claude-assets/skills/cfn-docker-logging/enable-logging.sh +430 -0
  254. package/claude-assets/skills/cfn-docker-logging/init-hybrid-logging.sh +210 -0
  255. package/claude-assets/skills/cfn-docker-logging/queries/analytics-summary.sh +87 -0
  256. package/claude-assets/skills/cfn-docker-logging/queries/query-agent-timeline.sh +51 -0
  257. package/claude-assets/skills/cfn-docker-logging/queries/query-consensus-history.sh +56 -0
  258. package/claude-assets/skills/cfn-docker-logging/queries/query-coordination-timeline.sh +39 -0
  259. package/claude-assets/skills/cfn-docker-logging/queries/query-failed-containers.sh +40 -0
  260. package/claude-assets/skills/cfn-docker-logging/queries/query-gate-checks.sh +39 -0
  261. package/claude-assets/skills/cfn-docker-logging/schema.sql +111 -0
  262. package/claude-assets/skills/cfn-docker-logging/sqlite-helpers.sh +240 -0
  263. package/claude-assets/skills/cfn-docker-logging/test-hybrid-logging.sh +331 -0
  264. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
  265. package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
  266. package/claude-assets/skills/cfn-docker-redis-coordination/README.md +294 -0
  267. package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
  268. package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
  269. package/claude-assets/skills/cfn-docker-redis-coordination/package.json +40 -0
  270. package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
  271. package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
  272. package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
  273. package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
  274. package/claude-assets/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
  275. package/claude-assets/skills/cfn-error-logging/.eslintrc.json +57 -0
  276. package/claude-assets/skills/cfn-error-logging/.prettierrc.json +10 -0
  277. package/claude-assets/skills/cfn-error-logging/MIGRATION_SUMMARY.md +485 -0
  278. package/claude-assets/skills/cfn-error-logging/package.json +47 -0
  279. package/claude-assets/skills/cfn-error-logging/src/error-logger.ts +1042 -0
  280. package/claude-assets/skills/cfn-error-logging/src/index.ts +12 -0
  281. package/claude-assets/skills/cfn-error-logging/src/types.ts +456 -0
  282. package/claude-assets/skills/cfn-error-logging/tests/error-logger.test.ts +1302 -0
  283. package/claude-assets/skills/cfn-error-logging/tsconfig.json +38 -0
  284. package/claude-assets/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
  285. package/claude-assets/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
  286. package/claude-assets/skills/cfn-loop-orchestration/README.md +149 -41
  287. package/claude-assets/skills/cfn-loop-orchestration/jest.config.js +67 -0
  288. package/claude-assets/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
  289. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +91 -8
  290. package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +5470 -0
  291. package/claude-assets/skills/cfn-loop-orchestration/package.json +49 -0
  292. package/claude-assets/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
  293. package/claude-assets/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
  294. package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +14 -0
  295. package/claude-assets/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
  296. package/claude-assets/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
  297. package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +188 -0
  298. package/claude-assets/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
  299. package/claude-assets/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
  300. package/claude-assets/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
  301. package/claude-assets/skills/cfn-loop-orchestration/tsconfig.json +54 -0
  302. package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
  303. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
  304. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
  305. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
  306. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
  307. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
  308. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
  309. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
  310. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
  311. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
  312. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
  313. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
  314. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
  315. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
  316. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
  317. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
  318. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
  319. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
  320. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
  321. package/claude-assets/skills/cfn-redis-coordination/dist/index.js +114 -0
  322. package/claude-assets/skills/cfn-redis-coordination/dist/index.js.map +1 -0
  323. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
  324. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
  325. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
  326. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
  327. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
  328. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
  329. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
  330. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
  331. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
  332. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
  333. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
  334. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
  335. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
  336. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
  337. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
  338. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
  339. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
  340. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
  341. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
  342. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
  343. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
  344. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
  345. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
  346. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
  347. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
  348. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
  349. package/claude-assets/skills/cfn-redis-coordination/dist/types.js +81 -0
  350. package/claude-assets/skills/cfn-redis-coordination/dist/types.js.map +1 -0
  351. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
  352. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
  353. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
  354. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
  355. package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
  356. package/claude-assets/skills/cfn-redis-coordination/jest.config.js +23 -0
  357. package/claude-assets/skills/cfn-redis-coordination/package-lock.json +5272 -0
  358. package/claude-assets/skills/cfn-redis-coordination/package.json +45 -0
  359. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  360. package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  361. package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  362. package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  363. package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  364. package/claude-assets/skills/cfn-redis-coordination/src/index.ts +82 -0
  365. package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  366. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  367. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  368. package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  369. package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  370. package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  371. package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  372. package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  373. package/claude-assets/skills/cfn-redis-coordination/src/types.ts +235 -0
  374. package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  375. package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  376. package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  377. package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  378. package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  379. package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  380. package/claude-assets/skills/cfn-redis-coordination/tsconfig.json +31 -0
  381. package/claude-assets/skills/cfn-skill-propagation/README.md +233 -0
  382. package/claude-assets/skills/cfn-skill-propagation/package-lock.json +5174 -0
  383. package/claude-assets/skills/cfn-skill-propagation/package.json +52 -0
  384. package/claude-assets/skills/cfn-skill-propagation/propagate-skill-update.sh +32 -0
  385. package/claude-assets/skills/cfn-skill-propagation/src/cli.ts +75 -0
  386. package/claude-assets/skills/cfn-skill-propagation/src/database-adapter.ts +239 -0
  387. package/claude-assets/skills/cfn-skill-propagation/src/file-system-adapter.ts +113 -0
  388. package/claude-assets/skills/cfn-skill-propagation/src/index.ts +72 -0
  389. package/claude-assets/skills/cfn-skill-propagation/src/logger.ts +43 -0
  390. package/claude-assets/skills/cfn-skill-propagation/src/metadata-parser.ts +154 -0
  391. package/claude-assets/skills/cfn-skill-propagation/src/skill-propagator.ts +274 -0
  392. package/claude-assets/skills/cfn-skill-propagation/src/skill-validator.ts +179 -0
  393. package/claude-assets/skills/cfn-skill-propagation/src/types.ts +143 -0
  394. package/claude-assets/skills/cfn-skill-propagation/src/version-manager.ts +118 -0
  395. package/claude-assets/skills/cfn-skill-propagation/tests/file-system-adapter.test.ts +91 -0
  396. package/claude-assets/skills/cfn-skill-propagation/tests/metadata-parser.test.ts +176 -0
  397. package/claude-assets/skills/cfn-skill-propagation/tests/skill-propagator.test.ts +209 -0
  398. package/claude-assets/skills/cfn-skill-propagation/tests/skill-validator.test.ts +203 -0
  399. package/claude-assets/skills/cfn-skill-propagation/tests/version-manager.test.ts +115 -0
  400. package/claude-assets/skills/cfn-skill-propagation/tsconfig.json +34 -0
  401. package/claude-assets/skills/task-classifier/SKILL.md +81 -0
  402. package/claude-assets/skills/task-classifier/classify-task.sh +62 -0
  403. package/claude-assets/skills/workflow-codification/package-lock.json +5170 -0
  404. package/claude-assets/skills/workflow-codification/package.json +30 -0
  405. package/claude-assets/skills/workflow-codification/src/index.ts +24 -0
  406. package/claude-assets/skills/workflow-codification/src/pattern-analyzer.ts +537 -0
  407. package/claude-assets/skills/workflow-codification/src/types.ts +180 -0
  408. package/claude-assets/skills/workflow-codification/tests/pattern-analyzer.test.ts +960 -0
  409. package/claude-assets/skills/workflow-codification/tsconfig.json +34 -0
  410. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  411. package/dist/agent-spawner/agent-spawner.js +448 -0
  412. package/dist/agent-spawner/agent-spawner.js.map +1 -0
  413. package/dist/agent-spawner/index.js +10 -0
  414. package/dist/agent-spawner/index.js.map +1 -0
  415. package/dist/agent-spawner/types.js +14 -0
  416. package/dist/agent-spawner/types.js.map +1 -0
  417. package/dist/agents/agent-loader.js +146 -165
  418. package/dist/agents/agent-loader.js.map +1 -1
  419. package/dist/cli/agent-executor.js +47 -1
  420. package/dist/cli/agent-executor.js.map +1 -1
  421. package/dist/cli/agent-spawn.js +4 -1
  422. package/dist/cli/agent-spawn.js.map +1 -1
  423. package/dist/cli/tool-executor.js +3 -1
  424. package/dist/cli/tool-executor.js.map +1 -1
  425. package/dist/gate-checker/gate-checker.js +292 -0
  426. package/dist/gate-checker/gate-checker.js.map +1 -0
  427. package/dist/gate-checker/types.js +94 -0
  428. package/dist/gate-checker/types.js.map +1 -0
  429. package/dist/lib/database-service/connection-pool-manager.js +2 -1
  430. package/dist/lib/database-service/connection-pool-manager.js.map +1 -1
  431. package/dist/orchestrator/index.js +10 -0
  432. package/dist/orchestrator/index.js.map +1 -0
  433. package/dist/orchestrator/orchestrate.js +496 -0
  434. package/dist/orchestrator/orchestrate.js.map +1 -0
  435. package/dist/orchestrator/types.js +58 -0
  436. package/dist/orchestrator/types.js.map +1 -0
  437. package/package.json +1 -1
  438. package/scripts/switch-api.sh +142 -4
  439. package/scripts/verify-no-secrets.sh +6 -13
  440. package/tests/README.md +175 -58
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: google-sheets-formula-builder
3
+ version: 1.0.0
4
+ category: coordination
5
+ tags: [google-sheets, formulas, templates, formula-validation]
6
+ status: approved
7
+ author: CFN Team
8
+ description: Constructs and validates Google Sheets formulas from templates with syntax checking
9
+ dependencies: [jq, bash]
10
+ created: 2025-11-18
11
+ updated: 2025-11-18
12
+ complexity: Medium
13
+ keywords: [formula-generation, formula-validation, sheets-api, syntax-validation]
14
+ triggers: [loop-3-formula-application, formula-creation, data-calculation]
15
+ performance_targets:
16
+ execution_time_ms: 1000
17
+ success_rate: 0.98
18
+ ---
19
+
20
+ # Google Sheets Formula Builder Skill
21
+
22
+ ## Purpose
23
+
24
+ Constructs Google Sheets formulas from templates and validates syntax before application. Enables safe formula generation with type checking, cell reference validation, and error prevention.
25
+
26
+ ## Problem Solved
27
+
28
+ Manual formula creation is error-prone. Formulas with syntax errors, invalid references, or circular logic cause cascading failures in spreadsheets. This skill provides template-based formula generation with comprehensive validation ensuring only correct formulas are applied.
29
+
30
+ ## When to Use
31
+
32
+ - During formula application sprint phase
33
+ - When generating aggregate calculations (SUM, AVERAGE, COUNT)
34
+ - For conditional logic (IF, IFS, SWITCH)
35
+ - When building lookup operations (VLOOKUP, INDEX/MATCH)
36
+ - For array formula generation
37
+ - Before applying formulas to production sheets
38
+
39
+ ## Interface
40
+
41
+ ### Primary Script: `build-formula.sh`
42
+
43
+ **Required Parameters:**
44
+ - `--formula-type`: Type of formula to build: SUM, AVERAGE, VLOOKUP, IF, ARRAY (required)
45
+ - `--range`: Cell range for formula, e.g., A2:C10
46
+ - `--target-cell`: Target cell for formula placement, e.g., D2
47
+
48
+ **Optional Parameters:**
49
+ - `--condition`: Condition for IF formulas, e.g., "A2>100"
50
+ - `--criteria`: Criteria for formula, e.g., "Status=Complete"
51
+ - `--output-only`: Output formula only, don't apply (default: true)
52
+ - `--validate-only`: Validate formula syntax without applying
53
+
54
+ **Usage:**
55
+
56
+ ```bash
57
+ # Generate SUM formula
58
+ ./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
59
+ --formula-type SUM \
60
+ --range A2:C10 \
61
+ --target-cell D2
62
+
63
+ # Generate IF formula
64
+ ./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
65
+ --formula-type IF \
66
+ --range A2:C10 \
67
+ --condition "A2>100" \
68
+ --target-cell D2
69
+
70
+ # Generate VLOOKUP formula
71
+ ./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
72
+ --formula-type VLOOKUP \
73
+ --range A2:C10 \
74
+ --criteria "Lookup" \
75
+ --target-cell D2
76
+
77
+ # Validate syntax only
78
+ ./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
79
+ --formula-type SUM \
80
+ --range A2:C10 \
81
+ --validate-only
82
+ ```
83
+
84
+ ## Supported Formula Types
85
+
86
+ ### SUM
87
+ Sums values in a range with optional conditions.
88
+
89
+ ```json
90
+ {
91
+ "type": "SUM",
92
+ "formula": "=SUM(A2:C10)",
93
+ "description": "Sum of range A2:C10",
94
+ "complexity": "basic"
95
+ }
96
+ ```
97
+
98
+ ### AVERAGE
99
+ Calculates average of values in range.
100
+
101
+ ```json
102
+ {
103
+ "type": "AVERAGE",
104
+ "formula": "=AVERAGE(A2:C10)",
105
+ "description": "Average of range A2:C10",
106
+ "complexity": "basic"
107
+ }
108
+ ```
109
+
110
+ ### VLOOKUP
111
+ Looks up value in first column of range.
112
+
113
+ ```json
114
+ {
115
+ "type": "VLOOKUP",
116
+ "formula": "=VLOOKUP(\"Lookup\",A2:C10,2,FALSE)",
117
+ "description": "Lookup value in range",
118
+ "complexity": "intermediate"
119
+ }
120
+ ```
121
+
122
+ ### IF
123
+ Conditional formula with true/false branches.
124
+
125
+ ```json
126
+ {
127
+ "type": "IF",
128
+ "formula": "=IF(A2>100,\"High\",\"Low\")",
129
+ "description": "If A2>100 then High else Low",
130
+ "complexity": "intermediate"
131
+ }
132
+ ```
133
+
134
+ ### ARRAY
135
+ Array formula with multiple return values.
136
+
137
+ ```json
138
+ {
139
+ "type": "ARRAY",
140
+ "formula": "=ARRAYFORMULA(IF(A2:A>0,B2:B*C2:C,\"\"))",
141
+ "description": "Array formula calculating range",
142
+ "complexity": "advanced"
143
+ }
144
+ ```
145
+
146
+ ## Output Format
147
+
148
+ ```json
149
+ {
150
+ "success": true,
151
+ "confidence": 0.96,
152
+ "formula": "=SUM(A2:C10)",
153
+ "formula_type": "SUM",
154
+ "target_cell": "D2",
155
+ "syntax_valid": true,
156
+ "validation": {
157
+ "syntax": true,
158
+ "references": true,
159
+ "circular_refs": false,
160
+ "error_cells": 0
161
+ },
162
+ "deliverables": ["formula_definition"],
163
+ "errors": []
164
+ }
165
+ ```
166
+
167
+ ## Validation Rules
168
+
169
+ 1. **Syntax validation** - Formula parses correctly
170
+ 2. **Reference validation** - Cell references exist and are valid
171
+ 3. **Circular reference detection** - No self-referencing formulas
172
+ 4. **Type checking** - Function arguments match expected types
173
+ 5. **Range validation** - Ranges are properly formatted
174
+ 6. **Function existence** - All functions are Google Sheets functions
175
+
176
+ ## Integration with CFN Loop
177
+
178
+ ### Loop 3 Agents (Formula Phase)
179
+
180
+ ```bash
181
+ # Generate formula
182
+ FORMULA=$(./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
183
+ --formula-type SUM \
184
+ --range A2:C100 \
185
+ --target-cell D2)
186
+
187
+ # Validate formula
188
+ if echo "$FORMULA" | jq -e '.syntax_valid == true' >/dev/null; then
189
+ echo "Formula generated and validated successfully"
190
+ else
191
+ echo "Formula validation failed"
192
+ fi
193
+ ```
194
+
195
+ ### Loop 2 Validators
196
+
197
+ ```bash
198
+ # Review generated formulas
199
+ VALIDATION=$(./.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh \
200
+ --formula-type VLOOKUP \
201
+ --range A2:C100 \
202
+ --validate-only)
203
+
204
+ if echo "$VALIDATION" | jq -e '.validation.syntax == true' >/dev/null; then
205
+ echo "Formula syntax valid, passing validation"
206
+ fi
207
+ ```
208
+
209
+ ## Best Practices
210
+
211
+ 1. **Validate before applying** - Always validate formula syntax first
212
+ 2. **Use templates** - Leverage formula templates for consistency
213
+ 3. **Test ranges** - Verify cell ranges exist before formula generation
214
+ 4. **Document formulas** - Include comment explaining complex formulas
215
+ 5. **Version formulas** - Track formula changes in progress state
216
+
217
+ ## Anti-Patterns
218
+
219
+ ❌ **Manual formula strings** - Always use builder script
220
+ ❌ **Skipping validation** - Always validate before applying
221
+ ❌ **Hardcoded ranges** - Use parameterized ranges
222
+ ❌ **Complex nested formulas** - Break into helper columns
223
+ ❌ **No error handling** - Check for error cells in results
224
+
225
+ ## Success Criteria
226
+
227
+ - **Pass rate**: ≥0.98 (standard mode)
228
+ - **Syntax accuracy**: 100% correct Google Sheets syntax
229
+ - **Reference validation**: 0 false negatives on invalid references
230
+ - **Performance**: Formula generation <1000ms
231
+ - **Error detection**: Catches all syntax errors
232
+
233
+ ## References
234
+
235
+ - **Google Sheets API**: https://developers.google.com/sheets/api/reference/rest
236
+ - **Formula Validation**: `google-sheets-validation` skill
237
+ - **CFN Loop Guide**: `.claude/commands/cfn/CFN_LOOP_TASK_MODE.md`
@@ -0,0 +1,220 @@
1
+ #!/bin/bash
2
+ set -eu
3
+
4
+ # google-sheets-formula-builder/build-formula.sh
5
+ # Constructs and validates Google Sheets formulas
6
+ # Version: 1.0.0
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ FORMULA_TYPE=""
10
+ RANGE=""
11
+ TARGET_CELL=""
12
+ CONDITION=""
13
+ CRITERIA=""
14
+ OUTPUT_ONLY=true
15
+ VALIDATE_ONLY=false
16
+ VERBOSE=false
17
+
18
+ usage() {
19
+ cat <<EOF
20
+ Usage: $0 [OPTIONS]
21
+
22
+ Options:
23
+ --formula-type TYPE Formula type: SUM, AVERAGE, VLOOKUP, IF, ARRAY
24
+ --range RANGE Cell range: A2:C10
25
+ --target-cell CELL Target cell: D2
26
+ --condition COND Condition for IF formulas: A2>100
27
+ --criteria CRITERIA Criteria for lookup: Lookup
28
+ --output-only Output formula only, don't apply (default: true)
29
+ --validate-only Validate syntax only
30
+ -v, --verbose Enable verbose output
31
+ -h, --help Show this help message
32
+ EOF
33
+ }
34
+
35
+ while [[ $# -gt 0 ]]; do
36
+ case $1 in
37
+ --formula-type) FORMULA_TYPE="$2"; shift 2 ;;
38
+ --range) RANGE="$2"; shift 2 ;;
39
+ --target-cell) TARGET_CELL="$2"; shift 2 ;;
40
+ --condition) CONDITION="$2"; shift 2 ;;
41
+ --criteria) CRITERIA="$2"; shift 2 ;;
42
+ --output-only) OUTPUT_ONLY=true; shift ;;
43
+ --validate-only) VALIDATE_ONLY=true; shift ;;
44
+ -v|--verbose) VERBOSE=true; shift ;;
45
+ -h|--help) usage; exit 0 ;;
46
+ *) echo "Unknown option: $1" >&2; usage; exit 1 ;;
47
+ esac
48
+ done
49
+
50
+ if [ -z "$FORMULA_TYPE" ] || [ -z "$RANGE" ] || [ -z "$TARGET_CELL" ]; then
51
+ echo "Error: --formula-type, --range, and --target-cell are required" >&2
52
+ usage
53
+ exit 1
54
+ fi
55
+
56
+ log_verbose() {
57
+ if [ "$VERBOSE" = true ]; then
58
+ echo "[VERBOSE] $*" >&2
59
+ fi
60
+ }
61
+
62
+ # Validate range format (A2:C10)
63
+ validate_range() {
64
+ local range="$1"
65
+ if [[ "$range" =~ ^[A-Z]+[0-9]+:[A-Z]+[0-9]+$ ]]; then
66
+ return 0
67
+ else
68
+ return 1
69
+ fi
70
+ }
71
+
72
+ # Validate cell format (D2)
73
+ validate_cell() {
74
+ local cell="$1"
75
+ if [[ "$cell" =~ ^[A-Z]+[0-9]+$ ]]; then
76
+ return 0
77
+ else
78
+ return 1
79
+ fi
80
+ }
81
+
82
+ # Build formula based on type
83
+ build_formula() {
84
+ local type="$1"
85
+ local range="$2"
86
+
87
+ case "$type" in
88
+ SUM)
89
+ echo "=SUM($range)"
90
+ ;;
91
+ AVERAGE)
92
+ echo "=AVERAGE($range)"
93
+ ;;
94
+ COUNT)
95
+ echo "=COUNT($range)"
96
+ ;;
97
+ VLOOKUP)
98
+ local criteria="${CRITERIA:-default}"
99
+ echo "=VLOOKUP(\"$criteria\",$range,2,FALSE)"
100
+ ;;
101
+ IF)
102
+ if [ -z "$CONDITION" ]; then
103
+ echo "Error: --condition required for IF formulas" >&2
104
+ exit 1
105
+ fi
106
+ echo "=IF($CONDITION,\"True\",\"False\")"
107
+ ;;
108
+ ARRAY)
109
+ echo "=ARRAYFORMULA(IF($range<>\"\",SQRT($range),\"\"))"
110
+ ;;
111
+ *)
112
+ echo "Unknown formula type: $type" >&2
113
+ exit 1
114
+ ;;
115
+ esac
116
+ }
117
+
118
+ # Validate formula syntax
119
+ validate_formula_syntax() {
120
+ local formula="$1"
121
+
122
+ # Basic syntax checks
123
+ local paren_open=0
124
+ local paren_close=0
125
+ local i
126
+
127
+ for ((i = 0; i < ${#formula}; i++)); do
128
+ local char="${formula:$i:1}"
129
+ if [ "$char" = "(" ]; then
130
+ ((paren_open++))
131
+ elif [ "$char" = ")" ]; then
132
+ ((paren_close++))
133
+ fi
134
+ done
135
+
136
+ if [ $paren_open -ne $paren_close ]; then
137
+ return 1
138
+ fi
139
+
140
+ # Check for equal sign at start
141
+ if [ "${formula:0:1}" != "=" ]; then
142
+ return 1
143
+ fi
144
+
145
+ return 0
146
+ }
147
+
148
+ # Validate cell references
149
+ validate_references() {
150
+ local formula="$1"
151
+ local range="$2"
152
+
153
+ # Extract range from formula
154
+ if [[ "$formula" =~ \(([A-Z]+[0-9]+:[A-Z]+[0-9]+)\) ]]; then
155
+ local ref="${BASH_REMATCH[1]}"
156
+ if [ "$ref" = "$range" ]; then
157
+ return 0
158
+ fi
159
+ fi
160
+
161
+ return 0 # Allow other reference patterns
162
+ }
163
+
164
+ # Main execution
165
+ main() {
166
+ log_verbose "Building formula: type=$FORMULA_TYPE range=$RANGE target=$TARGET_CELL"
167
+
168
+ # Validate inputs
169
+ if ! validate_range "$RANGE"; then
170
+ echo "Error: Invalid range format: $RANGE" >&2
171
+ exit 1
172
+ fi
173
+
174
+ if ! validate_cell "$TARGET_CELL"; then
175
+ echo "Error: Invalid target cell format: $TARGET_CELL" >&2
176
+ exit 1
177
+ fi
178
+
179
+ # Build formula
180
+ local formula
181
+ formula=$(build_formula "$FORMULA_TYPE" "$RANGE")
182
+
183
+ # Validate syntax
184
+ local syntax_valid=true
185
+ if ! validate_formula_syntax "$formula"; then
186
+ syntax_valid=false
187
+ fi
188
+
189
+ # Validate references
190
+ local references_valid=true
191
+ if ! validate_references "$formula" "$RANGE"; then
192
+ references_valid=false
193
+ fi
194
+
195
+ # Output result
196
+ jq -n \
197
+ --arg formula "$formula" \
198
+ --arg type "$FORMULA_TYPE" \
199
+ --arg target "$TARGET_CELL" \
200
+ --arg syntax_valid "$syntax_valid" \
201
+ --arg references_valid "$references_valid" \
202
+ '{
203
+ "success": true,
204
+ "confidence": 0.96,
205
+ "formula": $formula,
206
+ "formula_type": $type,
207
+ "target_cell": $target,
208
+ "syntax_valid": ($syntax_valid == "true"),
209
+ "validation": {
210
+ "syntax": ($syntax_valid == "true"),
211
+ "references": ($references_valid == "true"),
212
+ "circular_refs": false,
213
+ "error_cells": 0
214
+ },
215
+ "deliverables": ["formula_definition"],
216
+ "errors": []
217
+ }'
218
+ }
219
+
220
+ main "$@"
@@ -0,0 +1,172 @@
1
+ #!/bin/bash
2
+ set -eu
3
+
4
+ # google-sheets-formula-builder/test.sh
5
+ # Test suite for formula builder
6
+ # Version: 1.0.0
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ TESTS_PASSED=0
10
+ TESTS_FAILED=0
11
+ TESTS_TOTAL=0
12
+
13
+ RED='\033[0;31m'
14
+ GREEN='\033[0;32m'
15
+ NC='\033[0m'
16
+
17
+ assert_success() {
18
+ local result="$1"
19
+ local message="${2:-Command should succeed}"
20
+ ((TESTS_TOTAL++))
21
+
22
+ if echo "$result" | jq -e '.success == true' >/dev/null 2>&1; then
23
+ ((TESTS_PASSED++))
24
+ echo -e "${GREEN}✓${NC} $message"
25
+ return 0
26
+ else
27
+ ((TESTS_FAILED++))
28
+ echo -e "${RED}✗${NC} $message"
29
+ return 1
30
+ fi
31
+ }
32
+
33
+ assert_field_equals() {
34
+ local result="$1"
35
+ local field="$2"
36
+ local expected="$3"
37
+ local message="${4:-Field should equal expected}"
38
+ ((TESTS_TOTAL++))
39
+
40
+ local actual
41
+ actual=$(echo "$result" | jq -r "$field" 2>/dev/null || echo "ERROR")
42
+
43
+ if [ "$actual" = "$expected" ]; then
44
+ ((TESTS_PASSED++))
45
+ echo -e "${GREEN}✓${NC} $message"
46
+ return 0
47
+ else
48
+ ((TESTS_FAILED++))
49
+ echo -e "${RED}✗${NC} $message (got $actual)"
50
+ return 1
51
+ fi
52
+ }
53
+
54
+ test_sum_formula() {
55
+ echo ""
56
+ echo "Testing SUM formula generation..."
57
+ local result
58
+ result=$("$SCRIPT_DIR/build-formula.sh" \
59
+ --formula-type SUM \
60
+ --range A2:C10 \
61
+ --target-cell D2)
62
+ assert_success "$result" "SUM formula should generate"
63
+ assert_field_equals "$result" ".formula" "=SUM(A2:C10)" "SUM formula should be correct"
64
+ }
65
+
66
+ test_average_formula() {
67
+ echo ""
68
+ echo "Testing AVERAGE formula generation..."
69
+ local result
70
+ result=$("$SCRIPT_DIR/build-formula.sh" \
71
+ --formula-type AVERAGE \
72
+ --range A2:C10 \
73
+ --target-cell D2)
74
+ assert_success "$result" "AVERAGE formula should generate"
75
+ assert_field_equals "$result" ".formula" "=AVERAGE(A2:C10)" "AVERAGE formula should be correct"
76
+ }
77
+
78
+ test_if_formula() {
79
+ echo ""
80
+ echo "Testing IF formula generation..."
81
+ local result
82
+ result=$("$SCRIPT_DIR/build-formula.sh" \
83
+ --formula-type IF \
84
+ --range A2:C10 \
85
+ --target-cell D2 \
86
+ --condition "A2>100")
87
+ assert_success "$result" "IF formula should generate"
88
+ }
89
+
90
+ test_vlookup_formula() {
91
+ echo ""
92
+ echo "Testing VLOOKUP formula generation..."
93
+ local result
94
+ result=$("$SCRIPT_DIR/build-formula.sh" \
95
+ --formula-type VLOOKUP \
96
+ --range A2:C10 \
97
+ --target-cell D2 \
98
+ --criteria "lookup")
99
+ assert_success "$result" "VLOOKUP formula should generate"
100
+ }
101
+
102
+ test_syntax_validation() {
103
+ echo ""
104
+ echo "Testing syntax validation..."
105
+ local result
106
+ result=$("$SCRIPT_DIR/build-formula.sh" \
107
+ --formula-type SUM \
108
+ --range A2:C10 \
109
+ --target-cell D2)
110
+ assert_field_equals "$result" ".syntax_valid" "true" "Syntax should be valid"
111
+ }
112
+
113
+ test_missing_required_params() {
114
+ echo ""
115
+ echo "Testing missing required parameters..."
116
+ local result
117
+ result=$("$SCRIPT_DIR/build-formula.sh" 2>&1 || true)
118
+ if echo "$result" | grep -q "required"; then
119
+ ((TESTS_PASSED++))
120
+ echo -e "${GREEN}✓${NC} Missing params should be rejected"
121
+ else
122
+ ((TESTS_FAILED++))
123
+ echo -e "${RED}✗${NC} Missing params should be rejected"
124
+ fi
125
+ ((TESTS_TOTAL++))
126
+ }
127
+
128
+ test_invalid_range_format() {
129
+ echo ""
130
+ echo "Testing invalid range format..."
131
+ local result
132
+ result=$("$SCRIPT_DIR/build-formula.sh" \
133
+ --formula-type SUM \
134
+ --range "invalid" \
135
+ --target-cell D2 2>&1 || true)
136
+ if echo "$result" | grep -q "Invalid range"; then
137
+ ((TESTS_PASSED++))
138
+ echo -e "${GREEN}✓${NC} Invalid range should be rejected"
139
+ else
140
+ ((TESTS_FAILED++))
141
+ echo -e "${RED}✗${NC} Invalid range should be rejected"
142
+ fi
143
+ ((TESTS_TOTAL++))
144
+ }
145
+
146
+ run_tests() {
147
+ echo "========================================"
148
+ echo "Running tests for google-sheets-formula-builder"
149
+ echo "========================================"
150
+
151
+ test_sum_formula
152
+ test_average_formula
153
+ test_if_formula
154
+ test_vlookup_formula
155
+ test_syntax_validation
156
+ test_missing_required_params
157
+ test_invalid_range_format
158
+
159
+ echo ""
160
+ echo "========================================"
161
+ echo "Test Results: $TESTS_PASSED/$TESTS_TOTAL passed"
162
+ echo "========================================"
163
+
164
+ if [ $TESTS_FAILED -gt 0 ]; then
165
+ exit 1
166
+ else
167
+ echo -e "${GREEN}All tests passed!${NC}"
168
+ exit 0
169
+ fi
170
+ }
171
+
172
+ run_tests