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,17 @@
1
+ ---
2
+ paths:
3
+ - "**/*.kt"
4
+ - "**/*.kts"
5
+ - "**/build.gradle.kts"
6
+ ---
7
+ # Kotlin Hooks
8
+
9
+ > This file extends [common/hooks.md](../common/hooks.md) with Kotlin-specific content.
10
+
11
+ ## PostToolUse Hooks
12
+
13
+ Configure in `~/.claude/settings.json`:
14
+
15
+ - **ktfmt/ktlint**: Auto-format `.kt` and `.kts` files after edit
16
+ - **detekt**: Run static analysis after editing Kotlin files
17
+ - **./gradlew build**: Verify compilation after changes
@@ -0,0 +1,146 @@
1
+ ---
2
+ paths:
3
+ - "**/*.kt"
4
+ - "**/*.kts"
5
+ ---
6
+ # Kotlin Patterns
7
+
8
+ > This file extends [common/patterns.md](../common/patterns.md) with Kotlin and Android/KMP-specific content.
9
+
10
+ ## Dependency Injection
11
+
12
+ Prefer constructor injection. Use Koin (KMP) or Hilt (Android-only):
13
+
14
+ ```kotlin
15
+ // Koin — declare modules
16
+ val dataModule = module {
17
+ single<ItemRepository> { ItemRepositoryImpl(get(), get()) }
18
+ factory { GetItemsUseCase(get()) }
19
+ viewModelOf(::ItemListViewModel)
20
+ }
21
+
22
+ // Hilt — annotations
23
+ @HiltViewModel
24
+ class ItemListViewModel @Inject constructor(
25
+ private val getItems: GetItemsUseCase
26
+ ) : ViewModel()
27
+ ```
28
+
29
+ ## ViewModel Pattern
30
+
31
+ Single state object, event sink, one-way data flow:
32
+
33
+ ```kotlin
34
+ data class ScreenState(
35
+ val items: List<Item> = emptyList(),
36
+ val isLoading: Boolean = false
37
+ )
38
+
39
+ class ScreenViewModel(private val useCase: GetItemsUseCase) : ViewModel() {
40
+ private val _state = MutableStateFlow(ScreenState())
41
+ val state = _state.asStateFlow()
42
+
43
+ fun onEvent(event: ScreenEvent) {
44
+ when (event) {
45
+ is ScreenEvent.Load -> load()
46
+ is ScreenEvent.Delete -> delete(event.id)
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ ## Repository Pattern
53
+
54
+ - `suspend` functions return `Result<T>` or custom error type
55
+ - `Flow` for reactive streams
56
+ - Coordinate local + remote data sources
57
+
58
+ ```kotlin
59
+ interface ItemRepository {
60
+ suspend fun getById(id: String): Result<Item>
61
+ suspend fun getAll(): Result<List<Item>>
62
+ fun observeAll(): Flow<List<Item>>
63
+ }
64
+ ```
65
+
66
+ ## UseCase Pattern
67
+
68
+ Single responsibility, `operator fun invoke`:
69
+
70
+ ```kotlin
71
+ class GetItemUseCase(private val repository: ItemRepository) {
72
+ suspend operator fun invoke(id: String): Result<Item> {
73
+ return repository.getById(id)
74
+ }
75
+ }
76
+
77
+ class GetItemsUseCase(private val repository: ItemRepository) {
78
+ suspend operator fun invoke(): Result<List<Item>> {
79
+ return repository.getAll()
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## expect/actual (KMP)
85
+
86
+ Use for platform-specific implementations:
87
+
88
+ ```kotlin
89
+ // commonMain
90
+ expect fun platformName(): String
91
+ expect class SecureStorage {
92
+ fun save(key: String, value: String)
93
+ fun get(key: String): String?
94
+ }
95
+
96
+ // androidMain
97
+ actual fun platformName(): String = "Android"
98
+ actual class SecureStorage {
99
+ actual fun save(key: String, value: String) { /* EncryptedSharedPreferences */ }
100
+ actual fun get(key: String): String? = null /* ... */
101
+ }
102
+
103
+ // iosMain
104
+ actual fun platformName(): String = "iOS"
105
+ actual class SecureStorage {
106
+ actual fun save(key: String, value: String) { /* Keychain */ }
107
+ actual fun get(key: String): String? = null /* ... */
108
+ }
109
+ ```
110
+
111
+ ## Coroutine Patterns
112
+
113
+ - Use `viewModelScope` in ViewModels, `coroutineScope` for structured child work
114
+ - Use `stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), initialValue)` for StateFlow from cold Flows
115
+ - Use `supervisorScope` when child failures should be independent
116
+
117
+ ## Builder Pattern with DSL
118
+
119
+ ```kotlin
120
+ class HttpClientConfig {
121
+ var baseUrl: String = ""
122
+ var timeout: Long = 30_000
123
+ private val interceptors = mutableListOf<Interceptor>()
124
+
125
+ fun interceptor(block: () -> Interceptor) {
126
+ interceptors.add(block())
127
+ }
128
+ }
129
+
130
+ fun httpClient(block: HttpClientConfig.() -> Unit): HttpClient {
131
+ val config = HttpClientConfig().apply(block)
132
+ return HttpClient(config)
133
+ }
134
+
135
+ // Usage
136
+ val client = httpClient {
137
+ baseUrl = "https://api.example.com"
138
+ timeout = 15_000
139
+ interceptor { AuthInterceptor(tokenProvider) }
140
+ }
141
+ ```
142
+
143
+ ## References
144
+
145
+ See skill: `kotlin-coroutines-flows` for detailed coroutine patterns.
146
+ See skill: `android-clean-architecture` for module and layer patterns.
@@ -0,0 +1,82 @@
1
+ ---
2
+ paths:
3
+ - "**/*.kt"
4
+ - "**/*.kts"
5
+ ---
6
+ # Kotlin Security
7
+
8
+ > This file extends [common/security.md](../common/security.md) with Kotlin and Android/KMP-specific content.
9
+
10
+ ## Secrets Management
11
+
12
+ - Never hardcode API keys, tokens, or credentials in source code
13
+ - Use `local.properties` (git-ignored) for local development secrets
14
+ - Use `BuildConfig` fields generated from CI secrets for release builds
15
+ - Use `EncryptedSharedPreferences` (Android) or Keychain (iOS) for runtime secret storage
16
+
17
+ ```kotlin
18
+ // BAD
19
+ val apiKey = "sk-abc123..."
20
+
21
+ // GOOD — from BuildConfig (generated at build time)
22
+ val apiKey = BuildConfig.API_KEY
23
+
24
+ // GOOD — from secure storage at runtime
25
+ val token = secureStorage.get("auth_token")
26
+ ```
27
+
28
+ ## Network Security
29
+
30
+ - Use HTTPS exclusively — configure `network_security_config.xml` to block cleartext
31
+ - Pin certificates for sensitive endpoints using OkHttp `CertificatePinner` or Ktor equivalent
32
+ - Set timeouts on all HTTP clients — never leave defaults (which may be infinite)
33
+ - Validate and sanitize all server responses before use
34
+
35
+ ```xml
36
+ <!-- res/xml/network_security_config.xml -->
37
+ <network-security-config>
38
+ <base-config cleartextTrafficPermitted="false" />
39
+ </network-security-config>
40
+ ```
41
+
42
+ ## Input Validation
43
+
44
+ - Validate all user input before processing or sending to API
45
+ - Use parameterized queries for Room/SQLDelight — never concatenate user input into SQL
46
+ - Sanitize file paths from user input to prevent path traversal
47
+
48
+ ```kotlin
49
+ // BAD — SQL injection
50
+ @Query("SELECT * FROM items WHERE name = '$input'")
51
+
52
+ // GOOD — parameterized
53
+ @Query("SELECT * FROM items WHERE name = :input")
54
+ fun findByName(input: String): List<ItemEntity>
55
+ ```
56
+
57
+ ## Data Protection
58
+
59
+ - Use `EncryptedSharedPreferences` for sensitive key-value data on Android
60
+ - Use `@Serializable` with explicit field names — don't leak internal property names
61
+ - Clear sensitive data from memory when no longer needed
62
+ - Use `@Keep` or ProGuard rules for serialized classes to prevent name mangling
63
+
64
+ ## Authentication
65
+
66
+ - Store tokens in secure storage, not in plain SharedPreferences
67
+ - Implement token refresh with proper 401/403 handling
68
+ - Clear all auth state on logout (tokens, cached user data, cookies)
69
+ - Use biometric authentication (`BiometricPrompt`) for sensitive operations
70
+
71
+ ## ProGuard / R8
72
+
73
+ - Keep rules for all serialized models (`@Serializable`, Gson, Moshi)
74
+ - Keep rules for reflection-based libraries (Koin, Retrofit)
75
+ - Test release builds — obfuscation can break serialization silently
76
+
77
+ ## WebView Security
78
+
79
+ - Disable JavaScript unless explicitly needed: `settings.javaScriptEnabled = false`
80
+ - Validate URLs before loading in WebView
81
+ - Never expose `@JavascriptInterface` methods that access sensitive data
82
+ - Use `WebViewClient.shouldOverrideUrlLoading()` to control navigation
@@ -0,0 +1,128 @@
1
+ ---
2
+ paths:
3
+ - "**/*.kt"
4
+ - "**/*.kts"
5
+ ---
6
+ # Kotlin Testing
7
+
8
+ > This file extends [common/testing.md](../common/testing.md) with Kotlin and Android/KMP-specific content.
9
+
10
+ ## Test Framework
11
+
12
+ - **kotlin.test** for multiplatform (KMP) — `@Test`, `assertEquals`, `assertTrue`
13
+ - **JUnit 4/5** for Android-specific tests
14
+ - **Turbine** for testing Flows and StateFlow
15
+ - **kotlinx-coroutines-test** for coroutine testing (`runTest`, `TestDispatcher`)
16
+
17
+ ## ViewModel Testing with Turbine
18
+
19
+ ```kotlin
20
+ @Test
21
+ fun `loading state emitted then data`() = runTest {
22
+ val repo = FakeItemRepository()
23
+ repo.addItem(testItem)
24
+ val viewModel = ItemListViewModel(GetItemsUseCase(repo))
25
+
26
+ viewModel.state.test {
27
+ assertEquals(ItemListState(), awaitItem()) // initial state
28
+ viewModel.onEvent(ItemListEvent.Load)
29
+ assertTrue(awaitItem().isLoading) // loading
30
+ assertEquals(listOf(testItem), awaitItem().items) // loaded
31
+ }
32
+ }
33
+ ```
34
+
35
+ ## Fakes Over Mocks
36
+
37
+ Prefer hand-written fakes over mocking frameworks:
38
+
39
+ ```kotlin
40
+ class FakeItemRepository : ItemRepository {
41
+ private val items = mutableListOf<Item>()
42
+ var fetchError: Throwable? = null
43
+
44
+ override suspend fun getAll(): Result<List<Item>> {
45
+ fetchError?.let { return Result.failure(it) }
46
+ return Result.success(items.toList())
47
+ }
48
+
49
+ override fun observeAll(): Flow<List<Item>> = flowOf(items.toList())
50
+
51
+ fun addItem(item: Item) { items.add(item) }
52
+ }
53
+ ```
54
+
55
+ ## Coroutine Testing
56
+
57
+ ```kotlin
58
+ @Test
59
+ fun `parallel operations complete`() = runTest {
60
+ val repo = FakeRepository()
61
+ val result = loadDashboard(repo)
62
+ advanceUntilIdle()
63
+ assertNotNull(result.items)
64
+ assertNotNull(result.stats)
65
+ }
66
+ ```
67
+
68
+ Use `runTest` — it auto-advances virtual time and provides `TestScope`.
69
+
70
+ ## Ktor MockEngine
71
+
72
+ ```kotlin
73
+ val mockEngine = MockEngine { request ->
74
+ when (request.url.encodedPath) {
75
+ "/api/items" -> respond(
76
+ content = Json.encodeToString(testItems),
77
+ headers = headersOf(HttpHeaders.ContentType, ContentType.Application.Json.toString())
78
+ )
79
+ else -> respondError(HttpStatusCode.NotFound)
80
+ }
81
+ }
82
+
83
+ val client = HttpClient(mockEngine) {
84
+ install(ContentNegotiation) { json() }
85
+ }
86
+ ```
87
+
88
+ ## Room/SQLDelight Testing
89
+
90
+ - Room: Use `Room.inMemoryDatabaseBuilder()` for in-memory testing
91
+ - SQLDelight: Use `JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)` for JVM tests
92
+
93
+ ```kotlin
94
+ @Test
95
+ fun `insert and query items`() = runTest {
96
+ val driver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
97
+ Database.Schema.create(driver)
98
+ val db = Database(driver)
99
+
100
+ db.itemQueries.insert("1", "Sample Item", "description")
101
+ val items = db.itemQueries.getAll().executeAsList()
102
+ assertEquals(1, items.size)
103
+ }
104
+ ```
105
+
106
+ ## Test Naming
107
+
108
+ Use backtick-quoted descriptive names:
109
+
110
+ ```kotlin
111
+ @Test
112
+ fun `search with empty query returns all items`() = runTest { }
113
+
114
+ @Test
115
+ fun `delete item emits updated list without deleted item`() = runTest { }
116
+ ```
117
+
118
+ ## Test Organization
119
+
120
+ ```
121
+ src/
122
+ ├── commonTest/kotlin/ # Shared tests (ViewModel, UseCase, Repository)
123
+ ├── androidUnitTest/kotlin/ # Android unit tests (JUnit)
124
+ ├── androidInstrumentedTest/kotlin/ # Instrumented tests (Room, UI)
125
+ └── iosTest/kotlin/ # iOS-specific tests
126
+ ```
127
+
128
+ Minimum test coverage: ViewModel + UseCase for every feature.
@@ -0,0 +1,46 @@
1
+ ---
2
+ paths:
3
+ - "**/*.pl"
4
+ - "**/*.pm"
5
+ - "**/*.t"
6
+ - "**/*.psgi"
7
+ - "**/*.cgi"
8
+ ---
9
+ # Perl Coding Style
10
+
11
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Perl-specific content.
12
+
13
+ ## Standards
14
+
15
+ - Always `use v5.36` (enables `strict`, `warnings`, `say`, subroutine signatures)
16
+ - Use subroutine signatures — never unpack `@_` manually
17
+ - Prefer `say` over `print` with explicit newlines
18
+
19
+ ## Immutability
20
+
21
+ - Use **Moo** with `is => 'ro'` and `Types::Standard` for all attributes
22
+ - Never use blessed hashrefs directly — always use Moo/Moose accessors
23
+ - **OO override note**: Moo `has` attributes with `builder` or `default` are acceptable for computed read-only values
24
+
25
+ ## Formatting
26
+
27
+ Use **perltidy** with these settings:
28
+
29
+ ```
30
+ -i=4 # 4-space indent
31
+ -l=100 # 100 char line length
32
+ -ce # cuddled else
33
+ -bar # opening brace always right
34
+ ```
35
+
36
+ ## Linting
37
+
38
+ Use **perlcritic** at severity 3 with themes: `core`, `pbp`, `security`.
39
+
40
+ ```bash
41
+ perlcritic --severity 3 --theme 'core || pbp || security' lib/
42
+ ```
43
+
44
+ ## Reference
45
+
46
+ See skill: `perl-patterns` for comprehensive modern Perl idioms and best practices.
@@ -0,0 +1,22 @@
1
+ ---
2
+ paths:
3
+ - "**/*.pl"
4
+ - "**/*.pm"
5
+ - "**/*.t"
6
+ - "**/*.psgi"
7
+ - "**/*.cgi"
8
+ ---
9
+ # Perl Hooks
10
+
11
+ > This file extends [common/hooks.md](../common/hooks.md) with Perl-specific content.
12
+
13
+ ## PostToolUse Hooks
14
+
15
+ Configure in `~/.claude/settings.json`:
16
+
17
+ - **perltidy**: Auto-format `.pl` and `.pm` files after edit
18
+ - **perlcritic**: Run lint check after editing `.pm` files
19
+
20
+ ## Warnings
21
+
22
+ - Warn about `print` in non-script `.pm` files — use `say` or a logging module (e.g., `Log::Any`)
@@ -0,0 +1,76 @@
1
+ ---
2
+ paths:
3
+ - "**/*.pl"
4
+ - "**/*.pm"
5
+ - "**/*.t"
6
+ - "**/*.psgi"
7
+ - "**/*.cgi"
8
+ ---
9
+ # Perl Patterns
10
+
11
+ > This file extends [common/patterns.md](../common/patterns.md) with Perl-specific content.
12
+
13
+ ## Repository Pattern
14
+
15
+ Use **DBI** or **DBIx::Class** behind an interface:
16
+
17
+ ```perl
18
+ package MyApp::Repo::User;
19
+ use Moo;
20
+
21
+ has dbh => (is => 'ro', required => 1);
22
+
23
+ sub find_by_id ($self, $id) {
24
+ my $sth = $self->dbh->prepare('SELECT * FROM users WHERE id = ?');
25
+ $sth->execute($id);
26
+ return $sth->fetchrow_hashref;
27
+ }
28
+ ```
29
+
30
+ ## DTOs / Value Objects
31
+
32
+ Use **Moo** classes with **Types::Standard** (equivalent to Python dataclasses):
33
+
34
+ ```perl
35
+ package MyApp::DTO::User;
36
+ use Moo;
37
+ use Types::Standard qw(Str Int);
38
+
39
+ has name => (is => 'ro', isa => Str, required => 1);
40
+ has email => (is => 'ro', isa => Str, required => 1);
41
+ has age => (is => 'ro', isa => Int);
42
+ ```
43
+
44
+ ## Resource Management
45
+
46
+ - Always use **three-arg open** with `autodie`
47
+ - Use **Path::Tiny** for file operations
48
+
49
+ ```perl
50
+ use autodie;
51
+ use Path::Tiny;
52
+
53
+ my $content = path('config.json')->slurp_utf8;
54
+ ```
55
+
56
+ ## Module Interface
57
+
58
+ Use `Exporter 'import'` with `@EXPORT_OK` — never `@EXPORT`:
59
+
60
+ ```perl
61
+ use Exporter 'import';
62
+ our @EXPORT_OK = qw(parse_config validate_input);
63
+ ```
64
+
65
+ ## Dependency Management
66
+
67
+ Use **cpanfile** + **carton** for reproducible installs:
68
+
69
+ ```bash
70
+ carton install
71
+ carton exec prove -lr t/
72
+ ```
73
+
74
+ ## Reference
75
+
76
+ See skill: `perl-patterns` for comprehensive modern Perl patterns and idioms.
@@ -0,0 +1,69 @@
1
+ ---
2
+ paths:
3
+ - "**/*.pl"
4
+ - "**/*.pm"
5
+ - "**/*.t"
6
+ - "**/*.psgi"
7
+ - "**/*.cgi"
8
+ ---
9
+ # Perl Security
10
+
11
+ > This file extends [common/security.md](../common/security.md) with Perl-specific content.
12
+
13
+ ## Taint Mode
14
+
15
+ - Use `-T` flag on all CGI/web-facing scripts
16
+ - Sanitize `%ENV` (`$ENV{PATH}`, `$ENV{CDPATH}`, etc.) before any external command
17
+
18
+ ## Input Validation
19
+
20
+ - Use allowlist regex for untainting — never `/(.*)/s`
21
+ - Validate all user input with explicit patterns:
22
+
23
+ ```perl
24
+ if ($input =~ /\A([a-zA-Z0-9_-]+)\z/) {
25
+ my $clean = $1;
26
+ }
27
+ ```
28
+
29
+ ## File I/O
30
+
31
+ - **Three-arg open only** — never two-arg open
32
+ - Prevent path traversal with `Cwd::realpath`:
33
+
34
+ ```perl
35
+ use Cwd 'realpath';
36
+ my $safe_path = realpath($user_path);
37
+ die "Path traversal" unless $safe_path =~ m{\A/allowed/directory/};
38
+ ```
39
+
40
+ ## Process Execution
41
+
42
+ - Use **list-form `system()`** — never single-string form
43
+ - Use **IPC::Run3** for capturing output
44
+ - Never use backticks with variable interpolation
45
+
46
+ ```perl
47
+ system('grep', '-r', $pattern, $directory); # safe
48
+ ```
49
+
50
+ ## SQL Injection Prevention
51
+
52
+ Always use DBI placeholders — never interpolate into SQL:
53
+
54
+ ```perl
55
+ my $sth = $dbh->prepare('SELECT * FROM users WHERE email = ?');
56
+ $sth->execute($email);
57
+ ```
58
+
59
+ ## Security Scanning
60
+
61
+ Run **perlcritic** with the security theme at severity 4+:
62
+
63
+ ```bash
64
+ perlcritic --severity 4 --theme security lib/
65
+ ```
66
+
67
+ ## Reference
68
+
69
+ See skill: `perl-security` for comprehensive Perl security patterns, taint mode, and safe I/O.
@@ -0,0 +1,54 @@
1
+ ---
2
+ paths:
3
+ - "**/*.pl"
4
+ - "**/*.pm"
5
+ - "**/*.t"
6
+ - "**/*.psgi"
7
+ - "**/*.cgi"
8
+ ---
9
+ # Perl Testing
10
+
11
+ > This file extends [common/testing.md](../common/testing.md) with Perl-specific content.
12
+
13
+ ## Framework
14
+
15
+ Use **Test2::V0** for new projects (not Test::More):
16
+
17
+ ```perl
18
+ use Test2::V0;
19
+
20
+ is($result, 42, 'answer is correct');
21
+
22
+ done_testing;
23
+ ```
24
+
25
+ ## Runner
26
+
27
+ ```bash
28
+ prove -l t/ # adds lib/ to @INC
29
+ prove -lr -j8 t/ # recursive, 8 parallel jobs
30
+ ```
31
+
32
+ Always use `-l` to ensure `lib/` is on `@INC`.
33
+
34
+ ## Coverage
35
+
36
+ Use **Devel::Cover** — target 80%+:
37
+
38
+ ```bash
39
+ cover -test
40
+ ```
41
+
42
+ ## Mocking
43
+
44
+ - **Test::MockModule** — mock methods on existing modules
45
+ - **Test::MockObject** — create test doubles from scratch
46
+
47
+ ## Pitfalls
48
+
49
+ - Always end test files with `done_testing`
50
+ - Never forget the `-l` flag with `prove`
51
+
52
+ ## Reference
53
+
54
+ See skill: `perl-testing` for detailed Perl TDD patterns with Test2::V0, prove, and Devel::Cover.
@@ -0,0 +1,40 @@
1
+ ---
2
+ paths:
3
+ - "**/*.php"
4
+ - "**/composer.json"
5
+ ---
6
+ # PHP Coding Style
7
+
8
+ > This file extends [common/coding-style.md](../common/coding-style.md) with PHP specific content.
9
+
10
+ ## Standards
11
+
12
+ - Follow **PSR-12** formatting and naming conventions.
13
+ - Prefer `declare(strict_types=1);` in application code.
14
+ - Use scalar type hints, return types, and typed properties everywhere new code permits.
15
+
16
+ ## Immutability
17
+
18
+ - Prefer immutable DTOs and value objects for data crossing service boundaries.
19
+ - Use `readonly` properties or immutable constructors for request/response payloads where possible.
20
+ - Keep arrays for simple maps; promote business-critical structures into explicit classes.
21
+
22
+ ## Formatting
23
+
24
+ - Use **PHP-CS-Fixer** or **Laravel Pint** for formatting.
25
+ - Use **PHPStan** or **Psalm** for static analysis.
26
+ - Keep Composer scripts checked in so the same commands run locally and in CI.
27
+
28
+ ## Imports
29
+
30
+ - Add `use` statements for all referenced classes, interfaces, and traits.
31
+ - Avoid relying on the global namespace unless the project explicitly prefers fully qualified names.
32
+
33
+ ## Error Handling
34
+
35
+ - Throw exceptions for exceptional states; avoid returning `false`/`null` as hidden error channels in new code.
36
+ - Convert framework/request input into validated DTOs before it reaches domain logic.
37
+
38
+ ## Reference
39
+
40
+ See skill: `backend-patterns` for broader service/repository layering guidance.