claude-flow-novice 2.18.13 → 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.
- package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/metadata.json +8 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/original +1212 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/revert.sh +7 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/metadata.json +8 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/original +1212 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/revert.sh +7 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/metadata.json +8 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/original +1212 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/revert.sh +7 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/metadata.json +8 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/original +1228 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/revert.sh +7 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/metadata.json +8 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/original +1237 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/revert.sh +7 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/metadata.json +8 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/original +1240 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/revert.sh +7 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/metadata.json +8 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/original +1216 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/revert.sh +7 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/metadata.json +8 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/original +1238 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/revert.sh +7 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/metadata.json +8 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/original +1167 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/revert.sh +7 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/metadata.json +8 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/original +1242 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/revert.sh +7 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/metadata.json +8 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/original +2 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/revert.sh +7 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/metadata.json +8 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/original +1169 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/revert.sh +7 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/metadata.json +8 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/original +1171 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/revert.sh +7 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/metadata.json +8 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/original +1170 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/revert.sh +7 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/metadata.json +8 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/original +1173 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/revert.sh +7 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/metadata.json +8 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/original +1170 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/revert.sh +7 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/metadata.json +8 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/original +1172 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/revert.sh +7 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/metadata.json +8 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/original +1175 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/revert.sh +7 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/metadata.json +8 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/original +1178 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/revert.sh +7 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/metadata.json +8 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/original +1174 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/revert.sh +7 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/metadata.json +8 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/original +1194 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/revert.sh +7 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/metadata.json +8 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/original +1186 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/revert.sh +7 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/metadata.json +8 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/original +1180 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/revert.sh +7 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/metadata.json +8 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/original +1198 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/revert.sh +7 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/metadata.json +8 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/original +1202 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/revert.sh +7 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/metadata.json +8 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/original +1202 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/revert.sh +7 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/metadata.json +8 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/original +1209 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/revert.sh +7 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/metadata.json +8 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/original +1207 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/revert.sh +7 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/metadata.json +8 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/original +1207 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/revert.sh +7 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/metadata.json +8 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/original +1193 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/revert.sh +7 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/metadata.json +8 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/original +1194 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/revert.sh +7 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/metadata.json +8 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/original +1193 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/revert.sh +7 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/metadata.json +8 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/original +1191 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/revert.sh +7 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/metadata.json +8 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/original +1190 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/revert.sh +7 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/metadata.json +8 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/original +1191 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/revert.sh +7 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/metadata.json +8 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/original +1189 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/revert.sh +7 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/metadata.json +8 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/original +1197 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/revert.sh +7 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/metadata.json +8 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/original +1190 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/revert.sh +7 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/metadata.json +8 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/original +1197 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/revert.sh +7 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/metadata.json +8 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/original +1197 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/revert.sh +7 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.md +194 -2
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh +264 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh.backup +698 -0
- package/.claude/hooks/README.md +148 -0
- package/.claude/hooks/SessionStart:cfn-load-openai-key.sh +35 -0
- package/.claude/hooks/cfn-invoke-pre-edit.sh +1 -1
- package/.claude/hooks/cfn-load-cerebras-env.sh +65 -0
- package/.claude/hooks/cfn-precompact-enhanced.sh +283 -0
- package/.claude/hooks/deprecated/README.md +27 -0
- package/.claude/settings.json +71 -6
- package/.claude/skills/cfn-cerebras-coordinator/QUICKSTART.md +348 -0
- package/.claude/skills/cfn-cerebras-coordinator/README.md +525 -0
- package/.claude/skills/cfn-cerebras-coordinator/TDD_COORDINATOR_OVERVIEW.md +284 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v2-test-1733854200.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v3-test-1765383241.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v2-test-1765381361.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v3-test-1765383242.json +46 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v2-test-1733864400.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v3-test-1765383238.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v4-test-1765386506.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v5-test-1765393100.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/example-usage.sh +206 -0
- package/.claude/skills/cfn-cerebras-coordinator/lib/tdd-conversation-coordinator.ts +569 -0
- package/.claude/skills/cfn-cerebras-coordinator/test-tdd-coordinator.sh +250 -0
- package/.claude/skills/cfn-epic-creator/SKILL.md +392 -0
- package/.claude/skills/cfn-epic-creator/estimate-costs.sh +524 -0
- package/.claude/skills/cfn-epic-creator/invoke.sh +445 -0
- package/.claude/skills/cfn-epic-creator/parse-personas.sh +533 -0
- package/.claude/skills/cfn-epic-creator/security-utils.sh +268 -0
- package/.claude/skills/cfn-epic-creator/security-verification-demo.sh +127 -0
- package/.claude/skills/cfn-epic-creator/test-invoke.sh +620 -0
- package/.claude/skills/cfn-epic-creator/test-security-fixes.sh +195 -0
- package/.claude/skills/cfn-epic-creator/test-security-simple.sh +165 -0
- package/.claude/skills/cfn-epic-creator/validate-epic.sh +474 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/metadata.json +8 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/original +209 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/revert.sh +7 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/AGENT_INTEGRATION_PATTERNS.md +255 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml +8 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml.backup +47 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/EXTRACTION_EXAMPLES.md +287 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/README.md +2 -563
- package/.claude/skills/cfn-local-ruvector-accelerator/SCHEMA_V2_IMPLEMENTATION.md +151 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/SECURITY_IMPLEMENTATION.md +185 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/SKILL.md +8 -351
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/EXECUTIVE_SUMMARY.txt +90 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/PHASE_4_QUERY_API.md +210 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/RUST_AST_EXTRACTOR_IMPLEMENTATION.md +222 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/TRANSACTION_MANAGEMENT.md +241 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/VALIDATION_FINDINGS.txt +250 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/epic-ast-indexer.json +335 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh +292 -96
- package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh.backup +249 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/index_all.sh +65 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/find.rs +214 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index.rs +259 -103
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_ast.rs +767 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_modified.rs +37 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/init.rs +17 -12
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/migration.rs +34 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/mod.rs +6 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/refs.rs +209 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/embeddings.rs +82 -33
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/mod.rs +251 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust.rs +425 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust_placeholder.rs +420 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/text_fallback.rs +490 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript.rs +520 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript_full.rs +531 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/lib.rs +20 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs +33 -2
- package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs.backup +360 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration.rs +325 -318
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_backup.rs +325 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_tx.rs +513 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/paths.rs +29 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/query_api.rs +609 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/schema_v2.rs +603 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/security_tests.rs +154 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2.rs +583 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_backup.rs +560 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_fixed.rs +0 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_tx.rs +397 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/test_schema.rs +228 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/transaction_tests.rs +410 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_ast_indexing.rs +59 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_query_api.sh +103 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_schema.sql +158 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_schema_v2.sql +147 -0
- package/.claude/skills/cfn-mdap-context-injection/SKILL.md +31 -10
- package/.claude/skills/cfn-mdap-error-fixer/skill.md +15 -205
- package/.claude/skills/cfn-session-handoff/SKILL.md +1 -53
- package/.claude/skills/cfn-task-decomposition/SKILL.md +1 -0
- package/.claude/skills/cfn-task-intelligence/SKILL.md +39 -18
- package/.claude/skills/cfn-task-planning/SKILL.md +37 -12
- package/.claude/skills/cfn-validation-framework/SKILL.md +3 -60
- package/.claude/skills/cfn-vision-analysis/SKILL.md +3 -20
- package/.claude-flow/metrics/performance.json +3 -3
- package/.claude-flow/metrics/task-metrics.json +3 -3
- package/.ruvector/index_v2.db-shm +0 -0
- package/.ruvector/index_v2.db-wal +0 -0
- package/CLAUDE.md +9 -1
- package/README.md +56 -0
- package/docs/AGENT_PRODUCTION_FEEDBACK_PATTERNS.md +389 -0
- package/docs/CEREBRAS_TDD_COORDINATOR_TEST_RESULTS.md +213 -0
- package/docs/CEREBRAS_TDD_ROUND1_VS_ROUND2_COMPARISON.md +225 -0
- package/docs/CEREBRAS_TDD_ROUND3_FINAL_RESULTS.md +264 -0
- package/docs/EPIC_CREATOR_V2_ARCHITECTURE.md +629 -0
- package/docs/HOOKS_IMPLEMENTATION_PRIORITY.md +585 -0
- package/docs/SKILLS_HOOKS_INTEGRATION.md +1074 -0
- package/epic-with-personas-2025-12-09-17-15-13.json +253 -0
- package/package.json +2 -1
- package/test-epic-creator-security.sh +203 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/__pycache__/search_engine_v2.cpython-312.pyc +0 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/search_engine.py +0 -200
- package/jest.config.ts.cjs +0 -17
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/context-analyzer.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/generate-code.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/execute.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/INTEGRATION.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SAMPLE_OUTPUTS.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/capture-container-logs.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/enable-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/init-hybrid-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/analytics-summary.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-agent-timeline.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-consensus-history.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-coordination-timeline.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-failed-containers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-gate-checks.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/schema.sql +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/sqlite-helpers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/test-hybrid-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/skill-mcp-selector.js +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/orchestrate.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/spawn-agent.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/cleanup-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/lib/docker-helpers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/monitor-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/spawn-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/task-mode-heap-limiter.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/deprecated/analyze-patterns.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/README.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SECURITY.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/package.json +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/solve.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver-minimal.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test.cjs +0 -0
- /package/.claude/hooks/{cfn-credential-scanner.sh → deprecated/cfn-credential-scanner.sh} +0 -0
- /package/.claude/hooks/{cfn-detect-hardcoded-credentials.sh → deprecated/cfn-detect-hardcoded-credentials.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-post-edit-ts.sh → deprecated/cfn-invoke-post-edit-ts.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-pre-edit-ts.sh → deprecated/cfn-invoke-pre-edit-ts.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-security-validation.sh → deprecated/cfn-invoke-security-validation.sh} +0 -0
- /package/.claude/hooks/{cfn-lint-sql-injection.sh → deprecated/cfn-lint-sql-injection.sh} +0 -0
- /package/.claude/hooks/{cfn-post-edit.sh → deprecated/cfn-post-edit.sh} +0 -0
- /package/.claude/hooks/{cfn-pre-edit-backup.sh → deprecated/cfn-pre-edit-backup.sh} +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{embeddings_manager.py → embeddings_manager.py.backup} +0 -0
- /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/index.bin +0 -0
- /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/metadata.json +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{search_engine_v2.py → search_engine_v2.py.backup} +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{sqlite_store.py → sqlite_store.py.backup} +0 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Test TDD Conversation Coordinator
|
|
5
|
+
# Validates conversation memory and iterative refinement
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
COORDINATOR="$SCRIPT_DIR/tdd-conversation-coordinator.sh"
|
|
9
|
+
|
|
10
|
+
# Test utilities
|
|
11
|
+
source "$(dirname "$SCRIPT_DIR")/../../../tests/test-utils.sh" 2>/dev/null || {
|
|
12
|
+
# Fallback test utilities
|
|
13
|
+
log_step() { echo "[STEP] $*"; }
|
|
14
|
+
log_info() { echo "[INFO] $*"; }
|
|
15
|
+
log_error() { echo "[ERROR] $*" >&2; }
|
|
16
|
+
assert_success() { [[ $? -eq 0 ]] || { log_error "Command failed"; exit 1; }; }
|
|
17
|
+
assert_file_exists() { [[ -f "$1" ]] || { log_error "File not found: $1"; exit 1; }; }
|
|
18
|
+
assert_contains() { grep -q "$2" "$1" || { log_error "Pattern '$2' not found in $1"; exit 1; }; }
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
# Setup
|
|
22
|
+
TEST_DIR="/tmp/test-tdd-coordinator-$$"
|
|
23
|
+
mkdir -p "$TEST_DIR"
|
|
24
|
+
|
|
25
|
+
cleanup() {
|
|
26
|
+
rm -rf "$TEST_DIR"
|
|
27
|
+
}
|
|
28
|
+
trap cleanup EXIT
|
|
29
|
+
|
|
30
|
+
# Test configuration
|
|
31
|
+
export ZAI_API_KEY="${ZAI_API_KEY:-test-key-placeholder}"
|
|
32
|
+
export ZAI_BASE_URL="${ZAI_BASE_URL:-https://api.zai.ai/v1}"
|
|
33
|
+
|
|
34
|
+
# === TEST 1: Argument Parsing ===
|
|
35
|
+
test_argument_parsing() {
|
|
36
|
+
log_step "TEST 1: Argument parsing and validation"
|
|
37
|
+
|
|
38
|
+
# Test help
|
|
39
|
+
if "$COORDINATOR" --help 2>&1 | grep -q "Usage:"; then
|
|
40
|
+
log_info "Help text displays correctly"
|
|
41
|
+
else
|
|
42
|
+
log_error "Help text missing"
|
|
43
|
+
return 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Test missing required arguments
|
|
47
|
+
local output
|
|
48
|
+
output=$("$COORDINATOR" 2>&1) || true
|
|
49
|
+
if echo "$output" | grep -q "Missing required"; then
|
|
50
|
+
log_info "Missing argument detection works"
|
|
51
|
+
else
|
|
52
|
+
log_error "Should reject missing arguments"
|
|
53
|
+
log_error "Got output: $output"
|
|
54
|
+
return 1
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
log_info "Argument parsing: PASS"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# === TEST 2: Conversation Initialization ===
|
|
61
|
+
test_conversation_init() {
|
|
62
|
+
log_step "TEST 2: Conversation file initialization"
|
|
63
|
+
|
|
64
|
+
# Create minimal test
|
|
65
|
+
local test_feature="Test feature"
|
|
66
|
+
local test_file="$TEST_DIR/test.ts"
|
|
67
|
+
local agent_id="test-agent-$$"
|
|
68
|
+
|
|
69
|
+
# Mock API key (won't actually call)
|
|
70
|
+
export ZAI_API_KEY="mock-key"
|
|
71
|
+
|
|
72
|
+
# We can't run full coordinator without API, but we can test argument parsing
|
|
73
|
+
local cmd="$COORDINATOR --agent-id $agent_id --feature \"$test_feature\" --file $test_file --test-command \"echo test\" --max-iterations 1 2>&1"
|
|
74
|
+
|
|
75
|
+
log_info "Would execute: $cmd"
|
|
76
|
+
log_info "Full execution requires valid ZAI_API_KEY"
|
|
77
|
+
|
|
78
|
+
log_info "Conversation initialization: SKIPPED (requires API)"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# === TEST 3: Test File Path Generation ===
|
|
82
|
+
test_file_path_generation() {
|
|
83
|
+
log_step "TEST 3: Test file path generation logic"
|
|
84
|
+
|
|
85
|
+
# Test various file extensions
|
|
86
|
+
declare -A test_cases=(
|
|
87
|
+
["src/auth.ts"]="src/auth.test.ts"
|
|
88
|
+
["src/utils.js"]="src/utils.test.js"
|
|
89
|
+
["src/validator.py"]="src/test_validator.py"
|
|
90
|
+
["src/handler.go"]="src/handler_test.go"
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
local all_pass=true
|
|
94
|
+
for impl_file in "${!test_cases[@]}"; do
|
|
95
|
+
local expected="${test_cases[$impl_file]}"
|
|
96
|
+
|
|
97
|
+
# Extract logic from main script (simulate)
|
|
98
|
+
local test_file
|
|
99
|
+
case "${impl_file##*.}" in
|
|
100
|
+
ts|tsx)
|
|
101
|
+
test_file="${impl_file%.*}.test.ts"
|
|
102
|
+
;;
|
|
103
|
+
js|jsx)
|
|
104
|
+
test_file="${impl_file%.*}.test.js"
|
|
105
|
+
;;
|
|
106
|
+
py)
|
|
107
|
+
test_file="test_$(basename "$impl_file")"
|
|
108
|
+
test_file="$(dirname "$impl_file")/$test_file"
|
|
109
|
+
;;
|
|
110
|
+
go)
|
|
111
|
+
test_file="${impl_file%.*}_test.go"
|
|
112
|
+
;;
|
|
113
|
+
*)
|
|
114
|
+
test_file="${impl_file%.*}.test.${impl_file##*.}"
|
|
115
|
+
;;
|
|
116
|
+
esac
|
|
117
|
+
|
|
118
|
+
if [[ "$test_file" == "$expected" ]]; then
|
|
119
|
+
log_info "$impl_file -> $test_file (OK)"
|
|
120
|
+
else
|
|
121
|
+
log_error "$impl_file -> $test_file (expected: $expected)"
|
|
122
|
+
all_pass=false
|
|
123
|
+
fi
|
|
124
|
+
done
|
|
125
|
+
|
|
126
|
+
if [[ "$all_pass" == "true" ]]; then
|
|
127
|
+
log_info "Test file path generation: PASS"
|
|
128
|
+
else
|
|
129
|
+
log_error "Test file path generation: FAIL"
|
|
130
|
+
return 1
|
|
131
|
+
fi
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
# === TEST 4: Conversation File Structure ===
|
|
135
|
+
test_conversation_structure() {
|
|
136
|
+
log_step "TEST 4: Conversation JSON structure"
|
|
137
|
+
|
|
138
|
+
# Create a mock conversation file
|
|
139
|
+
local conv_file="$TEST_DIR/conversation.json"
|
|
140
|
+
local agent_id="test-agent"
|
|
141
|
+
local feature="Test feature"
|
|
142
|
+
local file_path="$TEST_DIR/test.ts"
|
|
143
|
+
|
|
144
|
+
cat > "$conv_file" <<EOF
|
|
145
|
+
{
|
|
146
|
+
"messages": [
|
|
147
|
+
{
|
|
148
|
+
"role": "system",
|
|
149
|
+
"content": "You are a TDD expert.",
|
|
150
|
+
"timestamp": "$(date -Iseconds)"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"metadata": {
|
|
154
|
+
"agent_id": "$agent_id",
|
|
155
|
+
"feature": "$feature",
|
|
156
|
+
"file_path": "$file_path",
|
|
157
|
+
"started_at": "$(date -Iseconds)",
|
|
158
|
+
"iterations": 0,
|
|
159
|
+
"phase": "init"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
EOF
|
|
163
|
+
|
|
164
|
+
# Validate structure
|
|
165
|
+
assert_file_exists "$conv_file"
|
|
166
|
+
|
|
167
|
+
# Check required fields
|
|
168
|
+
if jq -e '.messages | type == "array"' "$conv_file" >/dev/null; then
|
|
169
|
+
log_info "messages array present"
|
|
170
|
+
else
|
|
171
|
+
log_error "messages array missing"
|
|
172
|
+
return 1
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
if jq -e '.metadata.agent_id' "$conv_file" >/dev/null; then
|
|
176
|
+
log_info "metadata.agent_id present"
|
|
177
|
+
else
|
|
178
|
+
log_error "metadata.agent_id missing"
|
|
179
|
+
return 1
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
if jq -e '.metadata.phase' "$conv_file" >/dev/null; then
|
|
183
|
+
log_info "metadata.phase present"
|
|
184
|
+
else
|
|
185
|
+
log_error "metadata.phase missing"
|
|
186
|
+
return 1
|
|
187
|
+
fi
|
|
188
|
+
|
|
189
|
+
log_info "Conversation structure: PASS"
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
# === TEST 5: Integration Test (Mock) ===
|
|
193
|
+
test_integration_mock() {
|
|
194
|
+
log_step "TEST 5: Integration test with mock API"
|
|
195
|
+
|
|
196
|
+
log_info "Full integration test requires:"
|
|
197
|
+
log_info " - Valid ZAI_API_KEY"
|
|
198
|
+
log_info " - Test project with runnable tests"
|
|
199
|
+
log_info " - RuVector index (optional)"
|
|
200
|
+
log_info ""
|
|
201
|
+
log_info "Example usage:"
|
|
202
|
+
log_info " $COORDINATOR \\"
|
|
203
|
+
log_info " --agent-id tdd-001 \\"
|
|
204
|
+
log_info " --feature \"Email validator function\" \\"
|
|
205
|
+
log_info " --file ./src/validators/email.ts \\"
|
|
206
|
+
log_info " --test-command \"npm test email.test.ts\" \\"
|
|
207
|
+
log_info " --context \"./src/types.ts\" \\"
|
|
208
|
+
log_info " --max-iterations 3 \\"
|
|
209
|
+
log_info " --verbose"
|
|
210
|
+
|
|
211
|
+
log_info "Integration test: SKIPPED (requires live API)"
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
# === RUN ALL TESTS ===
|
|
215
|
+
main() {
|
|
216
|
+
echo "================================================"
|
|
217
|
+
echo " TDD Conversation Coordinator - Test Suite"
|
|
218
|
+
echo "================================================"
|
|
219
|
+
echo
|
|
220
|
+
|
|
221
|
+
local failed=0
|
|
222
|
+
|
|
223
|
+
test_argument_parsing || failed=$((failed + 1))
|
|
224
|
+
echo
|
|
225
|
+
|
|
226
|
+
test_conversation_init || failed=$((failed + 1))
|
|
227
|
+
echo
|
|
228
|
+
|
|
229
|
+
test_file_path_generation || failed=$((failed + 1))
|
|
230
|
+
echo
|
|
231
|
+
|
|
232
|
+
test_conversation_structure || failed=$((failed + 1))
|
|
233
|
+
echo
|
|
234
|
+
|
|
235
|
+
test_integration_mock || failed=$((failed + 1))
|
|
236
|
+
echo
|
|
237
|
+
|
|
238
|
+
echo "================================================"
|
|
239
|
+
if [[ $failed -eq 0 ]]; then
|
|
240
|
+
echo " All tests passed!"
|
|
241
|
+
echo "================================================"
|
|
242
|
+
exit 0
|
|
243
|
+
else
|
|
244
|
+
echo " $failed test(s) failed"
|
|
245
|
+
echo "================================================"
|
|
246
|
+
exit 1
|
|
247
|
+
fi
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
main
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cfn-epic-creator
|
|
3
|
+
description: "Creates comprehensive epic definitions with sequential reviews from 6 key personas. Use when you need to analyze requirements from multiple perspectives and generate structured epic documentation with cost estimates and risk assessments."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags: [epic, creator, personas, analysis, cost-estimation, requirements]
|
|
6
|
+
status: production
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# CFN Epic Creator
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The cfn-epic-creator skill provides orchestration for creating comprehensive epic definitions through sequential reviews from six key personas: Product Owner, Architect, Security Specialist, Performance Specialist, Accessibility Advocate, and DevOps Engineer.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
### Basic Epic Creation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Create epic with default settings
|
|
21
|
+
./.claude/skills/cfn-epic-creator/invoke.sh "Build a customer-facing analytics dashboard"
|
|
22
|
+
|
|
23
|
+
# Create epic with specific output file
|
|
24
|
+
./.claude/skills/cfn-epic-creator/invoke.sh "Develop mobile banking app" \
|
|
25
|
+
--output=banking-epic.json
|
|
26
|
+
|
|
27
|
+
# Create epic in enterprise mode
|
|
28
|
+
./.claude/skills/cfn-epic-creator/invoke.sh "Implement AI-powered fraud detection" \
|
|
29
|
+
--mode=enterprise
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Advanced Usage
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Enterprise mode with DevOps enforcement
|
|
36
|
+
./invoke.sh "Global supply chain management system" \
|
|
37
|
+
--mode=enterprise \
|
|
38
|
+
--enforce-devops \
|
|
39
|
+
--output=supply-chain-epic.json \
|
|
40
|
+
--verbose
|
|
41
|
+
|
|
42
|
+
# MVP mode for rapid prototyping
|
|
43
|
+
./invoke.sh "Simple proof-of-concept for AR furniture placement" \
|
|
44
|
+
--mode=mvp
|
|
45
|
+
|
|
46
|
+
# Validate without creating file
|
|
47
|
+
./invoke.sh "Complex multi-region deployment strategy" \
|
|
48
|
+
--validate-only \
|
|
49
|
+
--verbose
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Command Line Options
|
|
53
|
+
|
|
54
|
+
- `<epic-description>`: Detailed description of the epic to be analyzed (required)
|
|
55
|
+
- `-m, --mode <mode>`: Review thoroughness level
|
|
56
|
+
- `mvp`: Basic reviews, focus on critical items only (~60% fewer recommendations)
|
|
57
|
+
- `standard`: Full comprehensive reviews (default)
|
|
58
|
+
- `enterprise`: Deep dive with compliance and governance focus
|
|
59
|
+
- `-e, --enforce-devops`: Make DevOps recommendations blocking instead of suggested
|
|
60
|
+
- `-o, --output <path>`: Output JSON file path (default: auto-generated with timestamp)
|
|
61
|
+
- `-v, --verbose`: Enable verbose logging
|
|
62
|
+
- `--validate-only`: Validate generated epic JSON without creating file
|
|
63
|
+
- `-h, --help`: Show help message
|
|
64
|
+
|
|
65
|
+
## Supporting Scripts
|
|
66
|
+
|
|
67
|
+
### validate-epic.sh
|
|
68
|
+
|
|
69
|
+
Validates generated epic JSON structure and content.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Basic validation
|
|
73
|
+
./validate-epic.sh epic.json
|
|
74
|
+
|
|
75
|
+
# Verbose validation with details
|
|
76
|
+
./validate-epic.sh epic.json --verbose
|
|
77
|
+
|
|
78
|
+
# Strict validation (treat warnings as errors)
|
|
79
|
+
./validate-epic.sh epic.json --strict
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Options:
|
|
83
|
+
- `-v, --verbose`: Show detailed validation output
|
|
84
|
+
- `-s, --strict`: Enable strict validation (fails on warnings)
|
|
85
|
+
- `-h, --help`: Show help message
|
|
86
|
+
|
|
87
|
+
### parse-personas.sh
|
|
88
|
+
|
|
89
|
+
Extracts specific persona insights from generated epic JSON.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Show all persona insights
|
|
93
|
+
./parse-personas.sh epic.json
|
|
94
|
+
|
|
95
|
+
# Extract specific persona
|
|
96
|
+
./parse-personas.sh epic.json --persona=architect
|
|
97
|
+
|
|
98
|
+
# Filter by recommendation type
|
|
99
|
+
./parse-personas.sh epic.json --type=blocking
|
|
100
|
+
|
|
101
|
+
# Export as markdown
|
|
102
|
+
./parse-personas.sh epic.json --format=markdown --output=personas.md
|
|
103
|
+
|
|
104
|
+
# Show counts only
|
|
105
|
+
./parse-personas.sh epic.json --count
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Options:
|
|
109
|
+
- `-p, --persona <name>`: Filter by specific persona
|
|
110
|
+
- `-t, --type <type>`: Filter by recommendation type (blocking/suggested)
|
|
111
|
+
- `-r, --priority <prio>`: Filter by priority (critical/high/medium/low)
|
|
112
|
+
- `-f, --format <fmt>`: Output format (text/json/markdown)
|
|
113
|
+
- `-c, --count`: Show only counts per persona
|
|
114
|
+
- `-s, --summary`: Show summarized insights only
|
|
115
|
+
- `-o, --output <file>`: Write output to file
|
|
116
|
+
|
|
117
|
+
### estimate-costs.sh
|
|
118
|
+
|
|
119
|
+
Aggregates cost estimates from all personas in epic JSON.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Show cost summary
|
|
123
|
+
./estimate-costs.sh epic.json
|
|
124
|
+
|
|
125
|
+
# Detailed breakdown by persona
|
|
126
|
+
./estimate-costs.sh epic.json --format=detailed
|
|
127
|
+
|
|
128
|
+
# Export as CSV
|
|
129
|
+
./estimate-costs.sh epic.json --format=csv --output=costs.csv
|
|
130
|
+
|
|
131
|
+
# Filter by blocking recommendations only
|
|
132
|
+
./estimate-costs.sh epic.json --type=blocking
|
|
133
|
+
|
|
134
|
+
# Sort by highest cost
|
|
135
|
+
./estimate-costs.sh epic.json --sort-by=total
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Options:
|
|
139
|
+
- `-p, --persona <name>`: Show costs for specific persona only
|
|
140
|
+
- `-t, --type <type>`: Filter by recommendation type (blocking/suggested)
|
|
141
|
+
- `-r, --priority <prio>`: Filter by priority
|
|
142
|
+
- `-f, --format <fmt>`: Output format (summary/detailed/csv/json)
|
|
143
|
+
- `-c, --currency <curr>`: Currency symbol for display (default: $)
|
|
144
|
+
- `-s, --sort-by <field>`: Sort personas by field (total/blocking/suggested/name)
|
|
145
|
+
- `-o, --output <file>`: Write output to file
|
|
146
|
+
|
|
147
|
+
## Output Structure
|
|
148
|
+
|
|
149
|
+
The generated JSON follows this structure:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"epic": {
|
|
154
|
+
"id": "EPIC-XXXXXX",
|
|
155
|
+
"title": "Extracted from description",
|
|
156
|
+
"description": "Full epic description",
|
|
157
|
+
"status": "in-review",
|
|
158
|
+
"priority": "high",
|
|
159
|
+
"estimatedDuration": "TBD",
|
|
160
|
+
"budget": "TBD",
|
|
161
|
+
"owner": "TBD",
|
|
162
|
+
"metadata": {
|
|
163
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
164
|
+
"reviewMode": "standard|enterprise|mvp",
|
|
165
|
+
"devopsEnforced": true|false
|
|
166
|
+
},
|
|
167
|
+
"personas": [
|
|
168
|
+
{
|
|
169
|
+
"name": "product-owner",
|
|
170
|
+
"reviewOrder": 1,
|
|
171
|
+
"status": "completed",
|
|
172
|
+
"insights": [
|
|
173
|
+
"Strategic insight 1",
|
|
174
|
+
"Strategic insight 2"
|
|
175
|
+
],
|
|
176
|
+
"recommendations": [
|
|
177
|
+
{
|
|
178
|
+
"id": "PO-001",
|
|
179
|
+
"title": "Recommendation title",
|
|
180
|
+
"type": "blocking|suggested",
|
|
181
|
+
"priority": "critical|high|medium|low",
|
|
182
|
+
"estimatedCost": "$X,XXX",
|
|
183
|
+
"description": "Detailed description"
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"costAnalysis": {
|
|
187
|
+
"category1": "$X,XXX",
|
|
188
|
+
"category2": "$X,XXX"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "architect",
|
|
193
|
+
"reviewOrder": 2,
|
|
194
|
+
"...": "..."
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "security-specialist",
|
|
198
|
+
"reviewOrder": 3,
|
|
199
|
+
"...": "..."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "performance-specialist",
|
|
203
|
+
"reviewOrder": 4,
|
|
204
|
+
"...": "..."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"name": "accessibility-advocate",
|
|
208
|
+
"reviewOrder": 5,
|
|
209
|
+
"...": "..."
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "devops-engineer",
|
|
213
|
+
"reviewOrder": 6,
|
|
214
|
+
"...": "..."
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"implementationRoadmap": [],
|
|
218
|
+
"totalCostBreakdown": {},
|
|
219
|
+
"riskAssessment": {}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Persona Review Order
|
|
225
|
+
|
|
226
|
+
1. **Product Owner** - Business value, user stories, market fit
|
|
227
|
+
2. **Architect** - System design, technology choices, scalability
|
|
228
|
+
3. **Security Specialist** - Security posture, vulnerabilities, compliance
|
|
229
|
+
4. **Performance Specialist** - Performance metrics, optimization, monitoring
|
|
230
|
+
5. **Accessibility Advocate** - WCAG compliance, inclusive design
|
|
231
|
+
6. **DevOps Engineer** - Deployment, operations, infrastructure
|
|
232
|
+
|
|
233
|
+
## Integration with CFN Loop
|
|
234
|
+
|
|
235
|
+
The epic creator integrates seamlessly with CFN Loop workflows:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Using with CFN Loop
|
|
239
|
+
/cfn-loop-task "Analyze epic for user authentication system" \
|
|
240
|
+
--agent epic-creator-v2 \
|
|
241
|
+
--context epic-description="Implement OAuth 2.0 with social login providers" \
|
|
242
|
+
--context mode=enterprise
|
|
243
|
+
|
|
244
|
+
# Direct integration
|
|
245
|
+
./invoke.sh "Implement real-time data processing pipeline" \
|
|
246
|
+
--mode=standard \
|
|
247
|
+
--output=pipeline-epic.json
|
|
248
|
+
|
|
249
|
+
# Parse and validate in pipeline
|
|
250
|
+
./validate-epic.sh pipeline-epic.json
|
|
251
|
+
./parse-personas.sh pipeline-epic.json --format=markdown --output=pipeline-personas.md
|
|
252
|
+
./estimate-costs.sh pipeline-epic.json --format=csv --output=pipeline-costs.csv
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Testing
|
|
256
|
+
|
|
257
|
+
Run the comprehensive test suite:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Run all tests
|
|
261
|
+
./test-invoke.sh
|
|
262
|
+
|
|
263
|
+
# Run specific test
|
|
264
|
+
./test-invoke.sh --test generation
|
|
265
|
+
|
|
266
|
+
# Keep logs for debugging
|
|
267
|
+
./test-invoke.sh --keep-logs
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
The test suite validates:
|
|
271
|
+
- Help functionality and error handling
|
|
272
|
+
- Argument parsing and validation
|
|
273
|
+
- Epic generation in all modes
|
|
274
|
+
- JSON structure validation
|
|
275
|
+
- Persona parsing and filtering
|
|
276
|
+
- Cost estimation and formatting
|
|
277
|
+
- Integration scenarios
|
|
278
|
+
- Error handling edge cases
|
|
279
|
+
|
|
280
|
+
## Dependencies
|
|
281
|
+
|
|
282
|
+
- `jq`: Required for JSON processing
|
|
283
|
+
- Ubuntu/Debian: `sudo apt-get install jq`
|
|
284
|
+
- macOS: `brew install jq`
|
|
285
|
+
- `bc`: Required for cost calculations (in estimate-costs.sh)
|
|
286
|
+
- Ubuntu/Debian: `sudo apt-get install bc`
|
|
287
|
+
- macOS: Pre-installed
|
|
288
|
+
|
|
289
|
+
## Exit Codes
|
|
290
|
+
|
|
291
|
+
- `0`: Success
|
|
292
|
+
- `1`: General error
|
|
293
|
+
- `2`: Validation error
|
|
294
|
+
- `3`: Missing required arguments
|
|
295
|
+
- `4`: Invalid mode specified
|
|
296
|
+
- `5`: Agent execution failed
|
|
297
|
+
|
|
298
|
+
## Best Practices
|
|
299
|
+
|
|
300
|
+
1. **Clear Epic Descriptions**: Provide detailed, specific descriptions including:
|
|
301
|
+
- Business objectives
|
|
302
|
+
- Technical requirements
|
|
303
|
+
- Target users/stakeholders
|
|
304
|
+
- Success criteria
|
|
305
|
+
- Constraints and assumptions
|
|
306
|
+
|
|
307
|
+
2. **Choose Appropriate Mode**:
|
|
308
|
+
- Use `mvp` for rapid prototyping and early validation
|
|
309
|
+
- Use `standard` for most production projects
|
|
310
|
+
- Use `enterprise` for regulated industries or large-scale systems
|
|
311
|
+
|
|
312
|
+
3. **DevOps Considerations**:
|
|
313
|
+
- Enable `--enforce-devops` for production systems
|
|
314
|
+
- Review DevOps recommendations carefully for operational impact
|
|
315
|
+
|
|
316
|
+
4. **Cost Analysis**:
|
|
317
|
+
- Use cost estimates for budget planning
|
|
318
|
+
- Prioritize blocking recommendations
|
|
319
|
+
- Consider total cost of ownership, not just implementation
|
|
320
|
+
|
|
321
|
+
5. **Follow-up Actions**:
|
|
322
|
+
- Validate generated epics before proceeding
|
|
323
|
+
- Extract persona insights for stakeholder review
|
|
324
|
+
- Use cost breakdowns for financial planning
|
|
325
|
+
- Track implementation against recommendations
|
|
326
|
+
|
|
327
|
+
## Examples
|
|
328
|
+
|
|
329
|
+
### E-commerce Platform Epic
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
./invoke.sh \
|
|
333
|
+
"Build a scalable e-commerce platform with product catalog, shopping cart, payment processing, order management, and admin dashboard. Must support 100,000 concurrent users, multiple currencies, and real-time inventory updates." \
|
|
334
|
+
--mode=enterprise \
|
|
335
|
+
--enforce-devops \
|
|
336
|
+
--output=ecommerce-epic.json
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### API Integration Epic
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
./invoke.sh \
|
|
343
|
+
"Integrate third-party payment gateways (Stripe, PayPal, Square) with existing order processing system. Include webhook handling, error retry logic, and comprehensive logging." \
|
|
344
|
+
--mode=standard \
|
|
345
|
+
--output=payment-integration-epic.json
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Data Migration Epic
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
./invoke.sh \
|
|
352
|
+
"Migrate legacy customer database from Oracle to PostgreSQL with zero downtime. Include data validation, rollback procedures, and performance optimization." \
|
|
353
|
+
--mode=enterprise \
|
|
354
|
+
--enforce-devops
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## Troubleshooting
|
|
358
|
+
|
|
359
|
+
### Common Issues
|
|
360
|
+
|
|
361
|
+
1. **Invalid JSON output**
|
|
362
|
+
- Run validate-epic.sh to check structure
|
|
363
|
+
- Check agent logs for errors
|
|
364
|
+
- Ensure epic description is clear and complete
|
|
365
|
+
|
|
366
|
+
2. **Missing recommendations**
|
|
367
|
+
- Try enterprise mode for comprehensive analysis
|
|
368
|
+
- Check if keywords trigger specific persona insights
|
|
369
|
+
- Review epic description for missing context
|
|
370
|
+
|
|
371
|
+
3. **Cost estimation shows $0**
|
|
372
|
+
- Check if estimatedCost fields are populated
|
|
373
|
+
- Verify currency format is recognized
|
|
374
|
+
- Run with --verbose to see parsing details
|
|
375
|
+
|
|
376
|
+
4. **DevOps recommendations not blocking**
|
|
377
|
+
- Use --enforce-devops flag
|
|
378
|
+
- Check DevOps persona status in output
|
|
379
|
+
- Review deployment-related keywords in description
|
|
380
|
+
|
|
381
|
+
### Debug Mode
|
|
382
|
+
|
|
383
|
+
Enable verbose logging to debug issues:
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
./invoke.sh "Your epic description" \
|
|
387
|
+
--verbose \
|
|
388
|
+
--output=debug-epic.json
|
|
389
|
+
|
|
390
|
+
# Then validate with details
|
|
391
|
+
./validate-epic.sh debug-epic.json --verbose
|
|
392
|
+
```
|