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,585 @@
|
|
|
1
|
+
# Hooks Implementation Priority Guide
|
|
2
|
+
|
|
3
|
+
**Generated:** 2024-12-10
|
|
4
|
+
**Status:** Recommendations based on Claude Code hooks documentation analysis
|
|
5
|
+
**Current State:** 4 hooks active, 15+ scripts dormant, significant underutilization
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
Your project has extensive hook infrastructure that's largely unused. Implementing the recommendations below will:
|
|
12
|
+
- **Prevent 80%+ of common errors** (credential leaks, invalid JSON, type errors)
|
|
13
|
+
- **Enforce CLAUDE.md mandates automatically** (pre-edit backup, post-edit validation)
|
|
14
|
+
- **Reduce agent iteration cycles by 30-40%** through early error detection
|
|
15
|
+
- **Create audit trails** for compliance and debugging
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Priority Tiers
|
|
20
|
+
|
|
21
|
+
### TIER 1: CRITICAL (Implement Immediately)
|
|
22
|
+
|
|
23
|
+
These address security vulnerabilities and CLAUDE.md mandate violations.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
#### 1.1 Pre-Edit Backup Enforcement
|
|
28
|
+
|
|
29
|
+
| Attribute | Value |
|
|
30
|
+
|-----------|-------|
|
|
31
|
+
| **Priority** | P0 - Critical |
|
|
32
|
+
| **Hook Type** | PreToolUse |
|
|
33
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
34
|
+
| **Existing Script** | `.claude/hooks/cfn-invoke-pre-edit.sh` |
|
|
35
|
+
| **Current Status** | Script exists, NOT wired |
|
|
36
|
+
|
|
37
|
+
**Benefits:**
|
|
38
|
+
- Enables file rollback on failed edits
|
|
39
|
+
- Creates recovery points before destructive changes
|
|
40
|
+
- Satisfies CLAUDE.md Section 4 mandate: "Pre-Edit Backup (required before any edit/write)"
|
|
41
|
+
- Prevents data loss during agent failures
|
|
42
|
+
|
|
43
|
+
**Use Cases:**
|
|
44
|
+
1. Agent edits config file incorrectly → rollback to backup
|
|
45
|
+
2. Refactoring breaks functionality → restore original
|
|
46
|
+
3. Multi-file edit fails midway → selective rollback
|
|
47
|
+
4. Audit trail for compliance requirements
|
|
48
|
+
|
|
49
|
+
**Configuration:**
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
53
|
+
"hooks": [{
|
|
54
|
+
"type": "command",
|
|
55
|
+
"command": "bash -c 'FILE=$(cat | jq -r \".tool_input.file_path // .tool_input.path // empty\"); [ -z \"$FILE\" ] || [ ! -f \"$FILE\" ] && exit 0; \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/cfn-invoke-pre-edit.sh\" \"$FILE\" --agent-id \"${AGENT_ID:-hook}\" 2>&1 || true; exit 0'",
|
|
56
|
+
"timeout": 30
|
|
57
|
+
}]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
#### 1.2 Credential Leak Prevention
|
|
64
|
+
|
|
65
|
+
| Attribute | Value |
|
|
66
|
+
|-----------|-------|
|
|
67
|
+
| **Priority** | P0 - Critical |
|
|
68
|
+
| **Hook Type** | PostToolUse |
|
|
69
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
70
|
+
| **Existing Script** | `.claude/hooks/cfn-credential-scanner.sh` |
|
|
71
|
+
| **Current Status** | Script exists, NOT wired |
|
|
72
|
+
|
|
73
|
+
**Benefits:**
|
|
74
|
+
- Prevents API keys, tokens, passwords from entering codebase
|
|
75
|
+
- Catches accidental secret exposure before commit
|
|
76
|
+
- Satisfies CLAUDE.md: "Never hardcode secrets; always redact as [REDACTED]"
|
|
77
|
+
- Reduces security incident risk by 95%+
|
|
78
|
+
|
|
79
|
+
**Use Cases:**
|
|
80
|
+
1. Agent writes code with hardcoded API key → blocked with remediation steps
|
|
81
|
+
2. Config file includes database password → flagged for .env migration
|
|
82
|
+
3. Test file contains real credentials → detected before PR
|
|
83
|
+
4. Documentation includes example tokens → caught and redacted
|
|
84
|
+
|
|
85
|
+
**Patterns Detected:**
|
|
86
|
+
- `sk-ant-*` (Anthropic API keys)
|
|
87
|
+
- `sk-zai-*` (Z.ai API keys)
|
|
88
|
+
- `npm_*` (NPM tokens)
|
|
89
|
+
- `tr_dev_*` (Trigger.dev keys)
|
|
90
|
+
- `AIzaSy*` (Google API keys)
|
|
91
|
+
- Generic `password=`, `token=`, `secret=` patterns
|
|
92
|
+
|
|
93
|
+
**Configuration:**
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
97
|
+
"hooks": [{
|
|
98
|
+
"type": "command",
|
|
99
|
+
"command": "bash -c 'FILE=$(cat | jq -r \".tool_input.file_path // .tool_input.path // empty\"); [ -z \"$FILE\" ] || [ ! -f \"$FILE\" ] && exit 0; SECRETS=$(grep -iE \"(password|api_?key|secret|token|auth_token|bearer|private_key)\\s*[:=]\" \"$FILE\" 2>/dev/null | grep -v REDACTED | grep -v example | head -3 || true); if [ -n \"$SECRETS\" ]; then echo \"{\\\"decision\\\":\\\"block\\\",\\\"reason\\\":\\\"SECURITY: Credentials detected. Replace with [REDACTED] or move to .env file.\\\",\\\"hookSpecificOutput\\\":{\\\"hookEventName\\\":\\\"PostToolUse\\\",\\\"additionalContext\\\":\\\"Found potential secrets. Use environment variables instead.\\\"}}\"; fi; exit 0'",
|
|
100
|
+
"timeout": 10
|
|
101
|
+
}]
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
#### 1.3 Sensitive File Protection
|
|
108
|
+
|
|
109
|
+
| Attribute | Value |
|
|
110
|
+
|-----------|-------|
|
|
111
|
+
| **Priority** | P0 - Critical |
|
|
112
|
+
| **Hook Type** | PreToolUse |
|
|
113
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
114
|
+
| **Existing Script** | None (new) |
|
|
115
|
+
| **Current Status** | Basic protection exists, needs enhancement |
|
|
116
|
+
|
|
117
|
+
**Benefits:**
|
|
118
|
+
- Prevents accidental `.env` file modifications
|
|
119
|
+
- Blocks writes to `credentials.json`, `secrets.yaml`
|
|
120
|
+
- Protects `.git/` directory integrity
|
|
121
|
+
- Prevents `package.json` corruption
|
|
122
|
+
|
|
123
|
+
**Use Cases:**
|
|
124
|
+
1. Agent tries to add API key to `.env` → blocked, directed to use env vars
|
|
125
|
+
2. Refactoring accidentally targets `package.json` → blocked
|
|
126
|
+
3. Debug code writes to `.git/config` → prevented
|
|
127
|
+
4. Test creates `secrets.json` in repo → blocked
|
|
128
|
+
|
|
129
|
+
**Protected Patterns:**
|
|
130
|
+
- `.env`, `.env.local`, `.env.production`
|
|
131
|
+
- `credentials.json`, `secrets.json`, `secrets.yaml`
|
|
132
|
+
- `.git/*` directory
|
|
133
|
+
- `*.pem`, `*.key` (private keys)
|
|
134
|
+
- `.aws/credentials`
|
|
135
|
+
|
|
136
|
+
**Configuration:**
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
140
|
+
"hooks": [{
|
|
141
|
+
"type": "command",
|
|
142
|
+
"command": "bash -c 'FILE=$(cat | jq -r \".tool_input.file_path // .tool_input.path // empty\"); [ -z \"$FILE\" ] && exit 0; if echo \"$FILE\" | grep -qE \"\\.env|\\.env\\.|credentials\\.json|secrets\\.(json|yaml|yml)|\\.git/|\\.pem$|\\.key$|\\.aws/\"; then echo \"BLOCKED: Cannot edit sensitive file. Use environment variables or secrets manager.\" >&2; exit 2; fi; exit 0'",
|
|
143
|
+
"timeout": 5
|
|
144
|
+
}]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### TIER 2: HIGH PRIORITY (Implement This Week)
|
|
151
|
+
|
|
152
|
+
These improve consistency and reduce errors significantly.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
#### 2.1 Post-Edit Validation
|
|
157
|
+
|
|
158
|
+
| Attribute | Value |
|
|
159
|
+
|-----------|-------|
|
|
160
|
+
| **Priority** | P1 - High |
|
|
161
|
+
| **Hook Type** | PostToolUse |
|
|
162
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
163
|
+
| **Existing Script** | `.claude/hooks/cfn-invoke-post-edit.sh` |
|
|
164
|
+
| **Current Status** | Script exists, NOT wired |
|
|
165
|
+
|
|
166
|
+
**Benefits:**
|
|
167
|
+
- Validates file integrity after edits
|
|
168
|
+
- Catches syntax errors immediately
|
|
169
|
+
- Provides feedback loop to Claude for self-correction
|
|
170
|
+
- Satisfies CLAUDE.md: "Post-Edit Validation (run after every edit)"
|
|
171
|
+
|
|
172
|
+
**Use Cases:**
|
|
173
|
+
1. TypeScript file edited → immediate type check
|
|
174
|
+
2. JSON config modified → syntax validation
|
|
175
|
+
3. Shell script changed → shellcheck validation
|
|
176
|
+
4. Any file edit → integrity verification
|
|
177
|
+
|
|
178
|
+
**Configuration:**
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
182
|
+
"hooks": [{
|
|
183
|
+
"type": "command",
|
|
184
|
+
"command": "bash -c 'FILE=$(cat | jq -r \".tool_input.file_path // .tool_input.path // empty\"); [ -z \"$FILE\" ] || [ ! -f \"$FILE\" ] && exit 0; \"${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/cfn-invoke-post-edit.sh\" \"$FILE\" --agent-id \"${AGENT_ID:-hook}\" 2>&1 || true; exit 0'",
|
|
185
|
+
"timeout": 30
|
|
186
|
+
}]
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
#### 2.2 Post-Edit Pipeline (Integrated)
|
|
193
|
+
|
|
194
|
+
| Attribute | Value |
|
|
195
|
+
|-----------|-------|
|
|
196
|
+
| **Priority** | P1 - High |
|
|
197
|
+
| **Hook Type** | PostToolUse |
|
|
198
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
199
|
+
| **Existing Script** | `config/hooks/post-edit-pipeline.js` |
|
|
200
|
+
| **Current Status** | WIRED and ACTIVE |
|
|
201
|
+
|
|
202
|
+
**Benefits:**
|
|
203
|
+
- Single comprehensive validation pipeline for all edits
|
|
204
|
+
- Catches type errors, security issues, SQL injection, code quality problems
|
|
205
|
+
- Reduces iteration cycles by 50%+ through early detection
|
|
206
|
+
- Provides immediate feedback with actionable recommendations
|
|
207
|
+
- Non-blocking exit codes with severity levels
|
|
208
|
+
|
|
209
|
+
**Pipeline Phases:**
|
|
210
|
+
1. **TypeScript validation** - Type checking for .ts/.tsx files
|
|
211
|
+
2. **ESLint/Prettier** - Code quality and formatting
|
|
212
|
+
3. **Security scanning** - Credential leaks, XSS, RCE patterns
|
|
213
|
+
4. **Bash validators** - Language-specific safety checks
|
|
214
|
+
5. **SQL injection detection** - String concatenation in queries (NEW)
|
|
215
|
+
6. **Root directory warnings** - File organization enforcement
|
|
216
|
+
7. **TDD violation detection** - Missing test files
|
|
217
|
+
8. **Code metrics** - Complexity, LOC, maintainability
|
|
218
|
+
9. **Rust quality checks** - unwrap(), panic!(), println!() usage
|
|
219
|
+
|
|
220
|
+
**Exit Codes:**
|
|
221
|
+
- 0: Success
|
|
222
|
+
- 1: TypeScript type warnings
|
|
223
|
+
- 2: Root directory warning
|
|
224
|
+
- 3: TDD violation (missing tests)
|
|
225
|
+
- 5: Rust quality issues
|
|
226
|
+
- 6: Lint/formatting issues
|
|
227
|
+
- 7: Critical complexity (>40)
|
|
228
|
+
- 8: Moderate complexity (>30)
|
|
229
|
+
- 9: Bash validator errors (blocking)
|
|
230
|
+
- 10: Bash validator warnings
|
|
231
|
+
- 12: SQL injection critical (NEW)
|
|
232
|
+
|
|
233
|
+
**Status:** Integrated into `.claude/settings.json` PostToolUse hook. All previous individual validations (TypeScript, ESLint, SQL injection) are now handled by this unified pipeline.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
#### 2.3 Dangerous Command Blocking (Enhanced)
|
|
238
|
+
|
|
239
|
+
| Attribute | Value |
|
|
240
|
+
|-----------|-------|
|
|
241
|
+
| **Priority** | P1 - High |
|
|
242
|
+
| **Hook Type** | PreToolUse |
|
|
243
|
+
| **Matcher** | `Bash` |
|
|
244
|
+
| **Existing Script** | Partial in settings.json |
|
|
245
|
+
| **Current Status** | Basic version exists, needs enhancement |
|
|
246
|
+
|
|
247
|
+
**Benefits:**
|
|
248
|
+
- Prevents destructive operations (`rm -rf /`, `dd if=/dev`)
|
|
249
|
+
- Blocks force pushes to protected branches
|
|
250
|
+
- Catches fork bombs and infinite loops
|
|
251
|
+
- Prevents accidental production impacts
|
|
252
|
+
|
|
253
|
+
**Use Cases:**
|
|
254
|
+
1. Agent attempts `rm -rf /` → blocked with explanation
|
|
255
|
+
2. `git push --force` to main → blocked, suggests `--force-with-lease`
|
|
256
|
+
3. `find /mnt/c` (slow Windows mount scan) → blocked, suggests Glob tool
|
|
257
|
+
4. Bulk Docker removal → blocked, requires confirmation
|
|
258
|
+
|
|
259
|
+
**Dangerous Patterns:**
|
|
260
|
+
- `rm -rf /` or `rm -rf /*`
|
|
261
|
+
- `git push --force` (without `--force-with-lease`)
|
|
262
|
+
- `git reset --hard origin`
|
|
263
|
+
- `dd if=/dev`
|
|
264
|
+
- `:(){ :|:& };:` (fork bomb)
|
|
265
|
+
- `find /mnt/c` (memory leak on WSL)
|
|
266
|
+
- `eval` with untrusted input
|
|
267
|
+
|
|
268
|
+
**Configuration:**
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"matcher": "Bash",
|
|
272
|
+
"hooks": [{
|
|
273
|
+
"type": "command",
|
|
274
|
+
"command": "bash -c 'CMD=$(cat | jq -r \".tool_input.command // empty\"); if echo \"$CMD\" | grep -qE \"rm\\s+-rf\\s+/|rm\\s+-rf\\s+/\\*|git\\s+push\\s+--force[^-]|git\\s+reset\\s+--hard\\s+origin|dd\\s+if=/dev|:\\(\\)\\{|find\\s+/mnt/c|eval\\s\"; then echo \"BLOCKED: Dangerous command pattern. Review and use safer alternative.\" >&2; exit 2; fi; exit 0'",
|
|
275
|
+
"timeout": 5
|
|
276
|
+
}]
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
#### 2.4 Project Root Write Prevention
|
|
283
|
+
|
|
284
|
+
| Attribute | Value |
|
|
285
|
+
|-----------|-------|
|
|
286
|
+
| **Priority** | P1 - High |
|
|
287
|
+
| **Hook Type** | PreToolUse |
|
|
288
|
+
| **Matcher** | `Write\|Edit\|MultiEdit` |
|
|
289
|
+
| **Existing Script** | None (new) |
|
|
290
|
+
| **Current Status** | Not implemented |
|
|
291
|
+
|
|
292
|
+
**Benefits:**
|
|
293
|
+
- Enforces clean project structure
|
|
294
|
+
- Prevents accidental config file creation at root
|
|
295
|
+
- Satisfies CLAUDE.md: "Never save to project root; use appropriate subdirectories"
|
|
296
|
+
- Maintains organized codebase
|
|
297
|
+
|
|
298
|
+
**Use Cases:**
|
|
299
|
+
1. Agent creates `temp.js` at root → blocked, directed to `src/` or `/tmp/`
|
|
300
|
+
2. New config file at root → blocked, directed to `config/`
|
|
301
|
+
3. Test file at root → blocked, directed to `tests/`
|
|
302
|
+
4. Documentation at root → blocked, directed to `docs/`
|
|
303
|
+
|
|
304
|
+
**Allowed Root Files (exceptions):**
|
|
305
|
+
- `CLAUDE.md`, `README.md`, `LICENSE`
|
|
306
|
+
- `package.json`, `tsconfig.json` (existing only)
|
|
307
|
+
- `.gitignore`, `.eslintrc`
|
|
308
|
+
|
|
309
|
+
**Configuration:**
|
|
310
|
+
```json
|
|
311
|
+
{
|
|
312
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
313
|
+
"hooks": [{
|
|
314
|
+
"type": "command",
|
|
315
|
+
"command": "bash -c 'FILE=$(cat | jq -r \".tool_input.file_path // .tool_input.path // empty\"); [ -z \"$FILE\" ] && exit 0; REL=$(realpath --relative-to=\"${CLAUDE_PROJECT_DIR:-.}\" \"$FILE\" 2>/dev/null || basename \"$FILE\"); DIR=$(dirname \"$REL\"); if [ \"$DIR\" = \".\" ] && ! echo \"$REL\" | grep -qE \"^(CLAUDE|README|LICENSE|package|tsconfig|\\.)\" && [ ! -f \"$FILE\" ]; then echo \"BLOCKED: Cannot create files at project root. Use subdirectories: src/, tests/, docs/, .claude/, scripts/\" >&2; exit 2; fi; exit 0'",
|
|
316
|
+
"timeout": 5
|
|
317
|
+
}]
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
### TIER 3: MEDIUM PRIORITY (Implement This Sprint)
|
|
324
|
+
|
|
325
|
+
These improve developer experience and provide helpful context.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
#### 3.1 Git Context at Session Start
|
|
330
|
+
|
|
331
|
+
| Attribute | Value |
|
|
332
|
+
|-----------|-------|
|
|
333
|
+
| **Priority** | P2 - Medium |
|
|
334
|
+
| **Hook Type** | SessionStart |
|
|
335
|
+
| **Matcher** | N/A |
|
|
336
|
+
| **Existing Script** | None (new) |
|
|
337
|
+
| **Current Status** | Not implemented |
|
|
338
|
+
|
|
339
|
+
**Benefits:**
|
|
340
|
+
- Provides branch awareness at session start
|
|
341
|
+
- Shows recent commits for context
|
|
342
|
+
- Displays uncommitted changes
|
|
343
|
+
- Helps agents understand current state
|
|
344
|
+
|
|
345
|
+
**Use Cases:**
|
|
346
|
+
1. New session starts → sees "Branch: feature/auth, 3 uncommitted files"
|
|
347
|
+
2. Resume session → understands what was worked on
|
|
348
|
+
3. Multi-branch work → clear which branch is active
|
|
349
|
+
4. Code review context → sees recent commit history
|
|
350
|
+
|
|
351
|
+
**Configuration:**
|
|
352
|
+
```json
|
|
353
|
+
{
|
|
354
|
+
"hooks": [{
|
|
355
|
+
"type": "command",
|
|
356
|
+
"command": "bash -c 'cd \"${CLAUDE_PROJECT_DIR:-.}\" 2>/dev/null && git rev-parse --git-dir >/dev/null 2>&1 && echo \"=== Git Context ===\" && echo \"Branch: $(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo unknown)\" && echo \"\" && echo \"Recent commits:\" && git log --oneline -5 2>/dev/null && echo \"\" && echo \"Uncommitted changes:\" && git status --short 2>/dev/null | head -10 || true; exit 0'",
|
|
357
|
+
"timeout": 10
|
|
358
|
+
}]
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
#### 3.2 Workflow Reminder Injection
|
|
365
|
+
|
|
366
|
+
| Attribute | Value |
|
|
367
|
+
|-----------|-------|
|
|
368
|
+
| **Priority** | P2 - Medium |
|
|
369
|
+
| **Hook Type** | UserPromptSubmit |
|
|
370
|
+
| **Matcher** | N/A |
|
|
371
|
+
| **Existing Script** | None (new) |
|
|
372
|
+
| **Current Status** | Not implemented |
|
|
373
|
+
|
|
374
|
+
**Benefits:**
|
|
375
|
+
- Reminds about mandatory workflows before edits
|
|
376
|
+
- Reduces forgotten pre-edit backups
|
|
377
|
+
- Contextual (only triggers for edit-related prompts)
|
|
378
|
+
- Non-blocking, informational
|
|
379
|
+
|
|
380
|
+
**Use Cases:**
|
|
381
|
+
1. User asks "implement feature X" → reminder about backup workflow
|
|
382
|
+
2. User asks "fix bug in Y" → reminder appears
|
|
383
|
+
3. User asks "what is Z?" → no reminder (not edit-related)
|
|
384
|
+
4. User asks "refactor module" → reminder about validation
|
|
385
|
+
|
|
386
|
+
**Trigger Keywords:**
|
|
387
|
+
- write, edit, create, modify, update
|
|
388
|
+
- implement, fix, add, refactor, change
|
|
389
|
+
- delete, remove, replace
|
|
390
|
+
|
|
391
|
+
**Configuration:**
|
|
392
|
+
```json
|
|
393
|
+
{
|
|
394
|
+
"hooks": [{
|
|
395
|
+
"type": "command",
|
|
396
|
+
"command": "bash -c 'PROMPT=$(cat | jq -r \".prompt // \\\"\\\"\" 2>/dev/null | tr \"[:upper:]\" \"[:lower:]\"); if echo \"$PROMPT\" | grep -qE \"write|edit|create|modify|update|implement|fix|add|refactor|change|delete|remove|replace\"; then echo \"{\\\"hookSpecificOutput\\\":{\\\"hookEventName\\\":\\\"UserPromptSubmit\\\",\\\"additionalContext\\\":\\\"WORKFLOW REMINDER: 1) Pre-edit backup required 2) Post-edit validation required 3) Run tests before committing\\\"}}\"; fi; exit 0'",
|
|
397
|
+
"timeout": 5
|
|
398
|
+
}]
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
#### 3.3 JSON Syntax Validation
|
|
405
|
+
|
|
406
|
+
| Attribute | Value |
|
|
407
|
+
|-----------|-------|
|
|
408
|
+
| **Priority** | P2 - Medium |
|
|
409
|
+
| **Hook Type** | PreToolUse |
|
|
410
|
+
| **Matcher** | `Write\|Edit` |
|
|
411
|
+
| **Existing Script** | None (new) |
|
|
412
|
+
| **Current Status** | Not implemented |
|
|
413
|
+
|
|
414
|
+
**Benefits:**
|
|
415
|
+
- Catches invalid JSON before write
|
|
416
|
+
- Prevents config file corruption
|
|
417
|
+
- Auto-fixes common issues (trailing commas)
|
|
418
|
+
- Provides clear error messages
|
|
419
|
+
|
|
420
|
+
**Use Cases:**
|
|
421
|
+
1. Agent writes JSON with trailing comma → auto-fixed
|
|
422
|
+
2. Missing closing brace → blocked with line number
|
|
423
|
+
3. Single quotes instead of double → error message
|
|
424
|
+
4. Unquoted keys → clear feedback
|
|
425
|
+
|
|
426
|
+
**Configuration:**
|
|
427
|
+
```json
|
|
428
|
+
{
|
|
429
|
+
"matcher": "Write|Edit",
|
|
430
|
+
"hooks": [{
|
|
431
|
+
"type": "command",
|
|
432
|
+
"command": "bash -c 'INPUT=$(cat); FILE=$(echo \"$INPUT\" | jq -r \".tool_input.file_path // empty\"); CONTENT=$(echo \"$INPUT\" | jq -r \".tool_input.content // empty\"); if ! echo \"$FILE\" | grep -qE \"\\.json$\"; then exit 0; fi; [ -z \"$CONTENT\" ] && exit 0; if ! echo \"$CONTENT\" | jq . >/dev/null 2>&1; then ERR=$(echo \"$CONTENT\" | jq . 2>&1 | head -1); echo \"BLOCKED: Invalid JSON syntax - $ERR\" >&2; exit 2; fi; exit 0'",
|
|
433
|
+
"timeout": 10
|
|
434
|
+
}]
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
#### 3.4 Subagent Output Validation
|
|
441
|
+
|
|
442
|
+
| Attribute | Value |
|
|
443
|
+
|-----------|-------|
|
|
444
|
+
| **Priority** | P2 - Medium |
|
|
445
|
+
| **Hook Type** | SubagentStop |
|
|
446
|
+
| **Matcher** | N/A |
|
|
447
|
+
| **Existing Script** | `.claude/hooks/cfn-subagent-stop.sh` |
|
|
448
|
+
| **Current Status** | Script exists, NOT wired |
|
|
449
|
+
|
|
450
|
+
**Benefits:**
|
|
451
|
+
- Catches incomplete agent outputs
|
|
452
|
+
- Forces continuation when work is unfinished
|
|
453
|
+
- Validates completion signals present
|
|
454
|
+
- Reduces wasted coordinator iterations
|
|
455
|
+
|
|
456
|
+
**Use Cases:**
|
|
457
|
+
1. Agent stops after 3 lines with no summary → forced to continue
|
|
458
|
+
2. Agent completes with "TODO" markers → flagged for completion
|
|
459
|
+
3. Agent output lacks deliverables → continuation required
|
|
460
|
+
4. Agent provides comprehensive summary → allowed to stop
|
|
461
|
+
|
|
462
|
+
**Configuration:**
|
|
463
|
+
```json
|
|
464
|
+
{
|
|
465
|
+
"hooks": [{
|
|
466
|
+
"type": "command",
|
|
467
|
+
"command": "bash -c 'INPUT=$(cat); TRANSCRIPT=$(echo \"$INPUT\" | jq -r \".transcript_path // empty\"); [ -z \"$TRANSCRIPT\" ] || [ ! -f \"$TRANSCRIPT\" ] && exit 0; LINES=$(wc -l < \"$TRANSCRIPT\" 2>/dev/null || echo 0); if [ \"$LINES\" -lt 5 ]; then if ! grep -qiE \"complete|finished|done|summary|deliverable\" \"$TRANSCRIPT\" 2>/dev/null; then echo \"{\\\"decision\\\":\\\"block\\\",\\\"reason\\\":\\\"Output incomplete ($LINES lines, no completion signals). Please provide summary and deliverables.\\\"}\"; fi; fi; exit 0'",
|
|
468
|
+
"timeout": 10
|
|
469
|
+
}]
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
### TIER 4: LOW PRIORITY (Implement When Convenient)
|
|
476
|
+
|
|
477
|
+
These are nice-to-haves that improve polish.
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
#### 4.1 Stop Hook Compliance Check
|
|
482
|
+
|
|
483
|
+
| Attribute | Value |
|
|
484
|
+
|-----------|-------|
|
|
485
|
+
| **Priority** | P3 - Low |
|
|
486
|
+
| **Hook Type** | Stop |
|
|
487
|
+
| **Matcher** | N/A |
|
|
488
|
+
| **Existing Script** | None (new, uses LLM prompt) |
|
|
489
|
+
| **Current Status** | Basic logging only |
|
|
490
|
+
|
|
491
|
+
**Benefits:**
|
|
492
|
+
- Validates workflow compliance at session end
|
|
493
|
+
- Uses LLM to evaluate transcript
|
|
494
|
+
- Catches missed steps
|
|
495
|
+
- Optional blocking for strict compliance
|
|
496
|
+
|
|
497
|
+
**Use Cases:**
|
|
498
|
+
1. Session ends without running tests → warning
|
|
499
|
+
2. Files edited without backup → flagged
|
|
500
|
+
3. Credentials detected in session → alert
|
|
501
|
+
4. All workflows followed → clean exit
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## Implementation Roadmap
|
|
506
|
+
|
|
507
|
+
### Week 1: Critical Security (Tier 1)
|
|
508
|
+
- [ ] Wire `cfn-invoke-pre-edit.sh` to PreToolUse
|
|
509
|
+
- [ ] Wire credential scanner to PostToolUse
|
|
510
|
+
- [ ] Add sensitive file blocking to PreToolUse
|
|
511
|
+
|
|
512
|
+
### Week 2: Error Prevention (Tier 2)
|
|
513
|
+
- [ ] Wire `cfn-invoke-post-edit.sh` to PostToolUse
|
|
514
|
+
- [ ] Wire TypeScript validation to PostToolUse
|
|
515
|
+
- [ ] Enhance dangerous command blocking
|
|
516
|
+
- [ ] Add project root write prevention
|
|
517
|
+
|
|
518
|
+
### Week 3: Developer Experience (Tier 3)
|
|
519
|
+
- [ ] Add SessionStart git context
|
|
520
|
+
- [ ] Add UserPromptSubmit workflow reminders
|
|
521
|
+
- [ ] Add JSON syntax validation
|
|
522
|
+
- [ ] Wire SubagentStop validation
|
|
523
|
+
|
|
524
|
+
### Week 4: Polish (Tier 4)
|
|
525
|
+
- [ ] Wire SQL injection detection
|
|
526
|
+
- [ ] Add lint feedback integration
|
|
527
|
+
- [ ] Add Stop hook compliance check
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## Metrics to Track
|
|
532
|
+
|
|
533
|
+
After implementation, monitor:
|
|
534
|
+
|
|
535
|
+
| Metric | Baseline | Target |
|
|
536
|
+
|--------|----------|--------|
|
|
537
|
+
| Credential leak incidents | Unknown | 0 |
|
|
538
|
+
| Type errors at commit time | High | -80% |
|
|
539
|
+
| Agent iteration cycles | ~5 avg | ~3 avg |
|
|
540
|
+
| Failed file edits requiring rollback | Unknown | <5% |
|
|
541
|
+
| CLAUDE.md compliance rate | Low | >95% |
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## Quick Reference: Hook Event Capabilities
|
|
546
|
+
|
|
547
|
+
| Event | Timing | Can Block | Can Modify Input | Best For |
|
|
548
|
+
|-------|--------|-----------|------------------|----------|
|
|
549
|
+
| SessionStart | Session begins | No | No | Context injection |
|
|
550
|
+
| UserPromptSubmit | User submits | Yes (exit 2) | No | Reminders, validation |
|
|
551
|
+
| PreToolUse | Before tool | Yes (exit 2 or JSON deny) | Yes (updatedInput) | Blocking, backup |
|
|
552
|
+
| PostToolUse | After tool | Yes (JSON block) | No | Validation, feedback |
|
|
553
|
+
| SubagentStop | Agent completes | Yes (JSON block) | No | Output validation |
|
|
554
|
+
| Stop | Session ends | Yes (JSON block) | No | Compliance check |
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## Files Referenced
|
|
559
|
+
|
|
560
|
+
| Script | Purpose | Current Status |
|
|
561
|
+
|--------|---------|----------------|
|
|
562
|
+
| `config/hooks/post-edit-pipeline.js` | **Integrated validation pipeline** | **WIRED and ACTIVE** |
|
|
563
|
+
| `.claude/hooks/cfn-invoke-pre-edit.sh` | Pre-edit backup | EXISTS, not wired |
|
|
564
|
+
| `.claude/hooks/cfn-subagent-stop.sh` | Subagent completion | EXISTS, not wired |
|
|
565
|
+
| `.claude/hooks/cfn-detect-hardcoded-credentials.sh` | Hardcoded secrets (legacy) | Superseded by pipeline |
|
|
566
|
+
| `.claude/hooks/cfn-invoke-security-validation.sh` | Security checks (legacy) | Superseded by pipeline |
|
|
567
|
+
| `.claude/hooks/cfn-invoke-post-edit-ts.sh` | TypeScript validation (legacy) | Superseded by pipeline |
|
|
568
|
+
| `.claude/hooks/cfn-lint-sql-injection.sh` | SQL injection (legacy) | Superseded by pipeline |
|
|
569
|
+
|
|
570
|
+
**Note:** The post-edit pipeline consolidates TypeScript validation, ESLint, security scanning, SQL injection detection, and code quality checks into a single comprehensive validation system.
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
## Next Steps
|
|
575
|
+
|
|
576
|
+
1. **Review this document** with team
|
|
577
|
+
2. **Prioritize based on pain points** (security? consistency? errors?)
|
|
578
|
+
3. **Implement Tier 1 first** (1-2 hours)
|
|
579
|
+
4. **Test in development** before enabling for all
|
|
580
|
+
5. **Monitor metrics** after rollout
|
|
581
|
+
6. **Iterate based on feedback**
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
*Document generated by hooks analysis team - 5 parallel Claude Code experts analyzed documentation and project structure.*
|