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,70 @@
1
+ # oma-hwp Troubleshooting
2
+
3
+ ## Diagnosing conversion issues
4
+
5
+ ### 1. "지원하지 않는 파일 형식" / unsupported file format
6
+ - Verify the extension matches the content. HWP5 files should start with `D0 CF 11 E0` (OLE compound). HWPX starts with `50 4B 03 04` (ZIP).
7
+ - Check with: `xxd "{file}" | head -1`
8
+ - If the extension is wrong, rename and retry.
9
+ - If the file is genuinely a different format (e.g., Word, Excel), use the appropriate skill.
10
+
11
+ ### 2. Encrypted or password-protected HWP
12
+ - kordoc reports `암호화된 문서` / "encrypted document".
13
+ - General password-locked HWP: the CLI currently has no inline password flag. Ask the user to decrypt the file first (via Hancom Office) and retry.
14
+ - DRM "distribution-only" HWP (배포용): kordoc ports rhwp's AES-128 ECB algorithm and often succeeds. If it still fails, note as best-effort and continue with other files.
15
+
16
+ ### 3. Empty Markdown output
17
+ Most likely causes:
18
+ - HWP contains only scanned images without a text layer → needs OCR (out of scope).
19
+ - kordoc bug on a specific document → try `bunx kordoc@latest`; if still empty, report upstream with a sample.
20
+
21
+ ### 4. Missing or broken tables
22
+ - Simple tables: GFM pipe syntax.
23
+ - Tables with `colspan` / `rowspan`: kordoc falls back to HTML `<table>`. This is expected and correct.
24
+ - Nested tables: kordoc emits the nested `<table>` inside its parent cell. The post-processor preserves the complete balanced outer table as HTML rather than flattening it and risking structural loss.
25
+ - If tables are completely absent, confirm the source file actually contains tables (sometimes they are images).
26
+ - `flatten-tables.ts` scans balanced outer `<table>...</table>` blocks. If a block contains a nested table, it is kept as HTML so parent/child structure and closing tags remain intact.
27
+
28
+ ### 5. Hyperlinks look wrong
29
+ kordoc sanitizes links (XSS defense). If a legitimate link is stripped, verify the original URL scheme: only `http://`, `https://`, `mailto:`, and relative paths are preserved by default.
30
+
31
+ ### 6. Image extraction issues
32
+ - kordoc extracts images from ZIP entries (HWPX) and HWP5 `BinData` streams.
33
+ - Output is typically written as `{input_basename}.assets/` next to the Markdown file.
34
+ - If images are missing, check whether the source file truly embeds them (vs linking externally).
35
+
36
+ ### 7. Slow conversion / timeout on huge files
37
+ - Use `-p` to narrow to a page/section range.
38
+ - Split processing across page ranges and concatenate results.
39
+ - If a specific PDF-embedded HWPX is slow, consider oma-pdf for the PDF portion.
40
+
41
+ ### 8. kordoc crash / stack trace
42
+ 1. Upgrade: `bunx kordoc@latest` (bust the bunx cache if needed)
43
+ 2. Capture a minimal reproducible fixture
44
+ 3. File an issue: https://github.com/chrisryugj/kordoc/issues
45
+ 4. Meanwhile, if only a subset of the document triggers the crash, use `-p` to skip it
46
+
47
+ ### 9. Reproducibility vs freshness tradeoff
48
+ - `bunx kordoc@latest` always pulls latest. Fixes land fast, but outputs may drift. A bare `bunx kordoc` reuses the bunx cache and can be arbitrarily old; always include `@latest` or a pinned version.
49
+ - For long-running projects, pin a version under `hwp:` in `.agents/oma-config.yaml` (not `config/hwp-config.yaml` — `oma update` overwrites the skill file):
50
+ ```yaml
51
+ hwp:
52
+ version:
53
+ channel: pinned
54
+ pinned: "4.7.3"
55
+ ```
56
+ Then invoke via `bunx kordoc@4.7.3 ...` in commands. Check the current release with `npm view kordoc version` before pinning — the example above may itself be stale.
57
+
58
+ ## kordoc limitations (upstream-owned)
59
+ - Inline password entry for encrypted HWP: not yet supported.
60
+ - OCR of scanned HWPs: out of kordoc's scope; it does not perform OCR.
61
+ - Perfect fidelity of complex shapes / drawings: Markdown cannot represent drawing primitives; expect them to be dropped or replaced by placeholder markers.
62
+
63
+ ## When to route elsewhere
64
+ | Symptom | Route to |
65
+ |---------|----------|
66
+ | Input is `.pdf` | `oma-pdf` |
67
+ | Input is `.xlsx` / `.docx` | `bunx kordoc@latest` directly (skill not advertising) |
68
+ | Need OCR of scanned documents | Out of scope; use a dedicated OCR pipeline |
69
+ | Need to author / edit HWPX (generate, fill, seal, patch) | `bunx kordoc@latest generate|fill|seal|patch ...` directly (skill not advertising; see Scope Reminder table in `execution-protocol.md`) |
70
+ | Need personal-data masking, notation lint, structure validation, or SVG render | `bunx kordoc@latest redact|lint|validate|render ...` directly (skill not advertising) |
@@ -0,0 +1,10 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["node"],
7
+ "noEmit": true
8
+ },
9
+ "include": ["*.ts", "*.d.ts"]
10
+ }
@@ -0,0 +1,9 @@
1
+ declare module "turndown-plugin-gfm" {
2
+ import type TurndownService from "turndown";
3
+
4
+ export function tables(turndownService: TurndownService): void;
5
+ export function gfm(turndownService: TurndownService): void;
6
+ export function highlightedCodeBlock(turndownService: TurndownService): void;
7
+ export function strikethrough(turndownService: TurndownService): void;
8
+ export function taskListItems(turndownService: TurndownService): void;
9
+ }
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: oma-image
3
+ description: Generate raster images or reference-guided variations through the
4
+ OMA image CLI. Use for image assets or explicit vendor comparisons; pixel
5
+ editing uses an editor.
6
+ ---
7
+
8
+ # Image Agent - Multi-Vendor Image Router
9
+
10
+ ## Scheduling
11
+
12
+ ### Goal
13
+ Generate images and visual assets through authenticated multi-vendor routing while preserving prompt clarity, reference-guided regeneration, cost controls, and reproducible output manifests.
14
+
15
+ ### Intent signature
16
+ - User asks to generate images, visual assets, illustrations, product photos, concept art, mockups, or AI art.
17
+ - Another skill needs shared image-generation infrastructure.
18
+ - User provides reference images for a new generated variation or asks for vendor comparison.
19
+
20
+ ### When to use
21
+
22
+ - Generating images, visual assets, illustrations, product photos, concept art
23
+ - Comparing output between multiple image models for the same prompt
24
+ - Producing images from prompts within editor workflows (Claude Code, Codex, Gemini CLI)
25
+ - Other skills needing image generation infrastructure (shared invocation)
26
+ - Regenerating a new image that follows a supplied reference's subject, style, lighting, or composition
27
+
28
+ ### When NOT to use
29
+
30
+ - Pixel-level editing, masking, inpainting, object removal, compositing, cropping, resizing, or format conversion -> out of scope; use an image editor or a tool that explicitly supports that operation.
31
+ - Generating videos or audio -> out of scope
32
+ - Inline vector art / SVG composition from structured data -> use a templating skill
33
+ - Simple asset resizing or format conversion -> use a dedicated image library
34
+
35
+ ### Expected inputs
36
+ - Image prompt or creative brief
37
+ - Optional vendor, size, quality, count, output directory, and reference images
38
+ - Authentication/environment state for Codex, Pollinations, or Gemini
39
+
40
+ ### Expected outputs
41
+ - Generated image files under `.agents/results/images/` or requested output directory
42
+ - `manifest.json` with prompt, vendor, model, and reproducibility metadata
43
+ - Vendor comparison outputs when `--vendor all` is used
44
+
45
+ ### Dependencies
46
+ - `oma image generate` CLI and vendor authentication
47
+ - Codex image generation, Pollinations API, or Gemini API/CLI strategy
48
+ - `resources/vendor-matrix.md`, `resources/prompt-tips.md`, and the `image:` section of `.agents/oma-config.yaml`
49
+
50
+ ### Control-flow features
51
+ - Branches by prompt ambiguity, vendor auth, cost threshold, reference-guided regeneration support, path safety, and safety/timeout exit codes
52
+ - Calls external vendor APIs/CLIs
53
+ - Reads reference images and writes generated images plus manifests
54
+
55
+ ## Structural Flow
56
+
57
+ ### Entry
58
+ 1. Validate that the request contains enough subject, setting, style, usage, and aspect-ratio signal.
59
+ 2. Classify a supplied image as a reference for a newly generated variation, or as a request for unsupported pixel/mask editing.
60
+ 3. Check authentication, cost guardrails, output path, and count limits.
61
+
62
+ ### Transitions
63
+ - If the subject or intended result cannot be inferred, clarify that missing input; otherwise proceed with reasonable defaults.
64
+ - If `--vendor all` is requested, require every requested vendor to be available.
65
+ - If the request is reference-guided regeneration and the selected vendor supports references, pass it automatically.
66
+ - If the request requires pixel, mask, crop, resize, or format editing, stop before generation and name the unsupported operation and an appropriate editor route.
67
+ - If estimated cost exceeds guardrail, require confirmation unless bypassed.
68
+
69
+ ### Failure and recovery
70
+ - If auth is missing, report vendor-specific authentication requirement.
71
+ - If reference support is unavailable for the selected vendor, reject with actionable guidance.
72
+ - If local CLI is outdated, ask user to run `oma update`.
73
+ - If generation times out or is blocked, surface exit code and provider status.
74
+
75
+ ### Exit
76
+ - Success: images and manifest exist in the output directory.
77
+ - Partial success: some vendors fail in comparison mode and failures are reported.
78
+ - Failure: no image is produced and the route/cost/auth/safety blocker is explicit.
79
+
80
+ ## Logical Operations
81
+
82
+ ### Tools and instruments
83
+ - `oma image generate`, `oma image doctor`, `oma image vendor list`
84
+ - Codex, Pollinations, and Gemini provider paths
85
+ - Prompt tips, vendor matrix, and image config
86
+
87
+ ### Canonical command path
88
+ ```bash
89
+ oma image doctor
90
+ oma image generate "<prompt>" --vendor auto --size auto --quality auto --output json
91
+ ```
92
+
93
+ With reference images:
94
+ ```bash
95
+ oma image generate --reference "<absolute-path>" --vendor codex "<prompt>"
96
+ ```
97
+
98
+ ### Resource scope
99
+ | Scope | Resource target |
100
+ |-------|-----------------|
101
+ | `LOCAL_FS` | Reference images, generated images, manifests |
102
+ | `PROCESS` | Provider CLIs and image router commands |
103
+ | `NETWORK` | Pollinations/Gemini or provider APIs |
104
+ | `CREDENTIALS` | Provider auth and API keys |
105
+
106
+ ### Preconditions
107
+ - Prompt is sufficiently specified or user approves amplification.
108
+ - Required vendor auth and output permissions exist.
109
+ - Reference paths are accessible when used.
110
+
111
+ ### Effects and side effects
112
+ - Creates image files and manifests.
113
+ - May call paid or rate-limited provider APIs.
114
+ - May read attached/reference images.
115
+
116
+ ### Guardrails
117
+
118
+ 1. **Resolve the brief**: use supplied details and reasonable creative defaults. Ask only when a missing choice materially changes the requested result. Do not require approval of an expanded prompt when generation is already authorized.
119
+ 2. **Authentication-aware dispatch**: detect which vendor CLIs are available and run only those; with `--vendor all`, every requested vendor must be available (strict). Caveat: the `antigravity` health check verifies installation only (`agy --version`) — a signed-out agy passes health and fails at generate time with agy's own error.
120
+ 3. **Cost guardrail**: confirm before executing runs whose estimated cost is ≥ `$0.20` (configurable). `--yes` / `OMA_IMAGE_YES=1` bypass. Choose generation from the requested outcome, not keyword presence. **Non-interactive contexts** (agents, CI — no TTY on stdin): the CLI cannot prompt, so a run at/over the threshold exits 1 with a message naming `--yes`. Use `--dry-run` to estimate cost. Reuse an existing budget authorization; otherwise confirm the additional spend before re-running with `-y`.
121
+ 4. **Path safety**: output paths outside `$PWD` require `--allow-external-output`.
122
+ 5. **Cancellable**: SIGINT/SIGTERM aborts in-flight provider calls and the orchestrator.
123
+ 6. **Deterministic outputs**: every run writes `manifest.json` next to the images for reproducibility.
124
+ 7. **Max `n` = 5**: wall-time bound.
125
+ 8. **Exit codes align with `oma search fetch`** (0, 1, 2=safety, 3=not-found, 4=invalid-input, 5=auth-required, 6=timeout).
126
+
127
+ ### Creative brief
128
+ Use the requested subject and constraints. Infer setting, style, lighting, and aspect ratio when unspecified; preserve explicit text and reference intent. Ask only for a material unresolved choice. Read `resources/prompt-tips.md` for an unfamiliar image category.
129
+
130
+ ## References
131
+ - Provider invocation, references, and output layout: `resources/invocation.md` (selected vendor or reference-image operation only).
132
+
133
+ ### Configuration
134
+
135
+ Project-specific settings: the `image:` section of `.agents/oma-config.yaml`, which `oma update` preserves. Shipped defaults live in the CLI (`DEFAULTS` in `cli/commands/image/config.ts`) — write only the keys you change. The legacy `config/image-config.yaml` is no longer read by the CLI; migration 022 moves anything you had changed there into oma-config (and deletes the file when it was never edited).
136
+ Env vars: `OMA_IMAGE_DEFAULT_VENDOR`, `OMA_IMAGE_DEFAULT_OUT`, `OMA_IMAGE_YES`, `POLLINATIONS_API_KEY`.
137
+
138
+ - Execution steps (follow for the selected task): `resources/execution-protocol.md`
139
+ - Vendor matrix: `resources/vendor-matrix.md`
140
+ - Prompt tips: `resources/prompt-tips.md`
141
+ - Checklist (run before handoff): `resources/checklist.md`
142
+ - Context loading: `../_shared/core/context-loading.md`
@@ -0,0 +1,70 @@
1
+ # oma-image skill configuration — NO LONGER READ BY THE CLI.
2
+ #
3
+ # Editing this file has no effect. Put your overrides under `image:` in
4
+ # .agents/oma-config.yaml, which `oma update` preserves; this file is
5
+ # overwritten. `oma update` runs migration 022, which moves anything you had
6
+ # changed here into oma-config for you.
7
+ #
8
+ # The values below mirror DEFAULTS in cli/commands/image/config.ts, the source
9
+ # of truth. They are kept only so migration 022 can tell an edited file from a
10
+ # pristine one.
11
+
12
+ default_output_dir: .agents/results/images
13
+ default_vendor: auto
14
+ default_size: 1024x1024
15
+ default_quality: auto
16
+ default_count: 1
17
+ default_timeout_sec: 180
18
+
19
+ vendors:
20
+ codex:
21
+ enabled: true
22
+ model: gpt-image-2
23
+ extra_args: []
24
+ antigravity:
25
+ # Antigravity CLI (`agy`) is an agentic CLI that drives its own image
26
+ # generation tool over the Gemini Code Assist subscription. The exact
27
+ # model agy picks internally is opaque to us, so we deliberately leave
28
+ # `model` empty — no fictional model hint goes into the prompt, the
29
+ # manifest, or the output filename. Requires `agy` on PATH.
30
+ enabled: true
31
+ model: ""
32
+ pollinations:
33
+ enabled: true
34
+ model: flux
35
+
36
+ cost_guardrail:
37
+ estimate_threshold_usd: 0.20
38
+ per_image_usd:
39
+ codex:
40
+ gpt-image-2:
41
+ low: 0.02
42
+ medium: 0.03
43
+ high: 0.04
44
+ auto: 0.03
45
+ antigravity:
46
+ "":
47
+ low: 0
48
+ medium: 0
49
+ high: 0
50
+ auto: 0
51
+ # Mirrors FREE_MODELS/CREDIT_MODELS in the pollinations provider.
52
+ # Credit-gated models bill prepaid pollen credits, not USD, so the
53
+ # USD guardrail estimate stays 0 for all of them.
54
+ pollinations:
55
+ flux: { low: 0, medium: 0, high: 0, auto: 0 }
56
+ zimage: { low: 0, medium: 0, high: 0, auto: 0 }
57
+ qwen-image: { low: 0, medium: 0, high: 0, auto: 0 }
58
+ wan-image: { low: 0, medium: 0, high: 0, auto: 0 }
59
+ gptimage: { low: 0, medium: 0, high: 0, auto: 0 }
60
+ gptimage-large: { low: 0, medium: 0, high: 0, auto: 0 }
61
+ gpt-image-2: { low: 0, medium: 0, high: 0, auto: 0 }
62
+ klein: { low: 0, medium: 0, high: 0, auto: 0 }
63
+ kontext: { low: 0, medium: 0, high: 0, auto: 0 }
64
+
65
+ compare:
66
+ folder_pattern: "{timestamp}-{shortid}-compare"
67
+ manifest: true
68
+
69
+ naming:
70
+ single_folder_pattern: "{timestamp}-{shortid}"
@@ -0,0 +1,18 @@
1
+ # Checklist: before you run `oma image generate`
2
+
3
+ - [ ] Prompt is specific about scene, subject, and style (see `prompt-tips.md`).
4
+ - [ ] `--vendor` matches available authenticated CLIs. Run `oma image doctor` if unsure.
5
+ - [ ] `-n` is ≤ 5; wall time scales with count.
6
+ - [ ] `--output-dir` is inside the project, or you've set `--allow-external-output`.
7
+ - [ ] Estimated cost is acceptable. Run `--dry-run` first for unfamiliar combinations.
8
+ - [ ] Running non-interactively (agent/CI) with cost ≥ threshold? Confirm with the user first, then pass `-y` — the CLI cannot prompt without a TTY and exits 1.
9
+ - [ ] Secrets are not in the prompt, or `--no-prompt-in-manifest` is set.
10
+ - [ ] For `--vendor all`, every enabled vendor is healthy (strict mode exits 5 otherwise).
11
+
12
+ # Checklist: after the run
13
+
14
+ - [ ] `manifest.json` was written inside the run folder.
15
+ - [ ] Each recorded run has an `ok` status or a classified error.
16
+ - [ ] Strategy attempts are objects (not compact strings).
17
+ - [ ] Images open without corruption.
18
+ - [ ] If results are consumed downstream, the consumer parses `--output json` stdout rather than re-reading the manifest file.
@@ -0,0 +1,117 @@
1
+ # Image Agent - Execution Protocol
2
+
3
+ ## Step -1: Clarify / Amplify Prompt (agent-side, before `oma image generate`)
4
+
5
+ Run the **Clarification Protocol** in `SKILL.md` before shelling out.
6
+
7
+ ## Step 0: Parse Request
8
+
9
+ 1. Extract prompt and flags from the invocation.
10
+ 2. Resolve defaults from shipped code defaults → the `image:` section of `.agents/oma-config.yaml` → env vars → CLI flags (lowest to highest precedence). `config/image-config.yaml` is not consulted.
11
+ 3. Validate:
12
+ - `count` ∈ [1, 5]
13
+ - `size` is `auto` or any `WxH` passing `size-guard.ts` (each edge ∈ [16, 3840], multiples of 16, aspect ratio 1:3..3:1).
14
+ - `quality` ∈ {`low`, `medium`, `high`, `auto`}
15
+ - `vendor` ∈ {`auto`, `codex`, `pollinations`, `antigravity`, `all`} or a concrete registered name.
16
+ - `model` (optional): vendor-specific override passed through as-is; applies to every vendor in the run set. `antigravity` ignores it.
17
+ - `reference` (if any): each path exists, is a regular file ≤ 5MB, magic-byte-matches PNG/JPEG/GIF/WebP, ≤ 10 total, and duplicate paths are rejected with exit 4.
18
+ 4. If invalid: exit code 4 and a message identifying the offending field.
19
+
20
+ ## Step 0.5: Reference-guided regeneration
21
+
22
+ When `--reference <path...>` is supplied, the operation is reference-guided regeneration: it may
23
+ follow subject, style, lighting, or composition, but it cannot promise a pixel-preserving edit.
24
+ Before continuing, reject pixel/mask operations (inpainting, object removal, selective replacement,
25
+ crop, resize, or conversion) and route them to an editor or deterministic image processor.
26
+
27
+ 1. Validate every path via `reference-guard.ts`. On failure → exit 4.
28
+ 2. Vendor support check (only `codex` and `antigravity` support references):
29
+ - Explicit `--vendor <name>` / `--vendor all`: reject with exit 4 and a hint to switch vendor if any requested vendor lacks reference support.
30
+ - `--vendor auto`: silently drop reference-unsupported vendors from the healthy set. If no reference-supporting vendor remains: exit 4 when none is registered at all, exit 5 (with per-vendor setup hints) when some are registered but unhealthy.
31
+ 3. Pass validated absolute paths through `GenerateInput.referenceImages`:
32
+ - `codex` provider appends `-i <path>` per reference to `codex exec` and adds a guidance sentence to the instruction text.
33
+ - `antigravity` provider copies each reference into a per-run temp dir, exposes it to agy via `--add-dir <tmpdir>`, and lists the resulting paths inline in the agy prompt.
34
+ 4. Record reference paths in `manifest.json` under `reference_images` (top-level array of absolute paths).
35
+
36
+ ### Auto-forward attached images (MANDATORY)
37
+
38
+ If the user asks for a reference-guided regeneration and a host-attached image is visible to the agent (e.g. `[Image: source: <path>]` in a Claude Code system message, Antigravity workspace upload, or explicit user-provided path), the agent MUST pass it via `--reference <path>`. Do not fall back to describing the image in prose. Do not ask the user to re-type the path. If `oma image generate --help` shows no `--reference` flag, instruct the user to run `oma update` and retry; do not silently degrade.
39
+
40
+ ### Host-Specific Reference Paths
41
+
42
+ Agents invoking `oma image generate --reference` should surface the following host-specific locations to the user:
43
+
44
+ | Host CLI | Attachment Surface | Path pattern |
45
+ |----------|--------------------|--------------|
46
+ | **Claude Code** | `[Image: source: ...]` in system messages | `~/.claude/image-cache/<session-uuid>/<N>.png` (undocumented, verified empirically; cache is cleared on session end) |
47
+ | **Antigravity IDE** | Workspace upload via "Upload to Agent" | Project workspace upload dir; exact path shown in IDE file tree |
48
+ | **Codex CLI as host** | `-i` flag attaches to LLM context only | No filesystem path exposed. User must provide an explicit path (e.g., `~/Downloads/foo.png`). In-conversation pastes cannot be forwarded. |
49
+ | **Gemini CLI as host** | Varies by version | Prefer explicit paths over paste |
50
+
51
+ Agents should prefer user-supplied explicit paths (e.g., `~/Downloads/otter.jpeg`) over host-cache paths when durability across sessions matters.
52
+
53
+ ## Step 1: Vendor Selection
54
+
55
+ 1. Call `health()` on every registered provider in parallel.
56
+ 2. Classify:
57
+ - `healthy`: `ok: true`
58
+ - `unhealthy`: `ok: false` with a hint
59
+ 3. Decide based on `--vendor`:
60
+ - `auto`: continue with every `healthy` provider. If zero → exit 5.
61
+ - `all`: every provider must be healthy. Any missing → exit 5 naming the specific vendor.
62
+ - `<name>`: resolve the named provider. If unhealthy → exit 5 with its hint.
63
+ 4. Log `using: <vendor(s)>` to stderr before generation.
64
+
65
+ ## Step 2: Cost Guardrail
66
+
67
+ 1. Estimate cost as `sum(per_image_usd[vendor][model][quality] × count)` over all selected vendors.
68
+ 2. If `--dry-run`: print the plan (vendors, counts, outDir, cost) and exit 0.
69
+ 3. If estimate ≥ `cost_guardrail.estimate_threshold_usd` and not `--yes`/`OMA_IMAGE_YES=1`:
70
+ - Interactive terminal (stdin is a TTY): prompt user on stderr: `Estimated cost $X.XX. Proceed? (y/N)`. Decline → exit 1.
71
+ - Non-interactive (no TTY — agents, CI): no prompt is possible; exit 1 with a message naming `--yes`/`OMA_IMAGE_YES=1`. **Calling agents**: confirm the cost with the user in-conversation (`--dry-run` prints the estimate), then re-run with `-y`. Pass `-y` only when the run fits an existing budget authorization or newly approved spend.
72
+
73
+ ## Step 3: Cancellation Setup
74
+
75
+ 1. Install `SIGINT`/`SIGTERM` handlers that call `AbortController.abort()`.
76
+ 2. Thread the signal into every provider call via `GenerateInput.signal`.
77
+
78
+ ## Step 4: Dispatch
79
+
80
+ - **Single vendor**: run `provider.generate(input)` sequentially.
81
+ - **Multi-vendor (`all` or `auto` with 2+ healthy)**: `Promise.allSettled` across providers.
82
+ - Providers with sub-strategies escalate internally and record every strategy attempt (ok/skipped/failed with reason).
83
+ - Non-retryable errors (safety-refused, invalid-input) short-circuit the escalation chain.
84
+
85
+ ## Step 5: Write Artifacts
86
+
87
+ 1. Save each image to `outDir/<vendor>[-<model>]-<runShortid>[-<n>].<ext>` — the model segment is omitted when the vendor has no caller-visible model (`antigravity`), and `<ext>` reflects the magic-byte-sniffed format (`png`/`jpg`/`webp`/`gif`), not a fixed `.png`.
88
+ 2. Build `manifest.json` with schema version 1 (see `vendor-matrix.md` for fields).
89
+ 3. If `--no-prompt-in-manifest` is set, replace `prompt` with `prompt_sha256`.
90
+
91
+ ## Step 6: Report
92
+
93
+ 1. For each run, print a one-line status to stderr:
94
+ - `[oma image] <vendor> ok (Xs) -> <file>`
95
+ - `[oma image] <vendor> failed (<kind>): <reason>`
96
+ 2. Print manifest path.
97
+ 3. For `--output json`: write `{exitCode, manifestPath, runs}` to stdout as one JSON object.
98
+
99
+ ## Step 7: Exit Code Aggregation
100
+
101
+ - Any successful run in parallel mode → exit 0 (failures still in manifest).
102
+ - All failures → pick the most specific exit code:
103
+ - `safety-refused` → 2
104
+ - `invalid-input` → 4
105
+ - `auth-required` / `not-installed` → 5
106
+ - `timeout` → 6
107
+ - otherwise → 1
108
+
109
+ ## On Error
110
+
111
+ | Situation | Action |
112
+ |-----------|--------|
113
+ | No vendors authenticated | Exit 5, print `Run: oma image doctor` |
114
+ | Specific vendor unhealthy | Exit 5 with the vendor's setup guide (URL + env var + steps, rendered by `oma image doctor`) |
115
+ | All sub-strategies failed for a provider | Exit 1 with last classified error; include `strategy_attempts` in manifest |
116
+ | Timeout | Exit 6, manifest records `after_ms` |
117
+ | Cancelled (Ctrl+C/SIGTERM) | In-flight calls abort, failures are recorded as `timeout`, the manifest is written, and the command exits 6 when no provider succeeded |
@@ -0,0 +1,105 @@
1
+ # Image Invocation Reference
2
+
3
+ ### Vendors
4
+
5
+ This skill follows oh-my-agent's CLI-first concept: whenever a vendor's native CLI can drive generation (and return raw bytes), the subprocess path is preferred over direct API keys. Direct API is only used as a fallback for vendors whose CLI can't yet emit raw image bytes.
6
+
7
+ | Vendor | Strategy | Models | Trigger |
8
+ |--------|----------|--------|---------|
9
+ | `codex` | CLI-first via `codex exec` over ChatGPT OAuth (`codex login`), built-in `image_gen` | `gpt-image-2` | Logged in via Codex CLI (no API key) |
10
+ | `pollinations` | Direct HTTP via `gen.pollinations.ai/v1/images/generations` (free signup for key) | Free: `flux`, `zimage`. Credit-gated: `qwen-image`, `wan-image`, `gpt-image-2`, `klein`, `kontext`, `gptimage`, `gptimage-large` | `POLLINATIONS_API_KEY` set (free at https://enter.pollinations.ai). No native CLI exists. |
11
+ | `antigravity` | `agy -p --dangerously-skip-permissions --add-dir <outDir>` — Antigravity's agentic CLI runs over the user's Gemini Code Assist subscription. agy writes raw bytes to absolute target paths we embed in the prompt; the provider sniffs format via magic bytes and renames the file extension to match. Model selection is opaque — agy picks internally, we never name a model. | (opaque — chosen by agy) | `agy` CLI installed + signed in. No API key, no per-image charge. |
12
+
13
+ > The direct Gemini path (`gemini -p` stream, `generativelanguage.googleapis.com` API) is deprecated. `agy` is the supported Gemini image route — it's free with Gemini Code Assist and doesn't require billing on AI Studio.
14
+
15
+ Since `agy` 1.2.16, native image requests use the built-in `image-generator` subagent. OMA asks agy to use that route when available, with `generate_image` as the fallback for older sessions, and to wait for completion before copying the generated image bytes to the requested paths.
16
+
17
+ ### Invocation
18
+
19
+ #### Standalone
20
+
21
+ ```
22
+ /oma-image a red apple on white background
23
+ /oma-image --vendor all --size 1536x1024 jeju coastline at sunset
24
+ /oma-image -n 3 --quality high --output-dir ./hero "minimalist dashboard hero illustration"
25
+ ```
26
+
27
+ #### Shell CLI
28
+
29
+ ```
30
+ oma image generate "<prompt>" [--vendor auto|codex|pollinations|antigravity|all] [-n 1..5] \
31
+ [--size WxH|auto] \
32
+ [--quality low|medium|high|auto] \
33
+ [--model <name>] \
34
+ [--output-dir <dir>] [--allow-external-output] \
35
+ [-r <path>]... \
36
+ [--timeout 180] [-y] [--no-prompt-in-manifest] \
37
+ [--dry-run] [--output text|json]
38
+ oma image doctor
39
+ oma image vendor list
40
+ ```
41
+
42
+ `--model <name>` overrides the vendor's default model for this run — e.g. `--vendor pollinations --model zimage`, or a credit-gated Pollinations model like `gpt-image-2`. It applies to every vendor in the run set, so combine it with an explicit `--vendor`; `antigravity` ignores it (agy picks its model internally).
43
+
44
+ #### Reference-guided regeneration (`-r`, `--reference`)
45
+
46
+ Attach up to 10 reference images (PNG/JPEG/GIF/WebP, ≤ 5MB each) to guide a **newly generated** image's style, subject identity, lighting, or composition. Repeatable or comma-separated. The output is a new generation, not a pixel-preserving edit of the input.
47
+
48
+ ```
49
+ oma image generate -r ~/Downloads/otter.jpeg "same otter in dramatic lighting"
50
+ oma image generate -r a.png -r b.png "blend these two styles"
51
+ ```
52
+
53
+ Supported vendors:
54
+
55
+ | Vendor | Support | How |
56
+ |--------|---------|-----|
57
+ | `codex` (gpt-image-2) | PASS | Passes `-i <path>` to `codex exec` |
58
+ | `antigravity` | PASS | Refs copied to a per-run temp dir, `agy --add-dir <tmpdir>` grants access, paths inlined into the prompt |
59
+ | `pollinations` | N/A | Rejected with exit code 4 when explicitly selected (requires URL hosting; see PR #2 roadmap). Under `--vendor auto`, reference-unsupported vendors are silently dropped from the run set instead. |
60
+
61
+ **Paths**: absolute or relative to `$CWD`. Host CLIs usually expose attached images via:
62
+ - **Claude Code**: `~/.claude/image-cache/<session>/N.png` (surfaced in system messages as `[Image: source: <path>]`)
63
+ - **Antigravity**: workspace upload directory (exact path shown in IDE)
64
+ - **Codex CLI as host**: user must pass the filesystem path explicitly; in-conversation attachments are not forwarded
65
+
66
+ #### Agent Behavior: Auto-forward Attached References (MANDATORY)
67
+
68
+ When ALL of the following are true, the calling agent MUST pass the attached image via `--reference <path>` automatically. Never describe the image in prose as a workaround.
69
+
70
+ 1. The user asks for a new generated variation (for example, "same subject in dramatic lighting", "make a new illustration in this style", or "regenerate this at a different angle").
71
+ 2. A host-surfaced attached image is visible to the agent (e.g. a Claude Code system message with `[Image: source: <path>]`, or an Antigravity workspace upload path, or an explicit filesystem path in the user's message).
72
+ 3. The selected vendor supports references (`codex` or `antigravity`).
73
+
74
+ **Required action**: invoke `oma image generate --reference <absolute-path> --vendor <codex|antigravity> "<prompt>"`. If the user didn't specify a vendor, default to `codex` (CLI-first, widest availability). Do NOT:
75
+
76
+ - Fall back to prose description ("I'll describe the otter's appearance...").
77
+ - Ask the user to re-type or re-attach the path.
78
+ - Claim the CLI doesn't support references without first running `oma image generate --help` to verify.
79
+
80
+ **If the local CLI is outdated** (`--reference` is missing from `--help`): tell the user to run `oma update` once, then retry. Do not silently degrade to prose.
81
+
82
+ **If the reference path is from Claude Code's `image-cache`**: note to the user that the path is session-scoped and suggest copying the file to a durable location if they want to reuse it later. Still proceed with the generation.
83
+
84
+ **Unsupported edit requests**: Do not route requests such as "remove this object", "change only the background", "paint inside this mask", "keep every pixel except", "crop", "resize", or "convert this file" through `--reference`. They need pixel/mask editing or deterministic image processing, neither of which this CLI provides. Say whether the request can instead be phrased as a reference-guided regeneration; otherwise route to an appropriate image editor or processing tool.
85
+
86
+ #### Shared Infrastructure (from other skills)
87
+
88
+ Other skills call `oma image generate --output json` and parse the JSON manifest from stdout.
89
+
90
+ ### Output Layout
91
+
92
+ Filenames follow `<vendor>[-<model>]-<shortid>[-<n>].<ext>` — the model segment is omitted for `antigravity` (opaque model), the extension reflects the sniffed format (JPEG is common), and `-<n>` appears only when `-n` > 1.
93
+
94
+ ```
95
+ .agents/results/images/
96
+ ├── 20260424-143052-ab12cd/ # single-vendor run
97
+ │ ├── pollinations-flux-ab12cd.jpg
98
+ │ │ (or codex-gpt-image-2-ab12cd.png, antigravity-ab12cd.jpg)
99
+ │ └── manifest.json
100
+ └── 20260424-143122-7z9kqw-compare/ # --vendor all run
101
+ ├── codex-gpt-image-2-7z9kqw.png
102
+ ├── pollinations-flux-7z9kqw.jpg
103
+ ├── antigravity-7z9kqw.jpg
104
+ └── manifest.json
105
+ ```
@@ -0,0 +1,71 @@
1
+ # Prompt Tips
2
+
3
+ Good prompts are specific about scene, subject, lighting, and style. `gpt-image-2` (codex), the Gemini-family "nano-banana" models (antigravity, chosen internally by agy), and flux/zimage (pollinations) all respond well to the same structural cues.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ Scene/backdrop → Subject → Details → Constraints
9
+ ```
10
+
11
+ Example: `minimalist product photography: single white ceramic coffee cup on dark marble surface, steam rising softly, dramatic side lighting`
12
+
13
+ ## Do's
14
+
15
+ - **Lighting**: "warm golden hour side light", "overcast diffused", "backlit with rim light"
16
+ - **Camera**: "shallow depth of field", "aerial view", "close-up macro", "35mm film grain"
17
+ - **Style**: "photorealistic", "oil painting", "3D render", "concept art", "isometric vector"
18
+ - **Mood**: "serene", "dramatic", "moody", "vibrant", "washed-out"
19
+ - **Resolution cue**: "ultra detailed", "8K", "high fidelity"
20
+
21
+ ## Don'ts
22
+
23
+ - Avoid vague prompts like "a nice picture"; both models produce generic output.
24
+ - Don't stack contradicting styles ("photorealistic cel-shaded 3D").
25
+ - Skip negative prompts; none of the routed models treats them as first-class.
26
+
27
+ ## Examples
28
+
29
+ | Category | Prompt |
30
+ |----------|--------|
31
+ | Product | `Elegant perfume bottle on reflective black surface, studio lighting, luxury brand catalog style` |
32
+ | Landscape | `Aerial drone shot of Jeju coastline, turquoise water meeting volcanic rock, golden hour` |
33
+ | Food | `Overhead flat-lay of Korean bibimbap in stone pot, steam rising, vibrant vegetables, dark wood table` |
34
+ | Architecture | `Modern minimalist house with floor-to-ceiling windows overlooking misty mountain valley` |
35
+ | Portrait | `Professional headshot, soft natural window light, shallow depth of field, neutral background` |
36
+ | UI Mockup | `iPhone 15 Pro mockup showing a fitness app dashboard, clean UI, dark mode, floating on gradient background` |
37
+ | Concept | `Lone astronaut on crater edge of Mars, looking at Earth rising on the horizon, cinematic, volumetric dust` |
38
+
39
+ ## Vendor Nuances
40
+
41
+ - **Codex (`gpt-image-2`)**: prefers slightly longer, descriptive prompts. Quality flag `high` noticeably sharpens fine detail but doubles generation time.
42
+ - **Antigravity (Gemini-family "nano-banana" models, chosen internally by agy)**: robust on CJK-composed scenes ("hanok", "cherry blossom"); slightly stronger on illustrated/painterly styles. Driven via the `agy` CLI's agentic loop — output is JPEG by default even if `.png` is requested (the provider sniffs magic bytes and renames the extension accordingly).
43
+
44
+ ## Comparing Output
45
+
46
+ `--vendor all` generates the same prompt on every registered provider and writes each result (PNG or JPEG, per provider) into a `…-compare/` folder with a single `manifest.json`. Use it for A/B picking when starting a new visual style.
47
+
48
+ ## External Prompt Libraries (agent reference only)
49
+
50
+ When the **Clarification Protocol** (see `SKILL.md`) reaches the *amplify* step, these galleries provide structural references.
51
+
52
+ | Source | Vendor match | Prompts | Categories |
53
+ |--------|--------------|---------|-----------|
54
+ | [awesome-gpt-image-2](https://github.com/YouMind-OpenLab/awesome-gpt-image-2) | `codex` (gpt-image-2) | ~100 | Profile/Avatar · Social Post · Infographic · YouTube Thumbnail · Comic/Storyboard · Poster/Flyer · App/Web Design |
55
+ | [awesome-nano-banana-pro-prompts](https://github.com/YouMind-OpenLab/awesome-nano-banana-pro-prompts) | `antigravity` (nano-banana-pro) | 10,000+ | Same taxonomy; 16 localized READMEs (en, ko-KR, ja-JP, zh-TW, de-DE, …) |
56
+
57
+ For `pollinations` (flux / zimage), patterns from either library transfer; use the subject framing, lighting cues, and style-keyword structure, not the literal wording.
58
+
59
+ **How to use (agent-side):**
60
+
61
+ 1. Classify the user's intent into one of the 7 categories. If no match, fall back to the *Scene/backdrop → Subject → Details → Constraints* template at the top of this file.
62
+ 2. Fetch the relevant README section via `gh api`, e.g. Korean user + nano-banana:
63
+ ```
64
+ gh api repos/YouMind-OpenLab/awesome-nano-banana-pro-prompts/contents/README_ko-KR.md \
65
+ --jq .content | base64 -d | less
66
+ ```
67
+ Scan headings like `### No. N: <Category> - <Title>` to locate 1–2 analogous entries.
68
+ 3. **Internalize the pattern, do not reproduce the text.** Extract lighting / framing / camera / style-keyword choices.
69
+ 4. Compose your amplified prompt by applying that pattern to the user's subject in your own wording. Preserve the requested subject and constraints; proceed under existing generation authorization unless a material decision remains.
70
+
71
+ **Fallback:** If no category matches, use the structural template at the top of this file.