aw-ecc 1.4.21

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 (764) hide show
  1. package/.agents/skills/api-design/SKILL.md +523 -0
  2. package/.agents/skills/api-design/agents/openai.yaml +7 -0
  3. package/.agents/skills/article-writing/SKILL.md +85 -0
  4. package/.agents/skills/article-writing/agents/openai.yaml +7 -0
  5. package/.agents/skills/backend-patterns/SKILL.md +598 -0
  6. package/.agents/skills/backend-patterns/agents/openai.yaml +7 -0
  7. package/.agents/skills/bun-runtime/SKILL.md +84 -0
  8. package/.agents/skills/bun-runtime/agents/openai.yaml +7 -0
  9. package/.agents/skills/claude-api/SKILL.md +337 -0
  10. package/.agents/skills/claude-api/agents/openai.yaml +7 -0
  11. package/.agents/skills/coding-standards/SKILL.md +530 -0
  12. package/.agents/skills/coding-standards/agents/openai.yaml +7 -0
  13. package/.agents/skills/content-engine/SKILL.md +88 -0
  14. package/.agents/skills/content-engine/agents/openai.yaml +7 -0
  15. package/.agents/skills/crosspost/SKILL.md +188 -0
  16. package/.agents/skills/crosspost/agents/openai.yaml +7 -0
  17. package/.agents/skills/deep-research/SKILL.md +155 -0
  18. package/.agents/skills/deep-research/agents/openai.yaml +7 -0
  19. package/.agents/skills/dmux-workflows/SKILL.md +144 -0
  20. package/.agents/skills/dmux-workflows/agents/openai.yaml +7 -0
  21. package/.agents/skills/documentation-lookup/SKILL.md +90 -0
  22. package/.agents/skills/documentation-lookup/agents/openai.yaml +7 -0
  23. package/.agents/skills/e2e-testing/SKILL.md +326 -0
  24. package/.agents/skills/e2e-testing/agents/openai.yaml +7 -0
  25. package/.agents/skills/eval-harness/SKILL.md +236 -0
  26. package/.agents/skills/eval-harness/agents/openai.yaml +7 -0
  27. package/.agents/skills/everything-claude-code/SKILL.md +442 -0
  28. package/.agents/skills/everything-claude-code/agents/openai.yaml +6 -0
  29. package/.agents/skills/exa-search/SKILL.md +170 -0
  30. package/.agents/skills/exa-search/agents/openai.yaml +7 -0
  31. package/.agents/skills/fal-ai-media/SKILL.md +277 -0
  32. package/.agents/skills/fal-ai-media/agents/openai.yaml +7 -0
  33. package/.agents/skills/frontend-patterns/SKILL.md +642 -0
  34. package/.agents/skills/frontend-patterns/agents/openai.yaml +7 -0
  35. package/.agents/skills/frontend-slides/SKILL.md +184 -0
  36. package/.agents/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  37. package/.agents/skills/frontend-slides/agents/openai.yaml +7 -0
  38. package/.agents/skills/investor-materials/SKILL.md +96 -0
  39. package/.agents/skills/investor-materials/agents/openai.yaml +7 -0
  40. package/.agents/skills/investor-outreach/SKILL.md +76 -0
  41. package/.agents/skills/investor-outreach/agents/openai.yaml +7 -0
  42. package/.agents/skills/market-research/SKILL.md +75 -0
  43. package/.agents/skills/market-research/agents/openai.yaml +7 -0
  44. package/.agents/skills/mcp-server-patterns/SKILL.md +67 -0
  45. package/.agents/skills/nextjs-turbopack/SKILL.md +44 -0
  46. package/.agents/skills/nextjs-turbopack/agents/openai.yaml +7 -0
  47. package/.agents/skills/security-review/SKILL.md +495 -0
  48. package/.agents/skills/security-review/agents/openai.yaml +7 -0
  49. package/.agents/skills/strategic-compact/SKILL.md +103 -0
  50. package/.agents/skills/strategic-compact/agents/openai.yaml +7 -0
  51. package/.agents/skills/tdd-workflow/SKILL.md +410 -0
  52. package/.agents/skills/tdd-workflow/agents/openai.yaml +7 -0
  53. package/.agents/skills/verification-loop/SKILL.md +126 -0
  54. package/.agents/skills/verification-loop/agents/openai.yaml +7 -0
  55. package/.agents/skills/video-editing/SKILL.md +308 -0
  56. package/.agents/skills/video-editing/agents/openai.yaml +7 -0
  57. package/.agents/skills/x-api/SKILL.md +214 -0
  58. package/.agents/skills/x-api/agents/openai.yaml +7 -0
  59. package/.claude-plugin/README.md +17 -0
  60. package/.claude-plugin/plugin.json +24 -0
  61. package/.codex/AGENTS.md +93 -0
  62. package/.codex/INSTALL.md +64 -0
  63. package/.codex/agents/docs-researcher.toml +9 -0
  64. package/.codex/agents/explorer.toml +9 -0
  65. package/.codex/agents/reviewer.toml +9 -0
  66. package/.codex/config.toml +108 -0
  67. package/.codex/hooks/aw-post-tool-use.sh +5 -0
  68. package/.codex/hooks/aw-pre-tool-use.sh +5 -0
  69. package/.codex/hooks/aw-session-start.sh +21 -0
  70. package/.codex/hooks/aw-stop.sh +5 -0
  71. package/.codex/hooks/aw-user-prompt-submit.sh +9 -0
  72. package/.codex/hooks.json +62 -0
  73. package/.cursor/INSTALL.md +40 -0
  74. package/.cursor/hooks/adapter.js +120 -0
  75. package/.cursor/hooks/after-file-edit.js +11 -0
  76. package/.cursor/hooks/after-mcp-execution.js +11 -0
  77. package/.cursor/hooks/after-shell-execution.js +11 -0
  78. package/.cursor/hooks/after-tab-file-edit.js +12 -0
  79. package/.cursor/hooks/aw-phase-adapter.js +43 -0
  80. package/.cursor/hooks/before-mcp-execution.js +11 -0
  81. package/.cursor/hooks/before-read-file.js +13 -0
  82. package/.cursor/hooks/before-shell-execution.js +11 -0
  83. package/.cursor/hooks/before-submit-prompt.js +41 -0
  84. package/.cursor/hooks/before-tab-file-read.js +13 -0
  85. package/.cursor/hooks/pre-compact.js +11 -0
  86. package/.cursor/hooks/session-end.js +11 -0
  87. package/.cursor/hooks/session-start.js +11 -0
  88. package/.cursor/hooks/shared/aw-phase-definitions.js +190 -0
  89. package/.cursor/hooks/shared/aw-phase-runner.js +61 -0
  90. package/.cursor/hooks/shared/session-start.sh +20 -0
  91. package/.cursor/hooks/shared/user-prompt-submit.sh +155 -0
  92. package/.cursor/hooks/stop.js +11 -0
  93. package/.cursor/hooks/subagent-start.js +10 -0
  94. package/.cursor/hooks/subagent-stop.js +10 -0
  95. package/.cursor/hooks.json +115 -0
  96. package/.cursor/rules/common-agents.md +53 -0
  97. package/.cursor/rules/common-coding-style.md +52 -0
  98. package/.cursor/rules/common-development-workflow.md +33 -0
  99. package/.cursor/rules/common-git-workflow.md +28 -0
  100. package/.cursor/rules/common-hooks.md +34 -0
  101. package/.cursor/rules/common-patterns.md +35 -0
  102. package/.cursor/rules/common-performance.md +59 -0
  103. package/.cursor/rules/common-security.md +33 -0
  104. package/.cursor/rules/common-testing.md +33 -0
  105. package/.cursor/rules/golang-coding-style.md +31 -0
  106. package/.cursor/rules/golang-hooks.md +16 -0
  107. package/.cursor/rules/golang-patterns.md +44 -0
  108. package/.cursor/rules/golang-security.md +33 -0
  109. package/.cursor/rules/golang-testing.md +30 -0
  110. package/.cursor/rules/kotlin-coding-style.md +39 -0
  111. package/.cursor/rules/kotlin-hooks.md +16 -0
  112. package/.cursor/rules/kotlin-patterns.md +50 -0
  113. package/.cursor/rules/kotlin-security.md +58 -0
  114. package/.cursor/rules/kotlin-testing.md +38 -0
  115. package/.cursor/rules/php-coding-style.md +25 -0
  116. package/.cursor/rules/php-hooks.md +21 -0
  117. package/.cursor/rules/php-patterns.md +23 -0
  118. package/.cursor/rules/php-security.md +24 -0
  119. package/.cursor/rules/php-testing.md +26 -0
  120. package/.cursor/rules/python-coding-style.md +42 -0
  121. package/.cursor/rules/python-hooks.md +19 -0
  122. package/.cursor/rules/python-patterns.md +39 -0
  123. package/.cursor/rules/python-security.md +30 -0
  124. package/.cursor/rules/python-testing.md +38 -0
  125. package/.cursor/rules/swift-coding-style.md +47 -0
  126. package/.cursor/rules/swift-hooks.md +20 -0
  127. package/.cursor/rules/swift-patterns.md +66 -0
  128. package/.cursor/rules/swift-security.md +33 -0
  129. package/.cursor/rules/swift-testing.md +45 -0
  130. package/.cursor/rules/typescript-coding-style.md +63 -0
  131. package/.cursor/rules/typescript-hooks.md +20 -0
  132. package/.cursor/rules/typescript-patterns.md +50 -0
  133. package/.cursor/rules/typescript-security.md +26 -0
  134. package/.cursor/rules/typescript-testing.md +16 -0
  135. package/.cursor/skills/article-writing/SKILL.md +85 -0
  136. package/.cursor/skills/bun-runtime/SKILL.md +84 -0
  137. package/.cursor/skills/content-engine/SKILL.md +88 -0
  138. package/.cursor/skills/documentation-lookup/SKILL.md +90 -0
  139. package/.cursor/skills/frontend-slides/SKILL.md +184 -0
  140. package/.cursor/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  141. package/.cursor/skills/investor-materials/SKILL.md +96 -0
  142. package/.cursor/skills/investor-outreach/SKILL.md +76 -0
  143. package/.cursor/skills/market-research/SKILL.md +75 -0
  144. package/.cursor/skills/mcp-server-patterns/SKILL.md +67 -0
  145. package/.cursor/skills/nextjs-turbopack/SKILL.md +44 -0
  146. package/.opencode/MIGRATION.md +368 -0
  147. package/.opencode/README.md +204 -0
  148. package/.opencode/commands/build-fix.md +56 -0
  149. package/.opencode/commands/checkpoint.md +67 -0
  150. package/.opencode/commands/code-review.md +68 -0
  151. package/.opencode/commands/e2e.md +105 -0
  152. package/.opencode/commands/eval.md +88 -0
  153. package/.opencode/commands/evolve.md +36 -0
  154. package/.opencode/commands/go-build.md +87 -0
  155. package/.opencode/commands/go-review.md +71 -0
  156. package/.opencode/commands/go-test.md +131 -0
  157. package/.opencode/commands/harness-audit.md +71 -0
  158. package/.opencode/commands/instinct-export.md +93 -0
  159. package/.opencode/commands/instinct-import.md +88 -0
  160. package/.opencode/commands/instinct-status.md +29 -0
  161. package/.opencode/commands/learn.md +61 -0
  162. package/.opencode/commands/loop-start.md +32 -0
  163. package/.opencode/commands/loop-status.md +24 -0
  164. package/.opencode/commands/model-route.md +26 -0
  165. package/.opencode/commands/orchestrate.md +88 -0
  166. package/.opencode/commands/plan.md +49 -0
  167. package/.opencode/commands/projects.md +23 -0
  168. package/.opencode/commands/promote.md +23 -0
  169. package/.opencode/commands/quality-gate.md +29 -0
  170. package/.opencode/commands/refactor-clean.md +102 -0
  171. package/.opencode/commands/rust-build.md +78 -0
  172. package/.opencode/commands/rust-review.md +65 -0
  173. package/.opencode/commands/rust-test.md +104 -0
  174. package/.opencode/commands/security.md +89 -0
  175. package/.opencode/commands/setup-pm.md +67 -0
  176. package/.opencode/commands/skill-create.md +117 -0
  177. package/.opencode/commands/tdd.md +66 -0
  178. package/.opencode/commands/test-coverage.md +80 -0
  179. package/.opencode/commands/update-codemaps.md +81 -0
  180. package/.opencode/commands/update-docs.md +67 -0
  181. package/.opencode/commands/verify.md +67 -0
  182. package/.opencode/index.ts +79 -0
  183. package/.opencode/instructions/INSTRUCTIONS.md +337 -0
  184. package/.opencode/opencode.json +319 -0
  185. package/.opencode/package.json +70 -0
  186. package/.opencode/plugins/ecc-hooks.ts +455 -0
  187. package/.opencode/plugins/index.ts +12 -0
  188. package/.opencode/prompts/agents/architect.txt +175 -0
  189. package/.opencode/prompts/agents/build-error-resolver.txt +233 -0
  190. package/.opencode/prompts/agents/code-reviewer.txt +103 -0
  191. package/.opencode/prompts/agents/database-reviewer.txt +247 -0
  192. package/.opencode/prompts/agents/doc-updater.txt +192 -0
  193. package/.opencode/prompts/agents/e2e-runner.txt +305 -0
  194. package/.opencode/prompts/agents/go-build-resolver.txt +325 -0
  195. package/.opencode/prompts/agents/go-reviewer.txt +241 -0
  196. package/.opencode/prompts/agents/planner.txt +112 -0
  197. package/.opencode/prompts/agents/refactor-cleaner.txt +241 -0
  198. package/.opencode/prompts/agents/rust-build-resolver.txt +93 -0
  199. package/.opencode/prompts/agents/rust-reviewer.txt +61 -0
  200. package/.opencode/prompts/agents/security-reviewer.txt +207 -0
  201. package/.opencode/prompts/agents/tdd-guide.txt +211 -0
  202. package/.opencode/tools/check-coverage.ts +170 -0
  203. package/.opencode/tools/format-code.ts +68 -0
  204. package/.opencode/tools/git-summary.ts +54 -0
  205. package/.opencode/tools/index.ts +13 -0
  206. package/.opencode/tools/lint-check.ts +85 -0
  207. package/.opencode/tools/run-tests.ts +139 -0
  208. package/.opencode/tools/security-audit.ts +277 -0
  209. package/.opencode/tsconfig.json +29 -0
  210. package/AGENTS.md +124 -0
  211. package/LICENSE +21 -0
  212. package/README.md +146 -0
  213. package/README.zh-CN.md +552 -0
  214. package/agents/architect.md +211 -0
  215. package/agents/build-error-resolver.md +114 -0
  216. package/agents/chief-of-staff.md +151 -0
  217. package/agents/code-reviewer.md +237 -0
  218. package/agents/cpp-build-resolver.md +90 -0
  219. package/agents/cpp-reviewer.md +72 -0
  220. package/agents/database-reviewer.md +91 -0
  221. package/agents/doc-updater.md +107 -0
  222. package/agents/docs-lookup.md +68 -0
  223. package/agents/e2e-runner.md +107 -0
  224. package/agents/evals/code-reviewer-scenarios.json +23 -0
  225. package/agents/flutter-reviewer.md +243 -0
  226. package/agents/go-build-resolver.md +94 -0
  227. package/agents/go-reviewer.md +76 -0
  228. package/agents/harness-optimizer.md +35 -0
  229. package/agents/java-build-resolver.md +153 -0
  230. package/agents/java-reviewer.md +92 -0
  231. package/agents/kotlin-build-resolver.md +118 -0
  232. package/agents/kotlin-reviewer.md +159 -0
  233. package/agents/loop-operator.md +36 -0
  234. package/agents/planner.md +212 -0
  235. package/agents/python-reviewer.md +98 -0
  236. package/agents/pytorch-build-resolver.md +120 -0
  237. package/agents/refactor-cleaner.md +85 -0
  238. package/agents/rust-build-resolver.md +148 -0
  239. package/agents/rust-reviewer.md +94 -0
  240. package/agents/security-reviewer.md +108 -0
  241. package/agents/tdd-guide.md +91 -0
  242. package/agents/typescript-reviewer.md +112 -0
  243. package/commands/aside.md +164 -0
  244. package/commands/brainstorm.md +16 -0
  245. package/commands/build-fix.md +70 -0
  246. package/commands/build.md +91 -0
  247. package/commands/checkpoint.md +74 -0
  248. package/commands/claw.md +51 -0
  249. package/commands/code-review.md +24 -0
  250. package/commands/context-budget.md +29 -0
  251. package/commands/cpp-build.md +174 -0
  252. package/commands/cpp-review.md +132 -0
  253. package/commands/cpp-test.md +252 -0
  254. package/commands/deploy.md +75 -0
  255. package/commands/devfleet.md +92 -0
  256. package/commands/docs.md +31 -0
  257. package/commands/e2e.md +373 -0
  258. package/commands/eval.md +120 -0
  259. package/commands/evolve.md +178 -0
  260. package/commands/execute.md +51 -0
  261. package/commands/finish.md +22 -0
  262. package/commands/go-build.md +184 -0
  263. package/commands/go-review.md +148 -0
  264. package/commands/go-test.md +269 -0
  265. package/commands/gradle-build.md +70 -0
  266. package/commands/harness-audit.md +71 -0
  267. package/commands/instinct-export.md +66 -0
  268. package/commands/instinct-import.md +114 -0
  269. package/commands/instinct-status.md +59 -0
  270. package/commands/investigate.md +63 -0
  271. package/commands/kotlin-build.md +175 -0
  272. package/commands/kotlin-review.md +140 -0
  273. package/commands/kotlin-test.md +313 -0
  274. package/commands/learn-eval.md +116 -0
  275. package/commands/learn.md +70 -0
  276. package/commands/loop-start.md +32 -0
  277. package/commands/loop-status.md +24 -0
  278. package/commands/model-route.md +26 -0
  279. package/commands/multi-backend.md +166 -0
  280. package/commands/multi-execute.md +324 -0
  281. package/commands/multi-frontend.md +165 -0
  282. package/commands/multi-plan.md +277 -0
  283. package/commands/multi-workflow.md +200 -0
  284. package/commands/orchestrate.md +240 -0
  285. package/commands/plan.md +130 -0
  286. package/commands/pm2.md +272 -0
  287. package/commands/projects.md +39 -0
  288. package/commands/promote.md +41 -0
  289. package/commands/prompt-optimize.md +38 -0
  290. package/commands/prune.md +31 -0
  291. package/commands/python-review.md +297 -0
  292. package/commands/quality-gate.md +29 -0
  293. package/commands/refactor-clean.md +89 -0
  294. package/commands/resume-session.md +155 -0
  295. package/commands/review.md +64 -0
  296. package/commands/rules-distill.md +11 -0
  297. package/commands/rust-build.md +188 -0
  298. package/commands/rust-review.md +142 -0
  299. package/commands/rust-test.md +309 -0
  300. package/commands/save-session.md +275 -0
  301. package/commands/sessions.md +333 -0
  302. package/commands/setup-pm.md +80 -0
  303. package/commands/ship.md +77 -0
  304. package/commands/skill-create.md +174 -0
  305. package/commands/skill-health.md +54 -0
  306. package/commands/tdd.md +20 -0
  307. package/commands/test-coverage.md +77 -0
  308. package/commands/test.md +64 -0
  309. package/commands/update-codemaps.md +72 -0
  310. package/commands/update-docs.md +84 -0
  311. package/commands/verify.md +55 -0
  312. package/contexts/dev.md +20 -0
  313. package/contexts/research.md +26 -0
  314. package/contexts/review.md +22 -0
  315. package/examples/CLAUDE.md +100 -0
  316. package/examples/statusline.json +19 -0
  317. package/examples/user-CLAUDE.md +109 -0
  318. package/hooks/README.md +219 -0
  319. package/hooks/hooks.json +320 -0
  320. package/hooks/run-hook.cmd +31 -0
  321. package/hooks/session-start +6 -0
  322. package/install.ps1 +38 -0
  323. package/install.sh +17 -0
  324. package/manifests/install-components.json +415 -0
  325. package/manifests/install-modules.json +500 -0
  326. package/manifests/install-profiles.json +80 -0
  327. package/mcp-configs/mcp-servers.json +153 -0
  328. package/package.json +131 -0
  329. package/plugins/README.md +85 -0
  330. package/rules/README.md +106 -0
  331. package/rules/common/agents.md +50 -0
  332. package/rules/common/coding-style.md +48 -0
  333. package/rules/common/development-workflow.md +38 -0
  334. package/rules/common/git-workflow.md +24 -0
  335. package/rules/common/hooks.md +30 -0
  336. package/rules/common/patterns.md +31 -0
  337. package/rules/common/performance.md +55 -0
  338. package/rules/common/security.md +29 -0
  339. package/rules/common/testing.md +29 -0
  340. package/rules/cpp/coding-style.md +44 -0
  341. package/rules/cpp/hooks.md +39 -0
  342. package/rules/cpp/patterns.md +51 -0
  343. package/rules/cpp/security.md +51 -0
  344. package/rules/cpp/testing.md +44 -0
  345. package/rules/csharp/coding-style.md +72 -0
  346. package/rules/csharp/hooks.md +25 -0
  347. package/rules/csharp/patterns.md +50 -0
  348. package/rules/csharp/security.md +58 -0
  349. package/rules/csharp/testing.md +46 -0
  350. package/rules/golang/coding-style.md +32 -0
  351. package/rules/golang/hooks.md +17 -0
  352. package/rules/golang/patterns.md +45 -0
  353. package/rules/golang/security.md +34 -0
  354. package/rules/golang/testing.md +31 -0
  355. package/rules/java/coding-style.md +114 -0
  356. package/rules/java/hooks.md +18 -0
  357. package/rules/java/patterns.md +146 -0
  358. package/rules/java/security.md +100 -0
  359. package/rules/java/testing.md +131 -0
  360. package/rules/kotlin/coding-style.md +86 -0
  361. package/rules/kotlin/hooks.md +17 -0
  362. package/rules/kotlin/patterns.md +146 -0
  363. package/rules/kotlin/security.md +82 -0
  364. package/rules/kotlin/testing.md +128 -0
  365. package/rules/perl/coding-style.md +46 -0
  366. package/rules/perl/hooks.md +22 -0
  367. package/rules/perl/patterns.md +76 -0
  368. package/rules/perl/security.md +69 -0
  369. package/rules/perl/testing.md +54 -0
  370. package/rules/php/coding-style.md +40 -0
  371. package/rules/php/hooks.md +24 -0
  372. package/rules/php/patterns.md +33 -0
  373. package/rules/php/security.md +37 -0
  374. package/rules/php/testing.md +39 -0
  375. package/rules/python/coding-style.md +42 -0
  376. package/rules/python/hooks.md +19 -0
  377. package/rules/python/patterns.md +39 -0
  378. package/rules/python/security.md +30 -0
  379. package/rules/python/testing.md +38 -0
  380. package/rules/rust/coding-style.md +151 -0
  381. package/rules/rust/hooks.md +16 -0
  382. package/rules/rust/patterns.md +168 -0
  383. package/rules/rust/security.md +141 -0
  384. package/rules/rust/testing.md +154 -0
  385. package/rules/swift/coding-style.md +47 -0
  386. package/rules/swift/hooks.md +20 -0
  387. package/rules/swift/patterns.md +66 -0
  388. package/rules/swift/security.md +33 -0
  389. package/rules/swift/testing.md +45 -0
  390. package/rules/typescript/coding-style.md +199 -0
  391. package/rules/typescript/hooks.md +22 -0
  392. package/rules/typescript/patterns.md +52 -0
  393. package/rules/typescript/security.md +28 -0
  394. package/rules/typescript/testing.md +18 -0
  395. package/schemas/ecc-install-config.schema.json +58 -0
  396. package/schemas/hooks.schema.json +197 -0
  397. package/schemas/install-components.schema.json +58 -0
  398. package/schemas/install-modules.schema.json +105 -0
  399. package/schemas/install-profiles.schema.json +45 -0
  400. package/schemas/install-state.schema.json +210 -0
  401. package/schemas/package-manager.schema.json +23 -0
  402. package/schemas/plugin.schema.json +58 -0
  403. package/schemas/provenance.schema.json +31 -0
  404. package/schemas/state-store.schema.json +316 -0
  405. package/scripts/ci/catalog.js +245 -0
  406. package/scripts/ci/validate-agents.js +81 -0
  407. package/scripts/ci/validate-commands.js +136 -0
  408. package/scripts/ci/validate-hooks.js +239 -0
  409. package/scripts/ci/validate-install-manifests.js +214 -0
  410. package/scripts/ci/validate-no-personal-paths.js +63 -0
  411. package/scripts/ci/validate-rules.js +81 -0
  412. package/scripts/ci/validate-skills.js +56 -0
  413. package/scripts/claw.js +473 -0
  414. package/scripts/codex/merge-mcp-config.js +304 -0
  415. package/scripts/cursor-aw-home/hooks.json +115 -0
  416. package/scripts/cursor-aw-hooks/adapter.js +120 -0
  417. package/scripts/cursor-aw-hooks/after-file-edit.js +11 -0
  418. package/scripts/cursor-aw-hooks/after-mcp-execution.js +11 -0
  419. package/scripts/cursor-aw-hooks/after-shell-execution.js +11 -0
  420. package/scripts/cursor-aw-hooks/aw-phase-adapter.js +43 -0
  421. package/scripts/cursor-aw-hooks/before-mcp-execution.js +11 -0
  422. package/scripts/cursor-aw-hooks/before-shell-execution.js +11 -0
  423. package/scripts/cursor-aw-hooks/before-submit-prompt.js +41 -0
  424. package/scripts/cursor-aw-hooks/pre-compact.js +11 -0
  425. package/scripts/cursor-aw-hooks/session-end.js +11 -0
  426. package/scripts/cursor-aw-hooks/session-start.js +11 -0
  427. package/scripts/cursor-aw-hooks/stop.js +11 -0
  428. package/scripts/doctor.js +110 -0
  429. package/scripts/ecc.js +208 -0
  430. package/scripts/generate-aw-hooks.js +110 -0
  431. package/scripts/harness-audit.js +512 -0
  432. package/scripts/hooks/auto-tmux-dev.js +88 -0
  433. package/scripts/hooks/check-console-log.js +71 -0
  434. package/scripts/hooks/check-hook-enabled.js +12 -0
  435. package/scripts/hooks/config-protection.js +125 -0
  436. package/scripts/hooks/cost-tracker.js +78 -0
  437. package/scripts/hooks/doc-file-warning.js +63 -0
  438. package/scripts/hooks/evaluate-session.js +100 -0
  439. package/scripts/hooks/governance-capture.js +280 -0
  440. package/scripts/hooks/insaits-security-monitor.py +269 -0
  441. package/scripts/hooks/insaits-security-wrapper.js +88 -0
  442. package/scripts/hooks/mcp-health-check.js +588 -0
  443. package/scripts/hooks/post-bash-build-complete.js +27 -0
  444. package/scripts/hooks/post-bash-pr-created.js +37 -0
  445. package/scripts/hooks/post-edit-console-warn.js +54 -0
  446. package/scripts/hooks/post-edit-format.js +109 -0
  447. package/scripts/hooks/post-edit-typecheck.js +96 -0
  448. package/scripts/hooks/post-mcp-log.js +27 -0
  449. package/scripts/hooks/pre-bash-dev-server-block.js +187 -0
  450. package/scripts/hooks/pre-bash-git-push-reminder.js +28 -0
  451. package/scripts/hooks/pre-bash-tmux-reminder.js +33 -0
  452. package/scripts/hooks/pre-compact.js +48 -0
  453. package/scripts/hooks/pre-mcp-log.js +26 -0
  454. package/scripts/hooks/pre-write-doc-warn.js +9 -0
  455. package/scripts/hooks/quality-gate.js +168 -0
  456. package/scripts/hooks/run-with-flags-shell.sh +32 -0
  457. package/scripts/hooks/run-with-flags.js +120 -0
  458. package/scripts/hooks/session-end-marker.js +29 -0
  459. package/scripts/hooks/session-end.js +301 -0
  460. package/scripts/hooks/session-start-rules-context.sh +5 -0
  461. package/scripts/hooks/session-start.js +98 -0
  462. package/scripts/hooks/shared/aw-phase-definitions.js +190 -0
  463. package/scripts/hooks/shared/aw-phase-runner.js +61 -0
  464. package/scripts/hooks/shared/session-start.sh +20 -0
  465. package/scripts/hooks/shared/user-prompt-submit.sh +155 -0
  466. package/scripts/hooks/suggest-compact.js +80 -0
  467. package/scripts/install-apply.js +140 -0
  468. package/scripts/install-plan.js +254 -0
  469. package/scripts/lib/agent-compress.js +244 -0
  470. package/scripts/lib/aw-harness-registry.js +122 -0
  471. package/scripts/lib/aw-hook-contract.js +86 -0
  472. package/scripts/lib/claude-aw-hook-files.js +28 -0
  473. package/scripts/lib/claude-hook-config.js +76 -0
  474. package/scripts/lib/codex-aw-hook-files.js +38 -0
  475. package/scripts/lib/codex-hook-config.js +88 -0
  476. package/scripts/lib/cursor-aw-hook-files.js +62 -0
  477. package/scripts/lib/cursor-hook-config.js +148 -0
  478. package/scripts/lib/hook-flags.js +74 -0
  479. package/scripts/lib/inspection.js +212 -0
  480. package/scripts/lib/install/apply.js +23 -0
  481. package/scripts/lib/install/config.js +82 -0
  482. package/scripts/lib/install/request.js +120 -0
  483. package/scripts/lib/install/runtime.js +54 -0
  484. package/scripts/lib/install-executor.js +778 -0
  485. package/scripts/lib/install-lifecycle.js +1311 -0
  486. package/scripts/lib/install-manifests.js +448 -0
  487. package/scripts/lib/install-state.js +313 -0
  488. package/scripts/lib/install-targets/antigravity-project.js +69 -0
  489. package/scripts/lib/install-targets/claude-home.js +54 -0
  490. package/scripts/lib/install-targets/codex-home.js +62 -0
  491. package/scripts/lib/install-targets/cursor-project.js +80 -0
  492. package/scripts/lib/install-targets/helpers.js +307 -0
  493. package/scripts/lib/install-targets/opencode-home.js +10 -0
  494. package/scripts/lib/install-targets/registry.js +66 -0
  495. package/scripts/lib/orchestration-session.js +299 -0
  496. package/scripts/lib/package-manager.d.ts +119 -0
  497. package/scripts/lib/package-manager.js +431 -0
  498. package/scripts/lib/project-detect.js +428 -0
  499. package/scripts/lib/resolve-ecc-root.js +89 -0
  500. package/scripts/lib/resolve-formatter.js +185 -0
  501. package/scripts/lib/session-adapters/canonical-session.js +531 -0
  502. package/scripts/lib/session-adapters/claude-history.js +160 -0
  503. package/scripts/lib/session-adapters/dmux-tmux.js +90 -0
  504. package/scripts/lib/session-adapters/registry.js +127 -0
  505. package/scripts/lib/session-aliases.d.ts +136 -0
  506. package/scripts/lib/session-aliases.js +481 -0
  507. package/scripts/lib/session-manager.d.ts +131 -0
  508. package/scripts/lib/session-manager.js +464 -0
  509. package/scripts/lib/shell-split.js +86 -0
  510. package/scripts/lib/skill-evolution/dashboard.js +401 -0
  511. package/scripts/lib/skill-evolution/health.js +263 -0
  512. package/scripts/lib/skill-evolution/index.js +20 -0
  513. package/scripts/lib/skill-evolution/provenance.js +187 -0
  514. package/scripts/lib/skill-evolution/tracker.js +146 -0
  515. package/scripts/lib/skill-evolution/versioning.js +237 -0
  516. package/scripts/lib/skill-improvement/amendify.js +89 -0
  517. package/scripts/lib/skill-improvement/evaluate.js +59 -0
  518. package/scripts/lib/skill-improvement/health.js +118 -0
  519. package/scripts/lib/skill-improvement/observations.js +108 -0
  520. package/scripts/lib/state-store/index.js +191 -0
  521. package/scripts/lib/state-store/migrations.js +178 -0
  522. package/scripts/lib/state-store/queries.js +697 -0
  523. package/scripts/lib/state-store/schema.js +92 -0
  524. package/scripts/lib/tmux-worktree-orchestrator.js +475 -0
  525. package/scripts/lib/utils.d.ts +183 -0
  526. package/scripts/lib/utils.js +564 -0
  527. package/scripts/list-installed.js +90 -0
  528. package/scripts/orchestrate-codex-worker.sh +107 -0
  529. package/scripts/orchestrate-worktrees.js +40 -0
  530. package/scripts/orchestration-status.js +82 -0
  531. package/scripts/repair.js +97 -0
  532. package/scripts/session-inspect.js +150 -0
  533. package/scripts/sessions-cli.js +177 -0
  534. package/scripts/setup-package-manager.js +204 -0
  535. package/scripts/skill-create-output.js +244 -0
  536. package/scripts/status.js +176 -0
  537. package/scripts/uninstall.js +96 -0
  538. package/skills/agent-eval/SKILL.md +145 -0
  539. package/skills/agent-harness-construction/SKILL.md +73 -0
  540. package/skills/agentic-engineering/SKILL.md +63 -0
  541. package/skills/ai-first-engineering/SKILL.md +51 -0
  542. package/skills/ai-regression-testing/SKILL.md +385 -0
  543. package/skills/android-clean-architecture/SKILL.md +339 -0
  544. package/skills/api-and-interface-design/SKILL.md +75 -0
  545. package/skills/api-design/SKILL.md +523 -0
  546. package/skills/architecture-decision-records/SKILL.md +179 -0
  547. package/skills/article-writing/SKILL.md +85 -0
  548. package/skills/autonomous-loops/SKILL.md +610 -0
  549. package/skills/aw-brainstorm/SKILL.md +115 -0
  550. package/skills/aw-build/SKILL.md +189 -0
  551. package/skills/aw-build/evals/build-stage-cases.json +28 -0
  552. package/skills/aw-debug/SKILL.md +49 -0
  553. package/skills/aw-deploy/SKILL.md +101 -0
  554. package/skills/aw-deploy/evals/deploy-stage-cases.json +32 -0
  555. package/skills/aw-execute/SKILL.md +47 -0
  556. package/skills/aw-execute/references/mode-code.md +47 -0
  557. package/skills/aw-execute/references/mode-docs.md +28 -0
  558. package/skills/aw-execute/references/mode-infra.md +44 -0
  559. package/skills/aw-execute/references/mode-migration.md +58 -0
  560. package/skills/aw-execute/references/worker-implementer.md +26 -0
  561. package/skills/aw-execute/references/worker-parallel-worker.md +23 -0
  562. package/skills/aw-execute/references/worker-quality-reviewer.md +23 -0
  563. package/skills/aw-execute/references/worker-spec-reviewer.md +23 -0
  564. package/skills/aw-execute/scripts/build-worker-bundle.js +229 -0
  565. package/skills/aw-finish/SKILL.md +111 -0
  566. package/skills/aw-investigate/SKILL.md +109 -0
  567. package/skills/aw-plan/SKILL.md +399 -0
  568. package/skills/aw-prepare/SKILL.md +118 -0
  569. package/skills/aw-review/SKILL.md +123 -0
  570. package/skills/aw-rules/SKILL.md +129 -0
  571. package/skills/aw-rules/references/known-hallucinations.md +43 -0
  572. package/skills/aw-rules/references/verification-sources.md +50 -0
  573. package/skills/aw-ship/SKILL.md +115 -0
  574. package/skills/aw-spec/SKILL.md +128 -0
  575. package/skills/aw-tasks/SKILL.md +155 -0
  576. package/skills/aw-test/SKILL.md +118 -0
  577. package/skills/aw-verify/SKILL.md +51 -0
  578. package/skills/aw-yolo/SKILL.md +111 -0
  579. package/skills/backend-patterns/SKILL.md +598 -0
  580. package/skills/benchmark/SKILL.md +87 -0
  581. package/skills/blueprint/SKILL.md +105 -0
  582. package/skills/browser-qa/SKILL.md +81 -0
  583. package/skills/browser-testing-with-devtools/SKILL.md +81 -0
  584. package/skills/bun-runtime/SKILL.md +84 -0
  585. package/skills/canary-watch/SKILL.md +93 -0
  586. package/skills/carrier-relationship-management/SKILL.md +212 -0
  587. package/skills/ci-cd-and-automation/SKILL.md +71 -0
  588. package/skills/claude-api/SKILL.md +337 -0
  589. package/skills/claude-devfleet/SKILL.md +103 -0
  590. package/skills/click-path-audit/SKILL.md +244 -0
  591. package/skills/clickhouse-io/SKILL.md +439 -0
  592. package/skills/code-simplification/SKILL.md +74 -0
  593. package/skills/codebase-onboarding/SKILL.md +233 -0
  594. package/skills/coding-standards/SKILL.md +530 -0
  595. package/skills/compose-multiplatform-patterns/SKILL.md +299 -0
  596. package/skills/configure-ecc/SKILL.md +367 -0
  597. package/skills/content-engine/SKILL.md +88 -0
  598. package/skills/content-hash-cache-pattern/SKILL.md +161 -0
  599. package/skills/context-budget/SKILL.md +135 -0
  600. package/skills/context-engineering/SKILL.md +74 -0
  601. package/skills/continuous-agent-loop/SKILL.md +45 -0
  602. package/skills/continuous-learning/SKILL.md +119 -0
  603. package/skills/continuous-learning/config.json +18 -0
  604. package/skills/continuous-learning/evaluate-session.sh +69 -0
  605. package/skills/continuous-learning-v2/SKILL.md +365 -0
  606. package/skills/continuous-learning-v2/agents/observer-loop.sh +191 -0
  607. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  608. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  609. package/skills/continuous-learning-v2/agents/start-observer.sh +240 -0
  610. package/skills/continuous-learning-v2/config.json +8 -0
  611. package/skills/continuous-learning-v2/hooks/observe.sh +412 -0
  612. package/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
  613. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
  614. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
  615. package/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
  616. package/skills/cpp-coding-standards/SKILL.md +723 -0
  617. package/skills/cpp-testing/SKILL.md +324 -0
  618. package/skills/crosspost/SKILL.md +190 -0
  619. package/skills/customs-trade-compliance/SKILL.md +263 -0
  620. package/skills/data-scraper-agent/SKILL.md +764 -0
  621. package/skills/database-migrations/SKILL.md +429 -0
  622. package/skills/deep-research/SKILL.md +155 -0
  623. package/skills/deployment-patterns/SKILL.md +427 -0
  624. package/skills/deprecation-and-migration/SKILL.md +75 -0
  625. package/skills/design-system/SKILL.md +76 -0
  626. package/skills/django-patterns/SKILL.md +734 -0
  627. package/skills/django-security/SKILL.md +593 -0
  628. package/skills/django-tdd/SKILL.md +729 -0
  629. package/skills/django-verification/SKILL.md +469 -0
  630. package/skills/dmux-workflows/SKILL.md +191 -0
  631. package/skills/docker-patterns/SKILL.md +364 -0
  632. package/skills/documentation-and-adrs/SKILL.md +75 -0
  633. package/skills/documentation-lookup/SKILL.md +90 -0
  634. package/skills/e2e-testing/SKILL.md +326 -0
  635. package/skills/energy-procurement/SKILL.md +228 -0
  636. package/skills/enterprise-agent-ops/SKILL.md +50 -0
  637. package/skills/eval-harness/SKILL.md +270 -0
  638. package/skills/exa-search/SKILL.md +103 -0
  639. package/skills/fal-ai-media/SKILL.md +284 -0
  640. package/skills/flutter-dart-code-review/SKILL.md +435 -0
  641. package/skills/foundation-models-on-device/SKILL.md +243 -0
  642. package/skills/frontend-patterns/SKILL.md +642 -0
  643. package/skills/frontend-slides/SKILL.md +184 -0
  644. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  645. package/skills/frontend-ui-engineering/SKILL.md +68 -0
  646. package/skills/git-workflow-and-versioning/SKILL.md +75 -0
  647. package/skills/golang-patterns/SKILL.md +674 -0
  648. package/skills/golang-testing/SKILL.md +720 -0
  649. package/skills/idea-refine/SKILL.md +84 -0
  650. package/skills/incremental-implementation/SKILL.md +86 -0
  651. package/skills/inventory-demand-planning/SKILL.md +247 -0
  652. package/skills/investor-materials/SKILL.md +96 -0
  653. package/skills/investor-outreach/SKILL.md +76 -0
  654. package/skills/iterative-retrieval/SKILL.md +211 -0
  655. package/skills/java-coding-standards/SKILL.md +147 -0
  656. package/skills/jpa-patterns/SKILL.md +151 -0
  657. package/skills/kotlin-coroutines-flows/SKILL.md +284 -0
  658. package/skills/kotlin-exposed-patterns/SKILL.md +719 -0
  659. package/skills/kotlin-ktor-patterns/SKILL.md +689 -0
  660. package/skills/kotlin-patterns/SKILL.md +711 -0
  661. package/skills/kotlin-testing/SKILL.md +824 -0
  662. package/skills/laravel-patterns/SKILL.md +415 -0
  663. package/skills/laravel-security/SKILL.md +285 -0
  664. package/skills/laravel-tdd/SKILL.md +283 -0
  665. package/skills/laravel-verification/SKILL.md +179 -0
  666. package/skills/liquid-glass-design/SKILL.md +279 -0
  667. package/skills/logistics-exception-management/SKILL.md +222 -0
  668. package/skills/market-research/SKILL.md +75 -0
  669. package/skills/mcp-server-patterns/SKILL.md +67 -0
  670. package/skills/nanoclaw-repl/SKILL.md +33 -0
  671. package/skills/nextjs-turbopack/SKILL.md +44 -0
  672. package/skills/nutrient-document-processing/SKILL.md +167 -0
  673. package/skills/nuxt4-patterns/SKILL.md +100 -0
  674. package/skills/performance-optimization/SKILL.md +77 -0
  675. package/skills/perl-patterns/SKILL.md +504 -0
  676. package/skills/perl-security/SKILL.md +503 -0
  677. package/skills/perl-testing/SKILL.md +475 -0
  678. package/skills/plankton-code-quality/SKILL.md +236 -0
  679. package/skills/postgres-patterns/SKILL.md +147 -0
  680. package/skills/product-lens/SKILL.md +79 -0
  681. package/skills/production-scheduling/SKILL.md +238 -0
  682. package/skills/project-guidelines-example/SKILL.md +349 -0
  683. package/skills/prompt-optimizer/SKILL.md +397 -0
  684. package/skills/python-patterns/SKILL.md +750 -0
  685. package/skills/python-testing/SKILL.md +816 -0
  686. package/skills/pytorch-patterns/SKILL.md +396 -0
  687. package/skills/quality-nonconformance/SKILL.md +260 -0
  688. package/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
  689. package/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
  690. package/skills/returns-reverse-logistics/SKILL.md +240 -0
  691. package/skills/rules-distill/SKILL.md +264 -0
  692. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  693. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  694. package/skills/rust-patterns/SKILL.md +499 -0
  695. package/skills/rust-testing/SKILL.md +500 -0
  696. package/skills/safety-guard/SKILL.md +69 -0
  697. package/skills/santa-method/SKILL.md +306 -0
  698. package/skills/search-first/SKILL.md +161 -0
  699. package/skills/security-and-hardening/SKILL.md +70 -0
  700. package/skills/security-review/SKILL.md +495 -0
  701. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  702. package/skills/security-scan/SKILL.md +165 -0
  703. package/skills/skill-comply/SKILL.md +58 -0
  704. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  705. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  706. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  707. package/skills/skill-comply/prompts/classifier.md +24 -0
  708. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  709. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  710. package/skills/skill-comply/pyproject.toml +15 -0
  711. package/skills/skill-comply/scripts/__init__.py +0 -0
  712. package/skills/skill-comply/scripts/classifier.py +85 -0
  713. package/skills/skill-comply/scripts/grader.py +122 -0
  714. package/skills/skill-comply/scripts/parser.py +107 -0
  715. package/skills/skill-comply/scripts/report.py +170 -0
  716. package/skills/skill-comply/scripts/run.py +127 -0
  717. package/skills/skill-comply/scripts/runner.py +161 -0
  718. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  719. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  720. package/skills/skill-comply/scripts/utils.py +13 -0
  721. package/skills/skill-comply/tests/test_grader.py +137 -0
  722. package/skills/skill-comply/tests/test_parser.py +90 -0
  723. package/skills/skill-quality-review/SKILL.md +102 -0
  724. package/skills/skill-quality-review/references/review-rubric.md +112 -0
  725. package/skills/skill-stocktake/SKILL.md +197 -0
  726. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  727. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  728. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  729. package/skills/springboot-patterns/SKILL.md +314 -0
  730. package/skills/springboot-security/SKILL.md +272 -0
  731. package/skills/springboot-tdd/SKILL.md +158 -0
  732. package/skills/springboot-verification/SKILL.md +231 -0
  733. package/skills/strategic-compact/SKILL.md +131 -0
  734. package/skills/strategic-compact/suggest-compact.sh +54 -0
  735. package/skills/swift-actor-persistence/SKILL.md +143 -0
  736. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  737. package/skills/swift-protocol-di-testing/SKILL.md +190 -0
  738. package/skills/swiftui-patterns/SKILL.md +259 -0
  739. package/skills/tdd-workflow/SKILL.md +145 -0
  740. package/skills/team-builder/SKILL.md +161 -0
  741. package/skills/using-aw-skills/SKILL.md +290 -0
  742. package/skills/using-aw-skills/evals/skill-trigger-cases.tsv +25 -0
  743. package/skills/using-aw-skills/evals/test-skill-triggers.sh +171 -0
  744. package/skills/using-aw-skills/hooks/hooks.json +9 -0
  745. package/skills/using-aw-skills/hooks/session-start.sh +188 -0
  746. package/skills/using-platform-skills/SKILL.md +163 -0
  747. package/skills/using-platform-skills/evals/platform-selection-cases.json +52 -0
  748. package/skills/verification-loop/SKILL.md +126 -0
  749. package/skills/video-editing/SKILL.md +310 -0
  750. package/skills/videodb/SKILL.md +374 -0
  751. package/skills/videodb/reference/api-reference.md +550 -0
  752. package/skills/videodb/reference/capture-reference.md +407 -0
  753. package/skills/videodb/reference/capture.md +101 -0
  754. package/skills/videodb/reference/editor.md +443 -0
  755. package/skills/videodb/reference/generative.md +331 -0
  756. package/skills/videodb/reference/rtstream-reference.md +564 -0
  757. package/skills/videodb/reference/rtstream.md +65 -0
  758. package/skills/videodb/reference/search.md +230 -0
  759. package/skills/videodb/reference/streaming.md +406 -0
  760. package/skills/videodb/reference/use-cases.md +118 -0
  761. package/skills/videodb/scripts/ws_listener.py +282 -0
  762. package/skills/visa-doc-translate/README.md +86 -0
  763. package/skills/visa-doc-translate/SKILL.md +117 -0
  764. package/skills/x-api/SKILL.md +208 -0
@@ -0,0 +1,455 @@
1
+ /**
2
+ * Everything Claude Code (ECC) Plugin Hooks for OpenCode
3
+ *
4
+ * This plugin translates Claude Code hooks to OpenCode's plugin system.
5
+ * OpenCode's plugin system is MORE sophisticated than Claude Code with 20+ events
6
+ * compared to Claude Code's 3 phases (PreToolUse, PostToolUse, Stop).
7
+ *
8
+ * Hook Event Mapping:
9
+ * - PreToolUse → tool.execute.before
10
+ * - PostToolUse → tool.execute.after
11
+ * - Stop → session.idle / session.status
12
+ * - SessionStart → session.created
13
+ * - SessionEnd → session.deleted
14
+ */
15
+
16
+ import type { PluginInput } from "@opencode-ai/plugin"
17
+
18
+ export const ECCHooksPlugin = async ({
19
+ client,
20
+ $,
21
+ directory,
22
+ worktree,
23
+ }: PluginInput) => {
24
+ type HookProfile = "minimal" | "standard" | "strict"
25
+
26
+ // Track files edited in current session for console.log audit
27
+ const editedFiles = new Set<string>()
28
+
29
+ // Helper to call the SDK's log API with correct signature
30
+ const log = (level: "debug" | "info" | "warn" | "error", message: string) =>
31
+ client.app.log({ body: { service: "ecc", level, message } })
32
+
33
+ const normalizeProfile = (value: string | undefined): HookProfile => {
34
+ if (value === "minimal" || value === "strict") return value
35
+ return "standard"
36
+ }
37
+
38
+ const currentProfile = normalizeProfile(process.env.ECC_HOOK_PROFILE)
39
+ const disabledHooks = new Set(
40
+ (process.env.ECC_DISABLED_HOOKS || "")
41
+ .split(",")
42
+ .map((item) => item.trim())
43
+ .filter(Boolean)
44
+ )
45
+
46
+ const profileOrder: Record<HookProfile, number> = {
47
+ minimal: 0,
48
+ standard: 1,
49
+ strict: 2,
50
+ }
51
+
52
+ const profileAllowed = (required: HookProfile | HookProfile[]): boolean => {
53
+ if (Array.isArray(required)) {
54
+ return required.some((entry) => profileOrder[currentProfile] >= profileOrder[entry])
55
+ }
56
+ return profileOrder[currentProfile] >= profileOrder[required]
57
+ }
58
+
59
+ const hookEnabled = (
60
+ hookId: string,
61
+ requiredProfile: HookProfile | HookProfile[] = "standard"
62
+ ): boolean => {
63
+ if (disabledHooks.has(hookId)) return false
64
+ return profileAllowed(requiredProfile)
65
+ }
66
+
67
+ return {
68
+ /**
69
+ * Prettier Auto-Format Hook
70
+ * Equivalent to Claude Code PostToolUse hook for prettier
71
+ *
72
+ * Triggers: After any JS/TS/JSX/TSX file is edited
73
+ * Action: Runs prettier --write on the file
74
+ */
75
+ "file.edited": async (event: { path: string }) => {
76
+ // Track edited files for console.log audit
77
+ editedFiles.add(event.path)
78
+
79
+ // Auto-format JS/TS files
80
+ if (hookEnabled("post:edit:format", ["strict"]) && event.path.match(/\.(ts|tsx|js|jsx)$/)) {
81
+ try {
82
+ await $`prettier --write ${event.path} 2>/dev/null`
83
+ log("info", `[ECC] Formatted: ${event.path}`)
84
+ } catch {
85
+ // Prettier not installed or failed - silently continue
86
+ }
87
+ }
88
+
89
+ // Console.log warning check
90
+ if (hookEnabled("post:edit:console-warn", ["standard", "strict"]) && event.path.match(/\.(ts|tsx|js|jsx)$/)) {
91
+ try {
92
+ const result = await $`grep -n "console\\.log" ${event.path} 2>/dev/null`.text()
93
+ if (result.trim()) {
94
+ const lines = result.trim().split("\n").length
95
+ log(
96
+ "warn",
97
+ `[ECC] console.log found in ${event.path} (${lines} occurrence${lines > 1 ? "s" : ""})`
98
+ )
99
+ }
100
+ } catch {
101
+ // No console.log found (grep returns non-zero) - this is good
102
+ }
103
+ }
104
+ },
105
+
106
+ /**
107
+ * TypeScript Check Hook
108
+ * Equivalent to Claude Code PostToolUse hook for tsc
109
+ *
110
+ * Triggers: After edit tool completes on .ts/.tsx files
111
+ * Action: Runs tsc --noEmit to check for type errors
112
+ */
113
+ "tool.execute.after": async (
114
+ input: { tool: string; args?: { filePath?: string } },
115
+ output: unknown
116
+ ) => {
117
+ // Check if a TypeScript file was edited
118
+ if (
119
+ hookEnabled("post:edit:typecheck", ["strict"]) &&
120
+ input.tool === "edit" &&
121
+ input.args?.filePath?.match(/\.tsx?$/)
122
+ ) {
123
+ try {
124
+ await $`npx tsc --noEmit 2>&1`
125
+ log("info", "[ECC] TypeScript check passed")
126
+ } catch (error: unknown) {
127
+ const err = error as { stdout?: string }
128
+ log("warn", "[ECC] TypeScript errors detected:")
129
+ if (err.stdout) {
130
+ // Log first few errors
131
+ const errors = err.stdout.split("\n").slice(0, 5)
132
+ errors.forEach((line: string) => log("warn", ` ${line}`))
133
+ }
134
+ }
135
+ }
136
+
137
+ // PR creation logging
138
+ if (
139
+ hookEnabled("post:bash:pr-created", ["standard", "strict"]) &&
140
+ input.tool === "bash" &&
141
+ input.args?.toString().includes("gh pr create")
142
+ ) {
143
+ log("info", "[ECC] PR created - check GitHub Actions status")
144
+ }
145
+ },
146
+
147
+ /**
148
+ * Pre-Tool Security Check
149
+ * Equivalent to Claude Code PreToolUse hook
150
+ *
151
+ * Triggers: Before tool execution
152
+ * Action: Warns about potential security issues
153
+ */
154
+ "tool.execute.before": async (
155
+ input: { tool: string; args?: Record<string, unknown> }
156
+ ) => {
157
+ // Git push review reminder
158
+ if (
159
+ hookEnabled("pre:bash:git-push-reminder", "strict") &&
160
+ input.tool === "bash" &&
161
+ input.args?.toString().includes("git push")
162
+ ) {
163
+ log(
164
+ "info",
165
+ "[ECC] Remember to review changes before pushing: git diff origin/main...HEAD"
166
+ )
167
+ }
168
+
169
+ // Block creation of unnecessary documentation files
170
+ if (
171
+ hookEnabled("pre:write:doc-file-warning", ["standard", "strict"]) &&
172
+ input.tool === "write" &&
173
+ input.args?.filePath &&
174
+ typeof input.args.filePath === "string"
175
+ ) {
176
+ const filePath = input.args.filePath
177
+ if (
178
+ filePath.match(/\.(md|txt)$/i) &&
179
+ !filePath.includes("README") &&
180
+ !filePath.includes("CHANGELOG") &&
181
+ !filePath.includes("LICENSE") &&
182
+ !filePath.includes("CONTRIBUTING")
183
+ ) {
184
+ log(
185
+ "warn",
186
+ `[ECC] Creating ${filePath} - consider if this documentation is necessary`
187
+ )
188
+ }
189
+ }
190
+
191
+ // Long-running command reminder
192
+ if (hookEnabled("pre:bash:tmux-reminder", "strict") && input.tool === "bash") {
193
+ const cmd = String(input.args?.command || input.args || "")
194
+ if (
195
+ cmd.match(/^(npm|pnpm|yarn|bun)\s+(install|build|test|run)/) ||
196
+ cmd.match(/^cargo\s+(build|test|run)/) ||
197
+ cmd.match(/^go\s+(build|test|run)/)
198
+ ) {
199
+ log(
200
+ "info",
201
+ "[ECC] Long-running command detected - consider using background execution"
202
+ )
203
+ }
204
+ }
205
+ },
206
+
207
+ /**
208
+ * Session Created Hook
209
+ * Equivalent to Claude Code SessionStart hook
210
+ *
211
+ * Triggers: When a new session starts
212
+ * Action: Loads context and displays welcome message
213
+ */
214
+ "session.created": async () => {
215
+ if (!hookEnabled("session:start", ["minimal", "standard", "strict"])) return
216
+
217
+ log("info", `[ECC] Session started - profile=${currentProfile}`)
218
+
219
+ // Check for project-specific context files
220
+ try {
221
+ const hasClaudeMd = await $`test -f ${worktree}/CLAUDE.md && echo "yes"`.text()
222
+ if (hasClaudeMd.trim() === "yes") {
223
+ log("info", "[ECC] Found CLAUDE.md - loading project context")
224
+ }
225
+ } catch {
226
+ // No CLAUDE.md found
227
+ }
228
+ },
229
+
230
+ /**
231
+ * Session Idle Hook
232
+ * Equivalent to Claude Code Stop hook
233
+ *
234
+ * Triggers: When session becomes idle (task completed)
235
+ * Action: Runs console.log audit on all edited files
236
+ */
237
+ "session.idle": async () => {
238
+ if (!hookEnabled("stop:check-console-log", ["minimal", "standard", "strict"])) return
239
+ if (editedFiles.size === 0) return
240
+
241
+ log("info", "[ECC] Session idle - running console.log audit")
242
+
243
+ let totalConsoleLogCount = 0
244
+ const filesWithConsoleLogs: string[] = []
245
+
246
+ for (const file of editedFiles) {
247
+ if (!file.match(/\.(ts|tsx|js|jsx)$/)) continue
248
+
249
+ try {
250
+ const result = await $`grep -c "console\\.log" ${file} 2>/dev/null`.text()
251
+ const count = parseInt(result.trim(), 10)
252
+ if (count > 0) {
253
+ totalConsoleLogCount += count
254
+ filesWithConsoleLogs.push(file)
255
+ }
256
+ } catch {
257
+ // No console.log found
258
+ }
259
+ }
260
+
261
+ if (totalConsoleLogCount > 0) {
262
+ log(
263
+ "warn",
264
+ `[ECC] Audit: ${totalConsoleLogCount} console.log statement(s) in ${filesWithConsoleLogs.length} file(s)`
265
+ )
266
+ filesWithConsoleLogs.forEach((f) =>
267
+ log("warn", ` - ${f}`)
268
+ )
269
+ log("warn", "[ECC] Remove console.log statements before committing")
270
+ } else {
271
+ log("info", "[ECC] Audit passed: No console.log statements found")
272
+ }
273
+
274
+ // Desktop notification (macOS)
275
+ try {
276
+ await $`osascript -e 'display notification "Task completed!" with title "OpenCode ECC"' 2>/dev/null`
277
+ } catch {
278
+ // Notification not supported or failed
279
+ }
280
+
281
+ // Clear tracked files for next task
282
+ editedFiles.clear()
283
+ },
284
+
285
+ /**
286
+ * Session Deleted Hook
287
+ * Equivalent to Claude Code SessionEnd hook
288
+ *
289
+ * Triggers: When session ends
290
+ * Action: Final cleanup and state saving
291
+ */
292
+ "session.deleted": async () => {
293
+ if (!hookEnabled("session:end-marker", ["minimal", "standard", "strict"])) return
294
+ log("info", "[ECC] Session ended - cleaning up")
295
+ editedFiles.clear()
296
+ },
297
+
298
+ /**
299
+ * File Watcher Hook
300
+ * OpenCode-only feature
301
+ *
302
+ * Triggers: When file system changes are detected
303
+ * Action: Updates tracking
304
+ */
305
+ "file.watcher.updated": async (event: { path: string; type: string }) => {
306
+ if (event.type === "change" && event.path.match(/\.(ts|tsx|js|jsx)$/)) {
307
+ editedFiles.add(event.path)
308
+ }
309
+ },
310
+
311
+ /**
312
+ * Todo Updated Hook
313
+ * OpenCode-only feature
314
+ *
315
+ * Triggers: When todo list is updated
316
+ * Action: Logs progress
317
+ */
318
+ "todo.updated": async (event: { todos: Array<{ text: string; done: boolean }> }) => {
319
+ const completed = event.todos.filter((t) => t.done).length
320
+ const total = event.todos.length
321
+ if (total > 0) {
322
+ log("info", `[ECC] Progress: ${completed}/${total} tasks completed`)
323
+ }
324
+ },
325
+
326
+ /**
327
+ * Shell Environment Hook
328
+ * OpenCode-specific: Inject environment variables into shell commands
329
+ *
330
+ * Triggers: Before shell command execution
331
+ * Action: Sets PROJECT_ROOT, PACKAGE_MANAGER, DETECTED_LANGUAGES, ECC_VERSION
332
+ */
333
+ "shell.env": async () => {
334
+ const env: Record<string, string> = {
335
+ ECC_VERSION: "1.8.0",
336
+ ECC_PLUGIN: "true",
337
+ ECC_HOOK_PROFILE: currentProfile,
338
+ ECC_DISABLED_HOOKS: process.env.ECC_DISABLED_HOOKS || "",
339
+ PROJECT_ROOT: worktree || directory,
340
+ }
341
+
342
+ // Detect package manager
343
+ const lockfiles: Record<string, string> = {
344
+ "bun.lockb": "bun",
345
+ "pnpm-lock.yaml": "pnpm",
346
+ "yarn.lock": "yarn",
347
+ "package-lock.json": "npm",
348
+ }
349
+ for (const [lockfile, pm] of Object.entries(lockfiles)) {
350
+ try {
351
+ await $`test -f ${worktree}/${lockfile}`
352
+ env.PACKAGE_MANAGER = pm
353
+ break
354
+ } catch {
355
+ // Not found, try next
356
+ }
357
+ }
358
+
359
+ // Detect languages
360
+ const langDetectors: Record<string, string> = {
361
+ "tsconfig.json": "typescript",
362
+ "go.mod": "go",
363
+ "pyproject.toml": "python",
364
+ "Cargo.toml": "rust",
365
+ "Package.swift": "swift",
366
+ }
367
+ const detected: string[] = []
368
+ for (const [file, lang] of Object.entries(langDetectors)) {
369
+ try {
370
+ await $`test -f ${worktree}/${file}`
371
+ detected.push(lang)
372
+ } catch {
373
+ // Not found
374
+ }
375
+ }
376
+ if (detected.length > 0) {
377
+ env.DETECTED_LANGUAGES = detected.join(",")
378
+ env.PRIMARY_LANGUAGE = detected[0]
379
+ }
380
+
381
+ return env
382
+ },
383
+
384
+ /**
385
+ * Session Compacting Hook
386
+ * OpenCode-specific: Control context compaction behavior
387
+ *
388
+ * Triggers: Before context compaction
389
+ * Action: Push ECC context block and custom compaction prompt
390
+ */
391
+ "experimental.session.compacting": async () => {
392
+ const contextBlock = [
393
+ "# ECC Context (preserve across compaction)",
394
+ "",
395
+ "## Active Plugin: Everything Claude Code v1.8.0",
396
+ "- Hooks: file.edited, tool.execute.before/after, session.created/idle/deleted, shell.env, compacting, permission.ask",
397
+ "- Tools: run-tests, check-coverage, security-audit, format-code, lint-check, git-summary",
398
+ "- Agents: 13 specialized (planner, architect, tdd-guide, code-reviewer, security-reviewer, build-error-resolver, e2e-runner, refactor-cleaner, doc-updater, go-reviewer, go-build-resolver, database-reviewer, python-reviewer)",
399
+ "",
400
+ "## Key Principles",
401
+ "- TDD: write tests first, 80%+ coverage",
402
+ "- Immutability: never mutate, always return new copies",
403
+ "- Security: validate inputs, no hardcoded secrets",
404
+ "",
405
+ ]
406
+
407
+ // Include recently edited files
408
+ if (editedFiles.size > 0) {
409
+ contextBlock.push("## Recently Edited Files")
410
+ for (const f of editedFiles) {
411
+ contextBlock.push(`- ${f}`)
412
+ }
413
+ contextBlock.push("")
414
+ }
415
+
416
+ return {
417
+ context: contextBlock.join("\n"),
418
+ compaction_prompt: "Focus on preserving: 1) Current task status and progress, 2) Key decisions made, 3) Files created/modified, 4) Remaining work items, 5) Any security concerns flagged. Discard: verbose tool outputs, intermediate exploration, redundant file listings.",
419
+ }
420
+ },
421
+
422
+ /**
423
+ * Permission Auto-Approve Hook
424
+ * OpenCode-specific: Auto-approve safe operations
425
+ *
426
+ * Triggers: When permission is requested
427
+ * Action: Auto-approve reads, formatters, and test commands; log all for audit
428
+ */
429
+ "permission.ask": async (event: { tool: string; args: unknown }) => {
430
+ log("info", `[ECC] Permission requested for: ${event.tool}`)
431
+
432
+ const cmd = String((event.args as Record<string, unknown>)?.command || event.args || "")
433
+
434
+ // Auto-approve: read/search tools
435
+ if (["read", "glob", "grep", "search", "list"].includes(event.tool)) {
436
+ return { approved: true, reason: "Read-only operation" }
437
+ }
438
+
439
+ // Auto-approve: formatters
440
+ if (event.tool === "bash" && /^(npx )?(prettier|biome|black|gofmt|rustfmt|swift-format)/.test(cmd)) {
441
+ return { approved: true, reason: "Formatter execution" }
442
+ }
443
+
444
+ // Auto-approve: test execution
445
+ if (event.tool === "bash" && /^(npm test|npx vitest|npx jest|pytest|go test|cargo test)/.test(cmd)) {
446
+ return { approved: true, reason: "Test execution" }
447
+ }
448
+
449
+ // Everything else: let user decide
450
+ return { approved: undefined }
451
+ },
452
+ }
453
+ }
454
+
455
+ export default ECCHooksPlugin
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Everything Claude Code (ECC) Plugins for OpenCode
3
+ *
4
+ * This module exports all ECC plugins for OpenCode integration.
5
+ * Plugins provide hook-based automation that mirrors Claude Code's hook system
6
+ * while taking advantage of OpenCode's more sophisticated 20+ event types.
7
+ */
8
+
9
+ export { ECCHooksPlugin, default } from "./ecc-hooks.js"
10
+
11
+ // Re-export for named imports
12
+ export * from "./ecc-hooks.js"
@@ -0,0 +1,175 @@
1
+ You are a senior software architect specializing in scalable, maintainable system design.
2
+
3
+ ## Your Role
4
+
5
+ - Design system architecture for new features
6
+ - Evaluate technical trade-offs
7
+ - Recommend patterns and best practices
8
+ - Identify scalability bottlenecks
9
+ - Plan for future growth
10
+ - Ensure consistency across codebase
11
+
12
+ ## Architecture Review Process
13
+
14
+ ### 1. Current State Analysis
15
+ - Review existing architecture
16
+ - Identify patterns and conventions
17
+ - Document technical debt
18
+ - Assess scalability limitations
19
+
20
+ ### 2. Requirements Gathering
21
+ - Functional requirements
22
+ - Non-functional requirements (performance, security, scalability)
23
+ - Integration points
24
+ - Data flow requirements
25
+
26
+ ### 3. Design Proposal
27
+ - High-level architecture diagram
28
+ - Component responsibilities
29
+ - Data models
30
+ - API contracts
31
+ - Integration patterns
32
+
33
+ ### 4. Trade-Off Analysis
34
+ For each design decision, document:
35
+ - **Pros**: Benefits and advantages
36
+ - **Cons**: Drawbacks and limitations
37
+ - **Alternatives**: Other options considered
38
+ - **Decision**: Final choice and rationale
39
+
40
+ ## Architectural Principles
41
+
42
+ ### 1. Modularity & Separation of Concerns
43
+ - Single Responsibility Principle
44
+ - High cohesion, low coupling
45
+ - Clear interfaces between components
46
+ - Independent deployability
47
+
48
+ ### 2. Scalability
49
+ - Horizontal scaling capability
50
+ - Stateless design where possible
51
+ - Efficient database queries
52
+ - Caching strategies
53
+ - Load balancing considerations
54
+
55
+ ### 3. Maintainability
56
+ - Clear code organization
57
+ - Consistent patterns
58
+ - Comprehensive documentation
59
+ - Easy to test
60
+ - Simple to understand
61
+
62
+ ### 4. Security
63
+ - Defense in depth
64
+ - Principle of least privilege
65
+ - Input validation at boundaries
66
+ - Secure by default
67
+ - Audit trail
68
+
69
+ ### 5. Performance
70
+ - Efficient algorithms
71
+ - Minimal network requests
72
+ - Optimized database queries
73
+ - Appropriate caching
74
+ - Lazy loading
75
+
76
+ ## Common Patterns
77
+
78
+ ### Frontend Patterns
79
+ - **Component Composition**: Build complex UI from simple components
80
+ - **Container/Presenter**: Separate data logic from presentation
81
+ - **Custom Hooks**: Reusable stateful logic
82
+ - **Context for Global State**: Avoid prop drilling
83
+ - **Code Splitting**: Lazy load routes and heavy components
84
+
85
+ ### Backend Patterns
86
+ - **Repository Pattern**: Abstract data access
87
+ - **Service Layer**: Business logic separation
88
+ - **Middleware Pattern**: Request/response processing
89
+ - **Event-Driven Architecture**: Async operations
90
+ - **CQRS**: Separate read and write operations
91
+
92
+ ### Data Patterns
93
+ - **Normalized Database**: Reduce redundancy
94
+ - **Denormalized for Read Performance**: Optimize queries
95
+ - **Event Sourcing**: Audit trail and replayability
96
+ - **Caching Layers**: Redis, CDN
97
+ - **Eventual Consistency**: For distributed systems
98
+
99
+ ## Architecture Decision Records (ADRs)
100
+
101
+ For significant architectural decisions, create ADRs:
102
+
103
+ ```markdown
104
+ # ADR-001: [Decision Title]
105
+
106
+ ## Context
107
+ [What situation requires a decision]
108
+
109
+ ## Decision
110
+ [The decision made]
111
+
112
+ ## Consequences
113
+
114
+ ### Positive
115
+ - [Benefit 1]
116
+ - [Benefit 2]
117
+
118
+ ### Negative
119
+ - [Drawback 1]
120
+ - [Drawback 2]
121
+
122
+ ### Alternatives Considered
123
+ - **[Alternative 1]**: [Description and why rejected]
124
+ - **[Alternative 2]**: [Description and why rejected]
125
+
126
+ ## Status
127
+ Accepted/Proposed/Deprecated
128
+
129
+ ## Date
130
+ YYYY-MM-DD
131
+ ```
132
+
133
+ ## System Design Checklist
134
+
135
+ When designing a new system or feature:
136
+
137
+ ### Functional Requirements
138
+ - [ ] User stories documented
139
+ - [ ] API contracts defined
140
+ - [ ] Data models specified
141
+ - [ ] UI/UX flows mapped
142
+
143
+ ### Non-Functional Requirements
144
+ - [ ] Performance targets defined (latency, throughput)
145
+ - [ ] Scalability requirements specified
146
+ - [ ] Security requirements identified
147
+ - [ ] Availability targets set (uptime %)
148
+
149
+ ### Technical Design
150
+ - [ ] Architecture diagram created
151
+ - [ ] Component responsibilities defined
152
+ - [ ] Data flow documented
153
+ - [ ] Integration points identified
154
+ - [ ] Error handling strategy defined
155
+ - [ ] Testing strategy planned
156
+
157
+ ### Operations
158
+ - [ ] Deployment strategy defined
159
+ - [ ] Monitoring and alerting planned
160
+ - [ ] Backup and recovery strategy
161
+ - [ ] Rollback plan documented
162
+
163
+ ## Red Flags
164
+
165
+ Watch for these architectural anti-patterns:
166
+ - **Big Ball of Mud**: No clear structure
167
+ - **Golden Hammer**: Using same solution for everything
168
+ - **Premature Optimization**: Optimizing too early
169
+ - **Not Invented Here**: Rejecting existing solutions
170
+ - **Analysis Paralysis**: Over-planning, under-building
171
+ - **Magic**: Unclear, undocumented behavior
172
+ - **Tight Coupling**: Components too dependent
173
+ - **God Object**: One class/component does everything
174
+
175
+ **Remember**: Good architecture enables rapid development, easy maintenance, and confident scaling. The best architecture is simple, clear, and follows established patterns.