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,26 @@
1
+ ---
2
+ paths:
3
+ - "**/*.php"
4
+ - "**/composer.json"
5
+ ---
6
+ # PHP Patterns
7
+
8
+ > Builds on the shared rules in `../common/patterns.md`.
9
+
10
+ ## Controllers
11
+
12
+ HTTP concerns only — auth, validation, status, serialization.
13
+
14
+ ## Services
15
+
16
+ Business rules in injectable services testable without bootstrapping the full framework.
17
+
18
+ ## DTOs / values
19
+
20
+ Typed request/response objects; value objects for money, ids, ranges.
21
+
22
+ ## Boundaries
23
+
24
+ Thin ORM models; adapter wrappers around third-party SDKs.
25
+
26
+ API shape: `techne:services` skill; Laravel architecture: `techne:php` skill.
@@ -0,0 +1,27 @@
1
+ ---
2
+ paths:
3
+ - "**/*.php"
4
+ - "**/composer.lock"
5
+ - "**/composer.json"
6
+ ---
7
+ # PHP Security
8
+
9
+ > Builds on the shared rules in `../common/security.md`.
10
+
11
+ ## I/O
12
+
13
+ Validate at framework boundary; escape template output by default; treat headers/cookies/uploads as untrusted.
14
+
15
+ ## Database
16
+
17
+ Prepared statements / query builder; careful mass-assignment allow lists.
18
+
19
+ ## Secrets
20
+
21
+ Env or secret manager; `composer audit` in CI; deliberate version pins.
22
+
23
+ ## Sessions
24
+
25
+ `password_hash` / `password_verify`; regenerate session id on login/privilege change; CSRF on state-changing web forms.
26
+
27
+ Framework hardening: `techne:php` skill.
@@ -0,0 +1,28 @@
1
+ ---
2
+ paths:
3
+ - "**/*.php"
4
+ - "**/phpunit.xml"
5
+ - "**/phpunit.xml.dist"
6
+ - "**/composer.json"
7
+ ---
8
+ # PHP Testing
9
+
10
+ > Builds on the shared rules in `../common/testing.md`.
11
+
12
+ ## Runner
13
+
14
+ PHPUnit default; Pest only when the repo already standardizes on Pest — do not mix casually.
15
+
16
+ ```bash
17
+ vendor/bin/phpunit --coverage-text
18
+ ```
19
+
20
+ ## Organization
21
+
22
+ Fast unit vs integration suites; factories/builders over huge arrays; service tests for rules, controller tests for transport.
23
+
24
+ ## Inertia
25
+
26
+ When used, assert Inertia component/props via framework helpers — not raw JSON alone.
27
+
28
+ Loop: `techne:quality` skill; Laravel testing: `techne:php` skill.
@@ -0,0 +1,38 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Coding Style
7
+
8
+ > Builds on the shared rules in `../common/coding-style.md`.
9
+
10
+ ## Standards
11
+
12
+ - PEP 8 layout and naming; annotate every public function signature.
13
+
14
+ ## Immutability
15
+
16
+ Favor frozen or value-style data for shared state:
17
+
18
+ ```python
19
+ from dataclasses import dataclass
20
+ from typing import NamedTuple
21
+
22
+ @dataclass(frozen=True)
23
+ class Account:
24
+ handle: str
25
+ mailbox: str
26
+
27
+ class Coord(NamedTuple):
28
+ x: float
29
+ y: float
30
+ ```
31
+
32
+ ## Tooling
33
+
34
+ - **black** — format
35
+ - **isort** — import order
36
+ - **ruff** — lint
37
+
38
+ Depth: `techne:python` skill.
@@ -0,0 +1,57 @@
1
+ ---
2
+ paths:
3
+ - "**/app/**/*.py"
4
+ - "**/fastapi/**/*.py"
5
+ - "**/*_api.py"
6
+ ---
7
+ # FastAPI Rules
8
+
9
+ Apply with general Python rules on FastAPI codebases.
10
+
11
+ ## Layout
12
+
13
+ - Factory: `create_app()` owns wiring.
14
+ - Routers: HTTP only; persistence and rules live in services/CRUD helpers.
15
+ - Split create / update / response schemas.
16
+ - DB sessions and auth via `Depends`.
17
+
18
+ ## Async boundaries
19
+
20
+ - `async def` routes when work is I/O-bound.
21
+ - Async DB/HTTP clients from async handlers.
22
+ - No blocking `requests`, sync SQLAlchemy sessions, or sync disk/network in async routes.
23
+
24
+ ## Injection
25
+
26
+ ```python
27
+ @router.get("/accounts/{account_id}")
28
+ async def fetch_account(
29
+ account_id: str,
30
+ session: AsyncSession = Depends(get_session),
31
+ principal: User = Depends(current_user),
32
+ ):
33
+ ...
34
+ ```
35
+
36
+ Never open `SessionLocal()` or long-lived clients inside handlers.
37
+
38
+ ## Schemas
39
+
40
+ - Omit secrets, hashes, tokens, and internal auth fields from response models.
41
+ - Set `response_model` on data endpoints.
42
+ - Prefer Pydantic constraints over hand-rolled validation.
43
+
44
+ ## Security
45
+
46
+ - CORS origins per environment; no wildcard + credentials.
47
+ - Validate JWT exp, iss, aud, alg.
48
+ - Rate-limit auth and heavy writes.
49
+ - Redact credentials and auth headers in logs.
50
+
51
+ ## Tests
52
+
53
+ - Override the same callable `Depends` references.
54
+ - Clear `app.dependency_overrides` after each test.
55
+ - Async clients for async apps.
56
+
57
+ Depth: `techne:python` skill (FastAPI reference).
@@ -0,0 +1,19 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Hooks
7
+
8
+ > Builds on the shared rules in `../common/hooks.md`.
9
+
10
+ Hook intensity: `EXONOUS_HOOK_PROFILE` (`minimal` | `standard` | `strict`). Skip ids via `EXONOUS_DISABLED_HOOKS` (comma-separated).
11
+
12
+ ## PostToolUse (when profile allows)
13
+
14
+ - **black** / **ruff** on edited `.py`
15
+ - **mypy** / **pyright** after type-sensitive edits
16
+
17
+ ## Warnings
18
+
19
+ - Flag new `print()` in application code — use `logging`.
@@ -0,0 +1,37 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Patterns
7
+
8
+ > Builds on the shared rules in `../common/patterns.md`.
9
+
10
+ ## Structural typing
11
+
12
+ ```python
13
+ from typing import Protocol
14
+
15
+ class ItemStore(Protocol):
16
+ def load(self, key: str) -> dict | None: ...
17
+ def persist(self, row: dict) -> dict: ...
18
+ ```
19
+
20
+ ## Request DTOs
21
+
22
+ ```python
23
+ from dataclasses import dataclass
24
+
25
+ @dataclass
26
+ class RegisterPayload:
27
+ display_name: str
28
+ mailbox: str
29
+ years: int | None = None
30
+ ```
31
+
32
+ ## Resources
33
+
34
+ - `with` for acquire/release
35
+ - Generators for lazy, memory-bounded iteration
36
+
37
+ Depth: `techne:python` skill.
@@ -0,0 +1,26 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Security
7
+
8
+ > Builds on the shared rules in `../common/security.md`.
9
+
10
+ ## Secrets
11
+
12
+ ```python
13
+ import os
14
+ from dotenv import load_dotenv
15
+
16
+ load_dotenv()
17
+ token = os.environ["SERVICE_TOKEN"] # KeyError if unset
18
+ ```
19
+
20
+ ## Static scan
21
+
22
+ ```bash
23
+ bandit -r src/
24
+ ```
25
+
26
+ Framework-specific hardening: `techne:python` skill. Broad review: `security-review` skill / `exo-security` agent.
@@ -0,0 +1,32 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Testing
7
+
8
+ > Builds on the shared rules in `../common/testing.md`.
9
+
10
+ ## Runner
11
+
12
+ **pytest** default.
13
+
14
+ ```bash
15
+ pytest --cov=src --cov-report=term-missing
16
+ ```
17
+
18
+ ## Marks
19
+
20
+ ```python
21
+ import pytest
22
+
23
+ @pytest.mark.unit
24
+ def test_subtotal():
25
+ ...
26
+
27
+ @pytest.mark.integration
28
+ def test_pool_connect():
29
+ ...
30
+ ```
31
+
32
+ Depth: `techne:python` skill (testing reference).
@@ -0,0 +1,24 @@
1
+ ---
2
+ paths:
3
+ - "**/*.tsx"
4
+ - "**/*.jsx"
5
+ - "**/components/**/*.ts"
6
+ - "**/components/**/*.js"
7
+ - "**/hooks/**/*.ts"
8
+ - "**/hooks/**/*.js"
9
+ ---
10
+ > Extends [typescript/coding-style.md](../typescript/coding-style.md).
11
+
12
+ # React coding style
13
+
14
+ `.tsx` for JSX; `.ts` for logic/hooks/types. PascalCase components/files; `use*` hooks; `handle*` handlers vs `on*` props; boolean props prefixed (`isLoading`).
15
+
16
+ Destructure props in signature. Minimal JSX logic — precompute above `return`. Fragments over wrapper divs.
17
+
18
+ Next App Router: Server Components default; `"use client"` only when needed on line 1; never pull server-only modules into client graphs.
19
+
20
+ Imports: React → vendors → aliases → relatives; `import type` when split.
21
+
22
+ State: local first; context for low-churn globals; external store for high-frequency shared state; derive don't duplicate.
23
+
24
+ No new class components. Colocate tests; **techne:react** for depth.
@@ -0,0 +1,62 @@
1
+ ---
2
+ paths:
3
+ - "**/*.tsx"
4
+ - "**/*.jsx"
5
+ - "**/hooks/**/*.ts"
6
+ - "**/hooks/**/*.js"
7
+ - "**/use-*.ts"
8
+ - "**/use-*.tsx"
9
+ ---
10
+ > React hook APIs (not harness hooks). Extends [typescript/patterns.md](../typescript/patterns.md).
11
+
12
+ # React hooks rules
13
+
14
+ Enable `eslint-plugin-react-hooks` (`rules-of-hooks`: error).
15
+
16
+ ## Placement
17
+
18
+ Hooks only at component/hook top level — never inside conditions, loops, nested functions, or after early returns.
19
+
20
+ ## Effects
21
+
22
+ Use `useEffect` to sync with externals (subscriptions, DOM APIs, non-React libraries). Do **not** use effects to:
23
+
24
+ - mirror props/state into other state (derive in render)
25
+ - run transformations already needed for render
26
+ - reset child state when props change (use `key` on child)
27
+ - fire parent notifications (call in the event handler)
28
+
29
+ Every effect that registers listeners, intervals, or fetches must return cleanup (abort controllers, `clearInterval`, unsubscribe).
30
+
31
+ ## Dependencies
32
+
33
+ List every reactive value read inside the effect/callback. Do not blanket-disable `exhaustive-deps`; comment rare exceptions. Split oversized effects.
34
+
35
+ ## Memoization
36
+
37
+ Default: no `useMemo`/`useCallback`. Add when profiling shows cost, when passing to `memo` children, or when stable identity is a hook dependency.
38
+
39
+ ## Custom hooks
40
+
41
+ Extract when the same state+effect bundle appears in 2+ components with a nameable purpose (`useDebouncedValue`, `useMediaQuery`). Skip wrappers that only rename `useState`.
42
+
43
+ ## State primitives
44
+
45
+ - Expensive initial state: `useState(() => compute())`
46
+ - Updates from prior state in async/batched code: functional updater `set(n => n + 1)`
47
+ - Related fields that always change together: single object state; otherwise split
48
+ - Many conditional transitions: `useReducer`
49
+
50
+ ## Refs
51
+
52
+ DOM/imperative only; mutate `.current` in effects/handlers, not during render. `useImperativeHandle` sparingly.
53
+
54
+ ## External stores
55
+
56
+ Subscribe with `useSyncExternalStore` for browser APIs or non-React stores under concurrent rendering.
57
+
58
+ ## React 19+
59
+
60
+ Prefer built-ins over custom: `use()` for promises/context, `useActionState`/`useFormStatus`, `useOptimistic`, `useTransition`.
61
+
62
+ CI: treat `exhaustive-deps` warnings as errors on new code.
@@ -0,0 +1,48 @@
1
+ ---
2
+ paths:
3
+ - "**/*.tsx"
4
+ - "**/*.jsx"
5
+ - "**/components/**/*.ts"
6
+ - "**/components/**/*.js"
7
+ - "**/app/**/*.tsx"
8
+ - "**/pages/**/*.tsx"
9
+ ---
10
+ > Extends [typescript/patterns.md](../typescript/patterns.md).
11
+
12
+ # React patterns
13
+
14
+ ## Smart vs presentational
15
+
16
+ Containers fetch and orchestrate; leaf components render from props without service calls.
17
+
18
+ ## Where state lives
19
+
20
+ 1. Single component → local `useState`
21
+ 2. Parent + nearby children → lift + props
22
+ 3. Rare, low-churn cross-tree reads → Context (theme, locale)
23
+ 4. Frequent shared updates → Zustand/Jotai/RTK
24
+ 5. Remote data → TanStack Query/SWR/RSC fetch — avoid naked `fetch` in `useEffect`
25
+
26
+ ## RSC (App Router)
27
+
28
+ Server Components default; add `"use client"` only for state/effects/events/browser APIs. Pass serializable props down; slot Server output through `children`. Mark secret modules with `server-only`.
29
+
30
+ Pair `<Suspense fallback=…>` with an Error Boundary near the async subtree — not only at the route root.
31
+
32
+ ## Forms
33
+
34
+ Submit-driven flows: uncontrolled fields + server action reading `FormData`. Live validation or cross-field rules: controlled fields or React Hook Form / TanStack Form.
35
+
36
+ ## Lists
37
+
38
+ Stable `key` from entity id — not array index when rows reorder. Composition: `children`, render props, compound components with shared context (tabs/menus).
39
+
40
+ ## Portals
41
+
42
+ Modals/toasts via portal to escape overflow/z-index traps.
43
+
44
+ ## Refs
45
+
46
+ React 19: `ref` prop on function components; React 18: `forwardRef`.
47
+
48
+ Load **techne:react** for Next.js/Turbopack specifics.
@@ -0,0 +1,45 @@
1
+ ---
2
+ paths:
3
+ - "**/*.tsx"
4
+ - "**/*.jsx"
5
+ - "**/components/**/*.ts"
6
+ - "**/app/**/*.ts"
7
+ - "**/pages/**/*.ts"
8
+ ---
9
+ > Extends [typescript/security.md](../typescript/security.md).
10
+
11
+ # React security
12
+
13
+ ## HTML injection
14
+
15
+ Audit every `dangerouslySetInnerHTML` — prefer text nodes or sanitizing markdown renderers. If HTML is required, sanitize at the call site (allowlist tags).
16
+
17
+ ## URLs
18
+
19
+ Block `javascript:` and suspicious `data:` in dynamic `href`/`src`. Add `rel="noopener noreferrer"` with `target="_blank"`.
20
+
21
+ ## Server actions & APIs
22
+
23
+ Treat `"use server"` handlers like public endpoints: schema-validate input, authenticate, authorize per record, rate-limit destructive work.
24
+
25
+ ## Client bundle exposure
26
+
27
+ Framework public env prefixes ship to browsers (`NEXT_PUBLIC_*`, `VITE_*`, etc.). Never place signing secrets there.
28
+
29
+ ## Session storage
30
+
31
+ Prefer httpOnly secure cookies over `localStorage` session tokens (XSS exfiltration risk).
32
+
33
+ ## CSP & SSR
34
+
35
+ Set CSP at the edge; use per-request nonces for inline scripts in SSR frameworks. Do not concatenate user input into HTML shells outside JSX.
36
+
37
+ ## State merge attacks
38
+
39
+ Do not spread unvalidated JSON into React state — validate with Zod first.
40
+
41
+ ## Maps in production
42
+
43
+ Do not publish full source maps to CDN; upload to error tracker if needed.
44
+
45
+ Escalate to **exo-security** / `security-review` before merge on auth/payment changes.
@@ -0,0 +1,42 @@
1
+ ---
2
+ paths:
3
+ - "**/*.test.tsx"
4
+ - "**/*.test.jsx"
5
+ - "**/*.spec.tsx"
6
+ - "**/*.spec.jsx"
7
+ - "**/__tests__/**/*.ts"
8
+ - "**/__tests__/**/*.tsx"
9
+ ---
10
+ > Extends [typescript/testing.md](../typescript/testing.md).
11
+
12
+ # React testing
13
+
14
+ ## Stack
15
+
16
+ React Testing Library + Vitest (Vite) or Jest (Next legacy). One component runner per repo.
17
+
18
+ ## Queries
19
+
20
+ Prefer `getByRole` with accessible name, then label, placeholder, text. `getByTestId` last.resort. Use `findBy*` / `waitFor` for async — never fixed `setTimeout`.
21
+
22
+ ## Interactions
23
+
24
+ `@testing-library/user-event` with `await`; setup once per test.
25
+
26
+ ## Network
27
+
28
+ MSW at the fetch boundary; override handlers per test for error paths.
29
+
30
+ ## Hooks
31
+
32
+ `renderHook` + `act` for custom hooks; test public API only.
33
+
34
+ ## Anti-patterns
35
+
36
+ No snapshotting large trees; no asserting render counts; do not mock React itself.
37
+
38
+ ## Coverage (typical)
39
+
40
+ Utilities ≥90%; hooks ≥85%; presentational components ≥80% behavior; containers cover happy + error paths.
41
+
42
+ See **techne:react** and **techne:quality** for E2E and a11y automation (`ui-design` audit for manual a11y pass).
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ # React Native accessibility
7
+
8
+ Label interactive controls (`accessibilityRole`, `accessibilityLabel`); icon-only buttons need labels. Use `accessibilityState` for disabled/selected/expanded.
9
+
10
+ Announce async errors/toasts; don't rely on color alone; WCAG AA contrast both themes.
11
+
12
+ Touch targets ~44pt iOS / 48dp Android; support dynamic type; respect reduced motion.
13
+
14
+ Test VoiceOver and TalkBack on devices; align tests with role/label queries.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/coding-style.md`.
7
+
8
+ # React Native style
9
+
10
+ Function components; typed props; thin screens composing hooks + presentational pieces.
11
+
12
+ One styling approach per app (`StyleSheet.create` at module scope or utility classes — no inline style objects on hot paths). Centralize tokens.
13
+
14
+ Platform files (`.ios.tsx`/`.android.tsx`) for large diffs; `Platform.select` for tiny tweaks. Safe areas via `react-native-safe-area-context`.
15
+
16
+ Path aliases; feature folders; no `console.log` in release. TypeScript rules from [typescript/](../typescript/).
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/hooks.md`.
7
+
8
+ # React Native harness hooks
9
+
10
+ PostToolUse on TS/TSX: `tsc --noEmit`, `expo lint`, Prettier on touched files.
11
+
12
+ Periodic: `expo-doctor`, `expo install --check`, dependency audit.
13
+
14
+ No full native builds per edit — reserve EAS/E2E for CI/commands.
15
+
16
+ `EXONOUS_HOOK_PROFILE`, `EXONOUS_DISABLED_HOOKS`.
@@ -0,0 +1,18 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/patterns.md`.
7
+
8
+ # React Native patterns
9
+
10
+ Do not install web DOM rules in RN projects.
11
+
12
+ Expo Router: thin route files; Zod-validate deep link params with `safeParse` + redirect.
13
+
14
+ Separate server cache, UI state, route params, forms; secure tokens in `expo-secure-store`.
15
+
16
+ Lists: `FlatList`/`FlashList` — not huge `.map` in `ScrollView`. Custom hooks for device APIs.
17
+
18
+ Cleanup effects; ignore stale async on unmount. **techne:react-native** skill.
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/performance.md`.
7
+
8
+ # React Native performance
9
+
10
+ Memoize where it stops real re-renders; narrow state. Virtualized lists with stable `keyExtractor` and memoized `renderItem`.
11
+
12
+ `expo-image` with sized assets. Prefer Reanimated over JS-driven `Animated`.
13
+
14
+ Target New Architecture + Hermes; defer heavy work (`InteractionManager`). Profile with RN/React profilers — avoid deprecated debug tooling on New Arch.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ # React Native production readiness
7
+
8
+ Pin Expo SDK; EAS Build/Submit; separate profiles; credentials in EAS — not repo.
9
+
10
+ OTA via `expo-updates` for JS-only; native changes need store builds.
11
+
12
+ Crash reporting (e.g. Sentry) in release; structured logging; surface network failures.
13
+
14
+ Bump version/build numbers; `EXPO_PUBLIC_*` only for public config.
15
+
16
+ Pre-release: typecheck, lint, tests (≥80%), expo-doctor, E2E on real builds, secrets scan, physical device smoke.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/security.md`.
7
+
8
+ # React Native security
9
+
10
+ Assume JS bundle is public — no privileged keys in app binary. Anon keys OK only with server-enforced rules.
11
+
12
+ Tokens in Secure Store; not AsyncStorage/MMKV for secrets. HTTPS; validate API + deep link + push payloads with Zod.
13
+
14
+ Minimal permissions with rationale; accurate store privacy labels.
15
+
16
+ **exo-security** for review — not third-party agent-config scanners.
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths:
3
+ - "**/*.ts"
4
+ - "**/*.tsx"
5
+ ---
6
+ > Builds on the shared rules in `../common/testing.md`.
7
+
8
+ # React Native testing
9
+
10
+ Jest + `@testing-library/react-native` (`jest-expo`); Maestro or Detox for E2E on CI builds.
11
+
12
+ Query by role/label; mock Expo modules and router; fresh QueryClient per test.
13
+
14
+ Cover auth/navigation/core flows before release. TDD via **exo-qa** guidance.