claude-flow-novice 2.18.12 → 2.18.14

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 (332) hide show
  1. package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
  2. package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/original +3 -0
  3. package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
  4. package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
  5. package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/original +3 -0
  6. package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
  7. package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
  8. package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/original +3 -0
  9. package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
  10. package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/metadata.json +8 -0
  11. package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/original +1212 -0
  12. package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/revert.sh +7 -0
  13. package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/metadata.json +8 -0
  14. package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/original +1212 -0
  15. package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/revert.sh +7 -0
  16. package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/metadata.json +8 -0
  17. package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/original +1212 -0
  18. package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/revert.sh +7 -0
  19. package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/metadata.json +8 -0
  20. package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/original +1228 -0
  21. package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/revert.sh +7 -0
  22. package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/metadata.json +8 -0
  23. package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/original +1237 -0
  24. package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/revert.sh +7 -0
  25. package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/metadata.json +8 -0
  26. package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/original +1240 -0
  27. package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/revert.sh +7 -0
  28. package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/metadata.json +8 -0
  29. package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/original +1216 -0
  30. package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/revert.sh +7 -0
  31. package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/metadata.json +8 -0
  32. package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/original +1238 -0
  33. package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/revert.sh +7 -0
  34. package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/metadata.json +8 -0
  35. package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/original +1167 -0
  36. package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/revert.sh +7 -0
  37. package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/metadata.json +8 -0
  38. package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/original +1242 -0
  39. package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/revert.sh +7 -0
  40. package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/metadata.json +8 -0
  41. package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/original +2 -0
  42. package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/revert.sh +7 -0
  43. package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/metadata.json +8 -0
  44. package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/original +1169 -0
  45. package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/revert.sh +7 -0
  46. package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/metadata.json +8 -0
  47. package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/original +1171 -0
  48. package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/revert.sh +7 -0
  49. package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/metadata.json +8 -0
  50. package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/original +1170 -0
  51. package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/revert.sh +7 -0
  52. package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/metadata.json +8 -0
  53. package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/original +1173 -0
  54. package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/revert.sh +7 -0
  55. package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/metadata.json +8 -0
  56. package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/original +1170 -0
  57. package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/revert.sh +7 -0
  58. package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/metadata.json +8 -0
  59. package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/original +1172 -0
  60. package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/revert.sh +7 -0
  61. package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/metadata.json +8 -0
  62. package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/original +1175 -0
  63. package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/revert.sh +7 -0
  64. package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/metadata.json +8 -0
  65. package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/original +1178 -0
  66. package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/revert.sh +7 -0
  67. package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/metadata.json +8 -0
  68. package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/original +1174 -0
  69. package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/revert.sh +7 -0
  70. package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/metadata.json +8 -0
  71. package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/original +1194 -0
  72. package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/revert.sh +7 -0
  73. package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/metadata.json +8 -0
  74. package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/original +1186 -0
  75. package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/revert.sh +7 -0
  76. package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/metadata.json +8 -0
  77. package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/original +1180 -0
  78. package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/revert.sh +7 -0
  79. package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/metadata.json +8 -0
  80. package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/original +1198 -0
  81. package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/revert.sh +7 -0
  82. package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/metadata.json +8 -0
  83. package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/original +1202 -0
  84. package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/revert.sh +7 -0
  85. package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/metadata.json +8 -0
  86. package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/original +1202 -0
  87. package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/revert.sh +7 -0
  88. package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/metadata.json +8 -0
  89. package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/original +1209 -0
  90. package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/revert.sh +7 -0
  91. package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/metadata.json +8 -0
  92. package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/original +1207 -0
  93. package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/revert.sh +7 -0
  94. package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/metadata.json +8 -0
  95. package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/original +1207 -0
  96. package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/revert.sh +7 -0
  97. package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/metadata.json +8 -0
  98. package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/original +1193 -0
  99. package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/revert.sh +7 -0
  100. package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/metadata.json +8 -0
  101. package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/original +1194 -0
  102. package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/revert.sh +7 -0
  103. package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/metadata.json +8 -0
  104. package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/original +1193 -0
  105. package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/revert.sh +7 -0
  106. package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/metadata.json +8 -0
  107. package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/original +1191 -0
  108. package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/revert.sh +7 -0
  109. package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/metadata.json +8 -0
  110. package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/original +1190 -0
  111. package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/revert.sh +7 -0
  112. package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/metadata.json +8 -0
  113. package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/original +1191 -0
  114. package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/revert.sh +7 -0
  115. package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/metadata.json +8 -0
  116. package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/original +1189 -0
  117. package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/revert.sh +7 -0
  118. package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/metadata.json +8 -0
  119. package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/original +1197 -0
  120. package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/revert.sh +7 -0
  121. package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/metadata.json +8 -0
  122. package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/original +1190 -0
  123. package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/revert.sh +7 -0
  124. package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/metadata.json +8 -0
  125. package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/original +1197 -0
  126. package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/revert.sh +7 -0
  127. package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/metadata.json +8 -0
  128. package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/original +1197 -0
  129. package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/revert.sh +7 -0
  130. package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.md +194 -2
  131. package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh +264 -0
  132. package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh.backup +698 -0
  133. package/.claude/agents/custom/claude-code-expert.md +56 -0
  134. package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/SKILL.md +1 -1
  135. package/.claude/hooks/README.md +148 -0
  136. package/.claude/hooks/SessionStart:cfn-load-openai-key.sh +35 -0
  137. package/.claude/hooks/cfn-invoke-pre-edit.sh +1 -1
  138. package/.claude/hooks/cfn-load-cerebras-env.sh +65 -0
  139. package/.claude/hooks/cfn-precompact-enhanced.sh +283 -0
  140. package/.claude/hooks/deprecated/README.md +27 -0
  141. package/.claude/settings.json +71 -6
  142. package/.claude/skills/cfn-agent-lifecycle/SKILL.md +1 -1
  143. package/.claude/skills/cfn-agent-tooling/SKILL.md +1 -1
  144. package/.claude/skills/cfn-cerebras-coordinator/QUICKSTART.md +348 -0
  145. package/.claude/skills/cfn-cerebras-coordinator/README.md +525 -0
  146. package/.claude/skills/cfn-cerebras-coordinator/TDD_COORDINATOR_OVERVIEW.md +284 -0
  147. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v2-test-1733854200.json +36 -0
  148. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v3-test-1765383241.json +36 -0
  149. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v2-test-1765381361.json +36 -0
  150. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v3-test-1765383242.json +46 -0
  151. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v2-test-1733864400.json +66 -0
  152. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v3-test-1765383238.json +66 -0
  153. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v4-test-1765386506.json +66 -0
  154. package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v5-test-1765393100.json +66 -0
  155. package/.claude/skills/cfn-cerebras-coordinator/example-usage.sh +206 -0
  156. package/.claude/skills/cfn-cerebras-coordinator/lib/tdd-conversation-coordinator.ts +569 -0
  157. package/.claude/skills/cfn-cerebras-coordinator/test-tdd-coordinator.sh +250 -0
  158. package/.claude/skills/cfn-compilation-error-fixer/SKILL.md +1 -1
  159. package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-gated-fixer-v2.ts +1 -1
  160. package/.claude/skills/cfn-config/SKILL.md +1 -1
  161. package/.claude/skills/cfn-dependency-management/SKILL.md +1 -1
  162. package/.claude/skills/cfn-deployment-lifecycle/SKILL.md +1 -1
  163. package/.claude/skills/cfn-edit-safety/SKILL.md +1 -1
  164. package/.claude/skills/cfn-epic-creator/SKILL.md +392 -0
  165. package/.claude/skills/cfn-epic-creator/estimate-costs.sh +524 -0
  166. package/.claude/skills/cfn-epic-creator/invoke.sh +445 -0
  167. package/.claude/skills/cfn-epic-creator/parse-personas.sh +533 -0
  168. package/.claude/skills/cfn-epic-creator/security-utils.sh +268 -0
  169. package/.claude/skills/cfn-epic-creator/security-verification-demo.sh +127 -0
  170. package/.claude/skills/cfn-epic-creator/test-invoke.sh +620 -0
  171. package/.claude/skills/cfn-epic-creator/test-security-fixes.sh +195 -0
  172. package/.claude/skills/cfn-epic-creator/test-security-simple.sh +165 -0
  173. package/.claude/skills/cfn-epic-creator/validate-epic.sh +474 -0
  174. package/.claude/skills/cfn-epic-parser/SKILL.md +8 -0
  175. package/.claude/skills/cfn-error-management/SKILL.md +1 -1
  176. package/.claude/skills/cfn-intervention-system/SKILL.md +1 -1
  177. package/.claude/skills/cfn-knowledge-base/SKILL.md +1 -1
  178. package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/metadata.json +8 -0
  179. package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/original +209 -0
  180. package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/revert.sh +7 -0
  181. package/.claude/skills/cfn-local-ruvector-accelerator/AGENT_INTEGRATION_PATTERNS.md +255 -0
  182. package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml +8 -1
  183. package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml.backup +47 -0
  184. package/.claude/skills/cfn-local-ruvector-accelerator/EXTRACTION_EXAMPLES.md +287 -0
  185. package/.claude/skills/cfn-local-ruvector-accelerator/README.md +2 -563
  186. package/.claude/skills/cfn-local-ruvector-accelerator/SCHEMA_V2_IMPLEMENTATION.md +151 -0
  187. package/.claude/skills/cfn-local-ruvector-accelerator/SECURITY_IMPLEMENTATION.md +185 -0
  188. package/.claude/skills/cfn-local-ruvector-accelerator/SKILL.md +8 -343
  189. package/.claude/skills/cfn-local-ruvector-accelerator/docs/EXECUTIVE_SUMMARY.txt +90 -0
  190. package/.claude/skills/cfn-local-ruvector-accelerator/docs/PHASE_4_QUERY_API.md +210 -0
  191. package/.claude/skills/cfn-local-ruvector-accelerator/docs/RUST_AST_EXTRACTOR_IMPLEMENTATION.md +222 -0
  192. package/.claude/skills/cfn-local-ruvector-accelerator/docs/TRANSACTION_MANAGEMENT.md +241 -0
  193. package/.claude/skills/cfn-local-ruvector-accelerator/docs/VALIDATION_FINDINGS.txt +250 -0
  194. package/.claude/skills/cfn-local-ruvector-accelerator/epic-ast-indexer.json +335 -0
  195. package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh +292 -96
  196. package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh.backup +249 -0
  197. package/.claude/skills/cfn-local-ruvector-accelerator/index_all.sh +65 -0
  198. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/find.rs +214 -0
  199. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index.rs +275 -94
  200. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_ast.rs +767 -0
  201. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_modified.rs +37 -0
  202. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/init.rs +17 -12
  203. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/migration.rs +34 -1
  204. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/mod.rs +6 -0
  205. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/query.rs +2 -2
  206. package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/refs.rs +209 -0
  207. package/.claude/skills/cfn-local-ruvector-accelerator/src/embeddings.rs +82 -33
  208. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/mod.rs +251 -0
  209. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust.rs +425 -0
  210. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust_placeholder.rs +420 -0
  211. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/text_fallback.rs +490 -0
  212. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript.rs +520 -0
  213. package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript_full.rs +531 -0
  214. package/.claude/skills/cfn-local-ruvector-accelerator/src/lib.rs +20 -0
  215. package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs +33 -2
  216. package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs.backup +360 -0
  217. package/.claude/skills/cfn-local-ruvector-accelerator/src/migration.rs +325 -318
  218. package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_backup.rs +325 -0
  219. package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_tx.rs +513 -0
  220. package/.claude/skills/cfn-local-ruvector-accelerator/src/paths.rs +29 -0
  221. package/.claude/skills/cfn-local-ruvector-accelerator/src/query_api.rs +609 -0
  222. package/.claude/skills/cfn-local-ruvector-accelerator/src/schema_v2.rs +603 -0
  223. package/.claude/skills/cfn-local-ruvector-accelerator/src/search_engine.rs +150 -29
  224. package/.claude/skills/cfn-local-ruvector-accelerator/src/security_tests.rs +154 -0
  225. package/.claude/skills/cfn-local-ruvector-accelerator/src/sqlite_store.rs +1 -1
  226. package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2.rs +583 -0
  227. package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_backup.rs +560 -0
  228. package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_fixed.rs +0 -0
  229. package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_tx.rs +397 -0
  230. package/.claude/skills/cfn-local-ruvector-accelerator/src/test_schema.rs +228 -0
  231. package/.claude/skills/cfn-local-ruvector-accelerator/src/transaction_tests.rs +410 -0
  232. package/.claude/skills/cfn-local-ruvector-accelerator/test_ast_indexing.rs +59 -0
  233. package/.claude/skills/cfn-local-ruvector-accelerator/test_query_api.sh +103 -0
  234. package/.claude/skills/cfn-local-ruvector-accelerator/test_schema.sql +158 -0
  235. package/.claude/skills/cfn-local-ruvector-accelerator/test_schema_v2.sql +147 -0
  236. package/.claude/skills/cfn-loop-orchestration-v2/SKILL.md +1 -1
  237. package/.claude/skills/cfn-loop-orchestration-v2/lib/decision/SKILL.md +8 -0
  238. package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/SKILL.md +1 -1
  239. package/.claude/skills/cfn-loop-orchestration-v2/lib/output/SKILL.md +8 -0
  240. package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/SKILL.md +11 -2
  241. package/.claude/skills/cfn-mdap-context-injection/SKILL.md +31 -10
  242. package/.claude/skills/cfn-mdap-error-fixer/skill.md +15 -205
  243. package/.claude/skills/cfn-memory-persistence/lib/auto/SKILL.md +7 -0
  244. package/.claude/skills/cfn-memory-persistence/lib/management/SKILL.md +7 -0
  245. package/.claude/skills/cfn-parameterized-queries/SKILL.md +8 -0
  246. package/.claude/skills/cfn-planning/SKILL.md +1 -1
  247. package/.claude/skills/cfn-session-handoff/SKILL.md +1 -53
  248. package/.claude/skills/cfn-skill-management/SKILL.md +1 -1
  249. package/.claude/skills/cfn-task-decomposition/SKILL.md +1 -0
  250. package/.claude/skills/cfn-task-intelligence/SKILL.md +39 -18
  251. package/.claude/skills/cfn-task-planning/SKILL.md +37 -12
  252. package/.claude/skills/cfn-transparency-middleware/SKILL.md +1 -1
  253. package/.claude/skills/cfn-utilities/SKILL.md +1 -1
  254. package/.claude/skills/cfn-validation-framework/SKILL.md +3 -60
  255. package/.claude/skills/cfn-vision-analysis/SKILL.md +3 -20
  256. package/.claude-flow/metrics/performance.json +3 -3
  257. package/.claude-flow/metrics/task-metrics.json +3 -3
  258. package/.ruvector/index_v2.db-shm +0 -0
  259. package/.ruvector/index_v2.db-wal +0 -0
  260. package/CLAUDE.md +9 -1
  261. package/README.md +56 -0
  262. package/docs/AGENT_PRODUCTION_FEEDBACK_PATTERNS.md +389 -0
  263. package/docs/CEREBRAS_TDD_COORDINATOR_TEST_RESULTS.md +213 -0
  264. package/docs/CEREBRAS_TDD_ROUND1_VS_ROUND2_COMPARISON.md +225 -0
  265. package/docs/CEREBRAS_TDD_ROUND3_FINAL_RESULTS.md +264 -0
  266. package/docs/EPIC_CREATOR_V2_ARCHITECTURE.md +629 -0
  267. package/docs/HOOKS_IMPLEMENTATION_PRIORITY.md +585 -0
  268. package/docs/SKILLS_HOOKS_INTEGRATION.md +1074 -0
  269. package/epic-with-personas-2025-12-09-17-15-13.json +253 -0
  270. package/index/index.bin +0 -0
  271. package/index/metadata.json +1 -0
  272. package/package.json +2 -1
  273. package/test-epic-creator-security.sh +203 -0
  274. package/.claude/skills/cfn-compilation-error-fixer/HANDOFF.md +0 -29
  275. package/.claude/skills/cfn-local-ruvector-accelerator/__pycache__/search_engine_v2.cpython-312.pyc +0 -0
  276. package/.claude/skills/cfn-local-ruvector-accelerator/search_engine.py +0 -200
  277. package/.ruvector/index.db-journal +0 -0
  278. package/jest.config.ts.cjs +0 -17
  279. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/SKILL.md +0 -0
  280. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/context-analyzer.sh +0 -0
  281. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/generate-code.sh +0 -0
  282. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/execute.sh +0 -0
  283. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/INTEGRATION.md +0 -0
  284. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SAMPLE_OUTPUTS.md +0 -0
  285. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SKILL.md +0 -0
  286. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/capture-container-logs.sh +0 -0
  287. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/enable-logging.sh +0 -0
  288. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/init-hybrid-logging.sh +0 -0
  289. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/analytics-summary.sh +0 -0
  290. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-agent-timeline.sh +0 -0
  291. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-consensus-history.sh +0 -0
  292. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-coordination-timeline.sh +0 -0
  293. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-failed-containers.sh +0 -0
  294. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-gate-checks.sh +0 -0
  295. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/schema.sql +0 -0
  296. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/sqlite-helpers.sh +0 -0
  297. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/test-hybrid-logging.sh +0 -0
  298. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/SKILL.md +0 -0
  299. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/skill-mcp-selector.js +0 -0
  300. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/SKILL.md +0 -0
  301. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/orchestrate.sh +0 -0
  302. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/SKILL.md +0 -0
  303. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/spawn-agent.sh +0 -0
  304. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/SKILL.md +0 -0
  305. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/cleanup-wave.sh +0 -0
  306. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/lib/docker-helpers.sh +0 -0
  307. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/monitor-wave.sh +0 -0
  308. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/spawn-wave.sh +0 -0
  309. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/SKILL.md +0 -0
  310. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/task-mode-heap-limiter.sh +0 -0
  311. /package/.claude/{skills → cfn-extras/skills/deprecated}/deprecated/analyze-patterns.sh +0 -0
  312. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/README.md +0 -0
  313. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SECURITY.md +0 -0
  314. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SKILL.md +0 -0
  315. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/package.json +0 -0
  316. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/solve.sh +0 -0
  317. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver-minimal.sh +0 -0
  318. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver.sh +0 -0
  319. /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test.cjs +0 -0
  320. /package/.claude/hooks/{cfn-credential-scanner.sh → deprecated/cfn-credential-scanner.sh} +0 -0
  321. /package/.claude/hooks/{cfn-detect-hardcoded-credentials.sh → deprecated/cfn-detect-hardcoded-credentials.sh} +0 -0
  322. /package/.claude/hooks/{cfn-invoke-post-edit-ts.sh → deprecated/cfn-invoke-post-edit-ts.sh} +0 -0
  323. /package/.claude/hooks/{cfn-invoke-pre-edit-ts.sh → deprecated/cfn-invoke-pre-edit-ts.sh} +0 -0
  324. /package/.claude/hooks/{cfn-invoke-security-validation.sh → deprecated/cfn-invoke-security-validation.sh} +0 -0
  325. /package/.claude/hooks/{cfn-lint-sql-injection.sh → deprecated/cfn-lint-sql-injection.sh} +0 -0
  326. /package/.claude/hooks/{cfn-post-edit.sh → deprecated/cfn-post-edit.sh} +0 -0
  327. /package/.claude/hooks/{cfn-pre-edit-backup.sh → deprecated/cfn-pre-edit-backup.sh} +0 -0
  328. /package/.claude/skills/cfn-local-ruvector-accelerator/{embeddings_manager.py → embeddings_manager.py.backup} +0 -0
  329. /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/index.bin +0 -0
  330. /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/metadata.json +0 -0
  331. /package/.claude/skills/cfn-local-ruvector-accelerator/{search_engine_v2.py → search_engine_v2.py.backup} +0 -0
  332. /package/.claude/skills/cfn-local-ruvector-accelerator/{sqlite_store.py → sqlite_store.py.backup} +0 -0
@@ -0,0 +1,474 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # CFN Epic Creator - Validate Epic JSON
5
+ # Validates generated epic JSON structure and content
6
+
7
+ # Colors for output
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[1;33m'
11
+ BLUE='\033[0;34m'
12
+ NC='\033[0m' # No Color
13
+
14
+ # Logging functions
15
+ log_info() {
16
+ echo -e "${BLUE}[INFO]${NC} $*"
17
+ }
18
+
19
+ log_success() {
20
+ echo -e "${GREEN}[SUCCESS]${NC} $*"
21
+ }
22
+
23
+ log_warning() {
24
+ echo -e "${YELLOW}[WARNING]${NC} $*"
25
+ }
26
+
27
+ log_error() {
28
+ echo -e "${RED}[ERROR]${NC} $*" >&2
29
+ }
30
+
31
+ # Show help message
32
+ show_help() {
33
+ cat << 'HELP_EOF'
34
+ CFN Epic Creator - Validate Epic JSON
35
+
36
+ USAGE:
37
+ ./validate-epic.sh <json-file> [OPTIONS]
38
+
39
+ REQUIRED ARGUMENTS:
40
+ <json-file> Path to the epic JSON file to validate
41
+
42
+ OPTIONS:
43
+ -v, --verbose Show detailed validation output
44
+ -s, --strict Enable strict validation (fails on warnings)
45
+ -h, --help Show this help message
46
+
47
+ EXIT CODES:
48
+ 0 Validation passed
49
+ 1 Validation failed
50
+ 2 File not found or invalid JSON
51
+ 3 Missing required arguments
52
+
53
+ HELP_EOF
54
+ }
55
+
56
+ # Validate JSON structure
57
+ validate_json_structure() {
58
+ local json_file="$1"
59
+ local strict="${2:-false}"
60
+ local verbose="${3:-false}"
61
+
62
+ local validation_errors=0
63
+ local validation_warnings=0
64
+
65
+ if [[ "$verbose" == true ]]; then
66
+ log_info "Validating JSON structure in: $json_file"
67
+ fi
68
+
69
+ # Check if file exists and is readable
70
+ if [[ ! -f "$json_file" ]]; then
71
+ log_error "File not found: $json_file"
72
+ return 2
73
+ fi
74
+
75
+ if [[ ! -r "$json_file" ]]; then
76
+ log_error "File not readable: $json_file"
77
+ return 2
78
+ fi
79
+
80
+ # Check if valid JSON
81
+ if ! jq empty "$json_file" 2>/dev/null; then
82
+ log_error "Invalid JSON format in: $json_file"
83
+ return 2
84
+ fi
85
+
86
+ # Check top-level structure
87
+ if [[ "$verbose" == true ]]; then
88
+ log_info "Checking top-level structure..."
89
+ fi
90
+
91
+ if ! jq -e '.epic' "$json_file" >/dev/null; then
92
+ log_error "Missing required 'epic' object at top level"
93
+ validation_errors=$((validation_errors + 1))
94
+ fi
95
+
96
+ # Validate epic metadata
97
+ if [[ "$verbose" == true ]]; then
98
+ log_info "Validating epic metadata..."
99
+ fi
100
+
101
+ local required_fields=("id" "title" "description" "status" "personas")
102
+ local optional_fields=("priority" "estimatedDuration" "budget" "owner" "metadata" "implementationRoadmap" "totalCostBreakdown" "riskAssessment")
103
+
104
+ for field in "${required_fields[@]}"; do
105
+ if ! jq -e ".epic.${field}" "$json_file" >/dev/null; then
106
+ log_error "Missing required epic field: ${field}"
107
+ validation_errors=$((validation_errors + 1))
108
+ elif [[ "$verbose" == true ]]; then
109
+ log_success "Found required field: ${field}"
110
+ fi
111
+ done
112
+
113
+ # Check optional fields
114
+ for field in "${optional_fields[@]}"; do
115
+ if jq -e ".epic.${field}" "$json_file" >/dev/null; then
116
+ if [[ "$verbose" == true ]]; then
117
+ log_info "Found optional field: ${field}"
118
+ fi
119
+ fi
120
+ done
121
+
122
+ # Validate epic ID format
123
+ local epic_id
124
+ epic_id=$(jq -r '.epic.id // empty' "$json_file")
125
+ if [[ -n "$epic_id" ]]; then
126
+ if [[ ! "$epic_id" =~ ^EPIC-[0-9]{6}$ ]]; then
127
+ log_warning "Epic ID format should be 'EPIC-XXXXXX' (6 digits): $epic_id"
128
+ validation_warnings=$((validation_warnings + 1))
129
+ elif [[ "$verbose" == true ]]; then
130
+ log_success "Epic ID has correct format: $epic_id"
131
+ fi
132
+ fi
133
+
134
+ # Validate status
135
+ local epic_status
136
+ epic_status=$(jq -r '.epic.status // empty' "$json_file")
137
+ if [[ -n "$epic_status" ]]; then
138
+ case "$epic_status" in
139
+ "not_started"|"in-progress"|"completed"|"blocked"|"in-review"|"cancelled")
140
+ if [[ "$verbose" == true ]]; then
141
+ log_success "Epic status is valid: $epic_status"
142
+ fi
143
+ ;;
144
+ *)
145
+ log_warning "Unusual epic status: $epic_status"
146
+ validation_warnings=$((validation_warnings + 1))
147
+ ;;
148
+ esac
149
+ fi
150
+
151
+ # Validate personas array
152
+ if [[ "$verbose" == true ]]; then
153
+ log_info "Validating personas array..."
154
+ fi
155
+
156
+ if ! jq -e '.epic.personas | type == "array"' "$json_file" >/dev/null; then
157
+ log_error "epic.personas must be an array"
158
+ validation_errors=$((validation_errors + 1))
159
+ else
160
+ local persona_count
161
+ persona_count=$(jq -r '.epic.personas | length' "$json_file")
162
+ if [[ "$persona_count" -ne 6 ]]; then
163
+ log_error "Expected exactly 6 personas, found: $persona_count"
164
+ validation_errors=$((validation_errors + 1))
165
+ elif [[ "$verbose" == true ]]; then
166
+ log_success "Found correct number of personas: $persona_count"
167
+ fi
168
+
169
+ # Validate each persona
170
+ local required_persona_names=("product-owner" "architect" "security-specialist" "performance-specialist" "accessibility-advocate" "devops-engineer")
171
+ local found_personas
172
+ found_personas=$(jq -r '.epic.personas[].name' "$json_file")
173
+
174
+ for persona_name in "${required_persona_names[@]}"; do
175
+ if echo "$found_personas" | grep -q "^${persona_name}$"; then
176
+ if [[ "$verbose" == true ]]; then
177
+ log_success "Found required persona: $persona_name"
178
+ fi
179
+
180
+ # Validate persona structure
181
+ validate_persona_structure "$json_file" "$persona_name" "$verbose" || validation_errors=$((validation_errors + 1))
182
+ else
183
+ log_error "Missing required persona: $persona_name"
184
+ validation_errors=$((validation_errors + 1))
185
+ fi
186
+ done
187
+
188
+ # Check for unexpected personas
189
+ while IFS= read -r found_persona; do
190
+ if [[ ! " ${required_persona_names[*]} " =~ " ${found_persona} " ]]; then
191
+ log_warning "Unexpected persona found: $found_persona"
192
+ validation_warnings=$((validation_warnings + 1))
193
+ fi
194
+ done <<< "$found_personas"
195
+ fi
196
+
197
+ # Validate recommendations structure
198
+ if [[ "$verbose" == true ]]; then
199
+ log_info "Validating recommendations structure..."
200
+ fi
201
+
202
+ if ! jq -e '.epic.personas[].recommendations | type == "array"' "$json_file" >/dev/null; then
203
+ log_error "Persona recommendations must be arrays"
204
+ validation_errors=$((validation_errors + 1))
205
+ else
206
+ validate_recommendations "$json_file" "$verbose" || validation_errors=$((validation_errors + 1))
207
+ fi
208
+
209
+ # Validate metadata if present
210
+ if jq -e '.epic.metadata' "$json_file" >/dev/null; then
211
+ if [[ "$verbose" == true ]]; then
212
+ log_info "Validating epic metadata..."
213
+ fi
214
+
215
+ validate_metadata "$json_file" "$verbose" || validation_errors=$((validation_errors + 1))
216
+ fi
217
+
218
+ # Report results
219
+ echo ""
220
+ log_info "=== Validation Results ==="
221
+
222
+ if [[ $validation_errors -eq 0 ]]; then
223
+ log_success "✅ All required validations passed"
224
+ else
225
+ log_error "❌ Found $validation_errors validation errors"
226
+ fi
227
+
228
+ if [[ $validation_warnings -gt 0 ]]; then
229
+ log_warning "⚠️ Found $validation_warnings warnings"
230
+
231
+ if [[ "$strict" == true ]]; then
232
+ log_error "Strict mode enabled: treating warnings as errors"
233
+ validation_errors=$((validation_errors + validation_warnings))
234
+ fi
235
+ fi
236
+
237
+ echo ""
238
+ log_info "Summary:"
239
+ log_info " Errors: $validation_errors"
240
+ log_info " Warnings: $validation_warnings"
241
+
242
+ if [[ $validation_errors -eq 0 ]]; then
243
+ echo ""
244
+ log_success "JSON validation PASSED"
245
+ return 0
246
+ else
247
+ echo ""
248
+ log_error "JSON validation FAILED"
249
+ return 1
250
+ fi
251
+ }
252
+
253
+ # Validate individual persona structure
254
+ validate_persona_structure() {
255
+ local json_file="$1"
256
+ local persona_name="$2"
257
+ local verbose="${3:-false}"
258
+
259
+ local persona_query=".epic.personas[] | select(.name == \"${persona_name}\")"
260
+
261
+ # Check required fields
262
+ local required_persona_fields=("name" "reviewOrder" "status" "insights" "recommendations" "costAnalysis")
263
+
264
+ for field in "${required_persona_fields[@]}"; do
265
+ if ! jq -e "${persona_query} | .${field}" "$json_file" >/dev/null; then
266
+ log_error "Missing required field in ${persona_name}: ${field}"
267
+ return 1
268
+ elif [[ "$verbose" == true ]]; then
269
+ log_success " ${persona_name}: Found required field: ${field}"
270
+ fi
271
+ done
272
+
273
+ # Check reviewOrder
274
+ local review_order
275
+ review_order=$(jq -r "${persona_query} | .reviewOrder" "$json_file")
276
+ if [[ ! "$review_order" =~ ^[1-6]$ ]]; then
277
+ log_error "Invalid reviewOrder for ${persona_name}: $review_order (must be 1-6)"
278
+ return 1
279
+ fi
280
+
281
+ # Check status
282
+ local persona_status
283
+ persona_status=$(jq -r "${persona_query} | .status" "$json_file")
284
+ case "$persona_status" in
285
+ "completed"|"failed"|"in-progress"|"pending")
286
+ if [[ "$verbose" == true ]]; then
287
+ log_success " ${persona_name}: Status is valid: $persona_status"
288
+ fi
289
+ ;;
290
+ *)
291
+ log_warning "Unusual persona status for ${persona_name}: $persona_status"
292
+ ;;
293
+ esac
294
+
295
+ # Check insights and recommendations are arrays
296
+ if ! jq -e "${persona_query} | .insights | type == \"array\"" "$json_file" >/dev/null; then
297
+ log_error "${persona_name}.insights must be an array"
298
+ return 1
299
+ fi
300
+
301
+ if ! jq -e "${persona_query} | .recommendations | type == \"array\"" "$json_file" >/dev/null; then
302
+ log_error "${persona_name}.recommendations must be an array"
303
+ return 1
304
+ fi
305
+
306
+ return 0
307
+ }
308
+
309
+ # Validate recommendations structure
310
+ validate_recommendations() {
311
+ local json_file="$1"
312
+ local verbose="${2:-false}"
313
+
314
+ local recommendation_count
315
+ recommendation_count=$(jq '[.epic.personas[].recommendations[]] | length' "$json_file")
316
+
317
+ if [[ "$verbose" == true ]]; then
318
+ log_info " Total recommendations found: $recommendation_count"
319
+ fi
320
+
321
+ # Check each recommendation has required fields
322
+ local invalid_recs
323
+ invalid_recs=$(jq -r '
324
+ .epic.personas[] as $persona |
325
+ $persona.recommendations[] |
326
+ select(has("id") == false or has("title") == false or has("type") == false or has("priority") == false) |
327
+ "\($persona.name): Missing required fields"
328
+ ' "$json_file")
329
+
330
+ if [[ -n "$invalid_recs" ]]; then
331
+ log_error "Invalid recommendations found:"
332
+ echo "$invalid_recs" | sed 's/^/ /'
333
+ return 1
334
+ fi
335
+
336
+ # Check recommendation types
337
+ local invalid_types
338
+ invalid_types=$(jq -r '
339
+ .epic.personas[] as $persona |
340
+ $persona.recommendations[] |
341
+ select(.type != "blocking" and .type != "suggested") |
342
+ "\($persona.name): Invalid type \(.type)"
343
+ ' "$json_file")
344
+
345
+ if [[ -n "$invalid_types" ]]; then
346
+ log_error "Invalid recommendation types found:"
347
+ echo "$invalid_types" | sed 's/^/ /'
348
+ return 1
349
+ fi
350
+
351
+ # Check recommendation priorities
352
+ local invalid_priorities
353
+ invalid_priorities=$(jq -r '
354
+ .epic.personas[] as $persona |
355
+ $persona.recommendations[] |
356
+ select(.priority != "critical" and .priority != "high" and .priority != "medium" and .priority != "low") |
357
+ "\($persona.name): Invalid priority \(.priority)"
358
+ ' "$json_file")
359
+
360
+ if [[ -n "$invalid_priorities" ]]; then
361
+ log_warning "Invalid recommendation priorities found:"
362
+ echo "$invalid_priorities" | sed 's/^/ /'
363
+ fi
364
+
365
+ return 0
366
+ }
367
+
368
+ # Validate metadata structure
369
+ validate_metadata() {
370
+ local json_file="$1"
371
+ local verbose="${2:-false}"
372
+
373
+ # Check for expected metadata fields
374
+ local expected_metadata_fields=("createdAt" "reviewMode" "devopsEnforced")
375
+
376
+ for field in "${expected_metadata_fields[@]}"; do
377
+ if jq -e ".epic.metadata.${field}" "$json_file" >/dev/null; then
378
+ if [[ "$verbose" == true ]]; then
379
+ log_success " Found metadata field: $field"
380
+ fi
381
+ fi
382
+ done
383
+
384
+ # Validate reviewMode
385
+ local review_mode
386
+ review_mode=$(jq -r '.epic.metadata.reviewMode // empty' "$json_file")
387
+ if [[ -n "$review_mode" ]]; then
388
+ case "$review_mode" in
389
+ "mvp"|"standard"|"enterprise")
390
+ if [[ "$verbose" == true ]]; then
391
+ log_success " Review mode is valid: $review_mode"
392
+ fi
393
+ ;;
394
+ *)
395
+ log_warning "Invalid reviewMode in metadata: $review_mode"
396
+ ;;
397
+ esac
398
+ fi
399
+
400
+ # Check createdAt format (ISO 8601)
401
+ local created_at
402
+ created_at=$(jq -r '.epic.metadata.createdAt // empty' "$json_file")
403
+ if [[ -n "$created_at" ]]; then
404
+ if [[ "$created_at" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$ ]]; then
405
+ if [[ "$verbose" == true ]]; then
406
+ log_success " createdAt has valid ISO 8601 format"
407
+ fi
408
+ else
409
+ log_warning "createdAt does not match ISO 8601 format: $created_at"
410
+ fi
411
+ fi
412
+
413
+ return 0
414
+ }
415
+
416
+ # Main execution
417
+ main() {
418
+ # Parse command line arguments
419
+ local json_file=""
420
+ local verbose=false
421
+ local strict=false
422
+ local show_help=false
423
+
424
+ while [[ $# -gt 0 ]]; do
425
+ case $1 in
426
+ -h|--help)
427
+ show_help=true
428
+ shift
429
+ ;;
430
+ -v|--verbose)
431
+ verbose=true
432
+ shift
433
+ ;;
434
+ -s|--strict)
435
+ strict=true
436
+ shift
437
+ ;;
438
+ -*)
439
+ log_error "Unknown option: $1"
440
+ log_error "Use -h or --help for usage information"
441
+ exit 3
442
+ ;;
443
+ *)
444
+ if [[ -z "$json_file" ]]; then
445
+ json_file="$1"
446
+ else
447
+ log_error "Too many arguments"
448
+ log_error "Use -h or --help for usage information"
449
+ exit 3
450
+ fi
451
+ shift
452
+ ;;
453
+ esac
454
+ done
455
+
456
+ # Show help if requested
457
+ if [[ "$show_help" == true ]]; then
458
+ show_help
459
+ exit 0
460
+ fi
461
+
462
+ # Validate required arguments
463
+ if [[ -z "$json_file" ]]; then
464
+ log_error "Missing required JSON file path"
465
+ log_error "Use -h or --help for usage information"
466
+ exit 3
467
+ fi
468
+
469
+ # Run validation
470
+ validate_json_structure "$json_file" "$strict" "$verbose"
471
+ }
472
+
473
+ # Execute main function
474
+ main "$@"
@@ -1,3 +1,11 @@
1
+ ---
2
+ name: cfn-epic-parser
3
+ description: "Converts natural language epic documents from markdown into structured JSON configurations for MDAP or CFN Loop execution. Use when you need to parse epic documents, validate epic structure, or generate execution configurations from planning documents."
4
+ version: 1.0.0
5
+ tags: [epic, parser, mdap, cfn-loop, planning]
6
+ status: production
7
+ ---
8
+
1
9
  # CFN Epic Parser
2
10
 
3
11
  ## Overview
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cfn-error-management
3
- description: Unified error handling, batching, and logging for CFN Loop
3
+ description: "Unified error handling, batching, and logging for CFN Loop. Use when you need to capture agent errors, batch multiple errors for processing, log structured error data, or categorize and recover from agent failures."
4
4
  version: 1.0.0
5
5
  tags: [mega-skill, errors, logging, batch-processing]
6
6
  status: production
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cfn-intervention-system
3
- description: Human intervention detection and orchestration for CFN Loop
3
+ description: "Human intervention detection and orchestration for CFN Loop. Use when automated processes need human oversight, when escalation is required, or when managing intervention workflows and approval gates."
4
4
  version: 1.0.0
5
5
  tags: [mega-skill, intervention, human-in-the-loop, escalation]
6
6
  status: production
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cfn-knowledge-base
3
- description: Organizational learning from CFN Loop execution - workflow codification and playbooks
3
+ description: "Organizational learning from CFN Loop execution - workflow codification and playbooks. Use when you need to store successful patterns, query past learnings, track edge cases and failures, or retrieve agent configurations and iteration strategies from previous tasks."
4
4
  version: 1.0.0
5
5
  tags: [mega-skill, learning, workflow, playbook]
6
6
  status: production
@@ -0,0 +1,8 @@
1
+ {
2
+ "timestamp": "1765358428",
3
+ "agent_id": "unknown",
4
+ "original_file": "/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-local-ruvector-accelerator/src/cli/refs.rs",
5
+ "file_hash": "2cf0ad7377232c919ff0a65630cb307d",
6
+ "backup_path": "/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d",
7
+ "created_at": "2025-12-10T09:20:29Z"
8
+ }