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,141 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Security
6
+
7
+ > This file extends [common/security.md](../common/security.md) with Rust-specific content.
8
+
9
+ ## Secrets Management
10
+
11
+ - Never hardcode API keys, tokens, or credentials in source code
12
+ - Use environment variables: `std::env::var("API_KEY")`
13
+ - Fail fast if required secrets are missing at startup
14
+ - Keep `.env` files in `.gitignore`
15
+
16
+ ```rust
17
+ // BAD
18
+ const API_KEY: &str = "sk-abc123...";
19
+
20
+ // GOOD — environment variable with early validation
21
+ fn load_api_key() -> anyhow::Result<String> {
22
+ std::env::var("PAYMENT_API_KEY")
23
+ .context("PAYMENT_API_KEY must be set")
24
+ }
25
+ ```
26
+
27
+ ## SQL Injection Prevention
28
+
29
+ - Always use parameterized queries — never format user input into SQL strings
30
+ - Use query builder or ORM (sqlx, diesel, sea-orm) with bind parameters
31
+
32
+ ```rust
33
+ // BAD — SQL injection via format string
34
+ let query = format!("SELECT * FROM users WHERE name = '{name}'");
35
+ sqlx::query(&query).fetch_one(&pool).await?;
36
+
37
+ // GOOD — parameterized query with sqlx
38
+ // Placeholder syntax varies by backend: Postgres: $1 | MySQL: ? | SQLite: $1
39
+ sqlx::query("SELECT * FROM users WHERE name = $1")
40
+ .bind(&name)
41
+ .fetch_one(&pool)
42
+ .await?;
43
+ ```
44
+
45
+ ## Input Validation
46
+
47
+ - Validate all user input at system boundaries before processing
48
+ - Use the type system to enforce invariants (newtype pattern)
49
+ - Parse, don't validate — convert unstructured data to typed structs at the boundary
50
+ - Reject invalid input with clear error messages
51
+
52
+ ```rust
53
+ // Parse, don't validate — invalid states are unrepresentable
54
+ pub struct Email(String);
55
+
56
+ impl Email {
57
+ pub fn parse(input: &str) -> Result<Self, ValidationError> {
58
+ let trimmed = input.trim();
59
+ let at_pos = trimmed.find('@')
60
+ .filter(|&p| p > 0 && p < trimmed.len() - 1)
61
+ .ok_or_else(|| ValidationError::InvalidEmail(input.to_string()))?;
62
+ let domain = &trimmed[at_pos + 1..];
63
+ if trimmed.len() > 254 || !domain.contains('.') {
64
+ return Err(ValidationError::InvalidEmail(input.to_string()));
65
+ }
66
+ // For production use, prefer a validated email crate (e.g., `email_address`)
67
+ Ok(Self(trimmed.to_string()))
68
+ }
69
+
70
+ pub fn as_str(&self) -> &str {
71
+ &self.0
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Unsafe Code
77
+
78
+ - Minimize `unsafe` blocks — prefer safe abstractions
79
+ - Every `unsafe` block must have a `// SAFETY:` comment explaining the invariant
80
+ - Never use `unsafe` to bypass the borrow checker for convenience
81
+ - Audit all `unsafe` code during review — it is a red flag without justification
82
+ - Prefer `safe` FFI wrappers around C libraries
83
+
84
+ ```rust
85
+ // GOOD — safety comment documents ALL required invariants
86
+ let widget: &Widget = {
87
+ // SAFETY: `ptr` is non-null, aligned, points to an initialized Widget,
88
+ // and no mutable references or mutations exist for its lifetime.
89
+ unsafe { &*ptr }
90
+ };
91
+
92
+ // BAD — no safety justification
93
+ unsafe { &*ptr }
94
+ ```
95
+
96
+ ## Dependency Security
97
+
98
+ - Run `cargo audit` to scan for known CVEs in dependencies
99
+ - Run `cargo deny check` for license and advisory compliance
100
+ - Use `cargo tree` to audit transitive dependencies
101
+ - Keep dependencies updated — set up Dependabot or Renovate
102
+ - Minimize dependency count — evaluate before adding new crates
103
+
104
+ ```bash
105
+ # Security audit
106
+ cargo audit
107
+
108
+ # Deny advisories, duplicate versions, and restricted licenses
109
+ cargo deny check
110
+
111
+ # Inspect dependency tree
112
+ cargo tree
113
+ cargo tree -d # Show duplicates only
114
+ ```
115
+
116
+ ## Error Messages
117
+
118
+ - Never expose internal paths, stack traces, or database errors in API responses
119
+ - Log detailed errors server-side; return generic messages to clients
120
+ - Use `tracing` or `log` for structured server-side logging
121
+
122
+ ```rust
123
+ // Map errors to appropriate status codes and generic messages
124
+ // (Example uses axum; adapt the response type to your framework)
125
+ match order_service.find_by_id(id) {
126
+ Ok(order) => Ok((StatusCode::OK, Json(order))),
127
+ Err(ServiceError::NotFound(_)) => {
128
+ tracing::info!(order_id = id, "order not found");
129
+ Err((StatusCode::NOT_FOUND, "Resource not found"))
130
+ }
131
+ Err(e) => {
132
+ tracing::error!(order_id = id, error = %e, "unexpected error");
133
+ Err((StatusCode::INTERNAL_SERVER_ERROR, "Internal server error"))
134
+ }
135
+ }
136
+ ```
137
+
138
+ ## References
139
+
140
+ See skill: `rust-patterns` for unsafe code guidelines and ownership patterns.
141
+ See skill: `security-review` for general security checklists.
@@ -0,0 +1,154 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Testing
6
+
7
+ > This file extends [common/testing.md](../common/testing.md) with Rust-specific content.
8
+
9
+ ## Test Framework
10
+
11
+ - **`#[test]`** with `#[cfg(test)]` modules for unit tests
12
+ - **rstest** for parameterized tests and fixtures
13
+ - **proptest** for property-based testing
14
+ - **mockall** for trait-based mocking
15
+ - **`#[tokio::test]`** for async tests
16
+
17
+ ## Test Organization
18
+
19
+ ```text
20
+ my_crate/
21
+ ├── src/
22
+ │ ├── lib.rs # Unit tests in #[cfg(test)] modules
23
+ │ ├── auth/
24
+ │ │ └── mod.rs # #[cfg(test)] mod tests { ... }
25
+ │ └── orders/
26
+ │ └── service.rs # #[cfg(test)] mod tests { ... }
27
+ ├── tests/ # Integration tests (each file = separate binary)
28
+ │ ├── api_test.rs
29
+ │ ├── db_test.rs
30
+ │ └── common/ # Shared test utilities
31
+ │ └── mod.rs
32
+ └── benches/ # Criterion benchmarks
33
+ └── benchmark.rs
34
+ ```
35
+
36
+ Unit tests go inside `#[cfg(test)]` modules in the same file. Integration tests go in `tests/`.
37
+
38
+ ## Unit Test Pattern
39
+
40
+ ```rust
41
+ #[cfg(test)]
42
+ mod tests {
43
+ use super::*;
44
+
45
+ #[test]
46
+ fn creates_user_with_valid_email() {
47
+ let user = User::new("Alice", "alice@example.com").unwrap();
48
+ assert_eq!(user.name, "Alice");
49
+ }
50
+
51
+ #[test]
52
+ fn rejects_invalid_email() {
53
+ let result = User::new("Bob", "not-an-email");
54
+ assert!(result.is_err());
55
+ assert!(result.unwrap_err().to_string().contains("invalid email"));
56
+ }
57
+ }
58
+ ```
59
+
60
+ ## Parameterized Tests
61
+
62
+ ```rust
63
+ use rstest::rstest;
64
+
65
+ #[rstest]
66
+ #[case("hello", 5)]
67
+ #[case("", 0)]
68
+ #[case("rust", 4)]
69
+ fn test_string_length(#[case] input: &str, #[case] expected: usize) {
70
+ assert_eq!(input.len(), expected);
71
+ }
72
+ ```
73
+
74
+ ## Async Tests
75
+
76
+ ```rust
77
+ #[tokio::test]
78
+ async fn fetches_data_successfully() {
79
+ let client = TestClient::new().await;
80
+ let result = client.get("/data").await;
81
+ assert!(result.is_ok());
82
+ }
83
+ ```
84
+
85
+ ## Mocking with mockall
86
+
87
+ Define traits in production code; generate mocks in test modules:
88
+
89
+ ```rust
90
+ // Production trait — pub so integration tests can import it
91
+ pub trait UserRepository {
92
+ fn find_by_id(&self, id: u64) -> Option<User>;
93
+ }
94
+
95
+ #[cfg(test)]
96
+ mod tests {
97
+ use super::*;
98
+ use mockall::predicate::eq;
99
+
100
+ mockall::mock! {
101
+ pub Repo {}
102
+ impl UserRepository for Repo {
103
+ fn find_by_id(&self, id: u64) -> Option<User>;
104
+ }
105
+ }
106
+
107
+ #[test]
108
+ fn service_returns_user_when_found() {
109
+ let mut mock = MockRepo::new();
110
+ mock.expect_find_by_id()
111
+ .with(eq(42))
112
+ .times(1)
113
+ .returning(|_| Some(User { id: 42, name: "Alice".into() }));
114
+
115
+ let service = UserService::new(Box::new(mock));
116
+ let user = service.get_user(42).unwrap();
117
+ assert_eq!(user.name, "Alice");
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## Test Naming
123
+
124
+ Use descriptive names that explain the scenario:
125
+ - `creates_user_with_valid_email()`
126
+ - `rejects_order_when_insufficient_stock()`
127
+ - `returns_none_when_not_found()`
128
+
129
+ ## Coverage
130
+
131
+ - Target 80%+ line coverage
132
+ - Use **cargo-llvm-cov** for coverage reporting
133
+ - Focus on business logic — exclude generated code and FFI bindings
134
+
135
+ ```bash
136
+ cargo llvm-cov # Summary
137
+ cargo llvm-cov --html # HTML report
138
+ cargo llvm-cov --fail-under-lines 80 # Fail if below threshold
139
+ ```
140
+
141
+ ## Testing Commands
142
+
143
+ ```bash
144
+ cargo test # Run all tests
145
+ cargo test -- --nocapture # Show println output
146
+ cargo test test_name # Run tests matching pattern
147
+ cargo test --lib # Unit tests only
148
+ cargo test --test api_test # Specific integration test (tests/api_test.rs)
149
+ cargo test --doc # Doc tests only
150
+ ```
151
+
152
+ ## References
153
+
154
+ See skill: `rust-testing` for comprehensive testing patterns including property-based testing, fixtures, and benchmarking with Criterion.
@@ -0,0 +1,47 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Coding Style
7
+
8
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Swift specific content.
9
+
10
+ ## Formatting
11
+
12
+ - **SwiftFormat** for auto-formatting, **SwiftLint** for style enforcement
13
+ - `swift-format` is bundled with Xcode 16+ as an alternative
14
+
15
+ ## Immutability
16
+
17
+ - Prefer `let` over `var` — define everything as `let` and only change to `var` if the compiler requires it
18
+ - Use `struct` with value semantics by default; use `class` only when identity or reference semantics are needed
19
+
20
+ ## Naming
21
+
22
+ Follow [Apple API Design Guidelines](https://www.swift.org/documentation/api-design-guidelines/):
23
+
24
+ - Clarity at the point of use — omit needless words
25
+ - Name methods and properties for their roles, not their types
26
+ - Use `static let` for constants over global constants
27
+
28
+ ## Error Handling
29
+
30
+ Use typed throws (Swift 6+) and pattern matching:
31
+
32
+ ```swift
33
+ func load(id: String) throws(LoadError) -> Item {
34
+ guard let data = try? read(from: path) else {
35
+ throw .fileNotFound(id)
36
+ }
37
+ return try decode(data)
38
+ }
39
+ ```
40
+
41
+ ## Concurrency
42
+
43
+ Enable Swift 6 strict concurrency checking. Prefer:
44
+
45
+ - `Sendable` value types for data crossing isolation boundaries
46
+ - Actors for shared mutable state
47
+ - Structured concurrency (`async let`, `TaskGroup`) over unstructured `Task {}`
@@ -0,0 +1,20 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Hooks
7
+
8
+ > This file extends [common/hooks.md](../common/hooks.md) with Swift specific content.
9
+
10
+ ## PostToolUse Hooks
11
+
12
+ Configure in `~/.claude/settings.json`:
13
+
14
+ - **SwiftFormat**: Auto-format `.swift` files after edit
15
+ - **SwiftLint**: Run lint checks after editing `.swift` files
16
+ - **swift build**: Type-check modified packages after edit
17
+
18
+ ## Warning
19
+
20
+ Flag `print()` statements — use `os.Logger` or structured logging instead for production code.
@@ -0,0 +1,66 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Patterns
7
+
8
+ > This file extends [common/patterns.md](../common/patterns.md) with Swift specific content.
9
+
10
+ ## Protocol-Oriented Design
11
+
12
+ Define small, focused protocols. Use protocol extensions for shared defaults:
13
+
14
+ ```swift
15
+ protocol Repository: Sendable {
16
+ associatedtype Item: Identifiable & Sendable
17
+ func find(by id: Item.ID) async throws -> Item?
18
+ func save(_ item: Item) async throws
19
+ }
20
+ ```
21
+
22
+ ## Value Types
23
+
24
+ - Use structs for data transfer objects and models
25
+ - Use enums with associated values to model distinct states:
26
+
27
+ ```swift
28
+ enum LoadState<T: Sendable>: Sendable {
29
+ case idle
30
+ case loading
31
+ case loaded(T)
32
+ case failed(Error)
33
+ }
34
+ ```
35
+
36
+ ## Actor Pattern
37
+
38
+ Use actors for shared mutable state instead of locks or dispatch queues:
39
+
40
+ ```swift
41
+ actor Cache<Key: Hashable & Sendable, Value: Sendable> {
42
+ private var storage: [Key: Value] = [:]
43
+
44
+ func get(_ key: Key) -> Value? { storage[key] }
45
+ func set(_ key: Key, value: Value) { storage[key] = value }
46
+ }
47
+ ```
48
+
49
+ ## Dependency Injection
50
+
51
+ Inject protocols with default parameters — production uses defaults, tests inject mocks:
52
+
53
+ ```swift
54
+ struct UserService {
55
+ private let repository: any UserRepository
56
+
57
+ init(repository: any UserRepository = DefaultUserRepository()) {
58
+ self.repository = repository
59
+ }
60
+ }
61
+ ```
62
+
63
+ ## References
64
+
65
+ See skill: `swift-actor-persistence` for actor-based persistence patterns.
66
+ See skill: `swift-protocol-di-testing` for protocol-based DI and testing.
@@ -0,0 +1,33 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Security
7
+
8
+ > This file extends [common/security.md](../common/security.md) with Swift specific content.
9
+
10
+ ## Secret Management
11
+
12
+ - Use **Keychain Services** for sensitive data (tokens, passwords, keys) — never `UserDefaults`
13
+ - Use environment variables or `.xcconfig` files for build-time secrets
14
+ - Never hardcode secrets in source — decompilation tools extract them trivially
15
+
16
+ ```swift
17
+ let apiKey = ProcessInfo.processInfo.environment["API_KEY"]
18
+ guard let apiKey, !apiKey.isEmpty else {
19
+ fatalError("API_KEY not configured")
20
+ }
21
+ ```
22
+
23
+ ## Transport Security
24
+
25
+ - App Transport Security (ATS) is enforced by default — do not disable it
26
+ - Use certificate pinning for critical endpoints
27
+ - Validate all server certificates
28
+
29
+ ## Input Validation
30
+
31
+ - Sanitize all user input before display to prevent injection
32
+ - Use `URL(string:)` with validation rather than force-unwrapping
33
+ - Validate data from external sources (APIs, deep links, pasteboard) before processing
@@ -0,0 +1,45 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Testing
7
+
8
+ > This file extends [common/testing.md](../common/testing.md) with Swift specific content.
9
+
10
+ ## Framework
11
+
12
+ Use **Swift Testing** (`import Testing`) for new tests. Use `@Test` and `#expect`:
13
+
14
+ ```swift
15
+ @Test("User creation validates email")
16
+ func userCreationValidatesEmail() throws {
17
+ #expect(throws: ValidationError.invalidEmail) {
18
+ try User(email: "not-an-email")
19
+ }
20
+ }
21
+ ```
22
+
23
+ ## Test Isolation
24
+
25
+ Each test gets a fresh instance — set up in `init`, tear down in `deinit`. No shared mutable state between tests.
26
+
27
+ ## Parameterized Tests
28
+
29
+ ```swift
30
+ @Test("Validates formats", arguments: ["json", "xml", "csv"])
31
+ func validatesFormat(format: String) throws {
32
+ let parser = try Parser(format: format)
33
+ #expect(parser.isValid)
34
+ }
35
+ ```
36
+
37
+ ## Coverage
38
+
39
+ ```bash
40
+ swift test --enable-code-coverage
41
+ ```
42
+
43
+ ## Reference
44
+
45
+ See skill: `swift-protocol-di-testing` for protocol-based dependency injection and mock patterns with Swift Testing.
@@ -0,0 +1,199 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ # TypeScript/JavaScript Coding Style
9
+
10
+ > This file extends [common/coding-style.md](../common/coding-style.md) with TypeScript/JavaScript specific content.
11
+
12
+ ## Types and Interfaces
13
+
14
+ Use types to make public APIs, shared models, and component props explicit, readable, and reusable.
15
+
16
+ ### Public APIs
17
+
18
+ - Add parameter and return types to exported functions, shared utilities, and public class methods
19
+ - Let TypeScript infer obvious local variable types
20
+ - Extract repeated inline object shapes into named types or interfaces
21
+
22
+ ```typescript
23
+ // WRONG: Exported function without explicit types
24
+ export function formatUser(user) {
25
+ return `${user.firstName} ${user.lastName}`
26
+ }
27
+
28
+ // CORRECT: Explicit types on public APIs
29
+ interface User {
30
+ firstName: string
31
+ lastName: string
32
+ }
33
+
34
+ export function formatUser(user: User): string {
35
+ return `${user.firstName} ${user.lastName}`
36
+ }
37
+ ```
38
+
39
+ ### Interfaces vs. Type Aliases
40
+
41
+ - Use `interface` for object shapes that may be extended or implemented
42
+ - Use `type` for unions, intersections, tuples, mapped types, and utility types
43
+ - Prefer string literal unions over `enum` unless an `enum` is required for interoperability
44
+
45
+ ```typescript
46
+ interface User {
47
+ id: string
48
+ email: string
49
+ }
50
+
51
+ type UserRole = 'admin' | 'member'
52
+ type UserWithRole = User & {
53
+ role: UserRole
54
+ }
55
+ ```
56
+
57
+ ### Avoid `any`
58
+
59
+ - Avoid `any` in application code
60
+ - Use `unknown` for external or untrusted input, then narrow it safely
61
+ - Use generics when a value's type depends on the caller
62
+
63
+ ```typescript
64
+ // WRONG: any removes type safety
65
+ function getErrorMessage(error: any) {
66
+ return error.message
67
+ }
68
+
69
+ // CORRECT: unknown forces safe narrowing
70
+ function getErrorMessage(error: unknown): string {
71
+ if (error instanceof Error) {
72
+ return error.message
73
+ }
74
+
75
+ return 'Unexpected error'
76
+ }
77
+ ```
78
+
79
+ ### React Props
80
+
81
+ - Define component props with a named `interface` or `type`
82
+ - Type callback props explicitly
83
+ - Do not use `React.FC` unless there is a specific reason to do so
84
+
85
+ ```typescript
86
+ interface User {
87
+ id: string
88
+ email: string
89
+ }
90
+
91
+ interface UserCardProps {
92
+ user: User
93
+ onSelect: (id: string) => void
94
+ }
95
+
96
+ function UserCard({ user, onSelect }: UserCardProps) {
97
+ return <button onClick={() => onSelect(user.id)}>{user.email}</button>
98
+ }
99
+ ```
100
+
101
+ ### JavaScript Files
102
+
103
+ - In `.js` and `.jsx` files, use JSDoc when types improve clarity and a TypeScript migration is not practical
104
+ - Keep JSDoc aligned with runtime behavior
105
+
106
+ ```javascript
107
+ /**
108
+ * @param {{ firstName: string, lastName: string }} user
109
+ * @returns {string}
110
+ */
111
+ export function formatUser(user) {
112
+ return `${user.firstName} ${user.lastName}`
113
+ }
114
+ ```
115
+
116
+ ## Immutability
117
+
118
+ Use spread operator for immutable updates:
119
+
120
+ ```typescript
121
+ interface User {
122
+ id: string
123
+ name: string
124
+ }
125
+
126
+ // WRONG: Mutation
127
+ function updateUser(user: User, name: string): User {
128
+ user.name = name // MUTATION!
129
+ return user
130
+ }
131
+
132
+ // CORRECT: Immutability
133
+ function updateUser(user: Readonly<User>, name: string): User {
134
+ return {
135
+ ...user,
136
+ name
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## Error Handling
142
+
143
+ Use async/await with try-catch and narrow unknown errors safely:
144
+
145
+ ```typescript
146
+ interface User {
147
+ id: string
148
+ email: string
149
+ }
150
+
151
+ declare function riskyOperation(userId: string): Promise<User>
152
+
153
+ function getErrorMessage(error: unknown): string {
154
+ if (error instanceof Error) {
155
+ return error.message
156
+ }
157
+
158
+ return 'Unexpected error'
159
+ }
160
+
161
+ const logger = {
162
+ error: (message: string, error: unknown) => {
163
+ // Replace with your production logger (for example, pino or winston).
164
+ }
165
+ }
166
+
167
+ async function loadUser(userId: string): Promise<User> {
168
+ try {
169
+ const result = await riskyOperation(userId)
170
+ return result
171
+ } catch (error: unknown) {
172
+ logger.error('Operation failed', error)
173
+ throw new Error(getErrorMessage(error))
174
+ }
175
+ }
176
+ ```
177
+
178
+ ## Input Validation
179
+
180
+ Use Zod for schema-based validation and infer types from the schema:
181
+
182
+ ```typescript
183
+ import { z } from 'zod'
184
+
185
+ const userSchema = z.object({
186
+ email: z.string().email(),
187
+ age: z.number().int().min(0).max(150)
188
+ })
189
+
190
+ type UserInput = z.infer<typeof userSchema>
191
+
192
+ const validated: UserInput = userSchema.parse(input)
193
+ ```
194
+
195
+ ## Console.log
196
+
197
+ - No `console.log` statements in production code
198
+ - Use proper logging libraries instead
199
+ - See hooks for automatic detection