oh-my-agent-commandcode 0.0.0-stage → 20.38.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 (334) hide show
  1. package/README.md +35 -2
  2. package/filter-test-output.sh +52 -0
  3. package/mods/oma.ts +347 -0
  4. package/package.json +30 -4
  5. package/skills/_shared/conditional/experiment-ledger.md +28 -0
  6. package/skills/_shared/conditional/exploration-loop.md +22 -0
  7. package/skills/_shared/conditional/quality-score.md +33 -0
  8. package/skills/_shared/core/anti-ai-prose.md +191 -0
  9. package/skills/_shared/core/api-contracts/README.md +28 -0
  10. package/skills/_shared/core/api-contracts/template.md +90 -0
  11. package/skills/_shared/core/clarification-protocol.md +23 -0
  12. package/skills/_shared/core/code-intelligence.md +46 -0
  13. package/skills/_shared/core/collaboration-policy.md +28 -0
  14. package/skills/_shared/core/common-checklist.md +28 -0
  15. package/skills/_shared/core/context-budget.md +22 -0
  16. package/skills/_shared/core/context-loading.md +34 -0
  17. package/skills/_shared/core/difficulty-guide.md +26 -0
  18. package/skills/_shared/core/execution-policy.md +31 -0
  19. package/skills/_shared/core/lessons-learned.md +33 -0
  20. package/skills/_shared/core/prompt-structure.md +18 -0
  21. package/skills/_shared/core/quality-principles.md +11 -0
  22. package/skills/_shared/core/session-metrics.md +35 -0
  23. package/skills/_shared/core/skill-routing.md +39 -0
  24. package/skills/_shared/core/test-approach.md +54 -0
  25. package/skills/_shared/core/vendor-detection.md +52 -0
  26. package/skills/_shared/runtime/memory-protocol.md +118 -0
  27. package/skills/_shared/runtime/result-contract.md +64 -0
  28. package/skills/_shared/ui-interaction-quality.md +133 -0
  29. package/skills/oma-academic-writing/SKILL.md +181 -0
  30. package/skills/oma-academic-writing/resources/abstract-guide.md +51 -0
  31. package/skills/oma-academic-writing/resources/academic-verb-tiers.md +42 -0
  32. package/skills/oma-academic-writing/resources/anti-ai-checklist.md +52 -0
  33. package/skills/oma-academic-writing/resources/hedging-guide.md +132 -0
  34. package/skills/oma-academic-writing/resources/sentence-structure-reference.md +151 -0
  35. package/skills/oma-architecture/SKILL.md +203 -0
  36. package/skills/oma-architecture/resources/api-evolution.md +41 -0
  37. package/skills/oma-architecture/resources/checklist.md +42 -0
  38. package/skills/oma-architecture/resources/execution-protocol.md +115 -0
  39. package/skills/oma-architecture/resources/methodology-selection.md +92 -0
  40. package/skills/oma-architecture/resources/migration-patterns.md +28 -0
  41. package/skills/oma-architecture/resources/output-templates.md +111 -0
  42. package/skills/oma-architecture/resources/stakeholder-synthesis.md +80 -0
  43. package/skills/oma-backend/SKILL.md +202 -0
  44. package/skills/oma-backend/resources/checklist.md +45 -0
  45. package/skills/oma-backend/resources/error-playbook.md +97 -0
  46. package/skills/oma-backend/resources/execution-protocol.md +39 -0
  47. package/skills/oma-backend/resources/orm-reference.md +61 -0
  48. package/skills/oma-backend/variants/node/api-template.ts +315 -0
  49. package/skills/oma-backend/variants/node/snippets.md +475 -0
  50. package/skills/oma-backend/variants/node/stack.yaml +21 -0
  51. package/skills/oma-backend/variants/node/tech-stack.md +33 -0
  52. package/skills/oma-backend/variants/python/api-template.py +378 -0
  53. package/skills/oma-backend/variants/python/snippets.md +199 -0
  54. package/skills/oma-backend/variants/python/stack.yaml +18 -0
  55. package/skills/oma-backend/variants/python/tech-stack.md +45 -0
  56. package/skills/oma-backend/variants/rust/api-template.rs +635 -0
  57. package/skills/oma-backend/variants/rust/snippets.md +471 -0
  58. package/skills/oma-backend/variants/rust/stack.yaml +20 -0
  59. package/skills/oma-backend/variants/rust/tech-stack.md +36 -0
  60. package/skills/oma-backend/variants/stack.schema.json +73 -0
  61. package/skills/oma-brainstorm/SKILL.md +166 -0
  62. package/skills/oma-brainstorm/resources/triz-lite.md +117 -0
  63. package/skills/oma-coordination/SKILL.md +171 -0
  64. package/skills/oma-db/SKILL.md +201 -0
  65. package/skills/oma-db/resources/anti-patterns.md +177 -0
  66. package/skills/oma-db/resources/checklist.md +67 -0
  67. package/skills/oma-db/resources/document-templates.md +107 -0
  68. package/skills/oma-db/resources/error-playbook.md +50 -0
  69. package/skills/oma-db/resources/examples.md +170 -0
  70. package/skills/oma-db/resources/execution-protocol.md +127 -0
  71. package/skills/oma-db/resources/iso-controls.md +98 -0
  72. package/skills/oma-db/resources/migration-playbook.md +93 -0
  73. package/skills/oma-db/resources/query-tuning.md +57 -0
  74. package/skills/oma-db/resources/vector-db.md +159 -0
  75. package/skills/oma-debug/SKILL.md +146 -0
  76. package/skills/oma-debug/resources/bug-report-template.md +327 -0
  77. package/skills/oma-debug/resources/checklist.md +31 -0
  78. package/skills/oma-debug/resources/common-patterns.md +734 -0
  79. package/skills/oma-debug/resources/debugging-checklist.md +364 -0
  80. package/skills/oma-debug/resources/error-playbook.md +94 -0
  81. package/skills/oma-debug/resources/execution-protocol.md +40 -0
  82. package/skills/oma-design/SKILL.md +135 -0
  83. package/skills/oma-design/resources/asset-strategy.md +34 -0
  84. package/skills/oma-design/resources/checklist.md +63 -0
  85. package/skills/oma-design/resources/data-grid.md +48 -0
  86. package/skills/oma-design/resources/design-md-spec.md +107 -0
  87. package/skills/oma-design/resources/design-tokens.md +53 -0
  88. package/skills/oma-design/resources/error-playbook.md +18 -0
  89. package/skills/oma-design/resources/execution-protocol.md +95 -0
  90. package/skills/oma-design/resources/external-design-skills.md +130 -0
  91. package/skills/oma-design/resources/getdesign-fetcher.md +104 -0
  92. package/skills/oma-design/resources/product-interface-review.md +59 -0
  93. package/skills/oma-design/resources/redesign-protocol.md +52 -0
  94. package/skills/oma-design/resources/stitch-integration.md +244 -0
  95. package/skills/oma-dev-workflow/SKILL.md +375 -0
  96. package/skills/oma-dev-workflow/resources/affected-checks.py +58 -0
  97. package/skills/oma-dev-workflow/resources/api-workflows.md +58 -0
  98. package/skills/oma-dev-workflow/resources/database-patterns.md +107 -0
  99. package/skills/oma-dev-workflow/resources/i18n-patterns.md +63 -0
  100. package/skills/oma-dev-workflow/resources/release-coordination.md +240 -0
  101. package/skills/oma-dev-workflow/resources/tooling-profiles.md +217 -0
  102. package/skills/oma-dev-workflow/resources/troubleshooting.md +78 -0
  103. package/skills/oma-dev-workflow/resources/validation-pipeline.md +246 -0
  104. package/skills/oma-docs/SKILL.md +77 -0
  105. package/skills/oma-docs/resources/commands.md +76 -0
  106. package/skills/oma-explanation/SKILL.md +212 -0
  107. package/skills/oma-explanation/resources/document-structure.md +115 -0
  108. package/skills/oma-explanation/resources/draft-format.md +199 -0
  109. package/skills/oma-explanation/resources/html-contract.md +102 -0
  110. package/skills/oma-frontend/SKILL.md +227 -0
  111. package/skills/oma-frontend/resources/angular-rules.md +110 -0
  112. package/skills/oma-frontend/resources/checklist.md +76 -0
  113. package/skills/oma-frontend/resources/error-playbook.md +125 -0
  114. package/skills/oma-frontend/resources/execution-protocol.md +46 -0
  115. package/skills/oma-frontend/resources/snippets.md +354 -0
  116. package/skills/oma-frontend/resources/specialized-visual-implementation.md +193 -0
  117. package/skills/oma-frontend/resources/tailwind-rules.md +83 -0
  118. package/skills/oma-frontend/resources/tech-stack.md +156 -0
  119. package/skills/oma-hwp/SKILL.md +166 -0
  120. package/skills/oma-hwp/config/hwp-config.yaml +35 -0
  121. package/skills/oma-hwp/resources/balanced-tables.ts +39 -0
  122. package/skills/oma-hwp/resources/execution-protocol.md +145 -0
  123. package/skills/oma-hwp/resources/flatten-tables.ts +101 -0
  124. package/skills/oma-hwp/resources/package.json +13 -0
  125. package/skills/oma-hwp/resources/troubleshooting.md +70 -0
  126. package/skills/oma-hwp/resources/tsconfig.json +10 -0
  127. package/skills/oma-hwp/resources/turndown-plugin-gfm.d.ts +9 -0
  128. package/skills/oma-image/SKILL.md +142 -0
  129. package/skills/oma-image/config/image-config.yaml +70 -0
  130. package/skills/oma-image/resources/checklist.md +18 -0
  131. package/skills/oma-image/resources/execution-protocol.md +117 -0
  132. package/skills/oma-image/resources/invocation.md +105 -0
  133. package/skills/oma-image/resources/prompt-tips.md +71 -0
  134. package/skills/oma-image/resources/vendor-matrix.md +90 -0
  135. package/skills/oma-market/SKILL.md +142 -0
  136. package/skills/oma-market/resources/checklist.md +12 -0
  137. package/skills/oma-market/resources/error-playbook.md +12 -0
  138. package/skills/oma-market/resources/execution-protocol.md +60 -0
  139. package/skills/oma-market/resources/frameworks/pestel.md +101 -0
  140. package/skills/oma-market/resources/frameworks/porters-5f.md +90 -0
  141. package/skills/oma-market/resources/frameworks/swot.md +61 -0
  142. package/skills/oma-market/resources/intent-rules.md +35 -0
  143. package/skills/oma-market/resources/output-laws.md +53 -0
  144. package/skills/oma-mobile/SKILL.md +168 -0
  145. package/skills/oma-mobile/resources/checklist.md +77 -0
  146. package/skills/oma-mobile/resources/error-playbook.md +198 -0
  147. package/skills/oma-mobile/resources/execution-protocol.md +47 -0
  148. package/skills/oma-mobile/resources/screen-template.dart +331 -0
  149. package/skills/oma-mobile/resources/screen-template.swift +239 -0
  150. package/skills/oma-mobile/resources/screen-template.tsx +179 -0
  151. package/skills/oma-mobile/resources/tech-stack.md +69 -0
  152. package/skills/oma-mobile/variants/README.md +45 -0
  153. package/skills/oma-mobile/variants/flutter/api-template.dart +461 -0
  154. package/skills/oma-mobile/variants/flutter/snippets.md +1353 -0
  155. package/skills/oma-mobile/variants/flutter/stack.yaml +21 -0
  156. package/skills/oma-mobile/variants/flutter/tech-stack.md +201 -0
  157. package/skills/oma-mobile/variants/kotlin-android/api-template.kt +182 -0
  158. package/skills/oma-mobile/variants/kotlin-android/snippets.md +871 -0
  159. package/skills/oma-mobile/variants/kotlin-android/stack.yaml +32 -0
  160. package/skills/oma-mobile/variants/kotlin-android/tech-stack.md +159 -0
  161. package/skills/oma-mobile/variants/react-native/api-template.ts +531 -0
  162. package/skills/oma-mobile/variants/react-native/snippets.md +1014 -0
  163. package/skills/oma-mobile/variants/react-native/stack.yaml +22 -0
  164. package/skills/oma-mobile/variants/react-native/tech-stack.md +192 -0
  165. package/skills/oma-mobile/variants/stack.schema.json +68 -0
  166. package/skills/oma-mobile/variants/swift-ios/api-template.swift +165 -0
  167. package/skills/oma-mobile/variants/swift-ios/snippets.md +1028 -0
  168. package/skills/oma-mobile/variants/swift-ios/stack.yaml +25 -0
  169. package/skills/oma-mobile/variants/swift-ios/tech-stack.md +174 -0
  170. package/skills/oma-observability/SKILL.md +225 -0
  171. package/skills/oma-observability/resources/anti-patterns.md +555 -0
  172. package/skills/oma-observability/resources/boundaries/cross-application.md +348 -0
  173. package/skills/oma-observability/resources/boundaries/multi-tenant.md +290 -0
  174. package/skills/oma-observability/resources/boundaries/release.md +372 -0
  175. package/skills/oma-observability/resources/boundaries/slo.md +225 -0
  176. package/skills/oma-observability/resources/checklist.md +123 -0
  177. package/skills/oma-observability/resources/examples.md +448 -0
  178. package/skills/oma-observability/resources/execution-protocol.md +166 -0
  179. package/skills/oma-observability/resources/incident-forensics.md +348 -0
  180. package/skills/oma-observability/resources/intent-rules.md +307 -0
  181. package/skills/oma-observability/resources/layers/L3-network.md +281 -0
  182. package/skills/oma-observability/resources/layers/L4-transport.md +299 -0
  183. package/skills/oma-observability/resources/layers/L7-application/crash-analytics.md +359 -0
  184. package/skills/oma-observability/resources/layers/L7-application/mobile-rum.md +278 -0
  185. package/skills/oma-observability/resources/layers/L7-application/waf.md +246 -0
  186. package/skills/oma-observability/resources/layers/L7-application/web-rum.md +350 -0
  187. package/skills/oma-observability/resources/layers/mesh.md +368 -0
  188. package/skills/oma-observability/resources/matrix.md +177 -0
  189. package/skills/oma-observability/resources/meta-observability.md +605 -0
  190. package/skills/oma-observability/resources/observability-as-code.md +666 -0
  191. package/skills/oma-observability/resources/signals/audit.md +310 -0
  192. package/skills/oma-observability/resources/signals/cost.md +303 -0
  193. package/skills/oma-observability/resources/signals/logs.md +263 -0
  194. package/skills/oma-observability/resources/signals/metrics.md +478 -0
  195. package/skills/oma-observability/resources/signals/privacy.md +351 -0
  196. package/skills/oma-observability/resources/signals/profiles.md +245 -0
  197. package/skills/oma-observability/resources/signals/traces.md +360 -0
  198. package/skills/oma-observability/resources/standards.md +214 -0
  199. package/skills/oma-observability/resources/transport/collector-topology.md +308 -0
  200. package/skills/oma-observability/resources/transport/otlp-grpc-vs-http.md +256 -0
  201. package/skills/oma-observability/resources/transport/sampling-recipes.md +297 -0
  202. package/skills/oma-observability/resources/transport/udp-statsd-mtu.md +167 -0
  203. package/skills/oma-observability/resources/vendor-categories.md +352 -0
  204. package/skills/oma-orchestration/SKILL.md +302 -0
  205. package/skills/oma-orchestration/config/cli-config.yaml +92 -0
  206. package/skills/oma-orchestration/resources/memory-schema.md +232 -0
  207. package/skills/oma-orchestration/resources/subagent-prompt-template.md +30 -0
  208. package/skills/oma-orchestration/scripts/parallel-run.sh +6 -0
  209. package/skills/oma-orchestration/scripts/spawn-agent.sh +5 -0
  210. package/skills/oma-orchestration/scripts/verify.sh +20 -0
  211. package/skills/oma-orchestration/templates/backend-task.md +19 -0
  212. package/skills/oma-orchestration/templates/debug-task.md +16 -0
  213. package/skills/oma-orchestration/templates/frontend-task.md +18 -0
  214. package/skills/oma-orchestration/templates/mobile-task.md +18 -0
  215. package/skills/oma-orchestration/templates/qa-task.md +16 -0
  216. package/skills/oma-orchestration/templates/tasks-example.yaml +15 -0
  217. package/skills/oma-pdf/SKILL.md +162 -0
  218. package/skills/oma-pdf/config/pdf-config.yaml +27 -0
  219. package/skills/oma-pdf/resources/execution-protocol.md +127 -0
  220. package/skills/oma-pm/SKILL.md +157 -0
  221. package/skills/oma-pm/resources/error-playbook.md +75 -0
  222. package/skills/oma-pm/resources/examples.md +439 -0
  223. package/skills/oma-pm/resources/execution-protocol.md +62 -0
  224. package/skills/oma-pm/resources/iso-planning.md +110 -0
  225. package/skills/oma-pm/resources/plan-phase-protocol.md +66 -0
  226. package/skills/oma-pm/resources/task-template.json +86 -0
  227. package/skills/oma-qa/SKILL.md +141 -0
  228. package/skills/oma-qa/resources/checklist.md +339 -0
  229. package/skills/oma-qa/resources/error-playbook.md +98 -0
  230. package/skills/oma-qa/resources/execution-protocol.md +169 -0
  231. package/skills/oma-qa/resources/iso-quality.md +82 -0
  232. package/skills/oma-qa/resources/verify-ship-protocol.md +116 -0
  233. package/skills/oma-recap/SKILL.md +245 -0
  234. package/skills/oma-recap/resources/output-formats.md +83 -0
  235. package/skills/oma-refactor/SKILL.md +184 -0
  236. package/skills/oma-refactor/resources/definition.md +108 -0
  237. package/skills/oma-refactor/resources/governance.md +33 -0
  238. package/skills/oma-refactor/resources/hotspots.py +44 -0
  239. package/skills/oma-refactor/resources/measurement.md +93 -0
  240. package/skills/oma-scholar/SKILL.md +276 -0
  241. package/skills/oma-scholar/config/scholar-config.yaml +79 -0
  242. package/skills/oma-scholar/resources/api-endpoints.md +174 -0
  243. package/skills/oma-scholar/resources/checklist.md +92 -0
  244. package/skills/oma-scholar/resources/execution-protocol.md +224 -0
  245. package/skills/oma-scholar/resources/fallback-providers.md +143 -0
  246. package/skills/oma-scholar/resources/setup-openalex.md +85 -0
  247. package/skills/oma-scholar/resources/sidecar-spec.md +341 -0
  248. package/skills/oma-scholar/resources/upstream-spec-cache.md +972 -0
  249. package/skills/oma-scm/SKILL.md +103 -0
  250. package/skills/oma-scm/resources/cm-operations.md +56 -0
  251. package/skills/oma-scm/resources/codeowners-playbook.md +45 -0
  252. package/skills/oma-scm/resources/conventional-commits.md +108 -0
  253. package/skills/oma-scm/resources/merge-risk.md +76 -0
  254. package/skills/oma-scm/resources/onboarding-risk-signals.md +71 -0
  255. package/skills/oma-search/SKILL.md +125 -0
  256. package/skills/oma-search/resources/checklist.md +36 -0
  257. package/skills/oma-search/resources/error-playbook.md +66 -0
  258. package/skills/oma-search/resources/examples.md +80 -0
  259. package/skills/oma-search/resources/execution-protocol.md +86 -0
  260. package/skills/oma-search/resources/intent-rules.md +47 -0
  261. package/skills/oma-search/resources/trust-registry.md +53 -0
  262. package/skills/oma-security/SKILL.md +172 -0
  263. package/skills/oma-security/resources/artex.md +108 -0
  264. package/skills/oma-security/resources/ci.md +134 -0
  265. package/skills/oma-security/resources/cisco-source.md +108 -0
  266. package/skills/oma-security/resources/deepsec-config.md +45 -0
  267. package/skills/oma-security/resources/deepsec-matchers.md +35 -0
  268. package/skills/oma-security/resources/deepsec-scanning.md +45 -0
  269. package/skills/oma-security/resources/deepsec-setup.md +41 -0
  270. package/skills/oma-security/resources/findings-contract.md +408 -0
  271. package/skills/oma-security/resources/mcp-scanning.md +122 -0
  272. package/skills/oma-security/resources/skill-scanning.md +106 -0
  273. package/skills/oma-security/resources/validation.md +71 -0
  274. package/skills/oma-skill-creation/SKILL.md +84 -0
  275. package/skills/oma-skill-creation/resources/prompt-evaluation.md +36 -0
  276. package/skills/oma-skill-creation/resources/ssl-lite-template.md +108 -0
  277. package/skills/oma-skill-creation/resources/validation-checklist.md +101 -0
  278. package/skills/oma-slide/SKILL.md +277 -0
  279. package/skills/oma-slide/resources/animation-patterns.md +245 -0
  280. package/skills/oma-slide/resources/assets/deck-stage.js +514 -0
  281. package/skills/oma-slide/resources/assets/viewport-base.css +257 -0
  282. package/skills/oma-slide/resources/canva-integration.md +203 -0
  283. package/skills/oma-slide/resources/checklist.md +46 -0
  284. package/skills/oma-slide/resources/design-doctrine.md +260 -0
  285. package/skills/oma-slide/resources/fixed-stage.md +232 -0
  286. package/skills/oma-slide/resources/generation-protocol.md +393 -0
  287. package/skills/oma-slide/resources/native-pptx.md +84 -0
  288. package/skills/oma-slide/resources/selection-index.json +461 -0
  289. package/skills/oma-slide/resources/style-presets.LICENSE +10 -0
  290. package/skills/oma-slide/resources/style-presets.md +520 -0
  291. package/skills/oma-tf-infra/SKILL.md +201 -0
  292. package/skills/oma-tf-infra/resources/checklist.md +53 -0
  293. package/skills/oma-tf-infra/resources/cost-optimization.md +574 -0
  294. package/skills/oma-tf-infra/resources/error-playbook.md +68 -0
  295. package/skills/oma-tf-infra/resources/examples.md +38 -0
  296. package/skills/oma-tf-infra/resources/execution-protocol.md +129 -0
  297. package/skills/oma-tf-infra/resources/iso-42001-infra.md +229 -0
  298. package/skills/oma-tf-infra/resources/multi-cloud-examples.md +241 -0
  299. package/skills/oma-tf-infra/resources/policy-testing-examples.md +332 -0
  300. package/skills/oma-translation/SKILL.md +229 -0
  301. package/skills/oma-translation/resources/anti-ai-patterns.md +104 -0
  302. package/skills/oma-translation/resources/lang/_template.md +73 -0
  303. package/skills/oma-translation/resources/lang/en.md +123 -0
  304. package/skills/oma-translation/resources/lang/ja.md +274 -0
  305. package/skills/oma-translation/resources/lang/ko.md +228 -0
  306. package/skills/oma-translation/resources/lang/zh.md +285 -0
  307. package/skills/oma-translation/resources/style-skills.md +104 -0
  308. package/skills/oma-translation/resources/translation-rubric.md +126 -0
  309. package/skills/oma-video/SKILL.md +229 -0
  310. package/skills/oma-video/config/video-config.yaml +60 -0
  311. package/skills/oma-video/resources/checklist.md +26 -0
  312. package/skills/oma-video/resources/execution-protocol.md +122 -0
  313. package/skills/oma-video/resources/existing-media.md +185 -0
  314. package/skills/oma-video/resources/hyperframes-authoring/README.md +44 -0
  315. package/skills/oma-video/resources/hyperframes-authoring/demo.md +31 -0
  316. package/skills/oma-video/resources/hyperframes-authoring/explainer.md +10 -0
  317. package/skills/oma-video/resources/hyperframes-authoring/shorts.md +10 -0
  318. package/skills/oma-video/resources/motion-principles.md +81 -0
  319. package/skills/oma-video/resources/mpt/driver.py +301 -0
  320. package/skills/oma-video/resources/prompt-tips.md +75 -0
  321. package/skills/oma-video/resources/script-schema.md +81 -0
  322. package/skills/oma-video/resources/sound-design.md +127 -0
  323. package/skills/oma-video/resources/strudel/package.json +11 -0
  324. package/skills/oma-video/resources/strudel/page.html +87 -0
  325. package/skills/oma-video/resources/strudel/render.mjs +295 -0
  326. package/skills/oma-video/resources/vendor-matrix.md +124 -0
  327. package/skills/oma-voice/SKILL.md +249 -0
  328. package/skills/oma-voice/config/voice-config.yaml +30 -0
  329. package/skills/oma-voice/resources/audio-processing.md +119 -0
  330. package/skills/oma-voice/resources/checklist.md +47 -0
  331. package/skills/oma-voice/resources/execution-protocol.md +215 -0
  332. package/skills/oma-voice/resources/prompt-tips.md +43 -0
  333. package/skills/oma-voice/resources/voice-matrix.md +51 -0
  334. package/skills/oma-voice/resources/voicestudio.md +87 -0
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Screen Template for Mobile Agent (React Native)
3
+ *
4
+ * Demonstrates best practices for React Native screens:
5
+ * - Typed navigation props (React Navigation v7 native-stack)
6
+ * - Consumes TanStack Query hooks (useTodosQuery + mutations) — NEVER axios directly
7
+ * - Explicit isPending / error-with-retry / empty / data states via the shared
8
+ * LoadingView / ErrorView / EmptyStateView components (snippets.md §12)
9
+ * - FlatList with a stable keyExtractor and item-level accessibility roles
10
+ * - RefreshControl wired to the query's refetch (pull-to-refresh)
11
+ * - StyleSheet at the bottom; no inline style objects in render
12
+ *
13
+ * Layout: src/features/todos/ui/ExampleScreen.tsx
14
+ * The hooks (useTodosQuery, useToggleTodo, useDeleteTodo) live in
15
+ * src/features/todos/{queries.ts,mutations.ts}; the screen only composes them.
16
+ */
17
+
18
+ import React, { useCallback } from 'react';
19
+ import {
20
+ View,
21
+ Text,
22
+ FlatList,
23
+ TouchableOpacity,
24
+ RefreshControl,
25
+ StyleSheet,
26
+ type ListRenderItem,
27
+ } from 'react-native';
28
+ import type { NativeStackScreenProps } from '@react-navigation/native-stack';
29
+ import type { RootStackParamList } from '@navigation/types';
30
+ import { LoadingView } from '@shared/components/LoadingView';
31
+ import { ErrorView } from '@shared/components/ErrorView';
32
+ import { EmptyStateView } from '@shared/components/EmptyStateView';
33
+ import { useTodosQuery } from '../queries';
34
+ import { useToggleTodo, useDeleteTodo } from '../mutations';
35
+ import type { Todo } from '@api/todos';
36
+
37
+ // Typed screen props: navigation.navigate is compile-time checked against the
38
+ // RootStackParamList, so passing the wrong params to 'TodoDetail' is a type error.
39
+ type Props = NativeStackScreenProps<RootStackParamList, 'TodoList'>;
40
+
41
+ export function ExampleScreen({ navigation }: Props) {
42
+ // Read hook — returns cached data instantly and revalidates in the background.
43
+ const { data: todos, isPending, isError, error, refetch, isRefetching } =
44
+ useTodosQuery();
45
+
46
+ // Write hooks — the screen fires intents; the hooks own optimistic updates,
47
+ // rollback, and cache invalidation. The screen never touches the query cache.
48
+ const toggleMutation = useToggleTodo();
49
+ const deleteMutation = useDeleteTodo();
50
+
51
+ // --- Intents -------------------------------------------------------------
52
+
53
+ const handleToggle = useCallback(
54
+ (id: string) => toggleMutation.mutate(id),
55
+ [toggleMutation],
56
+ );
57
+
58
+ const handleDelete = useCallback(
59
+ (id: string) => deleteMutation.mutate(id),
60
+ [deleteMutation],
61
+ );
62
+
63
+ const handleOpenDetail = useCallback(
64
+ (id: string) => navigation.navigate('TodoDetail', { id }),
65
+ [navigation],
66
+ );
67
+
68
+ // renderItem is defined once (stable identity) so FlatList rows don't churn.
69
+ const renderItem: ListRenderItem<Todo> = useCallback(
70
+ ({ item }) => (
71
+ <View style={styles.row}>
72
+ <TouchableOpacity
73
+ style={styles.checkbox}
74
+ onPress={() => handleToggle(item.id)}
75
+ accessibilityRole="checkbox"
76
+ accessibilityState={{ checked: item.completed }}
77
+ testID={`todo-checkbox-${item.id}`}
78
+ accessibilityLabel={`Toggle ${item.title}`}
79
+ >
80
+ <Text style={styles.checkboxGlyph}>{item.completed ? '☑' : '☐'}</Text>
81
+ </TouchableOpacity>
82
+
83
+ <TouchableOpacity
84
+ style={styles.titleContainer}
85
+ onPress={() => handleOpenDetail(item.id)}
86
+ accessibilityRole="button"
87
+ >
88
+ <Text style={[styles.title, item.completed && styles.completed]}>
89
+ {item.title}
90
+ </Text>
91
+ </TouchableOpacity>
92
+
93
+ <TouchableOpacity
94
+ onPress={() => handleDelete(item.id)}
95
+ accessibilityRole="button"
96
+ testID={`todo-delete-${item.id}`}
97
+ accessibilityLabel={`Delete ${item.title}`}
98
+ >
99
+ <Text style={styles.deleteIcon}>✕</Text>
100
+ </TouchableOpacity>
101
+ </View>
102
+ ),
103
+ [handleToggle, handleDelete, handleOpenDetail],
104
+ );
105
+
106
+ // --- State switch --------------------------------------------------------
107
+ // Order matters: pending (first load, no cached data) → error → empty → data.
108
+ // Each non-data state delegates to a shared component so every screen renders
109
+ // them identically. isPending is the v5 first-load flag; isRefetching drives
110
+ // the pull-to-refresh spinner without hiding already-cached rows.
111
+
112
+ if (isPending) {
113
+ return <LoadingView label="Loading todos" />;
114
+ }
115
+
116
+ if (isError) {
117
+ return <ErrorView error={error} onRetry={refetch} />;
118
+ }
119
+
120
+ if (todos.length === 0) {
121
+ return <EmptyStateView message="No todos yet. Add your first one!" />;
122
+ }
123
+
124
+ // --- Data state ----------------------------------------------------------
125
+
126
+ return (
127
+ <FlatList
128
+ data={todos}
129
+ keyExtractor={(item) => item.id}
130
+ renderItem={renderItem}
131
+ contentContainerStyle={styles.listContent}
132
+ refreshControl={
133
+ <RefreshControl refreshing={isRefetching} onRefresh={refetch} />
134
+ }
135
+ // Keep the empty branch above authoritative; this is a defensive fallback.
136
+ ListEmptyComponent={
137
+ <EmptyStateView message="No todos yet. Add your first one!" />
138
+ }
139
+ />
140
+ );
141
+ }
142
+
143
+ // StyleSheet at the bottom — StyleSheet.create freezes the objects and lets RN
144
+ // pass style IDs across the bridge instead of fresh objects on every render.
145
+ const styles = StyleSheet.create({
146
+ listContent: {
147
+ flexGrow: 1,
148
+ },
149
+ row: {
150
+ flexDirection: 'row',
151
+ alignItems: 'center',
152
+ paddingHorizontal: 16,
153
+ paddingVertical: 12,
154
+ borderBottomWidth: StyleSheet.hairlineWidth,
155
+ borderBottomColor: '#e0e0e0',
156
+ },
157
+ checkbox: {
158
+ marginRight: 12,
159
+ },
160
+ checkboxGlyph: {
161
+ fontSize: 18,
162
+ },
163
+ titleContainer: {
164
+ flex: 1,
165
+ },
166
+ title: {
167
+ fontSize: 16,
168
+ color: '#212121',
169
+ },
170
+ completed: {
171
+ textDecorationLine: 'line-through',
172
+ color: '#9e9e9e',
173
+ },
174
+ deleteIcon: {
175
+ color: '#9e9e9e',
176
+ fontSize: 16,
177
+ paddingLeft: 12,
178
+ },
179
+ });
@@ -0,0 +1,69 @@
1
+ # Mobile Agent - Tech Stack Index
2
+
3
+ Per-platform tech stacks live under `variants/{platform}/`, mirroring
4
+ `oma-backend/variants/`. Each variant owns its own `stack.yaml` (SSOT),
5
+ `tech-stack.md`, `snippets.md`, and API template. This file holds only the
6
+ **cross-platform guidance** shared by every variant plus a pointer index.
7
+
8
+ ## Platform Variants
9
+
10
+ | Platform | Stack manifest | Tech stack | Snippets | API template |
11
+ |----------|----------------|-----------|----------|--------------|
12
+ | Swift (iOS native) | `../variants/swift-ios/stack.yaml` | `../variants/swift-ios/tech-stack.md` | `../variants/swift-ios/snippets.md` | `../variants/swift-ios/api-template.swift` |
13
+ | Kotlin (Android native) | `../variants/kotlin-android/stack.yaml` | `../variants/kotlin-android/tech-stack.md` | `../variants/kotlin-android/snippets.md` | `../variants/kotlin-android/api-template.kt` |
14
+ | Flutter | `../variants/flutter/stack.yaml` | `../variants/flutter/tech-stack.md` | `../variants/flutter/snippets.md` | `../variants/flutter/api-template.dart` |
15
+ | React Native | `../variants/react-native/stack.yaml` | `../variants/react-native/tech-stack.md` | `../variants/react-native/snippets.md` | `../variants/react-native/api-template.ts` |
16
+
17
+ Stack selection: detect from project files (`Package.swift` / `settings.gradle.kts` +
18
+ `com.android.application` / `pubspec.yaml` / `package.json` + `react-native`), or run `/stack-set` to generate a
19
+ project-specific `stack/` from the matching variant baseline. The variant
20
+ `stack.yaml` is the default; `/stack-set` may override any field per project.
21
+
22
+ ## Stack at a glance
23
+
24
+ | | Swift iOS | Kotlin Android | Flutter | React Native |
25
+ |---|---|---|---|---|
26
+ | Language | Swift 6+ | Kotlin 2.1+ | Dart 3.10+ | TypeScript (strict) |
27
+ | UI | SwiftUI | Jetpack Compose / Material 3 | Flutter / Material 3 | React Native |
28
+ | State | Observation (`@MainActor @Observable`) | `ViewModel` + `StateFlow` (Hilt) | Riverpod 3 | Zustand 5 (client) + TanStack Query 5 (server) |
29
+ | Navigation | NavigationStack | Navigation Compose (type-safe routes) | GoRouter 17 | React Navigation v7 |
30
+ | HTTP transport | URLSession | Ktor Client (OkHttp engine; MockEngine in tests) | Dio | Axios |
31
+ | API/data layer | swift-openapi-generator | openapi-generator `kotlin`/`jvm-ktor` | Repository (Dio) | TanStack Query + `api/` |
32
+ | Response cache (when required) | hyperoslo/Cache | Room repository | Drift offline-first repo | TanStack Query |
33
+ | Durable storage | SwiftData / Keychain | Room / DataStore / EncryptedSharedPreferences | Drift / flutter_secure_storage | MMKV / secure-store |
34
+ | Unit test | XCTest / Swift Testing | JUnit + coroutines-test + ktor-client-mock | flutter_test + mocktail | jest + RNTL (matchers built in ≥12.4) |
35
+ | E2E | XCUITest | Maestro | Maestro | Maestro |
36
+
37
+ ## Repository-layer response cache when required
38
+
39
+ When offline behavior, latency, or repeated reads justify caching, use the selected variant's Repository / data-layer cache — the
40
+ same philosophy across platforms, different idiomatic tooling:
41
+
42
+ - Cache **decoded domain models**, never raw transport bytes / `HTTPBody` /
43
+ raw HTTP responses.
44
+ - **Stale-while-revalidate** on reads: serve cached immediately, revalidate in
45
+ the background, update state.
46
+ - **Invalidate on write**: every create/update/delete drops the affected cache
47
+ keys so the next read repopulates.
48
+ - Cache key = operation + params (never URLs); explicit TTL (never infinite).
49
+ - The cache is for transient, server-owned data only. Durable user-owned data
50
+ and secrets stay in the platform's durable store / secure store.
51
+
52
+ See each variant's `tech-stack.md` "Response Cache" section and `snippets.md`
53
+ for the platform-specific implementation.
54
+
55
+ ## Cross-platform guidelines (shared)
56
+
57
+ - **Clean Architecture**: domain → data → presentation (App/Core/Features/Shared
58
+ on Swift; `app/{ui,data,di}` + `api-client` on Kotlin). Business logic never
59
+ lives in UI widgets/views/composables.
60
+ - **Platform design**: Material Design 3 on Android, iOS Human Interface
61
+ Guidelines on iOS. Use platform checks for platform-specific behavior.
62
+ - **State management**: no raw `setState`/ad-hoc state for complex logic — use
63
+ the variant's state solution.
64
+ - **Networking**: transport-layer interceptors handle auth/retry/logging only;
65
+ domain-model caching is a repository concern (see above). Handle offline
66
+ gracefully.
67
+ - **Lifecycle**: dispose controllers / cancel tasks to prevent leaks.
68
+ - **Performance**: 60fps target; test on both platforms.
69
+ - **E2E**: Maestro for critical user flows.
@@ -0,0 +1,45 @@
1
+ # variants/ — Mobile Platform Variants
2
+
3
+ The `variants/` directory is the home for **all** mobile platform stacks,
4
+ mirroring the layout used by `oma-backend/variants/`. Every supported platform
5
+ is represented here, each as a self-contained variant.
6
+
7
+ | Variant | `stack.yaml` `language` | Files |
8
+ |---------|------------------------|-------|
9
+ | `swift-ios/` | `swift` | `stack.yaml`, `tech-stack.md`, `snippets.md`, `api-template.swift` |
10
+ | `kotlin-android/` | `kotlin` | `stack.yaml`, `tech-stack.md`, `snippets.md`, `api-template.kt` |
11
+ | `flutter/` | `flutter` | `stack.yaml`, `tech-stack.md`, `snippets.md`, `api-template.dart` |
12
+ | `react-native/` | `react-native` | `stack.yaml`, `tech-stack.md`, `snippets.md`, `api-template.ts` |
13
+
14
+ ## Layout contract
15
+
16
+ Each `variants/{platform}/` directory contains:
17
+
18
+ - **`stack.yaml`** — the stack SSOT, validated against `stack.schema.json`.
19
+ Declares `language`, `framework`, `state`, `navigation`, `http_client`,
20
+ `local_storage`, `response_cache`, `structure`, `source`, and a `verify:`
21
+ block consumed by `oma verify agent mobile`.
22
+ - **`tech-stack.md`** — human-readable narrative reference (`stack.yaml` wins on
23
+ conflict).
24
+ - **`snippets.md`** — copy-paste-ready, numbered code patterns.
25
+ - **`api-template.{swift,kt,dart,ts}`** — the canonical data/repository template,
26
+ including the repository-layer response cache when required.
27
+
28
+ `stack.schema.json` is the shared schema for all variants.
29
+
30
+ ## resources/ is shared meta only
31
+
32
+ The sibling `resources/` directory holds **only** cross-platform, protocol, and
33
+ meta documents shared by every variant: `execution-protocol.md`,
34
+ `checklist.md`, `error-playbook.md`, `tech-stack.md` (the variant index +
35
+ cross-platform guidance), and the screen templates. Platform-specific stack
36
+ narrative and snippets belong in the variant, not in `resources/`.
37
+
38
+ ## Stack selection
39
+
40
+ A project's stack is detected from its manifest (`Package.swift`, `settings.gradle.kts`
41
+ + `com.android.application`, `pubspec.yaml`, `package.json` + `react-native`) or
42
+ chosen via `/stack-set`, which seeds a
43
+ project-specific `stack/` from the matching variant baseline (adapt, never
44
+ blind-copy). The variant `stack.yaml` is the default; any field may be overridden
45
+ per project.