exonous 0.0.0-stage → 2.10.4

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 (385) hide show
  1. package/README.md +100 -2
  2. package/assets/THIRD-PARTY-NOTICES.md +29 -0
  3. package/assets/adapters/opencode/exonous.js +54 -0
  4. package/assets/agents/exo-backend.md +22 -0
  5. package/assets/agents/exo-cto.md +22 -0
  6. package/assets/agents/exo-data-ai.md +22 -0
  7. package/assets/agents/exo-designer.md +22 -0
  8. package/assets/agents/exo-devops.md +22 -0
  9. package/assets/agents/exo-frontend.md +22 -0
  10. package/assets/agents/exo-infra.md +22 -0
  11. package/assets/agents/exo-mobile.md +22 -0
  12. package/assets/agents/exo-pm.md +22 -0
  13. package/assets/agents/exo-qa.md +22 -0
  14. package/assets/agents/exo-researcher.md +22 -0
  15. package/assets/agents/exo-security.md +22 -0
  16. package/assets/agents/roster.json +209 -0
  17. package/assets/agents/taxis.js +189 -0
  18. package/assets/editors/cursor/frontend-skills.mdc +27 -0
  19. package/assets/editors/hooks/cursor/hooks.json +11 -0
  20. package/assets/machine/PR-TEMPLATE.md +21 -0
  21. package/assets/machine/hooks/anamnesis.cjs +61 -0
  22. package/assets/machine/hooks/ethos.cjs +48 -0
  23. package/assets/machine/hooks/kairos.cjs +46 -0
  24. package/assets/machine/hooks/lib/cli-options.cjs +133 -0
  25. package/assets/machine/hooks/lib/memory.cjs +488 -0
  26. package/assets/machine/hooks/lib/metron.cjs +52 -0
  27. package/assets/machine/hooks/lib/paths.cjs +99 -0
  28. package/assets/machine/hooks/lib/payload.cjs +81 -0
  29. package/assets/machine/hooks/lib/pr-template-validate.cjs +103 -0
  30. package/assets/machine/hooks/lib/release.cjs +58 -0
  31. package/assets/machine/hooks/lib/repo.cjs +138 -0
  32. package/assets/machine/hooks/lib/sanitize.cjs +37 -0
  33. package/assets/machine/hooks/lib/selfupdate.cjs +354 -0
  34. package/assets/machine/hooks/lib/shell.cjs +722 -0
  35. package/assets/machine/hooks/lib/template.cjs +70 -0
  36. package/assets/machine/hooks/lib/token.cjs +110 -0
  37. package/assets/machine/hooks/lib/validate-pr-body.cjs +21 -0
  38. package/assets/machine/hooks/pyle.cjs +302 -0
  39. package/assets/rules/nomos.md +59 -0
  40. package/assets/rules/praxis.md +38 -0
  41. package/assets/skills/code-review/SKILL.md +124 -0
  42. package/assets/skills/commit-changes/SKILL.md +49 -0
  43. package/assets/skills/deliver/SKILL.md +114 -0
  44. package/assets/skills/deliver/references/parallel.md +37 -0
  45. package/assets/skills/doc/SKILL.md +140 -0
  46. package/assets/skills/doc/doc.mjs +277 -0
  47. package/assets/skills/issue-board/SKILL.md +84 -0
  48. package/assets/skills/issue-board/board.mjs +389 -0
  49. package/assets/skills/issue-board/config.example.json +9 -0
  50. package/assets/skills/issue-board/render.py +189 -0
  51. package/assets/skills/make-pr/SKILL.md +24 -0
  52. package/assets/skills/native-ui/SKILL.md +67 -0
  53. package/assets/skills/native-ui/reference/apple.md +180 -0
  54. package/assets/skills/native-ui/reference/mobile-feel.md +221 -0
  55. package/assets/skills/native-ui/reference/swift.md +289 -0
  56. package/assets/skills/project-memory/SKILL.md +59 -0
  57. package/assets/skills/project-memory/config.example.json +4 -0
  58. package/assets/skills/project-memory/project-memory.mjs +478 -0
  59. package/assets/skills/security-review/SKILL.md +102 -0
  60. package/assets/skills/session-handoff/SKILL.md +23 -0
  61. package/assets/skills/session-handoff/config.example.json +3 -0
  62. package/assets/skills/ui-design/SKILL.md +75 -0
  63. package/assets/skills/ui-design/reference/adapt.md +151 -0
  64. package/assets/skills/ui-design/reference/adapt.native.md +35 -0
  65. package/assets/skills/ui-design/reference/android.md +50 -0
  66. package/assets/skills/ui-design/reference/animate.md +87 -0
  67. package/assets/skills/ui-design/reference/audit.md +76 -0
  68. package/assets/skills/ui-design/reference/audit.native.md +126 -0
  69. package/assets/skills/ui-design/reference/bolder.md +33 -0
  70. package/assets/skills/ui-design/reference/clarify.md +84 -0
  71. package/assets/skills/ui-design/reference/colorize.md +86 -0
  72. package/assets/skills/ui-design/reference/craft-floor.md +25 -0
  73. package/assets/skills/ui-design/reference/critique.md +345 -0
  74. package/assets/skills/ui-design/reference/degraded/asset-producer.md +35 -0
  75. package/assets/skills/ui-design/reference/degraded/documenter.md +23 -0
  76. package/assets/skills/ui-design/reference/degraded/finish-reviewer.md +43 -0
  77. package/assets/skills/ui-design/reference/degraded/manual-edit-applier.md +56 -0
  78. package/assets/skills/ui-design/reference/delight.md +63 -0
  79. package/assets/skills/ui-design/reference/distill.md +98 -0
  80. package/assets/skills/ui-design/reference/doctor.md +49 -0
  81. package/assets/skills/ui-design/reference/document.md +273 -0
  82. package/assets/skills/ui-design/reference/extract.md +52 -0
  83. package/assets/skills/ui-design/reference/harden.md +122 -0
  84. package/assets/skills/ui-design/reference/hooks.md +114 -0
  85. package/assets/skills/ui-design/reference/init.md +47 -0
  86. package/assets/skills/ui-design/reference/ios.md +55 -0
  87. package/assets/skills/ui-design/reference/layout.md +81 -0
  88. package/assets/skills/ui-design/reference/live-setup.md +75 -0
  89. package/assets/skills/ui-design/reference/live.md +326 -0
  90. package/assets/skills/ui-design/reference/new-work.md +350 -0
  91. package/assets/skills/ui-design/reference/onboard.md +85 -0
  92. package/assets/skills/ui-design/reference/operate.md +29 -0
  93. package/assets/skills/ui-design/reference/optimize.md +101 -0
  94. package/assets/skills/ui-design/reference/overdrive.md +83 -0
  95. package/assets/skills/ui-design/reference/polish.md +77 -0
  96. package/assets/skills/ui-design/reference/quieter.md +95 -0
  97. package/assets/skills/ui-design/reference/routing.md +37 -0
  98. package/assets/skills/ui-design/reference/shape.md +43 -0
  99. package/assets/skills/ui-design/reference/styles/brutalist.md +45 -0
  100. package/assets/skills/ui-design/reference/styles/design-md.md +70 -0
  101. package/assets/skills/ui-design/reference/styles/direction.md +95 -0
  102. package/assets/skills/ui-design/reference/styles/full-output.md +42 -0
  103. package/assets/skills/ui-design/reference/styles/minimalist.md +64 -0
  104. package/assets/skills/ui-design/reference/styles/premium.md +65 -0
  105. package/assets/skills/ui-design/reference/styles/redesign.md +59 -0
  106. package/assets/skills/ui-design/reference/typeset.md +73 -0
  107. package/assets/skills/ui-design/reference/visualize.md +156 -0
  108. package/assets/skills/ui-design/scripts/ENGINE-LICENSE +191 -0
  109. package/assets/skills/ui-design/scripts/VERSION +1 -0
  110. package/assets/skills/ui-design/scripts/bin/darwin-arm64/impeccable +0 -0
  111. package/assets/skills/ui-design/scripts/command-metadata.json +94 -0
  112. package/assets/skills/ui-design/scripts/data/font-index-failures.json +121 -0
  113. package/assets/skills/ui-design/scripts/data/font-index.json +1 -0
  114. package/assets/skills/ui-design/scripts/impeccable +206 -0
  115. package/assets/skills/ui-design/scripts/impeccable.cmd +214 -0
  116. package/assets/skills/ui-design/scripts/live-browser-dom.js +167 -0
  117. package/assets/skills/ui-design/scripts/live-browser-ignores.js +242 -0
  118. package/assets/skills/ui-design/scripts/live-browser-session.js +144 -0
  119. package/assets/skills/ui-design/scripts/live-browser.js +12990 -0
  120. package/assets/skills/ui-design/scripts/modern-screenshot.umd.js +14 -0
  121. package/assets/skills/ui-design/scripts/ui-design +6 -0
  122. package/assets/skills/ui-design/scripts/ui-design.cmd +3 -0
  123. package/assets/skills/ui-design/scripts/ui-design.mjs +124 -0
  124. package/assets/skills/ui-mockup/SKILL.md +68 -0
  125. package/assets/skills/ui-mockup/reference/brandkit.md +101 -0
  126. package/assets/skills/ui-mockup/reference/image-to-code.md +83 -0
  127. package/assets/skills/ui-mockup/reference/mobile-comps.md +94 -0
  128. package/assets/skills/ui-mockup/reference/web-comps.md +83 -0
  129. package/assets/skills/ui-motion/SKILL.md +112 -0
  130. package/assets/skills/ui-motion/reference/expo.md +224 -0
  131. package/assets/skills/ui-motion/reference/opportunities.md +81 -0
  132. package/assets/skills/ui-motion/reference/prototype.md +238 -0
  133. package/assets/skills/ui-motion/reference/review.md +163 -0
  134. package/assets/skills/ui-motion/reference/toasts.md +144 -0
  135. package/assets/skills/ui-motion/reference/ui-libraries.md +71 -0
  136. package/assets/skills/ui-motion/reference/vocabulary.md +130 -0
  137. package/assets/skills/ui-motion/reference/web.md +294 -0
  138. package/assets/skills/ui-patterns/SKILL.md +105 -0
  139. package/assets/skills/ui-patterns/references/stacks/html-tailwind.md +40 -0
  140. package/assets/skills/ui-patterns/references/stacks/nextjs.md +52 -0
  141. package/assets/skills/ui-patterns/references/stacks/nuxt.md +100 -0
  142. package/assets/skills/ui-patterns/references/stacks/react-native.md +48 -0
  143. package/assets/skills/ui-patterns/references/stacks/react.md +49 -0
  144. package/assets/skills/ui-patterns/references/stacks/shadcn.md +57 -0
  145. package/assets/skills/ui-patterns/references/stacks/vue.md +37 -0
  146. package/assets/techne/.claude-plugin/marketplace.json +31 -0
  147. package/assets/techne/.claude-plugin/plugin.json +24 -0
  148. package/assets/techne/.mcp.json +8 -0
  149. package/assets/techne/commands/build-fix.md +48 -0
  150. package/assets/techne/commands/refactor-clean.md +46 -0
  151. package/assets/techne/commands/test-coverage.md +42 -0
  152. package/assets/techne/hooks/hooks.json +49 -0
  153. package/assets/techne/rules/angular/coding-style.md +49 -0
  154. package/assets/techne/rules/angular/hooks.md +23 -0
  155. package/assets/techne/rules/angular/patterns.md +48 -0
  156. package/assets/techne/rules/angular/security.md +26 -0
  157. package/assets/techne/rules/angular/testing.md +46 -0
  158. package/assets/techne/rules/arkts/coding-style.md +63 -0
  159. package/assets/techne/rules/arkts/hooks.md +38 -0
  160. package/assets/techne/rules/arkts/patterns.md +42 -0
  161. package/assets/techne/rules/arkts/security.md +35 -0
  162. package/assets/techne/rules/arkts/testing.md +39 -0
  163. package/assets/techne/rules/common/agents.md +6 -0
  164. package/assets/techne/rules/common/code-review.md +15 -0
  165. package/assets/techne/rules/common/coding-style.md +13 -0
  166. package/assets/techne/rules/common/development-workflow.md +5 -0
  167. package/assets/techne/rules/common/git-workflow.md +30 -0
  168. package/assets/techne/rules/common/hooks.md +7 -0
  169. package/assets/techne/rules/common/patterns.md +3 -0
  170. package/assets/techne/rules/common/performance.md +3 -0
  171. package/assets/techne/rules/common/security.md +5 -0
  172. package/assets/techne/rules/common/testing.md +3 -0
  173. package/assets/techne/rules/cpp/coding-style.md +31 -0
  174. package/assets/techne/rules/cpp/hooks.md +26 -0
  175. package/assets/techne/rules/cpp/patterns.md +31 -0
  176. package/assets/techne/rules/cpp/security.md +37 -0
  177. package/assets/techne/rules/cpp/testing.md +31 -0
  178. package/assets/techne/rules/csharp/coding-style.md +30 -0
  179. package/assets/techne/rules/csharp/hooks.md +24 -0
  180. package/assets/techne/rules/csharp/patterns.md +28 -0
  181. package/assets/techne/rules/csharp/security.md +32 -0
  182. package/assets/techne/rules/csharp/testing.md +27 -0
  183. package/assets/techne/rules/dart/coding-style.md +47 -0
  184. package/assets/techne/rules/dart/hooks.md +26 -0
  185. package/assets/techne/rules/dart/patterns.md +38 -0
  186. package/assets/techne/rules/dart/security.md +44 -0
  187. package/assets/techne/rules/dart/testing.md +39 -0
  188. package/assets/techne/rules/fsharp/coding-style.md +34 -0
  189. package/assets/techne/rules/fsharp/hooks.md +25 -0
  190. package/assets/techne/rules/fsharp/patterns.md +43 -0
  191. package/assets/techne/rules/fsharp/security.md +32 -0
  192. package/assets/techne/rules/fsharp/testing.md +27 -0
  193. package/assets/techne/rules/golang/coding-style.md +30 -0
  194. package/assets/techne/rules/golang/hooks.md +17 -0
  195. package/assets/techne/rules/golang/patterns.md +43 -0
  196. package/assets/techne/rules/golang/security.md +33 -0
  197. package/assets/techne/rules/golang/testing.md +20 -0
  198. package/assets/techne/rules/java/coding-style.md +51 -0
  199. package/assets/techne/rules/java/hooks.md +18 -0
  200. package/assets/techne/rules/java/patterns.md +55 -0
  201. package/assets/techne/rules/java/security.md +33 -0
  202. package/assets/techne/rules/java/testing.md +33 -0
  203. package/assets/techne/rules/kotlin/coding-style.md +50 -0
  204. package/assets/techne/rules/kotlin/hooks.md +17 -0
  205. package/assets/techne/rules/kotlin/patterns.md +44 -0
  206. package/assets/techne/rules/kotlin/security.md +34 -0
  207. package/assets/techne/rules/kotlin/testing.md +38 -0
  208. package/assets/techne/rules/nuxt/coding-style.md +20 -0
  209. package/assets/techne/rules/nuxt/hooks.md +16 -0
  210. package/assets/techne/rules/nuxt/patterns.md +46 -0
  211. package/assets/techne/rules/nuxt/security.md +19 -0
  212. package/assets/techne/rules/nuxt/testing.md +15 -0
  213. package/assets/techne/rules/perl/coding-style.md +33 -0
  214. package/assets/techne/rules/perl/hooks.md +22 -0
  215. package/assets/techne/rules/perl/patterns.md +43 -0
  216. package/assets/techne/rules/perl/security.md +39 -0
  217. package/assets/techne/rules/perl/testing.md +42 -0
  218. package/assets/techne/rules/php/coding-style.md +30 -0
  219. package/assets/techne/rules/php/hooks.md +24 -0
  220. package/assets/techne/rules/php/patterns.md +26 -0
  221. package/assets/techne/rules/php/security.md +27 -0
  222. package/assets/techne/rules/php/testing.md +28 -0
  223. package/assets/techne/rules/python/coding-style.md +38 -0
  224. package/assets/techne/rules/python/fastapi.md +57 -0
  225. package/assets/techne/rules/python/hooks.md +19 -0
  226. package/assets/techne/rules/python/patterns.md +37 -0
  227. package/assets/techne/rules/python/security.md +26 -0
  228. package/assets/techne/rules/python/testing.md +32 -0
  229. package/assets/techne/rules/react/coding-style.md +24 -0
  230. package/assets/techne/rules/react/hooks.md +62 -0
  231. package/assets/techne/rules/react/patterns.md +48 -0
  232. package/assets/techne/rules/react/security.md +45 -0
  233. package/assets/techne/rules/react/testing.md +42 -0
  234. package/assets/techne/rules/react-native/accessibility.md +14 -0
  235. package/assets/techne/rules/react-native/coding-style.md +16 -0
  236. package/assets/techne/rules/react-native/hooks.md +16 -0
  237. package/assets/techne/rules/react-native/patterns.md +18 -0
  238. package/assets/techne/rules/react-native/performance.md +14 -0
  239. package/assets/techne/rules/react-native/production-readiness.md +16 -0
  240. package/assets/techne/rules/react-native/security.md +16 -0
  241. package/assets/techne/rules/react-native/testing.md +14 -0
  242. package/assets/techne/rules/ruby/coding-style.md +40 -0
  243. package/assets/techne/rules/ruby/hooks.md +33 -0
  244. package/assets/techne/rules/ruby/patterns.md +33 -0
  245. package/assets/techne/rules/ruby/security.md +39 -0
  246. package/assets/techne/rules/ruby/testing.md +35 -0
  247. package/assets/techne/rules/rust/coding-style.md +41 -0
  248. package/assets/techne/rules/rust/hooks.md +16 -0
  249. package/assets/techne/rules/rust/patterns.md +42 -0
  250. package/assets/techne/rules/rust/security.md +33 -0
  251. package/assets/techne/rules/rust/testing.md +30 -0
  252. package/assets/techne/rules/swift/coding-style.md +30 -0
  253. package/assets/techne/rules/swift/hooks.md +20 -0
  254. package/assets/techne/rules/swift/patterns.md +30 -0
  255. package/assets/techne/rules/swift/security.md +22 -0
  256. package/assets/techne/rules/swift/testing.md +28 -0
  257. package/assets/techne/rules/typescript/coding-style.md +38 -0
  258. package/assets/techne/rules/typescript/hooks.md +14 -0
  259. package/assets/techne/rules/typescript/patterns.md +12 -0
  260. package/assets/techne/rules/typescript/security.md +14 -0
  261. package/assets/techne/rules/typescript/testing.md +12 -0
  262. package/assets/techne/rules/vue/coding-style.md +19 -0
  263. package/assets/techne/rules/vue/hooks.md +13 -0
  264. package/assets/techne/rules/vue/patterns.md +29 -0
  265. package/assets/techne/rules/vue/security.md +11 -0
  266. package/assets/techne/rules/vue/testing.md +11 -0
  267. package/assets/techne/rules/web/coding-style.md +25 -0
  268. package/assets/techne/rules/web/design-quality.md +21 -0
  269. package/assets/techne/rules/web/hooks.md +39 -0
  270. package/assets/techne/rules/web/patterns.md +23 -0
  271. package/assets/techne/rules/web/performance.md +25 -0
  272. package/assets/techne/rules/web/security.md +23 -0
  273. package/assets/techne/rules/web/testing.md +21 -0
  274. package/assets/techne/scripts/hooks/config-guard.js +50 -0
  275. package/assets/techne/scripts/hooks/edit-tracker.js +26 -0
  276. package/assets/techne/scripts/hooks/lib/shell.js +204 -0
  277. package/assets/techne/scripts/hooks/no-verify-guard.js +205 -0
  278. package/assets/techne/scripts/hooks/run.js +92 -0
  279. package/assets/techne/scripts/hooks/stop-checks.js +136 -0
  280. package/assets/techne/skills/angular/SKILL.md +34 -0
  281. package/assets/techne/skills/angular/reference/components-and-templates.md +63 -0
  282. package/assets/techne/skills/angular/reference/dependency-injection.md +44 -0
  283. package/assets/techne/skills/angular/reference/forms.md +97 -0
  284. package/assets/techne/skills/angular/reference/routing.md +50 -0
  285. package/assets/techne/skills/angular/reference/signals-and-state.md +59 -0
  286. package/assets/techne/skills/angular/reference/styling-motion-a11y.md +54 -0
  287. package/assets/techne/skills/angular/reference/testing.md +52 -0
  288. package/assets/techne/skills/angular/reference/tooling.md +31 -0
  289. package/assets/techne/skills/cpp/SKILL.md +27 -0
  290. package/assets/techne/skills/cpp/reference/coding-standards.md +160 -0
  291. package/assets/techne/skills/databases/SKILL.md +35 -0
  292. package/assets/techne/skills/databases/reference/clickhouse.md +102 -0
  293. package/assets/techne/skills/databases/reference/migrations.md +94 -0
  294. package/assets/techne/skills/databases/reference/mysql.md +101 -0
  295. package/assets/techne/skills/databases/reference/postgres.md +72 -0
  296. package/assets/techne/skills/databases/reference/prisma.md +105 -0
  297. package/assets/techne/skills/databases/reference/redis.md +108 -0
  298. package/assets/techne/skills/delivery/SKILL.md +35 -0
  299. package/assets/techne/skills/delivery/reference/deployment-patterns.md +58 -0
  300. package/assets/techne/skills/delivery/reference/docker-patterns.md +77 -0
  301. package/assets/techne/skills/delivery/reference/git-workflow.md +64 -0
  302. package/assets/techne/skills/delivery/reference/github-ops.md +67 -0
  303. package/assets/techne/skills/delivery/reference/jira-integration.md +53 -0
  304. package/assets/techne/skills/delivery/reference/kubernetes-patterns.md +67 -0
  305. package/assets/techne/skills/dotnet/SKILL.md +27 -0
  306. package/assets/techne/skills/dotnet/reference/dotnet-core.md +131 -0
  307. package/assets/techne/skills/flutter/SKILL.md +29 -0
  308. package/assets/techne/skills/flutter/reference/code-review.md +76 -0
  309. package/assets/techne/skills/flutter/reference/patterns.md +201 -0
  310. package/assets/techne/skills/go/SKILL.md +28 -0
  311. package/assets/techne/skills/go/reference/patterns.md +87 -0
  312. package/assets/techne/skills/go/reference/testing.md +142 -0
  313. package/assets/techne/skills/java/SKILL.md +29 -0
  314. package/assets/techne/skills/java/reference/java-standards.md +117 -0
  315. package/assets/techne/skills/java/reference/springboot.md +108 -0
  316. package/assets/techne/skills/kotlin/SKILL.md +35 -0
  317. package/assets/techne/skills/kotlin/reference/android-clean-architecture.md +115 -0
  318. package/assets/techne/skills/kotlin/reference/compose-multiplatform-patterns.md +113 -0
  319. package/assets/techne/skills/kotlin/reference/kotlin-coroutines-flows.md +93 -0
  320. package/assets/techne/skills/kotlin/reference/kotlin-patterns.md +74 -0
  321. package/assets/techne/skills/kotlin/reference/kotlin-testing.md +115 -0
  322. package/assets/techne/skills/ml/SKILL.md +34 -0
  323. package/assets/techne/skills/ml/reference/ai-regression-testing.md +99 -0
  324. package/assets/techne/skills/ml/reference/cost-aware-llm-pipeline.md +133 -0
  325. package/assets/techne/skills/ml/reference/eval-harness.md +94 -0
  326. package/assets/techne/skills/ml/reference/mle-workflow.md +177 -0
  327. package/assets/techne/skills/ml/reference/prompt-optimizer.md +107 -0
  328. package/assets/techne/skills/ml/reference/pytorch-patterns.md +164 -0
  329. package/assets/techne/skills/php/SKILL.md +27 -0
  330. package/assets/techne/skills/php/reference/laravel.md +142 -0
  331. package/assets/techne/skills/python/SKILL.md +33 -0
  332. package/assets/techne/skills/python/reference/django.md +104 -0
  333. package/assets/techne/skills/python/reference/fastapi.md +118 -0
  334. package/assets/techne/skills/python/reference/python-core.md +88 -0
  335. package/assets/techne/skills/python/reference/python-testing.md +105 -0
  336. package/assets/techne/skills/quality/SKILL.md +34 -0
  337. package/assets/techne/skills/quality/reference/benchmark.md +55 -0
  338. package/assets/techne/skills/quality/reference/browser-qa.md +60 -0
  339. package/assets/techne/skills/quality/reference/coding-standards.md +88 -0
  340. package/assets/techne/skills/quality/reference/e2e-testing.md +99 -0
  341. package/assets/techne/skills/quality/reference/tdd-workflow.md +89 -0
  342. package/assets/techne/skills/quality/reference/verification-loop.md +80 -0
  343. package/assets/techne/skills/react/SKILL.md +30 -0
  344. package/assets/techne/skills/react/reference/nextjs-turbopack.md +42 -0
  345. package/assets/techne/skills/react/reference/react-patterns.md +139 -0
  346. package/assets/techne/skills/react/reference/react-performance.md +101 -0
  347. package/assets/techne/skills/react/reference/react-testing.md +139 -0
  348. package/assets/techne/skills/react-native/SKILL.md +28 -0
  349. package/assets/techne/skills/react-native/reference/expo-patterns.md +196 -0
  350. package/assets/techne/skills/research/SKILL.md +35 -0
  351. package/assets/techne/skills/research/reference/architecture-decision-records.md +65 -0
  352. package/assets/techne/skills/research/reference/codebase-onboarding.md +44 -0
  353. package/assets/techne/skills/research/reference/deep-research.md +50 -0
  354. package/assets/techne/skills/research/reference/iterative-retrieval.md +62 -0
  355. package/assets/techne/skills/research/reference/product-lens.md +38 -0
  356. package/assets/techne/skills/research/reference/search-first.md +50 -0
  357. package/assets/techne/skills/rust/SKILL.md +28 -0
  358. package/assets/techne/skills/rust/reference/patterns.md +108 -0
  359. package/assets/techne/skills/rust/reference/testing.md +142 -0
  360. package/assets/techne/skills/services/SKILL.md +32 -0
  361. package/assets/techne/skills/services/reference/api-contracts.md +139 -0
  362. package/assets/techne/skills/services/reference/backend-layers.md +95 -0
  363. package/assets/techne/skills/services/reference/errors-and-resilience.md +146 -0
  364. package/assets/techne/skills/services/reference/hexagonal-boundaries.md +93 -0
  365. package/assets/techne/skills/services/reference/mcp-servers.md +50 -0
  366. package/assets/techne/skills/services/reference/nestjs.md +96 -0
  367. package/assets/techne/skills/swift/SKILL.md +29 -0
  368. package/assets/techne/skills/swift/reference/concurrency.md +83 -0
  369. package/assets/techne/skills/swift/reference/swiftui.md +139 -0
  370. package/assets/techne/skills/vue/SKILL.md +29 -0
  371. package/assets/techne/skills/vue/reference/nuxt4-patterns.md +90 -0
  372. package/assets/techne/skills/vue/reference/ui-to-vue.md +90 -0
  373. package/assets/techne/skills/vue/reference/vue-patterns.md +151 -0
  374. package/assets/techne/skills/web/SKILL.md +30 -0
  375. package/assets/techne/skills/web/reference/bun-runtime.md +55 -0
  376. package/assets/techne/skills/web/reference/frontend-patterns.md +54 -0
  377. package/assets/techne/skills/web/reference/seo.md +77 -0
  378. package/assets/techne/skills/web/reference/vite-patterns.md +96 -0
  379. package/bin/native.cjs +30 -0
  380. package/native/aarch64-apple-darwin/exonous +0 -0
  381. package/native/aarch64-unknown-linux-gnu/exonous +0 -0
  382. package/native/x86_64-apple-darwin/exonous +0 -0
  383. package/native/x86_64-pc-windows-msvc/exonous.exe +0 -0
  384. package/native/x86_64-unknown-linux-gnu/exonous +0 -0
  385. package/package.json +1 -6
@@ -0,0 +1,40 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rb"
4
+ - "**/*.rake"
5
+ - "**/Gemfile"
6
+ - "**/*.gemspec"
7
+ - "**/config.ru"
8
+ ---
9
+ # Ruby Coding Style
10
+
11
+ > Builds on the shared rules in `../common/coding-style.md`.
12
+
13
+ ## Runtime
14
+
15
+ Target Ruby 3.3+ on new Rails apps; respect an existing pin to an older supported release. Enable YJIT in production only after measuring memory and throughput.
16
+
17
+ ## Files
18
+
19
+ `# frozen_string_literal: true` when the repo uses it; keep metaprogramming behind small, tested APIs.
20
+
21
+ ## Lint
22
+
23
+ Project RuboCop config (Rails 8+ often starts from omakase); run via binstub:
24
+
25
+ ```bash
26
+ bundle exec rubocop
27
+ bundle exec rubocop -A
28
+ ```
29
+
30
+ Narrow inline disables only with justification.
31
+
32
+ ## Rails
33
+
34
+ MVC conventions first; thin controllers; domain in models/services/query/form objects as complexity demands; prefer `bin/rails` / binstubs.
35
+
36
+ ## Errors
37
+
38
+ Rescue specific exceptions; log operations — no committed `puts`/`debugger`.
39
+
40
+ Layering: `techne:services` skill.
@@ -0,0 +1,33 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rb"
4
+ - "**/*.rake"
5
+ - "**/Gemfile"
6
+ - "**/Gemfile.lock"
7
+ - "**/config/routes.rb"
8
+ ---
9
+ # Ruby Hooks
10
+
11
+ > Builds on the shared rules in `../common/hooks.md`.
12
+
13
+ `EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS`.
14
+
15
+ ## PostToolUse
16
+
17
+ - **RuboCop** (`bundle exec rubocop -A` or project script)
18
+ - **Brakeman** after security-sensitive Rails edits
19
+ - Narrowest **bin/rails test** / **rspec** for touched paths
20
+ - **bundle-audit** when Gemfile/lock changes (if installed)
21
+
22
+ ## Warnings
23
+
24
+ Debug helpers (`binding.pry`, `debugger`, `puts`) in app code; CSRF off; unsafe mass assignment; raw SQL.
25
+
26
+ ## CI (use what exists)
27
+
28
+ ```bash
29
+ bundle exec rubocop
30
+ bundle exec brakeman --no-progress
31
+ bin/rails test
32
+ bundle exec rspec
33
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rb"
4
+ - "**/*.rake"
5
+ - "**/Gemfile"
6
+ - "**/app/**/*.erb"
7
+ - "**/config/routes.rb"
8
+ ---
9
+ # Ruby Patterns
10
+
11
+ > Builds on the shared rules in `../common/patterns.md`.
12
+
13
+ ## Rails first
14
+
15
+ MVC until boundaries blur — then extract named service/query/form objects (verb names, not `Manager`).
16
+
17
+ ## Data store
18
+
19
+ PostgreSQL for typical multi-host production; SQLite defaults suit single-host — match platform reality. Parameterize all dynamic SQL.
20
+
21
+ ## Jobs
22
+
23
+ Solid Queue for simple Rails 8 deployments; Sidekiq when Redis ops, throughput, or mature tooling already exist. Solid Cache/Cable vs Redis — match deployment needs.
24
+
25
+ ## UI
26
+
27
+ Hotwire (Turbo/Stimulus/importmap) for server-rendered apps; SPA/Inertia when complexity or team ownership requires it. No persistence/auth in templates.
28
+
29
+ ## Auth
30
+
31
+ Rails 8 generator for basic session auth; Devise (or similar) for OAuth/MFA/legacy Devise apps.
32
+
33
+ Boundaries: `techne:services` skill.
@@ -0,0 +1,39 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rb"
4
+ - "**/*.rake"
5
+ - "**/Gemfile"
6
+ - "**/Gemfile.lock"
7
+ - "**/config/routes.rb"
8
+ - "**/config/credentials*.yml.enc"
9
+ ---
10
+ # Ruby Security
11
+
12
+ > Builds on the shared rules in `../common/security.md`.
13
+
14
+ ## Rails defaults
15
+
16
+ CSRF on; strong parameters or typed params; secrets in credentials/env/vault — never plaintext in git.
17
+
18
+ ## SQL
19
+
20
+ ActiveRecord/query APIs or bound SQL — never interpolate request/job/webhook data into strings.
21
+
22
+ ## Sessions
23
+
24
+ Rotate on login/elevation; rate-limit and audit recovery flows.
25
+
26
+ ## Dependencies
27
+
28
+ ```bash
29
+ bundle exec bundle-audit check --update
30
+ bundle exec brakeman --no-progress
31
+ ```
32
+
33
+ Review new gems for maintenance and native extension risk.
34
+
35
+ ## Web
36
+
37
+ Default HTML escaping; treat `html_safe`/`raw` as security code; validate uploads; treat jobs/cable/turbo streams as untrusted input.
38
+
39
+ Review: `security-review` skill / `exo-security` agent.
@@ -0,0 +1,35 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rb"
4
+ - "**/*.rake"
5
+ - "**/Gemfile"
6
+ - "**/test/**/*.rb"
7
+ - "**/spec/**/*.rb"
8
+ - "**/config/routes.rb"
9
+ ---
10
+ # Ruby Testing
11
+
12
+ > Builds on the shared rules in `../common/testing.md`.
13
+
14
+ ## Framework
15
+
16
+ Minitest when that is the app default; RSpec when established — do not mix in one feature without a migration plan.
17
+
18
+ ## Pyramid
19
+
20
+ Model/service/job/policy unit tests; request specs for HTTP/auth/status; system tests only for critical browser flows; job unit + enqueue integration.
21
+
22
+ ## Data
23
+
24
+ Fixtures for small graphs; factory_bot when traits/composition matter.
25
+
26
+ ```bash
27
+ bin/rails test
28
+ bundle exec rspec
29
+ ```
30
+
31
+ ## Coverage
32
+
33
+ SimpleCov thresholds in CI; regression test before fixing production bugs.
34
+
35
+ Loop: `techne:quality` skill.
@@ -0,0 +1,41 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Coding Style
6
+
7
+ > Builds on the shared rules in `../common/coding-style.md`.
8
+
9
+ ## Format
10
+
11
+ `cargo fmt`; `cargo clippy -- -D warnings`; 100-col lines (rustfmt default).
12
+
13
+ ## Immutability
14
+
15
+ Default `let`; `let mut` only when needed; return new values; `Cow` when borrow vs allocate is conditional.
16
+
17
+ ## Naming
18
+
19
+ `snake_case` values/modules; `PascalCase` types; `SCREAMING_SNAKE_CASE` consts.
20
+
21
+ ## Borrowing
22
+
23
+ Prefer `&str`, `&[T]` parameters; `impl Into<String>` when storing owned strings; avoid clone-to-placate the checker without understanding why.
24
+
25
+ ## Errors
26
+
27
+ `Result` + `?`; libraries: `thiserror`; binaries: `anyhow` + `.context(...)`. No `unwrap` in production paths.
28
+
29
+ ## Iterators vs loops
30
+
31
+ Chains for transforms; loops when control flow is irregular.
32
+
33
+ ## Modules
34
+
35
+ Group by domain (`auth/`, `billing/`), not by layer file type.
36
+
37
+ ## Visibility
38
+
39
+ Private by default; `pub(crate)` for internal API; re-export public surface from `lib.rs`.
40
+
41
+ Depth: `techne:rust` skill.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ - "**/Cargo.toml"
5
+ ---
6
+ # Rust Hooks
7
+
8
+ > Builds on the shared rules in `../common/hooks.md`.
9
+
10
+ `EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS` gate automation.
11
+
12
+ ## PostToolUse
13
+
14
+ - **cargo fmt**
15
+ - **cargo clippy**
16
+ - **cargo check** (strict: after non-trivial edits)
@@ -0,0 +1,42 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Patterns
6
+
7
+ > Builds on the shared rules in `../common/patterns.md`.
8
+
9
+ ## Repository trait
10
+
11
+ ```rust
12
+ pub trait Ledger: Send + Sync {
13
+ fn by_id(&self, id: u64) -> Result<Option<Entry>, StoreErr>;
14
+ fn save(&self, row: &Entry) -> Result<Entry, StoreErr>;
15
+ }
16
+ ```
17
+
18
+ ## Services
19
+
20
+ Struct + constructor injecting `Box<dyn Ledger>` (or generics); business methods call traits, not concrete DB types.
21
+
22
+ ## Newtypes
23
+
24
+ Wrap ids (`struct AccountId(u64)`) to prevent argument swaps.
25
+
26
+ ## State enums
27
+
28
+ Model connection lifecycle as enum; match exhaustively — no catch-all on critical variants.
29
+
30
+ ## Builders
31
+
32
+ Fluent builder for configs with many optional fields.
33
+
34
+ ## Sealed traits
35
+
36
+ Private `Sealed` supertrait to block external impls when extension must stay internal.
37
+
38
+ ## JSON envelope
39
+
40
+ Tagged enum with `serde` for `{ "status": "ok" | "error" }` responses.
41
+
42
+ Depth: `techne:rust` skill.
@@ -0,0 +1,33 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Security
6
+
7
+ > Builds on the shared rules in `../common/security.md`.
8
+
9
+ ## Secrets
10
+
11
+ `std::env::var` at startup; `.gitignore` for local env files; no const secrets.
12
+
13
+ ## SQL
14
+
15
+ Bound parameters via sqlx/diesel/sea-orm — never format user input into SQL strings.
16
+
17
+ ## Validation
18
+
19
+ Newtypes + parse-at-boundary; reject early with typed errors.
20
+
21
+ ## Unsafe
22
+
23
+ Minimal blocks; mandatory `// SAFETY:` listing invariants; review every `unsafe`.
24
+
25
+ ## Dependencies
26
+
27
+ `cargo audit`, `cargo deny check`, `cargo tree`; keep deps lean and updated.
28
+
29
+ ## Responses
30
+
31
+ Generic client errors; `tracing` for server detail.
32
+
33
+ Review: `security-review` skill / `exo-security` agent. Idioms: `techne:rust` skill.
@@ -0,0 +1,30 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Testing
6
+
7
+ > Builds on the shared rules in `../common/testing.md`.
8
+
9
+ ## Tools
10
+
11
+ `#[test]` modules; **rstest** for cases; **proptest** for properties; **mockall** for trait mocks; **`#[tokio::test]`** for async.
12
+
13
+ ## Layout
14
+
15
+ Unit tests in `#[cfg(test)]` beside code; integration tests under `tests/`; shared helpers in `tests/common/`.
16
+
17
+ ## Mocks
18
+
19
+ Define traits in production; `mockall::mock!` in test modules with expectations.
20
+
21
+ ## Coverage
22
+
23
+ ~80% with **cargo-llvm-cov**; exclude generated/FFI glue.
24
+
25
+ ```bash
26
+ cargo test
27
+ cargo llvm-cov --fail-under-lines 80
28
+ ```
29
+
30
+ Depth: `techne:rust` skill (testing reference).
@@ -0,0 +1,30 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Coding Style
7
+
8
+ > Builds on the shared rules in `../common/coding-style.md`.
9
+
10
+ ## Format
11
+
12
+ SwiftFormat + SwiftLint (or Xcode 16+ `swift-format` if that is the repo standard).
13
+
14
+ ## Values
15
+
16
+ Prefer `let`; structs by default; classes only for identity/reference semantics.
17
+
18
+ ## Naming
19
+
20
+ Apple API Design Guidelines — clarity at call site; omit redundant type words; `static let` for constants.
21
+
22
+ ## Errors
23
+
24
+ Typed throws (Swift 6+) where applicable; structured `LoadError`-style enums.
25
+
26
+ ## Concurrency
27
+
28
+ Strict concurrency checking; `Sendable` values across actors; actors for shared mutation; structured concurrency over detached tasks.
29
+
30
+ Depth: `techne:swift` skill.
@@ -0,0 +1,20 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Hooks
7
+
8
+ > Builds on the shared rules in `../common/hooks.md`.
9
+
10
+ `EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS`.
11
+
12
+ ## PostToolUse
13
+
14
+ - **SwiftFormat**
15
+ - **SwiftLint**
16
+ - **swift build** on package edits (standard/strict)
17
+
18
+ ## Warnings
19
+
20
+ Flag `print()` — prefer `os.Logger` or structured logging.
@@ -0,0 +1,30 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Patterns
7
+
8
+ > Builds on the shared rules in `../common/patterns.md`.
9
+
10
+ ## Protocols
11
+
12
+ Small `Sendable` protocols; default implementations in extensions.
13
+
14
+ ## State enums
15
+
16
+ ```swift
17
+ enum FetchPhase<T: Sendable>: Sendable {
18
+ case idle, working, done(T), broken(Error)
19
+ }
20
+ ```
21
+
22
+ ## Actors
23
+
24
+ Shared caches/registries as actors instead of manual locks.
25
+
26
+ ## DI
27
+
28
+ Protocol parameters with production defaults; inject test doubles in tests.
29
+
30
+ Depth: `techne:swift` skill (concurrency, SwiftUI, testing).
@@ -0,0 +1,22 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Security
7
+
8
+ > Builds on the shared rules in `../common/security.md`.
9
+
10
+ ## Secrets
11
+
12
+ Keychain for tokens/passwords — not UserDefaults; build-time via `.xcconfig`/env; no literals in repo.
13
+
14
+ ## Transport
15
+
16
+ Keep ATS enabled; pin certs for high-value endpoints; validate server trust.
17
+
18
+ ## Input
19
+
20
+ Sanitize before render; validate `URL` and deep links; treat API/pasteboard data as untrusted until validated.
21
+
22
+ Review: `security-review` skill / `exo-security` agent.
@@ -0,0 +1,28 @@
1
+ ---
2
+ paths:
3
+ - "**/*.swift"
4
+ - "**/Package.swift"
5
+ ---
6
+ # Swift Testing
7
+
8
+ > Builds on the shared rules in `../common/testing.md`.
9
+
10
+ ## Framework
11
+
12
+ Swift Testing (`import Testing`) — `@Test`, `#expect`, `#require`.
13
+
14
+ ## Isolation
15
+
16
+ Per-test setup in `init`/`deinit`; no shared mutable globals.
17
+
18
+ ## Parameterized
19
+
20
+ `@Test(arguments: [...])` for matrix cases.
21
+
22
+ ## Coverage
23
+
24
+ ```bash
25
+ swift test --enable-code-coverage
26
+ ```
27
+
28
+ Depth: `techne:swift` skill (DI and mocks with Swift Testing).
@@ -0,0 +1,38 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ > Builds on the shared rules in `../common/coding-style.md`.
9
+
10
+ # TypeScript / JavaScript style
11
+
12
+ ## Typing policy
13
+
14
+ - Exported functions, public class methods, and shared DTOs: explicit parameter + return types
15
+ - Locals: infer when obvious
16
+ - Repeated inline object shapes → named `type`/`interface`
17
+
18
+ `interface` for extend/implement shapes; `type` for unions, tuples, mapped types. Prefer string union literals over `enum` unless generating API contracts that require enums.
19
+
20
+ ## Safety
21
+
22
+ Ban `any` in application code. External payloads: `unknown` + narrowing (`instanceof`, type guards, schema parse).
23
+
24
+ React props: dedicated `Props` type; skip `React.FC` unless children typing demands it.
25
+
26
+ ## Data handling
27
+
28
+ Updates clone via spread/`Readonly` rather than mutating arguments.
29
+
30
+ `async`/`await` with `catch (err: unknown)` funneled through a small `getErrorMessage` helper.
31
+
32
+ ## Validation
33
+
34
+ Zod (or equivalent) at IO edges; export inferred types via `z.infer`.
35
+
36
+ ## Logging
37
+
38
+ No stray `console.log` in committed code — use the project logger; hooks may warn on debug prints in edited files.
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ > Builds on the shared rules in `../common/hooks.md`.
9
+
10
+ # TypeScript hooks
11
+
12
+ PostToolUse: Prettier, `tsc`, warn on `console.log` in touched files. Stop: scan session edits for debug logs.
13
+
14
+ Profile: `EXONOUS_HOOK_PROFILE`, `EXONOUS_DISABLED_HOOKS`.
@@ -0,0 +1,12 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ > Builds on the shared rules in `../common/patterns.md`.
9
+
10
+ # TypeScript patterns
11
+
12
+ Typed API envelope (`success`, `data`, `error`, optional `meta`). Generic repository interface for persistence. Shared hooks (debounce, etc.) colocated under `hooks/`.
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ > Builds on the shared rules in `../common/security.md`.
9
+
10
+ # TypeScript security
11
+
12
+ Read secrets from `process.env`; throw at startup if missing. Never embed keys in source.
13
+
14
+ Use **exo-security** / `security-review` for audits.
@@ -0,0 +1,12 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ - "**/*.js"
6
+ - "**/*.jsx"
7
+ ---
8
+ > Builds on the shared rules in `../common/testing.md`.
9
+
10
+ # TypeScript testing
11
+
12
+ Playwright for critical E2E flows unless the repo standard differs. Component/unit via project runner (often Vitest/Jest).
@@ -0,0 +1,19 @@
1
+ ---
2
+ paths:
3
+ - "**/*.vue"
4
+ ---
5
+ > Builds on the shared rules in `../common/coding-style.md`.
6
+
7
+ # Vue coding style
8
+
9
+ `<script setup lang="ts">` only for new work. Order: script, template, scoped style. PascalCase SFC names; `use*` composables.
10
+
11
+ `ref` primary; `.value` in script; no destructuring reactive/Pinia without `toRefs`/`storeToRefs`.
12
+
13
+ Pure `computed`; lazy `watch` with getters; `watchEffect` stops tracking after first `await`.
14
+
15
+ Lifecycle registered synchronously in setup; cleanup on unmount; DOM reads after `nextTick`.
16
+
17
+ Macros: typed props/emits; `defineModel` for v-model; stable `:key` on `v-for` (never index); never `v-if` + `v-for` same element.
18
+
19
+ **techne:vue** skill for depth.
@@ -0,0 +1,13 @@
1
+ ---
2
+ paths:
3
+ - "**/*.vue"
4
+ - "**/*.ts"
5
+ - "**/*.tsx"
6
+ ---
7
+ > Builds on the shared rules in `../common/hooks.md`.
8
+
9
+ # Vue harness hooks
10
+
11
+ After edits: eslint (vue plugin) + Prettier per file; debounced project `vue-tsc --noEmit` (not plain `tsc` for SFCs).
12
+
13
+ Optional boundary lint (FSD/steiger). `EXONOUS_HOOK_PROFILE`, `EXONOUS_DISABLED_HOOKS`.
@@ -0,0 +1,29 @@
1
+ ---
2
+ paths:
3
+ - "**/*.vue"
4
+ ---
5
+ > Builds on the shared rules in `../common/patterns.md`.
6
+
7
+ # Vue patterns
8
+
9
+ ## Composables
10
+
11
+ Export `useFeature()` accepting `MaybeRefOrGetter` inputs (`toValue` inside). Return `toRefs(reactiveState)` so callers can destructure safely.
12
+
13
+ If the composable registers lifecycle hooks or `provide`, call it synchronously from `setup` only.
14
+
15
+ ## State split
16
+
17
+ Pinia (client/domain) vs `@tanstack/vue-query` (server cache). Keep fetch functions + `queryOptions` factories in an `api/` layer.
18
+
19
+ Query keys must include reactive refs/computed objects — **not** `.value` snapshots — or refetch breaks.
20
+
21
+ ## Router
22
+
23
+ Lazy `import()` route components. Global guard checks `meta.requiresAuth`. Watch `() => route.params.id` instead of the whole route object.
24
+
25
+ ## Provide / inject
26
+
27
+ Use `Symbol` keys typed with `InjectionKey<T>`. Expose readonly state + explicit mutators.
28
+
29
+ **techne:vue** skill for FSD/Nuxt overlap.
@@ -0,0 +1,11 @@
1
+ ---
2
+ paths:
3
+ - "**/*.vue"
4
+ ---
5
+ > Builds on the shared rules in `../common/security.md`.
6
+
7
+ # Vue security
8
+
9
+ `{{ }}` and bound attrs escape; `v-html` and dynamic `:is` from users do not. Sanitize HTML; block `javascript:` in URLs; never bind user strings to `:style` objects or event attrs.
10
+
11
+ `import.meta.env.VITE_*` is public. Sessions via httpOnly cookies.
@@ -0,0 +1,11 @@
1
+ ---
2
+ paths:
3
+ - "**/*.vue"
4
+ ---
5
+ > Builds on the shared rules in `../common/testing.md`.
6
+
7
+ # Vue testing
8
+
9
+ Vitest + `@vue/test-utils`; `happy-dom`/`jsdom`. `mount` vs `shallowMount`; await `trigger`/`setValue`.
10
+
11
+ Test props/emits/slots — not internals. Pinia: `createTestingPinia` or isolated store per test.