compact-agent 1.10.1 → 1.11.1

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 (703) hide show
  1. package/bin/ecc-hooks.cjs +110 -0
  2. package/dist/config.js +9 -1
  3. package/dist/config.js.map +1 -1
  4. package/dist/ecc.d.ts +11 -0
  5. package/dist/ecc.js +142 -27
  6. package/dist/ecc.js.map +1 -1
  7. package/dist/index.js +47 -7
  8. package/dist/index.js.map +1 -1
  9. package/dist/query.js +26 -0
  10. package/dist/query.js.map +1 -1
  11. package/dist/theme.js +6 -2
  12. package/dist/theme.js.map +1 -1
  13. package/package.json +1 -1
  14. package/resources/ecc/agents/a11y-architect.md +149 -0
  15. package/resources/ecc/agents/architect.md +11 -3
  16. package/resources/ecc/agents/build-error-resolver.md +11 -4
  17. package/resources/ecc/agents/chief-of-staff.md +11 -4
  18. package/resources/ecc/agents/code-architect.md +80 -0
  19. package/resources/ecc/agents/code-explorer.md +78 -0
  20. package/resources/ecc/agents/code-reviewer.md +89 -4
  21. package/resources/ecc/agents/code-simplifier.md +56 -0
  22. package/resources/ecc/agents/comment-analyzer.md +54 -0
  23. package/resources/ecc/agents/conversation-analyzer.md +61 -0
  24. package/resources/ecc/agents/cpp-build-resolver.md +99 -0
  25. package/resources/ecc/agents/cpp-reviewer.md +81 -0
  26. package/resources/ecc/agents/csharp-reviewer.md +110 -0
  27. package/resources/ecc/agents/dart-build-resolver.md +210 -0
  28. package/resources/ecc/agents/database-reviewer.md +11 -3
  29. package/resources/ecc/agents/django-build-resolver.md +252 -0
  30. package/resources/ecc/agents/django-reviewer.md +169 -0
  31. package/resources/ecc/agents/doc-updater.md +11 -3
  32. package/resources/ecc/agents/docs-lookup.md +77 -0
  33. package/resources/ecc/agents/e2e-runner.md +11 -4
  34. package/resources/ecc/agents/fastapi-reviewer.md +79 -0
  35. package/resources/ecc/agents/flutter-reviewer.md +252 -0
  36. package/resources/ecc/agents/fsharp-reviewer.md +109 -0
  37. package/resources/ecc/agents/gan-evaluator.md +218 -0
  38. package/resources/ecc/agents/gan-generator.md +140 -0
  39. package/resources/ecc/agents/gan-planner.md +108 -0
  40. package/resources/ecc/agents/go-build-resolver.md +11 -4
  41. package/resources/ecc/agents/go-reviewer.md +11 -3
  42. package/resources/ecc/agents/harmonyos-app-resolver.md +182 -0
  43. package/resources/ecc/agents/harness-optimizer.md +12 -2
  44. package/resources/ecc/agents/healthcare-reviewer.md +92 -0
  45. package/resources/ecc/agents/homelab-architect.md +107 -0
  46. package/resources/ecc/agents/java-build-resolver.md +275 -0
  47. package/resources/ecc/agents/java-reviewer.md +190 -0
  48. package/resources/ecc/agents/kotlin-build-resolver.md +127 -0
  49. package/resources/ecc/agents/kotlin-reviewer.md +168 -0
  50. package/resources/ecc/agents/loop-operator.md +12 -3
  51. package/resources/ecc/agents/mle-reviewer.md +162 -0
  52. package/resources/ecc/agents/network-architect.md +106 -0
  53. package/resources/ecc/agents/network-config-reviewer.md +106 -0
  54. package/resources/ecc/agents/network-troubleshooter.md +128 -0
  55. package/resources/ecc/agents/opensource-forker.md +207 -0
  56. package/resources/ecc/agents/opensource-packager.md +258 -0
  57. package/resources/ecc/agents/opensource-sanitizer.md +197 -0
  58. package/resources/ecc/agents/performance-optimizer.md +455 -0
  59. package/resources/ecc/agents/planner.md +11 -2
  60. package/resources/ecc/agents/pr-test-analyzer.md +54 -0
  61. package/resources/ecc/agents/python-reviewer.md +11 -3
  62. package/resources/ecc/agents/pytorch-build-resolver.md +129 -0
  63. package/resources/ecc/agents/refactor-cleaner.md +11 -4
  64. package/resources/ecc/agents/rust-build-resolver.md +157 -0
  65. package/resources/ecc/agents/rust-reviewer.md +103 -0
  66. package/resources/ecc/agents/security-reviewer.md +11 -3
  67. package/resources/ecc/agents/seo-specialist.md +71 -0
  68. package/resources/ecc/agents/silent-failure-hunter.md +59 -0
  69. package/resources/ecc/agents/swift-build-resolver.md +170 -0
  70. package/resources/ecc/agents/swift-reviewer.md +116 -0
  71. package/resources/ecc/agents/tdd-guide.md +11 -4
  72. package/resources/ecc/agents/type-design-analyzer.md +50 -0
  73. package/resources/ecc/agents/typescript-reviewer.md +121 -0
  74. package/resources/ecc/commands/aside.md +164 -0
  75. package/resources/ecc/commands/auto-update.md +28 -0
  76. package/resources/ecc/commands/build-fix.md +66 -0
  77. package/resources/ecc/commands/checkpoint.md +78 -0
  78. package/resources/ecc/commands/code-review.md +289 -0
  79. package/resources/ecc/commands/cost-report.md +107 -0
  80. package/resources/ecc/commands/cpp-build.md +173 -0
  81. package/resources/ecc/commands/cpp-review.md +132 -0
  82. package/resources/ecc/commands/cpp-test.md +251 -0
  83. package/resources/ecc/commands/ecc-guide.md +93 -0
  84. package/resources/ecc/commands/evolve.md +178 -0
  85. package/resources/ecc/commands/fastapi-review.md +39 -0
  86. package/resources/ecc/commands/feature-dev.md +49 -0
  87. package/resources/ecc/commands/flutter-build.md +164 -0
  88. package/resources/ecc/commands/flutter-review.md +116 -0
  89. package/resources/ecc/commands/flutter-test.md +144 -0
  90. package/resources/ecc/commands/gan-build.md +103 -0
  91. package/resources/ecc/commands/gan-design.md +39 -0
  92. package/resources/ecc/commands/go-build.md +183 -0
  93. package/resources/ecc/commands/go-review.md +148 -0
  94. package/resources/ecc/commands/go-test.md +268 -0
  95. package/resources/ecc/commands/gradle-build.md +70 -0
  96. package/resources/ecc/commands/harness-audit.md +77 -0
  97. package/resources/ecc/commands/hookify-configure.md +14 -0
  98. package/resources/ecc/commands/hookify-help.md +46 -0
  99. package/resources/ecc/commands/hookify-list.md +21 -0
  100. package/resources/ecc/commands/hookify.md +50 -0
  101. package/resources/ecc/commands/instinct-export.md +66 -0
  102. package/resources/ecc/commands/instinct-import.md +114 -0
  103. package/resources/ecc/commands/instinct-status.md +59 -0
  104. package/resources/ecc/commands/jira.md +106 -0
  105. package/resources/ecc/commands/kotlin-build.md +174 -0
  106. package/resources/ecc/commands/kotlin-review.md +140 -0
  107. package/resources/ecc/commands/kotlin-test.md +312 -0
  108. package/resources/ecc/commands/learn-eval.md +116 -0
  109. package/resources/ecc/commands/learn.md +74 -0
  110. package/resources/ecc/commands/loop-start.md +36 -0
  111. package/resources/ecc/commands/loop-status.md +77 -0
  112. package/resources/ecc/commands/model-route.md +30 -0
  113. package/resources/ecc/commands/multi-backend.md +162 -0
  114. package/resources/ecc/commands/multi-execute.md +319 -0
  115. package/resources/ecc/commands/multi-frontend.md +162 -0
  116. package/resources/ecc/commands/multi-plan.md +272 -0
  117. package/resources/ecc/commands/multi-workflow.md +195 -0
  118. package/resources/ecc/commands/plan-prd.md +160 -0
  119. package/resources/ecc/commands/plan.md +200 -0
  120. package/resources/ecc/commands/pm2.md +276 -0
  121. package/resources/ecc/commands/pr.md +184 -0
  122. package/resources/ecc/commands/project-init.md +86 -0
  123. package/resources/ecc/commands/projects.md +39 -0
  124. package/resources/ecc/commands/promote.md +41 -0
  125. package/resources/ecc/commands/prp-commit.md +112 -0
  126. package/resources/ecc/commands/prp-implement.md +385 -0
  127. package/resources/ecc/commands/prp-plan.md +502 -0
  128. package/resources/ecc/commands/prp-pr.md +184 -0
  129. package/resources/ecc/commands/prp-prd.md +447 -0
  130. package/resources/ecc/commands/prune.md +31 -0
  131. package/resources/ecc/commands/python-review.md +297 -0
  132. package/resources/ecc/commands/quality-gate.md +33 -0
  133. package/resources/ecc/commands/refactor-clean.md +84 -0
  134. package/resources/ecc/commands/resume-session.md +156 -0
  135. package/resources/ecc/commands/review-pr.md +37 -0
  136. package/resources/ecc/commands/rust-build.md +187 -0
  137. package/resources/ecc/commands/rust-review.md +142 -0
  138. package/resources/ecc/commands/rust-test.md +308 -0
  139. package/resources/ecc/commands/santa-loop.md +175 -0
  140. package/resources/ecc/commands/save-session.md +275 -0
  141. package/resources/ecc/commands/security-scan.md +92 -0
  142. package/resources/ecc/commands/sessions.md +339 -0
  143. package/resources/ecc/commands/setup-pm.md +80 -0
  144. package/resources/ecc/commands/skill-create.md +174 -0
  145. package/resources/ecc/commands/skill-health.md +54 -0
  146. package/resources/ecc/commands/test-coverage.md +73 -0
  147. package/resources/ecc/commands/update-codemaps.md +76 -0
  148. package/resources/ecc/commands/update-docs.md +88 -0
  149. package/resources/ecc/rules/README.md +120 -0
  150. package/resources/ecc/rules/angular/coding-style.md +182 -0
  151. package/resources/ecc/rules/angular/hooks.md +25 -0
  152. package/resources/ecc/rules/angular/patterns.md +249 -0
  153. package/resources/ecc/rules/angular/security.md +87 -0
  154. package/resources/ecc/rules/angular/testing.md +164 -0
  155. package/resources/ecc/rules/arkts/coding-style.md +153 -0
  156. package/resources/ecc/rules/arkts/hooks.md +135 -0
  157. package/resources/ecc/rules/arkts/patterns.md +236 -0
  158. package/resources/ecc/rules/arkts/security.md +141 -0
  159. package/resources/ecc/rules/arkts/testing.md +126 -0
  160. package/resources/ecc/rules/{common-agents.md → common/agents.md} +2 -4
  161. package/resources/ecc/rules/common/code-review.md +124 -0
  162. package/resources/ecc/rules/{common-coding-style.md → common/coding-style.md} +42 -4
  163. package/resources/ecc/rules/common/development-workflow.md +44 -0
  164. package/resources/ecc/rules/{common-git-workflow.md → common/git-workflow.md} +1 -5
  165. package/resources/ecc/rules/{common-hooks.md → common/hooks.md} +0 -4
  166. package/resources/ecc/rules/{common-patterns.md → common/patterns.md} +0 -4
  167. package/resources/ecc/rules/{common-performance.md → common/performance.md} +0 -4
  168. package/resources/ecc/rules/{common-security.md → common/security.md} +0 -4
  169. package/resources/ecc/rules/{common-testing.md → common/testing.md} +28 -4
  170. package/resources/ecc/rules/cpp/coding-style.md +44 -0
  171. package/resources/ecc/rules/cpp/hooks.md +39 -0
  172. package/resources/ecc/rules/cpp/patterns.md +51 -0
  173. package/resources/ecc/rules/cpp/security.md +51 -0
  174. package/resources/ecc/rules/cpp/testing.md +44 -0
  175. package/resources/ecc/rules/csharp/coding-style.md +72 -0
  176. package/resources/ecc/rules/csharp/hooks.md +25 -0
  177. package/resources/ecc/rules/csharp/patterns.md +50 -0
  178. package/resources/ecc/rules/csharp/security.md +58 -0
  179. package/resources/ecc/rules/csharp/testing.md +46 -0
  180. package/resources/ecc/rules/dart/coding-style.md +159 -0
  181. package/resources/ecc/rules/dart/hooks.md +66 -0
  182. package/resources/ecc/rules/dart/patterns.md +261 -0
  183. package/resources/ecc/rules/dart/security.md +135 -0
  184. package/resources/ecc/rules/dart/testing.md +215 -0
  185. package/resources/ecc/rules/fsharp/coding-style.md +112 -0
  186. package/resources/ecc/rules/fsharp/hooks.md +26 -0
  187. package/resources/ecc/rules/fsharp/patterns.md +111 -0
  188. package/resources/ecc/rules/fsharp/security.md +76 -0
  189. package/resources/ecc/rules/fsharp/testing.md +62 -0
  190. package/resources/ecc/rules/{golang-coding-style.md → golang/coding-style.md} +6 -5
  191. package/resources/ecc/rules/{golang-hooks.md → golang/hooks.md} +5 -4
  192. package/resources/ecc/rules/{golang-patterns.md → golang/patterns.md} +5 -4
  193. package/resources/ecc/rules/{golang-security.md → golang/security.md} +5 -4
  194. package/resources/ecc/rules/{golang-testing.md → golang/testing.md} +5 -4
  195. package/resources/ecc/rules/java/coding-style.md +114 -0
  196. package/resources/ecc/rules/java/hooks.md +18 -0
  197. package/resources/ecc/rules/java/patterns.md +147 -0
  198. package/resources/ecc/rules/java/security.md +101 -0
  199. package/resources/ecc/rules/java/testing.md +133 -0
  200. package/resources/ecc/rules/kotlin/coding-style.md +86 -0
  201. package/resources/ecc/rules/{kotlin-hooks.md → kotlin/hooks.md} +5 -4
  202. package/resources/ecc/rules/kotlin/patterns.md +146 -0
  203. package/resources/ecc/rules/kotlin/security.md +82 -0
  204. package/resources/ecc/rules/kotlin/testing.md +128 -0
  205. package/resources/ecc/rules/perl/coding-style.md +46 -0
  206. package/resources/ecc/rules/perl/hooks.md +22 -0
  207. package/resources/ecc/rules/perl/patterns.md +76 -0
  208. package/resources/ecc/rules/perl/security.md +69 -0
  209. package/resources/ecc/rules/perl/testing.md +54 -0
  210. package/resources/ecc/rules/php/coding-style.md +40 -0
  211. package/resources/ecc/rules/{php-hooks.md → php/hooks.md} +7 -4
  212. package/resources/ecc/rules/php/patterns.md +33 -0
  213. package/resources/ecc/rules/php/security.md +37 -0
  214. package/resources/ecc/rules/php/testing.md +39 -0
  215. package/resources/ecc/rules/{python-coding-style.md → python/coding-style.md} +4 -4
  216. package/resources/ecc/rules/python/fastapi.md +58 -0
  217. package/resources/ecc/rules/{python-hooks.md → python/hooks.md} +4 -4
  218. package/resources/ecc/rules/{python-patterns.md → python/patterns.md} +4 -4
  219. package/resources/ecc/rules/{python-security.md → python/security.md} +4 -4
  220. package/resources/ecc/rules/{python-testing.md → python/testing.md} +4 -4
  221. package/resources/ecc/rules/ruby/coding-style.md +46 -0
  222. package/resources/ecc/rules/ruby/hooks.md +37 -0
  223. package/resources/ecc/rules/ruby/patterns.md +44 -0
  224. package/resources/ecc/rules/ruby/security.md +51 -0
  225. package/resources/ecc/rules/ruby/testing.md +51 -0
  226. package/resources/ecc/rules/rust/coding-style.md +151 -0
  227. package/resources/ecc/rules/rust/hooks.md +16 -0
  228. package/resources/ecc/rules/rust/patterns.md +168 -0
  229. package/resources/ecc/rules/rust/security.md +141 -0
  230. package/resources/ecc/rules/rust/testing.md +154 -0
  231. package/resources/ecc/rules/{swift-coding-style.md → swift/coding-style.md} +6 -6
  232. package/resources/ecc/rules/swift/hooks.md +20 -0
  233. package/resources/ecc/rules/{swift-patterns.md → swift/patterns.md} +5 -5
  234. package/resources/ecc/rules/{swift-security.md → swift/security.md} +7 -7
  235. package/resources/ecc/rules/{swift-testing.md → swift/testing.md} +5 -5
  236. package/resources/ecc/rules/typescript/coding-style.md +199 -0
  237. package/resources/ecc/rules/{typescript-hooks.md → typescript/hooks.md} +6 -4
  238. package/resources/ecc/rules/{typescript-patterns.md → typescript/patterns.md} +6 -4
  239. package/resources/ecc/rules/{typescript-security.md → typescript/security.md} +6 -4
  240. package/resources/ecc/rules/typescript/testing.md +18 -0
  241. package/resources/ecc/rules/web/coding-style.md +96 -0
  242. package/resources/ecc/rules/web/design-quality.md +63 -0
  243. package/resources/ecc/rules/web/hooks.md +129 -0
  244. package/resources/ecc/rules/web/patterns.md +79 -0
  245. package/resources/ecc/rules/web/performance.md +64 -0
  246. package/resources/ecc/rules/web/security.md +57 -0
  247. package/resources/ecc/rules/web/testing.md +55 -0
  248. package/resources/ecc/rules/zh/README.md +108 -0
  249. package/resources/ecc/rules/zh/agents.md +50 -0
  250. package/resources/ecc/rules/zh/code-review.md +124 -0
  251. package/resources/ecc/rules/zh/coding-style.md +48 -0
  252. package/resources/ecc/rules/zh/development-workflow.md +44 -0
  253. package/resources/ecc/rules/zh/git-workflow.md +24 -0
  254. package/resources/ecc/rules/zh/hooks.md +30 -0
  255. package/resources/ecc/rules/zh/patterns.md +31 -0
  256. package/resources/ecc/rules/zh/performance.md +55 -0
  257. package/resources/ecc/rules/zh/security.md +29 -0
  258. package/resources/ecc/rules/zh/testing.md +29 -0
  259. package/resources/ecc/skills/accessibility/SKILL.md +146 -0
  260. package/resources/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
  261. package/resources/ecc/skills/agent-eval/SKILL.md +145 -0
  262. package/resources/ecc/skills/agent-harness-construction/SKILL.md +73 -0
  263. package/resources/ecc/skills/agent-introspection-debugging/SKILL.md +1 -0
  264. package/resources/ecc/skills/agent-payment-x402/SKILL.md +224 -0
  265. package/resources/ecc/skills/agent-sort/SKILL.md +1 -0
  266. package/resources/ecc/skills/agentic-engineering/SKILL.md +63 -0
  267. package/resources/ecc/skills/agentic-os/SKILL.md +387 -0
  268. package/resources/ecc/skills/ai-first-engineering/SKILL.md +51 -0
  269. package/resources/ecc/skills/ai-regression-testing/SKILL.md +385 -0
  270. package/resources/ecc/skills/android-clean-architecture/SKILL.md +339 -0
  271. package/resources/ecc/skills/angular-developer/SKILL.md +154 -0
  272. package/resources/ecc/skills/angular-developer/references/angular-animations.md +160 -0
  273. package/resources/ecc/skills/angular-developer/references/angular-aria.md +410 -0
  274. package/resources/ecc/skills/angular-developer/references/cli.md +86 -0
  275. package/resources/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
  276. package/resources/ecc/skills/angular-developer/references/component-styling.md +91 -0
  277. package/resources/ecc/skills/angular-developer/references/components.md +117 -0
  278. package/resources/ecc/skills/angular-developer/references/creating-services.md +97 -0
  279. package/resources/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
  280. package/resources/ecc/skills/angular-developer/references/define-routes.md +67 -0
  281. package/resources/ecc/skills/angular-developer/references/defining-providers.md +72 -0
  282. package/resources/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
  283. package/resources/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
  284. package/resources/ecc/skills/angular-developer/references/effects.md +83 -0
  285. package/resources/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  286. package/resources/ecc/skills/angular-developer/references/host-elements.md +80 -0
  287. package/resources/ecc/skills/angular-developer/references/injection-context.md +63 -0
  288. package/resources/ecc/skills/angular-developer/references/inputs.md +101 -0
  289. package/resources/ecc/skills/angular-developer/references/linked-signal.md +59 -0
  290. package/resources/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
  291. package/resources/ecc/skills/angular-developer/references/mcp.md +108 -0
  292. package/resources/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
  293. package/resources/ecc/skills/angular-developer/references/outputs.md +86 -0
  294. package/resources/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
  295. package/resources/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
  296. package/resources/ecc/skills/angular-developer/references/resource.md +77 -0
  297. package/resources/ecc/skills/angular-developer/references/route-animations.md +56 -0
  298. package/resources/ecc/skills/angular-developer/references/route-guards.md +52 -0
  299. package/resources/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
  300. package/resources/ecc/skills/angular-developer/references/router-testing.md +87 -0
  301. package/resources/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  302. package/resources/ecc/skills/angular-developer/references/signal-forms.md +795 -0
  303. package/resources/ecc/skills/angular-developer/references/signals-overview.md +94 -0
  304. package/resources/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
  305. package/resources/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
  306. package/resources/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
  307. package/resources/ecc/skills/api-connector-builder/SKILL.md +120 -0
  308. package/resources/ecc/skills/api-design/SKILL.md +1 -0
  309. package/resources/ecc/skills/architecture-decision-records/SKILL.md +179 -0
  310. package/resources/ecc/skills/article-writing/SKILL.md +1 -0
  311. package/resources/ecc/skills/automation-audit-ops/SKILL.md +142 -0
  312. package/resources/ecc/skills/autonomous-agent-harness/SKILL.md +273 -0
  313. package/resources/ecc/skills/autonomous-loops/SKILL.md +610 -0
  314. package/resources/ecc/skills/backend-patterns/SKILL.md +8 -44
  315. package/resources/ecc/skills/benchmark/SKILL.md +93 -0
  316. package/resources/ecc/skills/blueprint/SKILL.md +105 -0
  317. package/resources/ecc/skills/brand-voice/SKILL.md +1 -0
  318. package/resources/ecc/skills/browser-qa/SKILL.md +87 -0
  319. package/resources/ecc/skills/bun-runtime/SKILL.md +1 -0
  320. package/resources/ecc/skills/canary-watch/SKILL.md +99 -0
  321. package/resources/ecc/skills/carrier-relationship-management/SKILL.md +212 -0
  322. package/resources/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
  323. package/resources/ecc/skills/ck/SKILL.md +147 -0
  324. package/resources/ecc/skills/ck/commands/forget.mjs +44 -0
  325. package/resources/ecc/skills/ck/commands/info.mjs +24 -0
  326. package/resources/ecc/skills/ck/commands/init.mjs +143 -0
  327. package/resources/ecc/skills/ck/commands/list.mjs +40 -0
  328. package/resources/ecc/skills/ck/commands/migrate.mjs +202 -0
  329. package/resources/ecc/skills/ck/commands/resume.mjs +36 -0
  330. package/resources/ecc/skills/ck/commands/save.mjs +210 -0
  331. package/resources/ecc/skills/ck/commands/shared.mjs +387 -0
  332. package/resources/ecc/skills/ck/hooks/session-start.mjs +224 -0
  333. package/resources/ecc/skills/claude-devfleet/SKILL.md +103 -0
  334. package/resources/ecc/skills/click-path-audit/SKILL.md +244 -0
  335. package/resources/ecc/skills/clickhouse-io/SKILL.md +439 -0
  336. package/resources/ecc/skills/code-tour/SKILL.md +236 -0
  337. package/resources/ecc/skills/codebase-onboarding/SKILL.md +233 -0
  338. package/resources/ecc/skills/coding-standards/SKILL.md +1 -0
  339. package/resources/ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -0
  340. package/resources/ecc/skills/configure-ecc/SKILL.md +384 -0
  341. package/resources/ecc/skills/connections-optimizer/SKILL.md +189 -0
  342. package/resources/ecc/skills/content-engine/SKILL.md +1 -0
  343. package/resources/ecc/skills/content-hash-cache-pattern/SKILL.md +161 -0
  344. package/resources/ecc/skills/context-budget/SKILL.md +135 -0
  345. package/resources/ecc/skills/continuous-agent-loop/SKILL.md +45 -0
  346. package/resources/ecc/skills/continuous-learning/SKILL.md +131 -0
  347. package/resources/ecc/skills/continuous-learning/config.json +18 -0
  348. package/resources/ecc/skills/continuous-learning/evaluate-session.sh +69 -0
  349. package/resources/ecc/skills/continuous-learning-v2/SKILL.md +360 -0
  350. package/resources/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  351. package/resources/ecc/skills/continuous-learning-v2/agents/observer.md +198 -0
  352. package/resources/ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  353. package/resources/ecc/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  354. package/resources/ecc/skills/continuous-learning-v2/config.json +8 -0
  355. package/resources/ecc/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  356. package/resources/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  357. package/resources/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  358. package/resources/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  359. package/resources/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  360. package/resources/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  361. package/resources/ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
  362. package/resources/ecc/skills/cost-tracking/SKILL.md +147 -0
  363. package/resources/ecc/skills/council/SKILL.md +203 -0
  364. package/resources/ecc/skills/cpp-coding-standards/SKILL.md +723 -0
  365. package/resources/ecc/skills/cpp-testing/SKILL.md +324 -0
  366. package/resources/ecc/skills/crosspost/SKILL.md +1 -0
  367. package/resources/ecc/skills/csharp-testing/SKILL.md +321 -0
  368. package/resources/ecc/skills/customer-billing-ops/SKILL.md +140 -0
  369. package/resources/ecc/skills/customs-trade-compliance/SKILL.md +263 -0
  370. package/resources/ecc/skills/dart-flutter-patterns/SKILL.md +563 -0
  371. package/resources/ecc/skills/dashboard-builder/SKILL.md +108 -0
  372. package/resources/ecc/skills/data-scraper-agent/SKILL.md +764 -0
  373. package/resources/ecc/skills/database-migrations/SKILL.md +429 -0
  374. package/resources/ecc/skills/deep-research/SKILL.md +5 -0
  375. package/resources/ecc/skills/defi-amm-security/SKILL.md +166 -0
  376. package/resources/ecc/skills/deployment-patterns/SKILL.md +427 -0
  377. package/resources/ecc/skills/design-system/SKILL.md +82 -0
  378. package/resources/ecc/skills/django-celery/SKILL.md +457 -0
  379. package/resources/ecc/skills/django-patterns/SKILL.md +734 -0
  380. package/resources/ecc/skills/django-security/SKILL.md +593 -0
  381. package/resources/ecc/skills/django-tdd/SKILL.md +729 -0
  382. package/resources/ecc/skills/django-verification/SKILL.md +469 -0
  383. package/resources/ecc/skills/dmux-workflows/SKILL.md +52 -4
  384. package/resources/ecc/skills/docker-patterns/SKILL.md +364 -0
  385. package/resources/ecc/skills/documentation-lookup/SKILL.md +1 -0
  386. package/resources/ecc/skills/dotnet-patterns/SKILL.md +321 -0
  387. package/resources/ecc/skills/e2e-testing/SKILL.md +1 -0
  388. package/resources/ecc/skills/ecc-guide/SKILL.md +189 -0
  389. package/resources/ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -0
  390. package/resources/ecc/skills/email-ops/SKILL.md +121 -0
  391. package/resources/ecc/skills/energy-procurement/SKILL.md +228 -0
  392. package/resources/ecc/skills/enterprise-agent-ops/SKILL.md +50 -0
  393. package/resources/ecc/skills/error-handling/SKILL.md +376 -0
  394. package/resources/ecc/skills/eval-harness/SKILL.md +36 -1
  395. package/resources/ecc/skills/evm-token-decimals/SKILL.md +130 -0
  396. package/resources/ecc/skills/exa-search/SKILL.md +18 -80
  397. package/resources/ecc/skills/fal-ai-media/SKILL.md +32 -20
  398. package/resources/ecc/skills/fastapi-patterns/SKILL.md +327 -0
  399. package/resources/ecc/skills/finance-billing-ops/SKILL.md +127 -0
  400. package/resources/ecc/skills/flox-environments/SKILL.md +496 -0
  401. package/resources/ecc/skills/flutter-dart-code-review/SKILL.md +435 -0
  402. package/resources/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
  403. package/resources/ecc/skills/frontend-design-direction/SKILL.md +92 -0
  404. package/resources/ecc/skills/frontend-patterns/SKILL.md +1 -6
  405. package/resources/ecc/skills/frontend-slides/SKILL.md +2 -1
  406. package/resources/ecc/skills/frontend-slides/animation-patterns.md +122 -0
  407. package/resources/ecc/skills/frontend-slides/html-template.md +419 -0
  408. package/resources/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  409. package/resources/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  410. package/resources/ecc/skills/frontend-slides/viewport-base.css +153 -0
  411. package/resources/ecc/skills/fsharp-testing/SKILL.md +280 -0
  412. package/resources/ecc/skills/gan-style-harness/SKILL.md +278 -0
  413. package/resources/ecc/skills/gateguard/SKILL.md +125 -0
  414. package/resources/ecc/skills/git-workflow/SKILL.md +715 -0
  415. package/resources/ecc/skills/github-ops/SKILL.md +144 -0
  416. package/resources/ecc/skills/golang-patterns/SKILL.md +674 -0
  417. package/resources/ecc/skills/golang-testing/SKILL.md +720 -0
  418. package/resources/ecc/skills/google-workspace-ops/SKILL.md +95 -0
  419. package/resources/ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  420. package/resources/ecc/skills/healthcare-emr-patterns/SKILL.md +159 -0
  421. package/resources/ecc/skills/healthcare-eval-harness/SKILL.md +207 -0
  422. package/resources/ecc/skills/healthcare-phi-compliance/SKILL.md +145 -0
  423. package/resources/ecc/skills/hermes-imports/SKILL.md +88 -0
  424. package/resources/ecc/skills/hexagonal-architecture/SKILL.md +276 -0
  425. package/resources/ecc/skills/hipaa-compliance/SKILL.md +78 -0
  426. package/resources/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
  427. package/resources/ecc/skills/homelab-network-setup/SKILL.md +129 -0
  428. package/resources/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
  429. package/resources/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  430. package/resources/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  431. package/resources/ecc/skills/hookify-rules/SKILL.md +128 -0
  432. package/resources/ecc/skills/inventory-demand-planning/SKILL.md +247 -0
  433. package/resources/ecc/skills/investor-materials/SKILL.md +1 -0
  434. package/resources/ecc/skills/investor-outreach/SKILL.md +1 -0
  435. package/resources/ecc/skills/ios-icon-gen/SKILL.md +157 -0
  436. package/resources/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  437. package/resources/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  438. package/resources/ecc/skills/iterative-retrieval/SKILL.md +211 -0
  439. package/resources/ecc/skills/java-coding-standards/SKILL.md +383 -0
  440. package/resources/ecc/skills/jira-integration/SKILL.md +293 -0
  441. package/resources/ecc/skills/jpa-patterns/SKILL.md +151 -0
  442. package/resources/ecc/skills/knowledge-ops/SKILL.md +154 -0
  443. package/resources/ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -0
  444. package/resources/ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -0
  445. package/resources/ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -0
  446. package/resources/ecc/skills/kotlin-patterns/SKILL.md +711 -0
  447. package/resources/ecc/skills/kotlin-testing/SKILL.md +824 -0
  448. package/resources/ecc/skills/laravel-patterns/SKILL.md +415 -0
  449. package/resources/ecc/skills/laravel-plugin-discovery/SKILL.md +229 -0
  450. package/resources/ecc/skills/laravel-security/SKILL.md +285 -0
  451. package/resources/ecc/skills/laravel-tdd/SKILL.md +283 -0
  452. package/resources/ecc/skills/laravel-verification/SKILL.md +179 -0
  453. package/resources/ecc/skills/lead-intelligence/SKILL.md +321 -0
  454. package/resources/ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  455. package/resources/ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  456. package/resources/ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  457. package/resources/ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  458. package/resources/ecc/skills/liquid-glass-design/SKILL.md +279 -0
  459. package/resources/ecc/skills/llm-trading-agent-security/SKILL.md +146 -0
  460. package/resources/ecc/skills/logistics-exception-management/SKILL.md +222 -0
  461. package/resources/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
  462. package/resources/ecc/skills/manim-video/SKILL.md +89 -0
  463. package/resources/ecc/skills/manim-video/assets/network_graph_scene.py +52 -0
  464. package/resources/ecc/skills/market-research/SKILL.md +1 -0
  465. package/resources/ecc/skills/mcp-server-patterns/SKILL.md +3 -0
  466. package/resources/ecc/skills/messages-ops/SKILL.md +104 -0
  467. package/resources/ecc/skills/mle-workflow/SKILL.md +1 -1
  468. package/resources/ecc/skills/motion-advanced/SKILL.md +596 -0
  469. package/resources/ecc/skills/motion-foundations/SKILL.md +299 -0
  470. package/resources/ecc/skills/motion-patterns/SKILL.md +435 -0
  471. package/resources/ecc/skills/motion-ui/SKILL.md +575 -0
  472. package/resources/ecc/skills/mysql-patterns/SKILL.md +412 -0
  473. package/resources/ecc/skills/nanoclaw-repl/SKILL.md +33 -0
  474. package/resources/ecc/skills/nestjs-patterns/SKILL.md +230 -0
  475. package/resources/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
  476. package/resources/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
  477. package/resources/ecc/skills/network-config-validation/SKILL.md +210 -0
  478. package/resources/ecc/skills/network-interface-health/SKILL.md +152 -0
  479. package/resources/ecc/skills/nextjs-turbopack/SKILL.md +1 -0
  480. package/resources/ecc/skills/nodejs-keccak256/SKILL.md +102 -0
  481. package/resources/ecc/skills/nutrient-document-processing/SKILL.md +167 -0
  482. package/resources/ecc/skills/nuxt4-patterns/SKILL.md +100 -0
  483. package/resources/ecc/skills/openclaw-persona-forge/SKILL.md +288 -0
  484. package/resources/ecc/skills/openclaw-persona-forge/gacha.py +224 -0
  485. package/resources/ecc/skills/openclaw-persona-forge/gacha.sh +5 -0
  486. package/resources/ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  487. package/resources/ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  488. package/resources/ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  489. package/resources/ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  490. package/resources/ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  491. package/resources/ecc/skills/openclaw-persona-forge/references/output-template.md +166 -0
  492. package/resources/ecc/skills/opensource-pipeline/SKILL.md +255 -0
  493. package/resources/ecc/skills/perl-patterns/SKILL.md +504 -0
  494. package/resources/ecc/skills/perl-security/SKILL.md +503 -0
  495. package/resources/ecc/skills/perl-testing/SKILL.md +475 -0
  496. package/resources/ecc/skills/plan-orchestrate/SKILL.md +262 -0
  497. package/resources/ecc/skills/plankton-code-quality/SKILL.md +236 -0
  498. package/resources/ecc/skills/postgres-patterns/SKILL.md +147 -0
  499. package/resources/ecc/skills/product-capability/SKILL.md +1 -0
  500. package/resources/ecc/skills/product-lens/SKILL.md +92 -0
  501. package/resources/ecc/skills/production-audit/SKILL.md +206 -0
  502. package/resources/ecc/skills/production-scheduling/SKILL.md +238 -0
  503. package/resources/ecc/skills/project-flow-ops/SKILL.md +111 -0
  504. package/resources/ecc/skills/prompt-optimizer/SKILL.md +398 -0
  505. package/resources/ecc/skills/python-patterns/SKILL.md +750 -0
  506. package/resources/ecc/skills/python-testing/SKILL.md +816 -0
  507. package/resources/ecc/skills/pytorch-patterns/SKILL.md +396 -0
  508. package/resources/ecc/skills/quality-nonconformance/SKILL.md +260 -0
  509. package/resources/ecc/skills/quarkus-patterns/SKILL.md +722 -0
  510. package/resources/ecc/skills/quarkus-security/SKILL.md +467 -0
  511. package/resources/ecc/skills/quarkus-tdd/SKILL.md +811 -0
  512. package/resources/ecc/skills/quarkus-verification/SKILL.md +479 -0
  513. package/resources/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
  514. package/resources/ecc/skills/redis-patterns/SKILL.md +403 -0
  515. package/resources/ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
  516. package/resources/ecc/skills/remotion-video-creation/SKILL.md +43 -0
  517. package/resources/ecc/skills/remotion-video-creation/rules/3d.md +86 -0
  518. package/resources/ecc/skills/remotion-video-creation/rules/animations.md +29 -0
  519. package/resources/ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  520. package/resources/ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  521. package/resources/ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  522. package/resources/ecc/skills/remotion-video-creation/rules/assets.md +78 -0
  523. package/resources/ecc/skills/remotion-video-creation/rules/audio.md +172 -0
  524. package/resources/ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  525. package/resources/ecc/skills/remotion-video-creation/rules/can-decode.md +75 -0
  526. package/resources/ecc/skills/remotion-video-creation/rules/charts.md +58 -0
  527. package/resources/ecc/skills/remotion-video-creation/rules/compositions.md +146 -0
  528. package/resources/ecc/skills/remotion-video-creation/rules/display-captions.md +126 -0
  529. package/resources/ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  530. package/resources/ecc/skills/remotion-video-creation/rules/fonts.md +152 -0
  531. package/resources/ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  532. package/resources/ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  533. package/resources/ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  534. package/resources/ecc/skills/remotion-video-creation/rules/gifs.md +138 -0
  535. package/resources/ecc/skills/remotion-video-creation/rules/images.md +130 -0
  536. package/resources/ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  537. package/resources/ecc/skills/remotion-video-creation/rules/lottie.md +67 -0
  538. package/resources/ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  539. package/resources/ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  540. package/resources/ecc/skills/remotion-video-creation/rules/sequencing.md +106 -0
  541. package/resources/ecc/skills/remotion-video-creation/rules/tailwind.md +11 -0
  542. package/resources/ecc/skills/remotion-video-creation/rules/text-animations.md +20 -0
  543. package/resources/ecc/skills/remotion-video-creation/rules/timing.md +179 -0
  544. package/resources/ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  545. package/resources/ecc/skills/remotion-video-creation/rules/transitions.md +122 -0
  546. package/resources/ecc/skills/remotion-video-creation/rules/trimming.md +52 -0
  547. package/resources/ecc/skills/remotion-video-creation/rules/videos.md +171 -0
  548. package/resources/ecc/skills/repo-scan/SKILL.md +78 -0
  549. package/resources/ecc/skills/research-ops/SKILL.md +112 -0
  550. package/resources/ecc/skills/returns-reverse-logistics/SKILL.md +240 -0
  551. package/resources/ecc/skills/rules-distill/SKILL.md +264 -0
  552. package/resources/ecc/skills/rules-distill/scripts/scan-rules.sh +58 -0
  553. package/resources/ecc/skills/rules-distill/scripts/scan-skills.sh +129 -0
  554. package/resources/ecc/skills/rust-patterns/SKILL.md +499 -0
  555. package/resources/ecc/skills/rust-testing/SKILL.md +500 -0
  556. package/resources/ecc/skills/safety-guard/SKILL.md +75 -0
  557. package/resources/ecc/skills/santa-method/SKILL.md +306 -0
  558. package/resources/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  559. package/resources/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
  560. package/resources/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
  561. package/resources/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  562. package/resources/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  563. package/resources/ecc/skills/search-first/SKILL.md +182 -0
  564. package/resources/ecc/skills/security-bounty-hunter/SKILL.md +99 -0
  565. package/resources/ecc/skills/security-review/SKILL.md +11 -2
  566. package/resources/ecc/skills/security-review/cloud-infrastructure-security.md +361 -0
  567. package/resources/ecc/skills/security-scan/SKILL.md +165 -0
  568. package/resources/ecc/skills/seo/SKILL.md +154 -0
  569. package/resources/ecc/skills/skill-comply/SKILL.md +58 -0
  570. package/resources/ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  571. package/resources/ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  572. package/resources/ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  573. package/resources/ecc/skills/skill-comply/prompts/classifier.md +24 -0
  574. package/resources/ecc/skills/skill-comply/prompts/scenario_generator.md +62 -0
  575. package/resources/ecc/skills/skill-comply/prompts/spec_generator.md +42 -0
  576. package/resources/ecc/skills/skill-comply/pyproject.toml +15 -0
  577. package/resources/ecc/skills/skill-comply/scripts/__init__.py +0 -0
  578. package/resources/ecc/skills/skill-comply/scripts/classifier.py +85 -0
  579. package/resources/ecc/skills/skill-comply/scripts/grader.py +124 -0
  580. package/resources/ecc/skills/skill-comply/scripts/parser.py +107 -0
  581. package/resources/ecc/skills/skill-comply/scripts/report.py +170 -0
  582. package/resources/ecc/skills/skill-comply/scripts/run.py +127 -0
  583. package/resources/ecc/skills/skill-comply/scripts/runner.py +186 -0
  584. package/resources/ecc/skills/skill-comply/scripts/scenario_generator.py +70 -0
  585. package/resources/ecc/skills/skill-comply/scripts/spec_generator.py +72 -0
  586. package/resources/ecc/skills/skill-comply/scripts/utils.py +13 -0
  587. package/resources/ecc/skills/skill-comply/tests/test_grader.py +197 -0
  588. package/resources/ecc/skills/skill-comply/tests/test_parser.py +90 -0
  589. package/resources/ecc/skills/skill-comply/tests/test_runner.py +172 -0
  590. package/resources/ecc/skills/skill-scout/SKILL.md +140 -0
  591. package/resources/ecc/skills/skill-stocktake/SKILL.md +194 -0
  592. package/resources/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  593. package/resources/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
  594. package/resources/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
  595. package/resources/ecc/skills/social-graph-ranker/SKILL.md +154 -0
  596. package/resources/ecc/skills/springboot-patterns/SKILL.md +314 -0
  597. package/resources/ecc/skills/springboot-security/SKILL.md +272 -0
  598. package/resources/ecc/skills/springboot-tdd/SKILL.md +158 -0
  599. package/resources/ecc/skills/springboot-verification/SKILL.md +231 -0
  600. package/resources/ecc/skills/strategic-compact/SKILL.md +31 -2
  601. package/resources/ecc/skills/strategic-compact/suggest-compact.sh +54 -0
  602. package/resources/ecc/skills/swift-actor-persistence/SKILL.md +143 -0
  603. package/resources/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
  604. package/resources/ecc/skills/swift-protocol-di-testing/SKILL.md +190 -0
  605. package/resources/ecc/skills/swiftui-patterns/SKILL.md +259 -0
  606. package/resources/ecc/skills/tdd-workflow/SKILL.md +54 -0
  607. package/resources/ecc/skills/team-builder/SKILL.md +168 -0
  608. package/resources/ecc/skills/terminal-ops/SKILL.md +109 -0
  609. package/resources/ecc/skills/tinystruct-patterns/SKILL.md +131 -0
  610. package/resources/ecc/skills/tinystruct-patterns/references/architecture.md +77 -0
  611. package/resources/ecc/skills/tinystruct-patterns/references/data-handling.md +35 -0
  612. package/resources/ecc/skills/tinystruct-patterns/references/routing.md +57 -0
  613. package/resources/ecc/skills/tinystruct-patterns/references/system-usage.md +74 -0
  614. package/resources/ecc/skills/tinystruct-patterns/references/testing.md +59 -0
  615. package/resources/ecc/skills/token-budget-advisor/SKILL.md +133 -0
  616. package/resources/ecc/skills/ui-demo/SKILL.md +465 -0
  617. package/resources/ecc/skills/ui-to-vue/SKILL.md +134 -0
  618. package/resources/ecc/skills/unified-notifications-ops/SKILL.md +187 -0
  619. package/resources/ecc/skills/verification-loop/SKILL.md +1 -0
  620. package/resources/ecc/skills/video-editing/SKILL.md +4 -1
  621. package/resources/ecc/skills/videodb/SKILL.md +374 -0
  622. package/resources/ecc/skills/videodb/reference/api-reference.md +550 -0
  623. package/resources/ecc/skills/videodb/reference/capture-reference.md +407 -0
  624. package/resources/ecc/skills/videodb/reference/capture.md +101 -0
  625. package/resources/ecc/skills/videodb/reference/editor.md +443 -0
  626. package/resources/ecc/skills/videodb/reference/generative.md +331 -0
  627. package/resources/ecc/skills/videodb/reference/rtstream-reference.md +564 -0
  628. package/resources/ecc/skills/videodb/reference/rtstream.md +65 -0
  629. package/resources/ecc/skills/videodb/reference/search.md +230 -0
  630. package/resources/ecc/skills/videodb/reference/streaming.md +406 -0
  631. package/resources/ecc/skills/videodb/reference/use-cases.md +118 -0
  632. package/resources/ecc/skills/videodb/scripts/ws_listener.py +282 -0
  633. package/resources/ecc/skills/visa-doc-translate/README.md +86 -0
  634. package/resources/ecc/skills/visa-doc-translate/SKILL.md +117 -0
  635. package/resources/ecc/skills/vite-patterns/SKILL.md +449 -0
  636. package/resources/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
  637. package/resources/ecc/skills/workspace-surface-audit/SKILL.md +125 -0
  638. package/resources/ecc/skills/x-api/SKILL.md +5 -0
  639. package/resources/ecc/agents/architect.json +0 -16
  640. package/resources/ecc/agents/build-error-resolver.json +0 -17
  641. package/resources/ecc/agents/chief-of-staff.json +0 -17
  642. package/resources/ecc/agents/code-reviewer.json +0 -16
  643. package/resources/ecc/agents/database-reviewer.json +0 -16
  644. package/resources/ecc/agents/doc-updater.json +0 -16
  645. package/resources/ecc/agents/e2e-runner.json +0 -17
  646. package/resources/ecc/agents/go-build-resolver.json +0 -17
  647. package/resources/ecc/agents/go-reviewer.json +0 -16
  648. package/resources/ecc/agents/harness-optimizer.json +0 -15
  649. package/resources/ecc/agents/loop-operator.json +0 -16
  650. package/resources/ecc/agents/planner.json +0 -15
  651. package/resources/ecc/agents/python-reviewer.json +0 -16
  652. package/resources/ecc/agents/refactor-cleaner.json +0 -17
  653. package/resources/ecc/agents/security-reviewer.json +0 -16
  654. package/resources/ecc/agents/tdd-guide.json +0 -17
  655. package/resources/ecc/commands/add-language-rules.md +0 -39
  656. package/resources/ecc/commands/database-migration.md +0 -36
  657. package/resources/ecc/commands/feature-development.md +0 -38
  658. package/resources/ecc/rules/common-development-workflow.md +0 -33
  659. package/resources/ecc/rules/kotlin-coding-style.md +0 -39
  660. package/resources/ecc/rules/kotlin-patterns.md +0 -50
  661. package/resources/ecc/rules/kotlin-security.md +0 -58
  662. package/resources/ecc/rules/kotlin-testing.md +0 -38
  663. package/resources/ecc/rules/php-coding-style.md +0 -25
  664. package/resources/ecc/rules/php-patterns.md +0 -23
  665. package/resources/ecc/rules/php-security.md +0 -24
  666. package/resources/ecc/rules/php-testing.md +0 -26
  667. package/resources/ecc/rules/swift-hooks.md +0 -20
  668. package/resources/ecc/rules/typescript-coding-style.md +0 -63
  669. package/resources/ecc/rules/typescript-testing.md +0 -16
  670. package/resources/ecc/skills/agent-introspection-debugging/agents/openai.yaml +0 -7
  671. package/resources/ecc/skills/agent-sort/agents/openai.yaml +0 -7
  672. package/resources/ecc/skills/api-design/agents/openai.yaml +0 -7
  673. package/resources/ecc/skills/article-writing/agents/openai.yaml +0 -7
  674. package/resources/ecc/skills/backend-patterns/agents/openai.yaml +0 -7
  675. package/resources/ecc/skills/brand-voice/agents/openai.yaml +0 -7
  676. package/resources/ecc/skills/bun-runtime/agents/openai.yaml +0 -7
  677. package/resources/ecc/skills/coding-standards/agents/openai.yaml +0 -7
  678. package/resources/ecc/skills/content-engine/agents/openai.yaml +0 -7
  679. package/resources/ecc/skills/crosspost/agents/openai.yaml +0 -7
  680. package/resources/ecc/skills/deep-research/agents/openai.yaml +0 -7
  681. package/resources/ecc/skills/dmux-workflows/agents/openai.yaml +0 -7
  682. package/resources/ecc/skills/documentation-lookup/agents/openai.yaml +0 -7
  683. package/resources/ecc/skills/e2e-testing/agents/openai.yaml +0 -7
  684. package/resources/ecc/skills/eval-harness/agents/openai.yaml +0 -7
  685. package/resources/ecc/skills/everything-claude-code/SKILL.md +0 -442
  686. package/resources/ecc/skills/everything-claude-code/agents/openai.yaml +0 -7
  687. package/resources/ecc/skills/exa-search/agents/openai.yaml +0 -7
  688. package/resources/ecc/skills/fal-ai-media/agents/openai.yaml +0 -7
  689. package/resources/ecc/skills/frontend-patterns/agents/openai.yaml +0 -7
  690. package/resources/ecc/skills/frontend-slides/agents/openai.yaml +0 -7
  691. package/resources/ecc/skills/investor-materials/agents/openai.yaml +0 -7
  692. package/resources/ecc/skills/investor-outreach/agents/openai.yaml +0 -7
  693. package/resources/ecc/skills/market-research/agents/openai.yaml +0 -7
  694. package/resources/ecc/skills/mcp-server-patterns/agents/openai.yaml +0 -7
  695. package/resources/ecc/skills/mle-workflow/agents/openai.yaml +0 -7
  696. package/resources/ecc/skills/nextjs-turbopack/agents/openai.yaml +0 -7
  697. package/resources/ecc/skills/product-capability/agents/openai.yaml +0 -7
  698. package/resources/ecc/skills/security-review/agents/openai.yaml +0 -7
  699. package/resources/ecc/skills/strategic-compact/agents/openai.yaml +0 -7
  700. package/resources/ecc/skills/tdd-workflow/agents/openai.yaml +0 -7
  701. package/resources/ecc/skills/verification-loop/agents/openai.yaml +0 -7
  702. package/resources/ecc/skills/video-editing/agents/openai.yaml +0 -7
  703. package/resources/ecc/skills/x-api/agents/openai.yaml +0 -7
@@ -0,0 +1,151 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Coding Style
6
+
7
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Rust-specific content.
8
+
9
+ ## Formatting
10
+
11
+ - **rustfmt** for enforcement — always run `cargo fmt` before committing
12
+ - **clippy** for lints — `cargo clippy -- -D warnings` (treat warnings as errors)
13
+ - 4-space indent (rustfmt default)
14
+ - Max line width: 100 characters (rustfmt default)
15
+
16
+ ## Immutability
17
+
18
+ Rust variables are immutable by default — embrace this:
19
+
20
+ - Use `let` by default; only use `let mut` when mutation is required
21
+ - Prefer returning new values over mutating in place
22
+ - Use `Cow<'_, T>` when a function may or may not need to allocate
23
+
24
+ ```rust
25
+ use std::borrow::Cow;
26
+
27
+ // GOOD — immutable by default, new value returned
28
+ fn normalize(input: &str) -> Cow<'_, str> {
29
+ if input.contains(' ') {
30
+ Cow::Owned(input.replace(' ', "_"))
31
+ } else {
32
+ Cow::Borrowed(input)
33
+ }
34
+ }
35
+
36
+ // BAD — unnecessary mutation
37
+ fn normalize_bad(input: &mut String) {
38
+ *input = input.replace(' ', "_");
39
+ }
40
+ ```
41
+
42
+ ## Naming
43
+
44
+ Follow standard Rust conventions:
45
+ - `snake_case` for functions, methods, variables, modules, crates
46
+ - `PascalCase` (UpperCamelCase) for types, traits, enums, type parameters
47
+ - `SCREAMING_SNAKE_CASE` for constants and statics
48
+ - Lifetimes: short lowercase (`'a`, `'de`) — descriptive names for complex cases (`'input`)
49
+
50
+ ## Ownership and Borrowing
51
+
52
+ - Borrow (`&T`) by default; take ownership only when you need to store or consume
53
+ - Never clone to satisfy the borrow checker without understanding the root cause
54
+ - Accept `&str` over `String`, `&[T]` over `Vec<T>` in function parameters
55
+ - Use `impl Into<String>` for constructors that need to own a `String`
56
+
57
+ ```rust
58
+ // GOOD — borrows when ownership isn't needed
59
+ fn word_count(text: &str) -> usize {
60
+ text.split_whitespace().count()
61
+ }
62
+
63
+ // GOOD — takes ownership in constructor via Into
64
+ fn new(name: impl Into<String>) -> Self {
65
+ Self { name: name.into() }
66
+ }
67
+
68
+ // BAD — takes String when &str suffices
69
+ fn word_count_bad(text: String) -> usize {
70
+ text.split_whitespace().count()
71
+ }
72
+ ```
73
+
74
+ ## Error Handling
75
+
76
+ - Use `Result<T, E>` and `?` for propagation — never `unwrap()` in production code
77
+ - **Libraries**: define typed errors with `thiserror`
78
+ - **Applications**: use `anyhow` for flexible error context
79
+ - Add context with `.with_context(|| format!("failed to ..."))?`
80
+ - Reserve `unwrap()` / `expect()` for tests and truly unreachable states
81
+
82
+ ```rust
83
+ // GOOD — library error with thiserror
84
+ #[derive(Debug, thiserror::Error)]
85
+ pub enum ConfigError {
86
+ #[error("failed to read config: {0}")]
87
+ Io(#[from] std::io::Error),
88
+ #[error("invalid config format: {0}")]
89
+ Parse(String),
90
+ }
91
+
92
+ // GOOD — application error with anyhow
93
+ use anyhow::Context;
94
+
95
+ fn load_config(path: &str) -> anyhow::Result<Config> {
96
+ let content = std::fs::read_to_string(path)
97
+ .with_context(|| format!("failed to read {path}"))?;
98
+ toml::from_str(&content)
99
+ .with_context(|| format!("failed to parse {path}"))
100
+ }
101
+ ```
102
+
103
+ ## Iterators Over Loops
104
+
105
+ Prefer iterator chains for transformations; use loops for complex control flow:
106
+
107
+ ```rust
108
+ // GOOD — declarative and composable
109
+ let active_emails: Vec<&str> = users.iter()
110
+ .filter(|u| u.is_active)
111
+ .map(|u| u.email.as_str())
112
+ .collect();
113
+
114
+ // GOOD — loop for complex logic with early returns
115
+ for user in &users {
116
+ if let Some(verified) = verify_email(&user.email)? {
117
+ send_welcome(&verified)?;
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## Module Organization
123
+
124
+ Organize by domain, not by type:
125
+
126
+ ```text
127
+ src/
128
+ ├── main.rs
129
+ ├── lib.rs
130
+ ├── auth/ # Domain module
131
+ │ ├── mod.rs
132
+ │ ├── token.rs
133
+ │ └── middleware.rs
134
+ ├── orders/ # Domain module
135
+ │ ├── mod.rs
136
+ │ ├── model.rs
137
+ │ └── service.rs
138
+ └── db/ # Infrastructure
139
+ ├── mod.rs
140
+ └── pool.rs
141
+ ```
142
+
143
+ ## Visibility
144
+
145
+ - Default to private; use `pub(crate)` for internal sharing
146
+ - Only mark `pub` what is part of the crate's public API
147
+ - Re-export public API from `lib.rs`
148
+
149
+ ## References
150
+
151
+ See skill: `rust-patterns` for comprehensive Rust idioms and patterns.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ - "**/Cargo.toml"
5
+ ---
6
+ # Rust Hooks
7
+
8
+ > This file extends [common/hooks.md](../common/hooks.md) with Rust-specific content.
9
+
10
+ ## PostToolUse Hooks
11
+
12
+ Configure in `~/.claude/settings.json`:
13
+
14
+ - **cargo fmt**: Auto-format `.rs` files after edit
15
+ - **cargo clippy**: Run lint checks after editing Rust files
16
+ - **cargo check**: Verify compilation after changes (faster than `cargo build`)
@@ -0,0 +1,168 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Patterns
6
+
7
+ > This file extends [common/patterns.md](../common/patterns.md) with Rust-specific content.
8
+
9
+ ## Repository Pattern with Traits
10
+
11
+ Encapsulate data access behind a trait:
12
+
13
+ ```rust
14
+ pub trait OrderRepository: Send + Sync {
15
+ fn find_by_id(&self, id: u64) -> Result<Option<Order>, StorageError>;
16
+ fn find_all(&self) -> Result<Vec<Order>, StorageError>;
17
+ fn save(&self, order: &Order) -> Result<Order, StorageError>;
18
+ fn delete(&self, id: u64) -> Result<(), StorageError>;
19
+ }
20
+ ```
21
+
22
+ Concrete implementations handle storage details (Postgres, SQLite, in-memory for tests).
23
+
24
+ ## Service Layer
25
+
26
+ Business logic in service structs; inject dependencies via constructor:
27
+
28
+ ```rust
29
+ pub struct OrderService {
30
+ repo: Box<dyn OrderRepository>,
31
+ payment: Box<dyn PaymentGateway>,
32
+ }
33
+
34
+ impl OrderService {
35
+ pub fn new(repo: Box<dyn OrderRepository>, payment: Box<dyn PaymentGateway>) -> Self {
36
+ Self { repo, payment }
37
+ }
38
+
39
+ pub fn place_order(&self, request: CreateOrderRequest) -> anyhow::Result<OrderSummary> {
40
+ let order = Order::from(request);
41
+ self.payment.charge(order.total())?;
42
+ let saved = self.repo.save(&order)?;
43
+ Ok(OrderSummary::from(saved))
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Newtype Pattern for Type Safety
49
+
50
+ Prevent argument mix-ups with distinct wrapper types:
51
+
52
+ ```rust
53
+ struct UserId(u64);
54
+ struct OrderId(u64);
55
+
56
+ fn get_order(user: UserId, order: OrderId) -> anyhow::Result<Order> {
57
+ // Can't accidentally swap user and order IDs at call sites
58
+ todo!()
59
+ }
60
+ ```
61
+
62
+ ## Enum State Machines
63
+
64
+ Model states as enums — make illegal states unrepresentable:
65
+
66
+ ```rust
67
+ enum ConnectionState {
68
+ Disconnected,
69
+ Connecting { attempt: u32 },
70
+ Connected { session_id: String },
71
+ Failed { reason: String, retries: u32 },
72
+ }
73
+
74
+ fn handle(state: &ConnectionState) {
75
+ match state {
76
+ ConnectionState::Disconnected => connect(),
77
+ ConnectionState::Connecting { attempt } if *attempt > 3 => abort(),
78
+ ConnectionState::Connecting { .. } => wait(),
79
+ ConnectionState::Connected { session_id } => use_session(session_id),
80
+ ConnectionState::Failed { retries, .. } if *retries < 5 => retry(),
81
+ ConnectionState::Failed { reason, .. } => log_failure(reason),
82
+ }
83
+ }
84
+ ```
85
+
86
+ Always match exhaustively — no wildcard `_` for business-critical enums.
87
+
88
+ ## Builder Pattern
89
+
90
+ Use for structs with many optional parameters:
91
+
92
+ ```rust
93
+ pub struct ServerConfig {
94
+ host: String,
95
+ port: u16,
96
+ max_connections: usize,
97
+ }
98
+
99
+ impl ServerConfig {
100
+ pub fn builder(host: impl Into<String>, port: u16) -> ServerConfigBuilder {
101
+ ServerConfigBuilder {
102
+ host: host.into(),
103
+ port,
104
+ max_connections: 100,
105
+ }
106
+ }
107
+ }
108
+
109
+ pub struct ServerConfigBuilder {
110
+ host: String,
111
+ port: u16,
112
+ max_connections: usize,
113
+ }
114
+
115
+ impl ServerConfigBuilder {
116
+ pub fn max_connections(mut self, n: usize) -> Self {
117
+ self.max_connections = n;
118
+ self
119
+ }
120
+
121
+ pub fn build(self) -> ServerConfig {
122
+ ServerConfig {
123
+ host: self.host,
124
+ port: self.port,
125
+ max_connections: self.max_connections,
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ## Sealed Traits for Extensibility Control
132
+
133
+ Use a private module to seal a trait, preventing external implementations:
134
+
135
+ ```rust
136
+ mod private {
137
+ pub trait Sealed {}
138
+ }
139
+
140
+ pub trait Format: private::Sealed {
141
+ fn encode(&self, data: &[u8]) -> Vec<u8>;
142
+ }
143
+
144
+ pub struct Json;
145
+ impl private::Sealed for Json {}
146
+ impl Format for Json {
147
+ fn encode(&self, data: &[u8]) -> Vec<u8> { todo!() }
148
+ }
149
+ ```
150
+
151
+ ## API Response Envelope
152
+
153
+ Consistent API responses using a generic enum:
154
+
155
+ ```rust
156
+ #[derive(Debug, serde::Serialize)]
157
+ #[serde(tag = "status")]
158
+ pub enum ApiResponse<T: serde::Serialize> {
159
+ #[serde(rename = "ok")]
160
+ Ok { data: T },
161
+ #[serde(rename = "error")]
162
+ Error { message: String },
163
+ }
164
+ ```
165
+
166
+ ## References
167
+
168
+ See skill: `rust-patterns` for comprehensive patterns including ownership, traits, generics, concurrency, and async.
@@ -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.
@@ -1,11 +1,11 @@
1
1
  ---
2
- description: "Swift coding style extending common rules"
3
- globs: ["**/*.swift", "**/Package.swift"]
4
- alwaysApply: false
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
5
  ---
6
6
  # Swift Coding Style
7
7
 
8
- > This file extends the common coding style rule with Swift specific content.
8
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Swift specific content.
9
9
 
10
10
  ## Formatting
11
11
 
@@ -14,14 +14,14 @@ alwaysApply: false
14
14
 
15
15
  ## Immutability
16
16
 
17
- - Prefer `let` over `var` -- define everything as `let` and only change to `var` if the compiler requires it
17
+ - Prefer `let` over `var` define everything as `let` and only change to `var` if the compiler requires it
18
18
  - Use `struct` with value semantics by default; use `class` only when identity or reference semantics are needed
19
19
 
20
20
  ## Naming
21
21
 
22
22
  Follow [Apple API Design Guidelines](https://www.swift.org/documentation/api-design-guidelines/):
23
23
 
24
- - Clarity at the point of use -- omit needless words
24
+ - Clarity at the point of use omit needless words
25
25
  - Name methods and properties for their roles, not their types
26
26
  - Use `static let` for constants over global constants
27
27
 
@@ -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.
@@ -1,11 +1,11 @@
1
1
  ---
2
- description: "Swift patterns extending common rules"
3
- globs: ["**/*.swift", "**/Package.swift"]
4
- alwaysApply: false
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
5
  ---
6
6
  # Swift Patterns
7
7
 
8
- > This file extends the common patterns rule with Swift specific content.
8
+ > This file extends [common/patterns.md](../common/patterns.md) with Swift specific content.
9
9
 
10
10
  ## Protocol-Oriented Design
11
11
 
@@ -48,7 +48,7 @@ actor Cache<Key: Hashable & Sendable, Value: Sendable> {
48
48
 
49
49
  ## Dependency Injection
50
50
 
51
- Inject protocols with default parameters -- production uses defaults, tests inject mocks:
51
+ Inject protocols with default parameters production uses defaults, tests inject mocks:
52
52
 
53
53
  ```swift
54
54
  struct UserService {