@accelerationguy/accel 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/CLAUDE.md +19 -0
  2. package/LICENSE +33 -0
  3. package/README.md +275 -0
  4. package/bin/install.js +661 -0
  5. package/docs/getting-started.md +164 -0
  6. package/docs/module-guide.md +139 -0
  7. package/modules/drive/LICENSE +21 -0
  8. package/modules/drive/PAUL-VS-GSD.md +171 -0
  9. package/modules/drive/README.md +555 -0
  10. package/modules/drive/assets/terminal.svg +67 -0
  11. package/modules/drive/bin/install.js +210 -0
  12. package/modules/drive/integration.js +76 -0
  13. package/modules/drive/package.json +38 -0
  14. package/modules/drive/src/commands/add-phase.md +36 -0
  15. package/modules/drive/src/commands/apply.md +83 -0
  16. package/modules/drive/src/commands/assumptions.md +37 -0
  17. package/modules/drive/src/commands/audit.md +57 -0
  18. package/modules/drive/src/commands/complete-milestone.md +36 -0
  19. package/modules/drive/src/commands/config.md +175 -0
  20. package/modules/drive/src/commands/consider-issues.md +41 -0
  21. package/modules/drive/src/commands/discover.md +48 -0
  22. package/modules/drive/src/commands/discuss-milestone.md +33 -0
  23. package/modules/drive/src/commands/discuss.md +34 -0
  24. package/modules/drive/src/commands/flows.md +73 -0
  25. package/modules/drive/src/commands/handoff.md +201 -0
  26. package/modules/drive/src/commands/help.md +525 -0
  27. package/modules/drive/src/commands/init.md +54 -0
  28. package/modules/drive/src/commands/map-codebase.md +34 -0
  29. package/modules/drive/src/commands/milestone.md +34 -0
  30. package/modules/drive/src/commands/pause.md +44 -0
  31. package/modules/drive/src/commands/plan-fix.md +216 -0
  32. package/modules/drive/src/commands/plan.md +36 -0
  33. package/modules/drive/src/commands/progress.md +138 -0
  34. package/modules/drive/src/commands/register.md +29 -0
  35. package/modules/drive/src/commands/remove-phase.md +37 -0
  36. package/modules/drive/src/commands/research-phase.md +209 -0
  37. package/modules/drive/src/commands/research.md +47 -0
  38. package/modules/drive/src/commands/resume.md +49 -0
  39. package/modules/drive/src/commands/status.md +78 -0
  40. package/modules/drive/src/commands/unify.md +87 -0
  41. package/modules/drive/src/commands/verify.md +60 -0
  42. package/modules/drive/src/references/checkpoints.md +234 -0
  43. package/modules/drive/src/references/context-management.md +219 -0
  44. package/modules/drive/src/references/git-strategy.md +206 -0
  45. package/modules/drive/src/references/loop-phases.md +254 -0
  46. package/modules/drive/src/references/plan-format.md +263 -0
  47. package/modules/drive/src/references/quality-principles.md +152 -0
  48. package/modules/drive/src/references/research-quality-control.md +247 -0
  49. package/modules/drive/src/references/sonarqube-integration.md +244 -0
  50. package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
  51. package/modules/drive/src/references/subagent-criteria.md +179 -0
  52. package/modules/drive/src/references/tdd.md +219 -0
  53. package/modules/drive/src/references/work-units.md +161 -0
  54. package/modules/drive/src/rules/commands.md +108 -0
  55. package/modules/drive/src/rules/references.md +107 -0
  56. package/modules/drive/src/rules/style.md +123 -0
  57. package/modules/drive/src/rules/templates.md +51 -0
  58. package/modules/drive/src/rules/workflows.md +133 -0
  59. package/modules/drive/src/templates/CONTEXT.md +88 -0
  60. package/modules/drive/src/templates/DEBUG.md +164 -0
  61. package/modules/drive/src/templates/DISCOVERY.md +148 -0
  62. package/modules/drive/src/templates/HANDOFF.md +77 -0
  63. package/modules/drive/src/templates/ISSUES.md +93 -0
  64. package/modules/drive/src/templates/MILESTONES.md +167 -0
  65. package/modules/drive/src/templates/PLAN.md +328 -0
  66. package/modules/drive/src/templates/PROJECT.md +219 -0
  67. package/modules/drive/src/templates/RESEARCH.md +130 -0
  68. package/modules/drive/src/templates/ROADMAP.md +328 -0
  69. package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
  70. package/modules/drive/src/templates/STATE.md +210 -0
  71. package/modules/drive/src/templates/SUMMARY.md +221 -0
  72. package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
  73. package/modules/drive/src/templates/codebase/architecture.md +259 -0
  74. package/modules/drive/src/templates/codebase/concerns.md +329 -0
  75. package/modules/drive/src/templates/codebase/conventions.md +311 -0
  76. package/modules/drive/src/templates/codebase/integrations.md +284 -0
  77. package/modules/drive/src/templates/codebase/stack.md +190 -0
  78. package/modules/drive/src/templates/codebase/structure.md +287 -0
  79. package/modules/drive/src/templates/codebase/testing.md +484 -0
  80. package/modules/drive/src/templates/config.md +181 -0
  81. package/modules/drive/src/templates/milestone-archive.md +236 -0
  82. package/modules/drive/src/templates/milestone-context.md +190 -0
  83. package/modules/drive/src/templates/paul-json.md +147 -0
  84. package/modules/drive/src/vector-config/PAUL +26 -0
  85. package/modules/drive/src/vector-config/PAUL.manifest +11 -0
  86. package/modules/drive/src/workflows/apply-phase.md +393 -0
  87. package/modules/drive/src/workflows/audit-plan.md +344 -0
  88. package/modules/drive/src/workflows/complete-milestone.md +479 -0
  89. package/modules/drive/src/workflows/configure-special-flows.md +283 -0
  90. package/modules/drive/src/workflows/consider-issues.md +172 -0
  91. package/modules/drive/src/workflows/create-milestone.md +268 -0
  92. package/modules/drive/src/workflows/debug.md +292 -0
  93. package/modules/drive/src/workflows/discovery.md +187 -0
  94. package/modules/drive/src/workflows/discuss-milestone.md +245 -0
  95. package/modules/drive/src/workflows/discuss-phase.md +231 -0
  96. package/modules/drive/src/workflows/init-project.md +698 -0
  97. package/modules/drive/src/workflows/map-codebase.md +459 -0
  98. package/modules/drive/src/workflows/pause-work.md +259 -0
  99. package/modules/drive/src/workflows/phase-assumptions.md +181 -0
  100. package/modules/drive/src/workflows/plan-phase.md +385 -0
  101. package/modules/drive/src/workflows/quality-gate.md +263 -0
  102. package/modules/drive/src/workflows/register-manifest.md +107 -0
  103. package/modules/drive/src/workflows/research.md +241 -0
  104. package/modules/drive/src/workflows/resume-project.md +200 -0
  105. package/modules/drive/src/workflows/roadmap-management.md +334 -0
  106. package/modules/drive/src/workflows/transition-phase.md +368 -0
  107. package/modules/drive/src/workflows/unify-phase.md +290 -0
  108. package/modules/drive/src/workflows/verify-work.md +241 -0
  109. package/modules/forge/README.md +281 -0
  110. package/modules/forge/bin/install.js +200 -0
  111. package/modules/forge/package.json +32 -0
  112. package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
  113. package/modules/forge/skillsmith/rules/context-rules.md +43 -0
  114. package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
  115. package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
  116. package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
  117. package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
  118. package/modules/forge/skillsmith/skillsmith.md +82 -0
  119. package/modules/forge/skillsmith/tasks/audit.md +277 -0
  120. package/modules/forge/skillsmith/tasks/discover.md +145 -0
  121. package/modules/forge/skillsmith/tasks/distill.md +276 -0
  122. package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
  123. package/modules/forge/specs/checklists.md +193 -0
  124. package/modules/forge/specs/context.md +223 -0
  125. package/modules/forge/specs/entry-point.md +320 -0
  126. package/modules/forge/specs/frameworks.md +228 -0
  127. package/modules/forge/specs/rules.md +245 -0
  128. package/modules/forge/specs/tasks.md +344 -0
  129. package/modules/forge/specs/templates.md +335 -0
  130. package/modules/forge/terminal.svg +70 -0
  131. package/modules/ignition/README.md +245 -0
  132. package/modules/ignition/bin/install.js +184 -0
  133. package/modules/ignition/checklists/planning-quality.md +55 -0
  134. package/modules/ignition/data/application/config.md +21 -0
  135. package/modules/ignition/data/application/guide.md +51 -0
  136. package/modules/ignition/data/application/skill-loadout.md +11 -0
  137. package/modules/ignition/data/campaign/config.md +18 -0
  138. package/modules/ignition/data/campaign/guide.md +36 -0
  139. package/modules/ignition/data/campaign/skill-loadout.md +10 -0
  140. package/modules/ignition/data/client/config.md +18 -0
  141. package/modules/ignition/data/client/guide.md +36 -0
  142. package/modules/ignition/data/client/skill-loadout.md +11 -0
  143. package/modules/ignition/data/utility/config.md +18 -0
  144. package/modules/ignition/data/utility/guide.md +31 -0
  145. package/modules/ignition/data/utility/skill-loadout.md +8 -0
  146. package/modules/ignition/data/workflow/config.md +19 -0
  147. package/modules/ignition/data/workflow/guide.md +41 -0
  148. package/modules/ignition/data/workflow/skill-loadout.md +10 -0
  149. package/modules/ignition/integration.js +54 -0
  150. package/modules/ignition/package.json +35 -0
  151. package/modules/ignition/seed.md +81 -0
  152. package/modules/ignition/tasks/add-type.md +164 -0
  153. package/modules/ignition/tasks/graduate.md +182 -0
  154. package/modules/ignition/tasks/ideate.md +221 -0
  155. package/modules/ignition/tasks/launch.md +137 -0
  156. package/modules/ignition/tasks/status.md +71 -0
  157. package/modules/ignition/templates/planning-application.md +193 -0
  158. package/modules/ignition/templates/planning-campaign.md +138 -0
  159. package/modules/ignition/templates/planning-client.md +149 -0
  160. package/modules/ignition/templates/planning-utility.md +112 -0
  161. package/modules/ignition/templates/planning-workflow.md +125 -0
  162. package/modules/ignition/terminal.svg +74 -0
  163. package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
  164. package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
  165. package/modules/mission-control/README.md +91 -0
  166. package/modules/mission-control/assets/terminal.svg +80 -0
  167. package/modules/mission-control/examples/entities.example.json +133 -0
  168. package/modules/mission-control/examples/projects.example.json +318 -0
  169. package/modules/mission-control/examples/state.example.json +183 -0
  170. package/modules/mission-control/examples/vector.example.json +245 -0
  171. package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
  172. package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
  173. package/modules/mission-control/mission-control/mission-control.md +83 -0
  174. package/modules/mission-control/mission-control/tasks/insights.md +73 -0
  175. package/modules/mission-control/mission-control/tasks/install.md +194 -0
  176. package/modules/mission-control/mission-control/tasks/status.md +125 -0
  177. package/modules/mission-control/schemas/entities.schema.json +89 -0
  178. package/modules/mission-control/schemas/projects.schema.json +221 -0
  179. package/modules/mission-control/schemas/state.schema.json +108 -0
  180. package/modules/mission-control/schemas/vector.schema.json +200 -0
  181. package/modules/momentum/README.md +678 -0
  182. package/modules/momentum/bin/install.js +563 -0
  183. package/modules/momentum/integration.js +131 -0
  184. package/modules/momentum/package.json +42 -0
  185. package/modules/momentum/schemas/entities.schema.json +89 -0
  186. package/modules/momentum/schemas/projects.schema.json +221 -0
  187. package/modules/momentum/schemas/state.schema.json +108 -0
  188. package/modules/momentum/src/commands/audit-claude-md.md +31 -0
  189. package/modules/momentum/src/commands/audit.md +33 -0
  190. package/modules/momentum/src/commands/groom.md +35 -0
  191. package/modules/momentum/src/commands/history.md +27 -0
  192. package/modules/momentum/src/commands/pulse.md +33 -0
  193. package/modules/momentum/src/commands/scaffold.md +33 -0
  194. package/modules/momentum/src/commands/status.md +28 -0
  195. package/modules/momentum/src/commands/surface-convert.md +35 -0
  196. package/modules/momentum/src/commands/surface-create.md +34 -0
  197. package/modules/momentum/src/commands/surface-list.md +27 -0
  198. package/modules/momentum/src/commands/vector-hygiene.md +33 -0
  199. package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
  200. package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
  201. package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
  202. package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
  203. package/modules/momentum/src/framework/tasks/audit.md +64 -0
  204. package/modules/momentum/src/framework/tasks/groom.md +164 -0
  205. package/modules/momentum/src/framework/tasks/history.md +34 -0
  206. package/modules/momentum/src/framework/tasks/pulse.md +83 -0
  207. package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
  208. package/modules/momentum/src/framework/tasks/status.md +35 -0
  209. package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
  210. package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
  211. package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
  212. package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
  213. package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
  214. package/modules/momentum/src/hooks/_template.py +129 -0
  215. package/modules/momentum/src/hooks/active-hook.py +178 -0
  216. package/modules/momentum/src/hooks/backlog-hook.py +115 -0
  217. package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
  218. package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
  219. package/modules/momentum/src/hooks/operator.py +53 -0
  220. package/modules/momentum/src/hooks/psmm-injector.py +67 -0
  221. package/modules/momentum/src/hooks/satellite-detection.py +248 -0
  222. package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
  223. package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
  224. package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
  225. package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
  226. package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
  227. package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
  228. package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
  229. package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
  230. package/modules/momentum/src/skill/momentum.md +111 -0
  231. package/modules/momentum/src/tasks/groom.md +164 -0
  232. package/modules/momentum/src/templates/operator.json +66 -0
  233. package/modules/momentum/src/templates/workspace.json +111 -0
  234. package/modules/momentum/terminal.svg +77 -0
  235. package/modules/radar/README.md +1552 -0
  236. package/modules/radar/commands/audit.md +233 -0
  237. package/modules/radar/commands/guardrails.md +194 -0
  238. package/modules/radar/commands/init.md +207 -0
  239. package/modules/radar/commands/playbook.md +176 -0
  240. package/modules/radar/commands/remediate.md +156 -0
  241. package/modules/radar/commands/report.md +172 -0
  242. package/modules/radar/commands/resume.md +176 -0
  243. package/modules/radar/commands/status.md +148 -0
  244. package/modules/radar/commands/transform.md +205 -0
  245. package/modules/radar/commands/validate.md +177 -0
  246. package/modules/radar/docs/ARCHITECTURE.md +336 -0
  247. package/modules/radar/docs/GETTING-STARTED.md +287 -0
  248. package/modules/radar/docs/standards/agents.md +197 -0
  249. package/modules/radar/docs/standards/commands.md +250 -0
  250. package/modules/radar/docs/standards/domains.md +191 -0
  251. package/modules/radar/docs/standards/personas.md +211 -0
  252. package/modules/radar/docs/standards/rules.md +218 -0
  253. package/modules/radar/docs/standards/runtime.md +445 -0
  254. package/modules/radar/docs/standards/schemas.md +269 -0
  255. package/modules/radar/docs/standards/tools.md +273 -0
  256. package/modules/radar/docs/standards/workflows.md +254 -0
  257. package/modules/radar/docs/terminal.svg +72 -0
  258. package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
  259. package/modules/radar/docs/validation/cross-reference-report.md +195 -0
  260. package/modules/radar/docs/validation/validation-summary.md +118 -0
  261. package/modules/radar/docs/validation/version-manifest.yaml +363 -0
  262. package/modules/radar/install.sh +711 -0
  263. package/modules/radar/integration.js +53 -0
  264. package/modules/radar/src/core/agents/architect.md +25 -0
  265. package/modules/radar/src/core/agents/compliance-officer.md +25 -0
  266. package/modules/radar/src/core/agents/data-engineer.md +25 -0
  267. package/modules/radar/src/core/agents/devils-advocate.md +22 -0
  268. package/modules/radar/src/core/agents/performance-engineer.md +25 -0
  269. package/modules/radar/src/core/agents/principal-engineer.md +23 -0
  270. package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
  271. package/modules/radar/src/core/agents/security-engineer.md +25 -0
  272. package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
  273. package/modules/radar/src/core/agents/sre.md +25 -0
  274. package/modules/radar/src/core/agents/staff-engineer.md +23 -0
  275. package/modules/radar/src/core/agents/test-engineer.md +25 -0
  276. package/modules/radar/src/core/personas/architect.md +111 -0
  277. package/modules/radar/src/core/personas/compliance-officer.md +104 -0
  278. package/modules/radar/src/core/personas/data-engineer.md +113 -0
  279. package/modules/radar/src/core/personas/devils-advocate.md +105 -0
  280. package/modules/radar/src/core/personas/performance-engineer.md +119 -0
  281. package/modules/radar/src/core/personas/principal-engineer.md +119 -0
  282. package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
  283. package/modules/radar/src/core/personas/security-engineer.md +108 -0
  284. package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
  285. package/modules/radar/src/core/personas/sre.md +117 -0
  286. package/modules/radar/src/core/personas/staff-engineer.md +109 -0
  287. package/modules/radar/src/core/personas/test-engineer.md +109 -0
  288. package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
  289. package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
  290. package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
  291. package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
  292. package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
  293. package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
  294. package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
  295. package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
  296. package/modules/radar/src/core/workflows/session-handoff.md +152 -0
  297. package/modules/radar/src/domains/00-context.md +201 -0
  298. package/modules/radar/src/domains/01-architecture.md +248 -0
  299. package/modules/radar/src/domains/02-data.md +224 -0
  300. package/modules/radar/src/domains/03-correctness.md +230 -0
  301. package/modules/radar/src/domains/04-security.md +274 -0
  302. package/modules/radar/src/domains/05-compliance.md +228 -0
  303. package/modules/radar/src/domains/06-testing.md +228 -0
  304. package/modules/radar/src/domains/07-reliability.md +246 -0
  305. package/modules/radar/src/domains/08-performance.md +247 -0
  306. package/modules/radar/src/domains/09-maintainability.md +271 -0
  307. package/modules/radar/src/domains/10-operability.md +250 -0
  308. package/modules/radar/src/domains/11-change-risk.md +246 -0
  309. package/modules/radar/src/domains/12-team-risk.md +221 -0
  310. package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
  311. package/modules/radar/src/rules/agent-boundaries.md +78 -0
  312. package/modules/radar/src/rules/disagreement-protocol.md +76 -0
  313. package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
  314. package/modules/radar/src/schemas/confidence.md +185 -0
  315. package/modules/radar/src/schemas/disagreement.md +238 -0
  316. package/modules/radar/src/schemas/finding.md +287 -0
  317. package/modules/radar/src/schemas/report-section.md +150 -0
  318. package/modules/radar/src/schemas/signal.md +108 -0
  319. package/modules/radar/src/tools/checkov.md +463 -0
  320. package/modules/radar/src/tools/git-history.md +581 -0
  321. package/modules/radar/src/tools/gitleaks.md +447 -0
  322. package/modules/radar/src/tools/grype.md +611 -0
  323. package/modules/radar/src/tools/semgrep.md +378 -0
  324. package/modules/radar/src/tools/sonarqube.md +550 -0
  325. package/modules/radar/src/tools/syft.md +539 -0
  326. package/modules/radar/src/tools/trivy.md +439 -0
  327. package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
  328. package/modules/radar/src/transform/agents/execution-validator.md +24 -0
  329. package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
  330. package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
  331. package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
  332. package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
  333. package/modules/radar/src/transform/personas/execution-validator.md +95 -0
  334. package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
  335. package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
  336. package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
  337. package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
  338. package/modules/radar/src/transform/rules/safety-governance.md +87 -0
  339. package/modules/radar/src/transform/schemas/change-risk.md +139 -0
  340. package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
  341. package/modules/radar/src/transform/schemas/playbook.md +205 -0
  342. package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
  343. package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
  344. package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
  345. package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
  346. package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
  347. package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
  348. package/modules/vector/.vector-template/vector.json +72 -0
  349. package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
  350. package/modules/vector/INSTALL.md +185 -0
  351. package/modules/vector/LICENSE +21 -0
  352. package/modules/vector/README.md +409 -0
  353. package/modules/vector/VECTOR-BLOCK.md +57 -0
  354. package/modules/vector/assets/terminal.svg +68 -0
  355. package/modules/vector/bin/install.js +455 -0
  356. package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
  357. package/modules/vector/commands/help.md +46 -0
  358. package/modules/vector/hooks/vector-hook.py +775 -0
  359. package/modules/vector/mcp/index.js +118 -0
  360. package/modules/vector/mcp/package.json +10 -0
  361. package/modules/vector/mcp/tools/decisions.js +269 -0
  362. package/modules/vector/mcp/tools/domains.js +361 -0
  363. package/modules/vector/mcp/tools/staging.js +252 -0
  364. package/modules/vector/mcp/tools/vector-json.js +647 -0
  365. package/modules/vector/package.json +38 -0
  366. package/modules/vector/schemas/vector.schema.json +237 -0
  367. package/package.json +39 -0
  368. package/shared/branding/branding.js +70 -0
  369. package/shared/config/defaults.json +59 -0
  370. package/shared/events/README.md +175 -0
  371. package/shared/events/event-bus.js +134 -0
  372. package/shared/events/event_bus.py +255 -0
  373. package/shared/events/integrations.js +161 -0
  374. package/shared/events/schemas/audit-complete.schema.json +21 -0
  375. package/shared/events/schemas/phase-progress.schema.json +23 -0
  376. package/shared/events/schemas/plan-created.schema.json +21 -0
@@ -0,0 +1,68 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540">
2
+ <defs>
3
+ <style>
4
+ .terminal-bg { fill: #1a1b26; }
5
+ .terminal-border { fill: #24283b; }
6
+ .title-bar { fill: #1f2335; }
7
+ .btn-red { fill: #f7768e; }
8
+ .btn-yellow { fill: #e0af68; }
9
+ .btn-green { fill: #9ece6a; }
10
+ .text { font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', Consolas, monospace; }
11
+ .prompt { fill: #7aa2f7; }
12
+ .command { fill: #c0caf5; }
13
+ .amber { fill: #f8b500; }
14
+ .green { fill: #9ece6a; }
15
+ .dim { fill: #565f89; }
16
+ .white { fill: #c0caf5; }
17
+ </style>
18
+ </defs>
19
+
20
+ <!-- Window -->
21
+ <rect class="terminal-border" width="960" height="540" rx="12"/>
22
+ <rect class="terminal-bg" x="1" y="1" width="958" height="538" rx="11"/>
23
+
24
+ <!-- Title bar -->
25
+ <rect class="title-bar" x="1" y="1" width="958" height="36" rx="11"/>
26
+ <rect class="terminal-bg" x="1" y="26" width="958" height="12"/>
27
+
28
+ <!-- Window buttons -->
29
+ <circle class="btn-red" cx="24" cy="19" r="7"/>
30
+ <circle class="btn-yellow" cx="48" cy="19" r="7"/>
31
+ <circle class="btn-green" cx="72" cy="19" r="7"/>
32
+
33
+ <!-- Title -->
34
+ <text x="480" y="24" text-anchor="middle" class="text dim" font-size="13">Terminal</text>
35
+
36
+ <!-- Content -->
37
+ <g transform="translate(32, 72)">
38
+ <!-- Prompt line -->
39
+ <text class="text prompt" font-size="15" y="0">~</text>
40
+ <text class="text dim" font-size="15" x="16" y="0">$</text>
41
+ <text class="text command" font-size="15" x="36" y="0">npx /cli</text>
42
+
43
+ <!-- Banner -->
44
+ <text class="text amber" font-size="14" y="48" xml:space="preserve"> ██████╗ █████╗ ██████╗ ██╗</text>
45
+ <text class="text amber" font-size="14" y="68" xml:space="preserve"> ██╔════╝██╔══██╗██╔══██╗██║</text>
46
+ <text class="text amber" font-size="14" y="88" xml:space="preserve"> ██║ ███████║██████╔╝██║</text>
47
+ <text class="text amber" font-size="14" y="108" xml:space="preserve"> ██║ ██╔══██║██╔══██╗██║</text>
48
+ <text class="text amber" font-size="14" y="128" xml:space="preserve"> ╚██████╗██║ ██║██║ ██║███████╗</text>
49
+ <text class="text amber" font-size="14" y="148" xml:space="preserve"> ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝</text>
50
+
51
+ <!-- Title and subtitle -->
52
+ <text class="text white" font-size="15" y="188"> Vector <tspan class="dim">v1.0.0</tspan></text>
53
+ <text class="text white" font-size="15" y="212"> Context Augmentation &amp; Reinforcement Layer</text>
54
+
55
+ <!-- Install output -->
56
+ <text class="text" font-size="15" y="260"><tspan class="green"> ✓</tspan><tspan class="white"> Installed hooks/vector-hook.py</tspan></text>
57
+ <text class="text" font-size="15" y="284"><tspan class="green"> ✓</tspan><tspan class="white"> Installed commands/vector</tspan></text>
58
+ <text class="text" font-size="15" y="308"><tspan class="green"> ✓</tspan><tspan class="white"> Added hook to settings.json</tspan></text>
59
+
60
+ <!-- Done message -->
61
+ <text class="text" font-size="15" y="356"><tspan class="green"> Done!</tspan><tspan class="white"> Restart Claude Code to activate.</tspan></text>
62
+
63
+ <!-- New prompt -->
64
+ <text class="text prompt" font-size="15" y="404">~</text>
65
+ <text class="text dim" font-size="15" x="16" y="404">$</text>
66
+ <text class="text white" font-size="15" x="36" y="404">▌</text>
67
+ </g>
68
+ </svg>
@@ -0,0 +1,455 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+ const readline = require('readline');
7
+ const { execSync } = require('child_process');
8
+
9
+ // Colors (amber/orange theme like Claude Code)
10
+ const amber = '\x1b[38;5;214m';
11
+ const orange = '\x1b[38;5;208m';
12
+ const green = '\x1b[32m';
13
+ const yellow = '\x1b[33m';
14
+ const dim = '\x1b[2m';
15
+ const reset = '\x1b[0m';
16
+
17
+ // Get version from package.json
18
+ const pkg = require('../package.json');
19
+
20
+ const banner = `
21
+ ${orange}██╗ ██╗███████╗ ██████╗████████╗ ██████╗ ██████╗
22
+ ██║ ██║██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗
23
+ ██║ ██║█████╗ ██║ ██║ ██║ ██║██████╔╝
24
+ ╚██╗ ██╔╝██╔══╝ ██║ ██║ ██║ ██║██╔══██╗
25
+ ╚████╔╝ ███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║
26
+ ╚═══╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝${reset}
27
+
28
+ Vector ${dim}v${pkg.version}${reset}
29
+ Context Augmentation & Reinforcement Layer
30
+ `;
31
+
32
+ // Vector block for CLAUDE.md
33
+ const VECTOR_BLOCK = `<!-- Vector-MANAGED: Do not remove this section -->
34
+ ## Vector Integration
35
+
36
+ Follow all rules in <vector-rules> blocks from system-reminders.
37
+ These are dynamically injected based on context and MUST be obeyed.
38
+ <!-- END Vector-MANAGED -->`;
39
+
40
+ // Parse args
41
+ const args = process.argv.slice(2);
42
+ const hasGlobal = args.includes('--global') || args.includes('-g');
43
+ const hasLocal = args.includes('--local') || args.includes('-l');
44
+ const hasHelp = args.includes('--help') || args.includes('-h');
45
+ const skipClaudeMd = args.includes('--skip-claude-md');
46
+
47
+ // Parse --config-dir argument
48
+ function parseConfigDirArg() {
49
+ const configDirIndex = args.findIndex(arg => arg === '--config-dir' || arg === '-c');
50
+ if (configDirIndex !== -1) {
51
+ const nextArg = args[configDirIndex + 1];
52
+ if (!nextArg || nextArg.startsWith('-')) {
53
+ console.error(` ${yellow}--config-dir requires a path argument${reset}`);
54
+ process.exit(1);
55
+ }
56
+ return nextArg;
57
+ }
58
+ const configDirArg = args.find(arg => arg.startsWith('--config-dir=') || arg.startsWith('-c='));
59
+ if (configDirArg) {
60
+ return configDirArg.split('=')[1];
61
+ }
62
+ return null;
63
+ }
64
+ const explicitConfigDir = parseConfigDirArg();
65
+
66
+ console.log(banner);
67
+
68
+ // Show help if requested
69
+ if (hasHelp) {
70
+ console.log(` ${yellow}Usage:${reset} npx vector-core [options]
71
+
72
+ ${yellow}Options:${reset}
73
+ ${amber}-g, --global${reset} Install globally (to ~/.claude and ~/.vector)
74
+ ${amber}-l, --local${reset} Install locally (to ./.claude and ./.vector)
75
+ ${amber}-c, --config-dir <path>${reset} Specify custom Claude config directory
76
+ ${amber}--skip-claude-md${reset} Don't modify CLAUDE.md
77
+ ${amber}-h, --help${reset} Show this help message
78
+
79
+ ${yellow}Examples:${reset}
80
+ ${dim}# Interactive install${reset}
81
+ npx vector-core
82
+
83
+ ${dim}# Install globally (recommended)${reset}
84
+ npx vector-core --global
85
+
86
+ ${dim}# Install to current project only${reset}
87
+ npx vector-core --local
88
+
89
+ ${yellow}What gets installed:${reset}
90
+ hooks/vector-hook.py - Rule injection hook (v2, JSON-based)
91
+ .vector/vector.json - Domain rules, decisions, config
92
+ .vector/vector-mcp/ - MCP server for runtime management
93
+ settings.json - Hook registration (merged)
94
+ .mcp.json - MCP server registration
95
+ CLAUDE.md - Vector integration block (optional)
96
+
97
+ ${yellow}v1 Migration:${reset}
98
+ If upgrading from v1 (flat-file manifest), run:
99
+ ${dim}bash node_modules/vector-core/bin/migrate-v1-to-v2.sh ~/.vector${reset}
100
+ `);
101
+ process.exit(0);
102
+ }
103
+
104
+ /**
105
+ * Expand ~ to home directory
106
+ */
107
+ function expandTilde(filePath) {
108
+ if (filePath && filePath.startsWith('~/')) {
109
+ return path.join(os.homedir(), filePath.slice(2));
110
+ }
111
+ return filePath;
112
+ }
113
+
114
+ /**
115
+ * Recursively copy directory
116
+ */
117
+ function copyDir(srcDir, destDir) {
118
+ fs.mkdirSync(destDir, { recursive: true });
119
+
120
+ const entries = fs.readdirSync(srcDir, { withFileTypes: true });
121
+
122
+ for (const entry of entries) {
123
+ const srcPath = path.join(srcDir, entry.name);
124
+ const destPath = path.join(destDir, entry.name);
125
+
126
+ if (entry.isDirectory()) {
127
+ copyDir(srcPath, destPath);
128
+ } else {
129
+ fs.copyFileSync(srcPath, destPath);
130
+ }
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Wire hook into settings.json
136
+ */
137
+ function wireHook(claudeDir, hookPath) {
138
+ const settingsPath = path.join(claudeDir, 'settings.json');
139
+ let settings = {};
140
+
141
+ // Read existing settings if present
142
+ if (fs.existsSync(settingsPath)) {
143
+ try {
144
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
145
+ } catch (e) {
146
+ console.log(` ${yellow}Warning: Could not parse existing settings.json, creating new${reset}`);
147
+ }
148
+ }
149
+
150
+ // Ensure hooks structure exists
151
+ if (!settings.hooks) {
152
+ settings.hooks = {};
153
+ }
154
+ if (!settings.hooks.UserPromptSubmit) {
155
+ settings.hooks.UserPromptSubmit = [];
156
+ }
157
+
158
+ // Normalize path to use forward slashes (works on all platforms)
159
+ const normalizedPath = hookPath.replace(/\\/g, '/');
160
+ const hookCommand = `python3 ${normalizedPath}`;
161
+
162
+ // Check if Vector hook already exists
163
+ const existingIndex = settings.hooks.UserPromptSubmit.findIndex(h => {
164
+ if (h.command && h.command.includes('vector-hook.py')) return true;
165
+ if (h.hooks && h.hooks.some(inner => inner.command && inner.command.includes('vector-hook.py'))) return true;
166
+ return false;
167
+ });
168
+
169
+ const newHookEntry = {
170
+ hooks: [
171
+ {
172
+ type: 'command',
173
+ command: hookCommand
174
+ }
175
+ ]
176
+ };
177
+
178
+ if (existingIndex !== -1) {
179
+ settings.hooks.UserPromptSubmit[existingIndex] = newHookEntry;
180
+ console.log(` ${green}✓${reset} Updated hook in settings.json`);
181
+ } else {
182
+ settings.hooks.UserPromptSubmit.push(newHookEntry);
183
+ console.log(` ${green}✓${reset} Added hook to settings.json`);
184
+ }
185
+
186
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
187
+ }
188
+
189
+ /**
190
+ * Wire MCP server into .mcp.json at the workspace root
191
+ * MCPs go in .mcp.json, not settings.json
192
+ */
193
+ function wireMcp(workspaceDir, mcpIndexPath) {
194
+ const mcpJsonPath = path.join(workspaceDir, '.mcp.json');
195
+ let mcpConfig = {};
196
+
197
+ if (fs.existsSync(mcpJsonPath)) {
198
+ try {
199
+ mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf8'));
200
+ } catch (e) {
201
+ console.log(` ${yellow}Warning: Could not parse existing .mcp.json, creating new${reset}`);
202
+ }
203
+ }
204
+
205
+ if (!mcpConfig.mcpServers) {
206
+ mcpConfig.mcpServers = {};
207
+ }
208
+
209
+ const normalizedPath = mcpIndexPath.replace(/\\/g, '/');
210
+
211
+ mcpConfig.mcpServers['vector-mcp'] = {
212
+ command: 'node',
213
+ args: [normalizedPath],
214
+ type: 'stdio'
215
+ };
216
+
217
+ fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
218
+ console.log(` ${green}✓${reset} Wired vector-mcp in .mcp.json`);
219
+ }
220
+
221
+ /**
222
+ * Add Vector block to CLAUDE.md
223
+ */
224
+ function addVectorBlock(claudeMdPath) {
225
+ let content = '';
226
+ let fileExists = fs.existsSync(claudeMdPath);
227
+
228
+ if (fileExists) {
229
+ content = fs.readFileSync(claudeMdPath, 'utf8');
230
+
231
+ const normalizedContent = content.replace(/\r\n/g, '\n');
232
+ if (normalizedContent.includes('<!-- Vector-MANAGED:')) {
233
+ console.log(` ${dim}Vector block already in CLAUDE.md${reset}`);
234
+ return false;
235
+ }
236
+ } else {
237
+ const parentDir = path.dirname(claudeMdPath);
238
+ if (!fs.existsSync(parentDir)) {
239
+ fs.mkdirSync(parentDir, { recursive: true });
240
+ }
241
+ content = `# Claude Code Configuration\n\n${VECTOR_BLOCK}\n`;
242
+ fs.writeFileSync(claudeMdPath, content);
243
+ return true;
244
+ }
245
+
246
+ const lines = content.split(/\r?\n/);
247
+ let insertIndex = 0;
248
+
249
+ for (let i = 0; i < lines.length; i++) {
250
+ if (lines[i].startsWith('#')) {
251
+ insertIndex = i + 1;
252
+ while (insertIndex < lines.length && lines[insertIndex].trim() !== '' && !lines[insertIndex].startsWith('#')) {
253
+ insertIndex++;
254
+ }
255
+ break;
256
+ }
257
+ }
258
+
259
+ lines.splice(insertIndex, 0, '', VECTOR_BLOCK, '');
260
+ fs.writeFileSync(claudeMdPath, lines.join('\n'));
261
+
262
+ return true;
263
+ }
264
+
265
+ /**
266
+ * Install MCP server
267
+ */
268
+ function installMcp(vectorDir, src) {
269
+ const mcpDest = path.join(vectorDir, 'vector-mcp');
270
+ const mcpSrc = path.join(src, 'mcp');
271
+
272
+ if (!fs.existsSync(mcpSrc)) {
273
+ console.log(` ${yellow}Warning: MCP source not found, skipping${reset}`);
274
+ return null;
275
+ }
276
+
277
+ // Copy MCP files
278
+ copyDir(mcpSrc, mcpDest);
279
+ console.log(` ${green}✓${reset} Installed vector-mcp`);
280
+
281
+ // Run npm install for MCP dependencies
282
+ try {
283
+ execSync('npm install --production --silent', {
284
+ cwd: mcpDest,
285
+ stdio: 'pipe'
286
+ });
287
+ console.log(` ${green}✓${reset} Installed MCP dependencies`);
288
+ } catch (e) {
289
+ console.log(` ${yellow}Warning: npm install failed for vector-mcp. Run manually:${reset}`);
290
+ console.log(` ${dim}cd ${mcpDest} && npm install${reset}`);
291
+ }
292
+
293
+ return path.join(mcpDest, 'index.js');
294
+ }
295
+
296
+ /**
297
+ * Install to the specified directory
298
+ */
299
+ function install(isGlobal, addToClaudeMd = true) {
300
+ const src = path.join(__dirname, '..');
301
+ const configDir = expandTilde(explicitConfigDir) || expandTilde(process.env.CLAUDE_CONFIG_DIR);
302
+ const defaultGlobalDir = configDir || path.join(os.homedir(), '.claude');
303
+
304
+ const claudeDir = isGlobal
305
+ ? defaultGlobalDir
306
+ : path.join(process.cwd(), '.claude');
307
+
308
+ const vectorDir = isGlobal
309
+ ? path.join(os.homedir(), '.accel', 'vector')
310
+ : path.join(process.cwd(), '.vector');
311
+
312
+ const locationLabel = isGlobal
313
+ ? claudeDir.replace(os.homedir(), '~')
314
+ : claudeDir.replace(process.cwd(), '.');
315
+
316
+ const vectorLabel = isGlobal
317
+ ? vectorDir.replace(os.homedir(), '~')
318
+ : vectorDir.replace(process.cwd(), '.');
319
+
320
+ console.log(` Installing to ${amber}${locationLabel}${reset} and ${amber}${vectorLabel}${reset}\n`);
321
+
322
+ // 1. Copy hook script
323
+ const hooksDir = path.join(claudeDir, 'hooks');
324
+ fs.mkdirSync(hooksDir, { recursive: true });
325
+ const hookSrc = path.join(src, 'hooks', 'vector-hook.py');
326
+ const hookDest = path.join(hooksDir, 'vector-hook.py');
327
+ fs.copyFileSync(hookSrc, hookDest);
328
+ fs.chmodSync(hookDest, '755');
329
+ console.log(` ${green}✓${reset} Installed hooks/vector-hook.py (v2)`);
330
+
331
+ // 2. Copy .vector-template to .vector (vector.json + sessions/)
332
+ const vectorTemplateSrc = path.join(src, '.vector-template');
333
+ if (!fs.existsSync(vectorDir)) {
334
+ copyDir(vectorTemplateSrc, vectorDir);
335
+ // Stamp the install date in vector.json
336
+ const vectorJsonPath = path.join(vectorDir, 'vector.json');
337
+ if (fs.existsSync(vectorJsonPath)) {
338
+ try {
339
+ const vectorJson = JSON.parse(fs.readFileSync(vectorJsonPath, 'utf8'));
340
+ vectorJson.last_modified = new Date().toISOString();
341
+ fs.writeFileSync(vectorJsonPath, JSON.stringify(vectorJson, null, 2));
342
+ } catch (e) {
343
+ // Non-critical, continue
344
+ }
345
+ }
346
+ console.log(` ${green}✓${reset} Created ${vectorLabel}/vector.json`);
347
+ } else if (!fs.existsSync(path.join(vectorDir, 'vector.json'))) {
348
+ // .vector/ exists but no vector.json — v1 user, copy template
349
+ const vectorJsonSrc = path.join(vectorTemplateSrc, 'vector.json');
350
+ const vectorJsonDest = path.join(vectorDir, 'vector.json');
351
+ fs.copyFileSync(vectorJsonSrc, vectorJsonDest);
352
+ console.log(` ${green}✓${reset} Added vector.json to existing ${vectorLabel}`);
353
+ console.log(` ${yellow}Note: Existing v1 files detected. Run migrate-v1-to-v2.sh to convert.${reset}`);
354
+ } else {
355
+ console.log(` ${dim}${vectorLabel}/vector.json already exists, skipping${reset}`);
356
+ }
357
+
358
+ // 3. Install MCP server
359
+ const mcpIndexPath = installMcp(vectorDir, src);
360
+
361
+ // 4. Wire hook into settings.json
362
+ wireHook(claudeDir, hookDest);
363
+
364
+ // 5. Wire MCP into .mcp.json (at workspace root, not settings.json)
365
+ if (mcpIndexPath) {
366
+ const mcpRoot = isGlobal ? os.homedir() : process.cwd();
367
+ wireMcp(mcpRoot, mcpIndexPath);
368
+ }
369
+
370
+ // 6. Add Vector block to CLAUDE.md (if requested)
371
+ if (addToClaudeMd && !skipClaudeMd) {
372
+ const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
373
+ if (addVectorBlock(claudeMdPath)) {
374
+ console.log(` ${green}✓${reset} Added Vector block to CLAUDE.md`);
375
+ }
376
+ }
377
+
378
+ console.log(`
379
+ ${green}Done!${reset} Restart Claude Code to activate.
380
+
381
+ ${amber}What's installed:${reset}
382
+ ${dim}${vectorLabel}/vector.json${reset} - Your rules, decisions, and config
383
+ ${dim}${vectorLabel}/vector-mcp/${reset} - MCP server for runtime management
384
+ ${dim}${locationLabel}/hooks/${reset} - Rule injection hook
385
+
386
+ ${amber}MCP tools available:${reset}
387
+ ${dim}vector_v2_list_domains${reset} - View all domains
388
+ ${dim}vector_v2_add_rule${reset} - Add a rule to a domain
389
+ ${dim}vector_v2_log_decision${reset} - Log a decision
390
+
391
+ ${amber}Upgrading from v1?${reset}
392
+ ${dim}bash node_modules/vector-core/bin/migrate-v1-to-v2.sh ${vectorLabel}${reset}
393
+ `);
394
+ }
395
+
396
+ /**
397
+ * Prompt for install location
398
+ */
399
+ function promptLocation() {
400
+ const rl = readline.createInterface({
401
+ input: process.stdin,
402
+ output: process.stdout
403
+ });
404
+
405
+ const configDir = expandTilde(explicitConfigDir) || expandTilde(process.env.CLAUDE_CONFIG_DIR);
406
+ const globalPath = configDir || path.join(os.homedir(), '.claude');
407
+ const globalLabel = globalPath.replace(os.homedir(), '~');
408
+
409
+ console.log(` ${yellow}Where would you like to install?${reset}
410
+
411
+ ${amber}1${reset}) Global ${dim}(${globalLabel} + ~/.accel/vector)${reset} - available in all projects
412
+ ${amber}2${reset}) Local ${dim}(./.claude + ./.vector)${reset} - this project only
413
+ `);
414
+
415
+ rl.question(` Choice ${dim}[1]${reset}: `, (answer) => {
416
+ rl.close();
417
+ const choice = answer.trim() || '1';
418
+ const isGlobal = choice !== '2';
419
+
420
+ // Ask about CLAUDE.md modification
421
+ const rl2 = readline.createInterface({
422
+ input: process.stdin,
423
+ output: process.stdout
424
+ });
425
+
426
+ console.log(`
427
+ ${yellow}Add Vector integration block to CLAUDE.md?${reset}
428
+ ${dim}This helps Claude recognize and follow Vector rules.${reset}
429
+
430
+ ${amber}1${reset}) Yes ${dim}(recommended)${reset}
431
+ ${amber}2${reset}) No, I'll add it manually
432
+ `);
433
+
434
+ rl2.question(` Choice ${dim}[1]${reset}: `, (answer2) => {
435
+ rl2.close();
436
+ const addBlock = (answer2.trim() || '1') !== '2';
437
+ install(isGlobal, addBlock);
438
+ });
439
+ });
440
+ }
441
+
442
+ // Main
443
+ if (hasGlobal && hasLocal) {
444
+ console.error(` ${yellow}Cannot specify both --global and --local${reset}`);
445
+ process.exit(1);
446
+ } else if (explicitConfigDir && hasLocal) {
447
+ console.error(` ${yellow}Cannot use --config-dir with --local${reset}`);
448
+ process.exit(1);
449
+ } else if (hasGlobal) {
450
+ install(true, !skipClaudeMd);
451
+ } else if (hasLocal) {
452
+ install(false, !skipClaudeMd);
453
+ } else {
454
+ promptLocation();
455
+ }