oh-my-agent-commandcode 0.0.0-stage → 20.38.3

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,260 @@
1
+ # Design Doctrine — oma-slide
2
+
3
+ > Anti-"AI slop" aesthetics, font rules, content-density modes, and accessibility requirements.
4
+ > Read this document before writing any slide HTML. It defines the aesthetic contract for all
5
+ > oma-slide generated decks.
6
+
7
+ ---
8
+
9
+ ## 1. The Anti-"AI Slop" Commitment
10
+
11
+ Most AI-generated presentations are immediately recognizable: Inter or Roboto at arbitrary sizes,
12
+ purple-to-blue linear gradients, white cards dropped on a gradient background, icon rows that
13
+ feel copied from a template screenshot. These choices read as unowned — the visual equivalent of
14
+ filler text.
15
+
16
+ Every oma-slide deck must make a **committed aesthetic choice** and follow it through. That means:
17
+
18
+ - A **distinctive typographic voice** — not the path of least resistance.
19
+ - A **committed palette** — 2–4 colors with semantic roles, not "looks fine on screen."
20
+ - An **atmospheric intention** — the deck should feel like something, not just contain information.
21
+
22
+ The test: could this slide have come from a specific studio, designer, or publication? If yes,
23
+ it is doing its job.
24
+
25
+ ---
26
+
27
+ ## 2. Typography Rules
28
+
29
+ ### 2a. Forbidden Defaults
30
+
31
+ Do **not** use the following as the primary or display typeface:
32
+
33
+ | Typeface | Why forbidden |
34
+ |---|---|
35
+ | Inter | Ubiquitous SaaS default; zero personality at display sizes |
36
+ | Roboto | Google Material default; reads as a framework artifact |
37
+ | Arial / Helvetica (unmodified) | Corporate filler; visually neutral to the point of invisibility |
38
+ | Open Sans | Overused in educational/government templates |
39
+ | Lato | Same problem as Open Sans |
40
+
41
+ Using any of the above as a **body/fallback** in a font stack is acceptable. Using them as
42
+ the **display/headline typeface** produces AI-slop output.
43
+
44
+ ### 2b. Distinctive Latin Display Fonts (encouraged)
45
+
46
+ Choose from distinctive, well-crafted typefaces. Examples (all free via Google Fonts or equivalent CDN):
47
+
48
+ | Typeface | Character | Good for |
49
+ |---|---|---|
50
+ | Playfair Display | Classical serif elegance | Editorial, advisory, literary |
51
+ | Cormorant Garamond | Literary high-contrast serif | Scholarly, quiet luxury |
52
+ | Fraunces | Optical-size serif with personality | Warm editorial, brand work |
53
+ | Bricolage Grotesque | Variable grotesk with rhythm | Contemporary, design-led |
54
+ | Bebas Neue | Condensed caps impact | Bold poster, headlines-only |
55
+ | Shrikhand | Bold decorative display | Loud editorial, manifesto |
56
+ | Space Grotesk | Technical yet warm | Tech, SaaS with voice |
57
+ | Syne | Geometric with irregular flow | Indie, experimental |
58
+ | Alfa Slab One | Slab-serif punch | Activist, campaign energy |
59
+ | DM Serif Display | Transitional, refined | Professional with warmth |
60
+
61
+ This is not an exhaustive list — use judgment. A face should be chosen because it serves the
62
+ deck's mood, not because it is available.
63
+
64
+ ### 2c. CJK Decks — Pretendard Required
65
+
66
+ Any deck whose content includes **Korean (한국어), Japanese (日本語), or Chinese (中文)** characters
67
+ **must** include Pretendard Variable as the primary font. This is non-negotiable.
68
+
69
+ ```html
70
+ <!-- In <head> -->
71
+ <link rel="preconnect" href="https://cdn.jsdelivr.net" />
72
+ <link
73
+ rel="stylesheet"
74
+ href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"
75
+ />
76
+ ```
77
+
78
+ ```css
79
+ :root {
80
+ --font-body: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
81
+ "Apple SD Gothic Neo", "Noto Sans KR", "Noto Sans JP", "Noto Sans SC", sans-serif;
82
+ --font-display: "Pretendard Variable", Pretendard, sans-serif;
83
+ }
84
+ ```
85
+
86
+ Rationale: the system CJK font stack varies wildly across OS versions and produces
87
+ inconsistent rendering at large display sizes. Pretendard is modern, variable, and has
88
+ a dynamic subset CDN making it practical for web delivery.
89
+
90
+ For bilingual EN/CJK decks: pair Pretendard with a compatible latin display face (e.g.,
91
+ Bricolage Grotesque or a Grotesk that harmonizes with Pretendard's proportions).
92
+
93
+ ### 2d. Font Loading
94
+
95
+ Load display fonts via `<link rel="preconnect">` + `<link rel="stylesheet">` in the `<head>`.
96
+ The validator awaits `document.fonts.ready` before measuring geometry — so font choices directly
97
+ affect overflow detection. Choose fonts early in the generation phase, not as an afterthought.
98
+
99
+ ---
100
+
101
+ ## 3. Color Palette Rules
102
+
103
+ ### 3a. Anti-Patterns to Avoid
104
+
105
+ | Pattern | Why it fails |
106
+ |---|---|
107
+ | Purple-to-blue linear gradient background | The single most common AI-generated visual cliché |
108
+ | Gradient orbs/blobs floating on white | Overused in SaaS landing-page design, reads as template |
109
+ | Full-rainbow accent colors | Signals no palette decision was made |
110
+ | Pure `#ffffff` background with no atmospheric treatment | Clinically neutral; no sense of material or surface |
111
+ | Bright neon on black + one more neon (no restraint) | Every cyberpunk AI deck; needs commitment to be distinctive |
112
+
113
+ ### 3b. Committed Palette Structure
114
+
115
+ A good palette has **semantic roles**, not just colors:
116
+
117
+ ```
118
+ background — the canvas; sets material and atmosphere
119
+ text-primary — main readable content; must pass WCAG AA on background
120
+ text-muted — supporting text, captions; must pass WCAG AA
121
+ accent — maximum one primary accent; the deck's signature color
122
+ accent-alt — optional secondary accent; only if the design concept requires it
123
+ ```
124
+
125
+ Name colors descriptively: `"Ink Navy (#1a2332)"` not `"dark blue"`. The name carries
126
+ the palette intent.
127
+
128
+ ### 3c. WCAG AA Minimum
129
+
130
+ All text must meet **WCAG 2.1 AA** contrast ratios:
131
+ - Normal text (< 18 pt / < 14 pt bold): 4.5:1 contrast ratio
132
+ - Large text (≥ 18 pt / ≥ 14 pt bold): 3:1 contrast ratio
133
+
134
+ At 1920×1080, "normal" text corresponds to roughly ≤ 24 px; "large" text to ≥ 24 px.
135
+
136
+ Use a contrast checker before finalizing a palette. If a design direction cannot meet AA, revise
137
+ the palette — do not compromise accessibility for aesthetics.
138
+
139
+ ---
140
+
141
+ ## 4. Atmospheric Intention
142
+
143
+ Atmosphere is the quality that makes a deck feel like it was designed rather than assembled.
144
+ It comes from:
145
+
146
+ - **Background treatment**: solid color, gradient with direction and purpose, subtle texture,
147
+ or photographic.
148
+ - **Whitespace**: deliberate emptiness communicates confidence. Cramped slides communicate anxiety.
149
+ - **Typographic hierarchy**: 2–3 sizes maximum per slide, each with a clear role.
150
+ - **Layer logic** (from `fixed-stage.md`):
151
+ - z-index 0 — background
152
+ - z-index 10 — atmosphere (texture, overlay)
153
+ - z-index 100 — content
154
+ - z-index 200 — highlights/callouts
155
+
156
+ The wildcard preview in Phase 2 is the appropriate place to introduce an unexpected atmospheric
157
+ direction. The safe preset and bold template choices should stay within recognizable territory.
158
+
159
+ ---
160
+
161
+ ## 5. Content-Density Modes
162
+
163
+ The `density` field in `meta.json` governs how slides are laid out and how much content they carry.
164
+ Its values are the CLI enum `sparse | balanced | dense`: a speaker-led deck maps to `sparse`, a
165
+ reading-first deck maps to `dense`, and `balanced` (the default) sits in between.
166
+
167
+ ### 5a. Speaker-Led (`sparse`)
168
+
169
+ The presenter is the primary content delivery vehicle. Slides are visual anchors.
170
+
171
+ | Element | Guidance |
172
+ |---|---|
173
+ | Headline | 1 short statement per slide; 64–120 px; ≤ 10 words |
174
+ | Body text | 0–3 lines maximum; 32–48 px; no prose paragraphs |
175
+ | Bullets | Avoid. Use one concept per slide instead. |
176
+ | Visuals | Large, occupying ≥ 40% of the canvas |
177
+ | Slide count | Allow 1 slide per 1–2 minutes of talk time |
178
+ | Speaker notes | Extensive notes in `meta.json.speakerNotes[]` for the presenter |
179
+
180
+ ### 5b. Reading-First (`dense`)
181
+
182
+ The deck is a self-contained document. Readers consume it without a presenter.
183
+
184
+ | Element | Guidance |
185
+ |---|---|
186
+ | Headline | Clear, self-explanatory; 48–72 px |
187
+ | Body text | Full sentences allowed; 28–36 px; max 8 lines per slide |
188
+ | Bullets | Acceptable; ≤ 6 items; each bullet ≤ 20 words |
189
+ | Visuals | Supporting; labeled with captions |
190
+ | Slide count | Allow as many slides as the content requires |
191
+ | Speaker notes | Optional; deck must stand alone without them |
192
+
193
+ ### 5c. Mixed Density
194
+
195
+ Some decks mix modes (e.g., opener slides are sparse, data slides are dense). Apply the relevant
196
+ mode rules per slide and record the overall dominant mode in `meta.json.density`
197
+ (`sparse`, `balanced`, or `dense`).
198
+
199
+ ---
200
+
201
+ ## 6. Slide Count Guidance
202
+
203
+ | Purpose | Sparse (speaker-led) | Dense (reading-first) |
204
+ |---|---|---|
205
+ | Pitch / investor (5 min) | 6–10 slides | 8–14 slides |
206
+ | Internal report (15 min) | 12–18 slides | 18–30 slides |
207
+ | Conference talk (30 min) | 20–35 slides | 30–50 slides |
208
+ | Executive briefing (10 min) | 8–12 slides | 12–20 slides |
209
+ | Product launch (standalone) | 10–16 slides | 16–28 slides |
210
+
211
+ These are guidelines, not hard limits. Content scope governs slide count; do not pad or compress
212
+ slides to hit a number.
213
+
214
+ ---
215
+
216
+ ## 7. What a Good Slide Looks Like
217
+
218
+ A well-crafted slide satisfies all of these:
219
+
220
+ 1. **One idea** — a viewer can state the slide's point in one sentence.
221
+ 2. **Scannable hierarchy** — the largest element is the most important.
222
+ 3. **Comfortable empty space** — the canvas breathes; content does not fill edge to edge.
223
+ 4. **Consistent with the deck** — the color, font, and grid choices are the same as every other slide.
224
+ 5. **Readable at scale** — body text ≥ 28 px (doctrine floor; the validator's hard gate rejects only text below 18 px); the smallest legible text at 1920×1080 passes WCAG AA.
225
+
226
+ ---
227
+
228
+ ## 8. What Makes a Deck Feel Distinctive (not just acceptable)
229
+
230
+ The difference between "it looks fine" and "this is well designed" is usually one of:
231
+
232
+ - **Typographic commitment**: the display typeface is unmistakably itself at every size.
233
+ - **Palette ownership**: the colors have a name and a reason; they could not have been chosen randomly.
234
+ - **Compositional tension**: not every element is centered and balanced — some slides use asymmetry, large negative space, or a single dominant element to create visual interest.
235
+ - **Atmospheric consistency**: the first slide and the last slide feel like they come from the same world.
236
+ - **Motion that earns its place**: if there are animations, they reinforce the content rhythm — a fade-up for an incoming point, not a spin because CSS supports it.
237
+
238
+ ---
239
+
240
+ ## 9. Accessibility Requirements (WCAG AA)
241
+
242
+ ### 9a. Animation Performance
243
+
244
+ Use `transform` + `opacity` only for animations. Avoid `width`, `height`, `margin`, `padding`
245
+ transitions (these cause layout reflows and are expensive at 1920×1080).
246
+
247
+ ### 9b. Focus States
248
+
249
+ Navigation controls (`.deck-nav button`) must have visible `:focus-visible` styles. The viewer
250
+ is keyboard-navigable; sighted keyboard users must see which element has focus.
251
+
252
+ ### 9c. Fixed Stage Tradeoff
253
+
254
+ The fixed 1920×1080 letterbox model is an accepted, conscious limitation:
255
+ - On small mobile screens the stage scales down (text shrinks proportionally).
256
+ - Screen readers receive the raw HTML structure, not the scaled layout.
257
+ - Zoom interactions in browsers may distort the scaled stage.
258
+
259
+ These are known tradeoffs of the stage model — do not attempt to work around them in generated
260
+ HTML. Document this limitation when relevant to the user.
@@ -0,0 +1,232 @@
1
+ # Fixed-Stage Rules — oma-slide
2
+
3
+ > The canonical reference for the 1920×1080 stage model, embedding instructions, px-authoring
4
+ > conventions, and the CJK → Pretendard rule.
5
+
6
+ ## 1. The 1920×1080 Invariant
7
+
8
+ All slides are authored at exactly **1920 × 1080 px**. This is non-negotiable:
9
+
10
+ - The validator (`oma slide validate`) renders at 1920×1080 and checks geometry at that size;
11
+ it reports px→pt at 0.75 (1920×1080 px → 1440×810 pt at 96 dpi / 72 pt-per-inch).
12
+ - The exporter (`oma slide export pdf|png`) captures at 1920×1080 before any post-processing.
13
+ - PPTX export places each rasterized slide full-bleed on a LAYOUT_WIDE canvas
14
+ (13.333 in × 7.5 in = 960×540 pt) — pixel authoring only, no pt in HTML.
15
+ - Do **not** author in percentages, `vw/vh`, or responsive units that reflow the layout.
16
+ Fixed `px` values only inside `.slide`.
17
+
18
+ ```
19
+ Canvas size: 1920 px wide × 1080 px tall
20
+ Aspect ratio: 16:9
21
+ Validator pt: 1440 pt wide × 810 pt tall (px × 0.75)
22
+ PPTX layout: 13.333 in × 7.5 in (960×540 pt) — raster placed full-bleed
23
+ ```
24
+
25
+ ## 2. Stage Scaling — How It Works
26
+
27
+ `deck-stage.js` computes:
28
+
29
+ ```js
30
+ const scale = Math.min(viewportWidth / 1920, viewportHeight / 1080);
31
+ ```
32
+
33
+ Then positions the `.deck-stage` element so it is centred (letterbox / pillarbox):
34
+
35
+ ```js
36
+ offsetLeft = (viewportWidth - 1920 * scale) / 2
37
+ offsetTop = (viewportHeight - 1080 * scale) / 2
38
+
39
+ stageEl.style.transform = `scale(${scale})`;
40
+ stageEl.style.left = `${offsetLeft}px`;
41
+ stageEl.style.top = `${offsetTop}px`;
42
+ ```
43
+
44
+ `transform-origin` is `top left` (set in `viewport-base.css`). This keeps the maths
45
+ simple and avoids a secondary translate.
46
+
47
+ The viewport background (`#000` default) fills the letterbox/pillarbox bars. You can change
48
+ the background color of `.deck-viewport` in a theme without breaking the scale maths.
49
+
50
+ ## 3. Embedding into a Deck
51
+
52
+ Paste or link the two shared assets into every deck's `<head>`. The `oma slide create` command
53
+ copies them into the workdir automatically; `oma slide bundle` inlines them into the single-file
54
+ output.
55
+
56
+ ### Option A — External files (development / per-slide workdir)
57
+
58
+ ```html
59
+ <head>
60
+ <link rel="stylesheet" href="./viewport-base.css" />
61
+ </head>
62
+ <body>
63
+ <deck-stage>
64
+ <div class="deck-viewport">
65
+ <div class="deck-stage">
66
+ <section class="slide" id="slide-01">
67
+ <!-- 1920×1080 content here -->
68
+ </section>
69
+ <section class="slide" id="slide-02">
70
+ <!-- ... -->
71
+ </section>
72
+ </div>
73
+ </div>
74
+ </deck-stage>
75
+
76
+ <!-- Optional: speaker notes (JSON keyed by 0-based slide index) -->
77
+ <script type="application/json" id="speaker-notes">
78
+ { "0": "Opening remarks...", "1": "Second slide notes..." }
79
+ </script>
80
+
81
+ <script src="./deck-stage.js"></script>
82
+ </body>
83
+ ```
84
+
85
+ <!-- oma-docs:ignore-start -->
86
+ ### Option B — Inlined (single-file bundle — `out/deck.html`)
87
+ <!-- oma-docs:ignore-end -->
88
+
89
+ `oma slide bundle` inlines both files; the structure is the same but the
90
+ `<link>` is replaced by `<style>...</style>` and `<script src>` becomes `<script>...</script>`.
91
+
92
+ ### Optional: nav controls + slide counter
93
+
94
+ `deck-stage.js` looks for existing `.deck-nav` and `.deck-counter` elements.
95
+ If none are present the viewer still works (keyboard/touch/wheel only).
96
+ For `viewer.html`, the CLI injects:
97
+
98
+ ```html
99
+ <nav class="deck-nav" aria-label="Slide navigation">
100
+ <button id="btn-prev" aria-label="Previous slide">&#8592;</button>
101
+ <button id="btn-next" aria-label="Next slide">&#8594;</button>
102
+ </nav>
103
+ <div class="deck-counter" role="status" aria-live="polite"></div>
104
+ ```
105
+
106
+ ## 4. px-Authoring Conventions
107
+
108
+ | Element | Convention |
109
+ |---|---|
110
+ | Slide root | `position: absolute; inset: 0; width: 1920px; height: 1080px;` |
111
+ | Safe zones | Left/right margin ≥ 80px; top/bottom margin ≥ 60px |
112
+ | Body text | 28–36 px doctrine floor; heading 64–120 px. (The validator hard-fails only below 18 px — 18–27 px passes the gate but is reserved for captions/labels.) |
113
+ | Icon / decorative image | explicit `width`/`height` in px |
114
+ | Background gradients | allowed (CSS); rasterized to PNG at PPTX export |
115
+ | Clipping / overflow | `overflow: hidden` on `.slide` prevents bleed-out |
116
+ | Animations | `transform` + `opacity` only |
117
+
118
+ ### 8-px Grid
119
+
120
+ Align all spacing, padding, and element positions to multiples of 8 px. This keeps designs
121
+ crisp at all scale factors and maps cleanly to pt at PPTX export.
122
+
123
+ ### Z-index layers
124
+
125
+ ```
126
+ 0 background layer (solid color, image, gradient)
127
+ 10 atmosphere layer (subtle overlay, texture)
128
+ 100 content layer (text, charts, icons)
129
+ 200 highlight layer (callouts, badges)
130
+ 1000 overlay layer (modal-style content, reserved)
131
+ ```
132
+
133
+ ## 5. Slide Visibility — Always Use .active / .visible
134
+
135
+ **Never** toggle slides with `display:none` or `display:block`. Some layout classes from design
136
+ themes may override that and reveal all slides at once.
137
+
138
+ Use the CSS class protocol defined in `viewport-base.css`:
139
+
140
+ | Class | Meaning |
141
+ |---|---|
142
+ | _(no class)_ | Hidden: `visibility:hidden; opacity:0; pointer-events:none` |
143
+ | `.active` | Fully visible: `visibility:visible; opacity:1; pointer-events:auto` |
144
+ | `.visible` | Fading out: `visibility:visible; opacity:0; pointer-events:none` |
145
+
146
+ `deck-stage.js` manages these classes automatically. Slide authors do not need to set them.
147
+
148
+ ## 6. Validator Contract — data-om-validate
149
+
150
+ `deck-stage.js` automatically annotates each `.slide` with:
151
+
152
+ ```html
153
+ data-screen-label="Slide N / M"
154
+ data-om-validate="no_overflowing_text,no_overlapping_text,slide_sized_text"
155
+ ```
156
+
157
+ `oma slide validate` (puppeteer-core) reads these attributes to:
158
+
159
+ 1. Locate each slide in the rendered DOM.
160
+ 2. Know which checks to run (overflow / overlap / size checks).
161
+ 3. Report findings as `{ code, message, slide, selector?, rect? }`.
162
+
163
+ **Do not remove or override `data-om-validate`** in authored slide HTML. If a slide intentionally
164
+ clips text (e.g., a decorative element), annotate the clipping element with `data-om-no-check`
165
+ to suppress false-positive overflow findings.
166
+
167
+ ## 7. CJK Content → Pretendard Required
168
+
169
+ Any deck whose content contains Korean (한국어), Japanese (日本語), or Chinese (中文) characters
170
+ **must** include Pretendard Variable as the primary font.
171
+
172
+ ```html
173
+ <!-- In <head> — Pretendard via CDN (fallback to system CJK stack) -->
174
+ <link rel="preconnect" href="https://cdn.jsdelivr.net" />
175
+ <link
176
+ rel="stylesheet"
177
+ href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"
178
+ />
179
+ ```
180
+
181
+ CSS font-family for CJK decks:
182
+
183
+ ```css
184
+ :root {
185
+ --font-body: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
186
+ "Apple SD Gothic Neo", "Noto Sans KR", "Noto Sans JP", "Noto Sans SC", sans-serif;
187
+ --font-display: "Pretendard Variable", Pretendard, sans-serif;
188
+ }
189
+ ```
190
+
191
+ For latin-only decks, distinctive display fonts are encouraged (anti-"AI slop"):
192
+ system-font-stack restriction applies only to the **body** font fallback, not to
193
+ the chosen heading/display typeface.
194
+
195
+ ## 8. Print / Save-as-PDF
196
+
197
+ Trigger with `Ctrl+P` / `Cmd+P` in the browser, or use `oma slide export pdf --mode print`.
198
+
199
+ `deck-stage.js` removes the CSS transform before the print layout renders, so the browser
200
+ sees the true 1920×1080 px layout. `viewport-base.css` `@media print` rules:
201
+
202
+ - Remove `.deck-viewport` overflow/fixed positioning.
203
+ - Remove transform from `.deck-stage`.
204
+ - Make all `.slide` elements visible with `break-after: page`.
205
+ - Hide `.deck-nav` and `.deck-counter`.
206
+
207
+ Result: one clean 1920×1080 slide per printed page.
208
+
209
+ ## 9. Presenter View (embedded notes panel + postMessage API)
210
+
211
+ The presenter view is an **embedded on-screen notes panel** — there is no separate
212
+ presenter window. `deck-stage.js` reads speaker notes from
213
+ `<script type="application/json" id="speaker-notes">` (a JSON object keyed by
214
+ **0-based slide index** as a string: `"0"`, `"1"`, …). Press **`n`** to toggle a
215
+ fixed, semi-transparent panel at the bottom of the viewport showing the current
216
+ slide's note; it updates automatically on slide change, is hidden by default
217
+ (never intercepts clicks when hidden), and is suppressed during print.
218
+
219
+ For embedding integrations, `deck-stage.js` also posts on every slide change:
220
+
221
+ ```js
222
+ window.parent.postMessage(
223
+ { type: "slideIndexChanged", index: N, total: M, note: "speaker note text" },
224
+ "*"
225
+ );
226
+ ```
227
+
228
+ The parent frame can navigate the iframe by posting:
229
+
230
+ ```js
231
+ iframeEl.contentWindow.postMessage({ type: "navigateTo", index: N }, "*");
232
+ ```