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.
- package/README.md +35 -2
- package/filter-test-output.sh +52 -0
- package/mods/oma.ts +347 -0
- package/package.json +30 -4
- package/skills/_shared/conditional/experiment-ledger.md +28 -0
- package/skills/_shared/conditional/exploration-loop.md +22 -0
- package/skills/_shared/conditional/quality-score.md +33 -0
- package/skills/_shared/core/anti-ai-prose.md +191 -0
- package/skills/_shared/core/api-contracts/README.md +28 -0
- package/skills/_shared/core/api-contracts/template.md +90 -0
- package/skills/_shared/core/clarification-protocol.md +23 -0
- package/skills/_shared/core/code-intelligence.md +46 -0
- package/skills/_shared/core/collaboration-policy.md +28 -0
- package/skills/_shared/core/common-checklist.md +28 -0
- package/skills/_shared/core/context-budget.md +22 -0
- package/skills/_shared/core/context-loading.md +34 -0
- package/skills/_shared/core/difficulty-guide.md +26 -0
- package/skills/_shared/core/execution-policy.md +31 -0
- package/skills/_shared/core/lessons-learned.md +33 -0
- package/skills/_shared/core/prompt-structure.md +18 -0
- package/skills/_shared/core/quality-principles.md +11 -0
- package/skills/_shared/core/session-metrics.md +35 -0
- package/skills/_shared/core/skill-routing.md +39 -0
- package/skills/_shared/core/test-approach.md +54 -0
- package/skills/_shared/core/vendor-detection.md +52 -0
- package/skills/_shared/runtime/memory-protocol.md +118 -0
- package/skills/_shared/runtime/result-contract.md +64 -0
- package/skills/_shared/ui-interaction-quality.md +133 -0
- package/skills/oma-academic-writing/SKILL.md +181 -0
- package/skills/oma-academic-writing/resources/abstract-guide.md +51 -0
- package/skills/oma-academic-writing/resources/academic-verb-tiers.md +42 -0
- package/skills/oma-academic-writing/resources/anti-ai-checklist.md +52 -0
- package/skills/oma-academic-writing/resources/hedging-guide.md +132 -0
- package/skills/oma-academic-writing/resources/sentence-structure-reference.md +151 -0
- package/skills/oma-architecture/SKILL.md +203 -0
- package/skills/oma-architecture/resources/api-evolution.md +41 -0
- package/skills/oma-architecture/resources/checklist.md +42 -0
- package/skills/oma-architecture/resources/execution-protocol.md +115 -0
- package/skills/oma-architecture/resources/methodology-selection.md +92 -0
- package/skills/oma-architecture/resources/migration-patterns.md +28 -0
- package/skills/oma-architecture/resources/output-templates.md +111 -0
- package/skills/oma-architecture/resources/stakeholder-synthesis.md +80 -0
- package/skills/oma-backend/SKILL.md +202 -0
- package/skills/oma-backend/resources/checklist.md +45 -0
- package/skills/oma-backend/resources/error-playbook.md +97 -0
- package/skills/oma-backend/resources/execution-protocol.md +39 -0
- package/skills/oma-backend/resources/orm-reference.md +61 -0
- package/skills/oma-backend/variants/node/api-template.ts +315 -0
- package/skills/oma-backend/variants/node/snippets.md +475 -0
- package/skills/oma-backend/variants/node/stack.yaml +21 -0
- package/skills/oma-backend/variants/node/tech-stack.md +33 -0
- package/skills/oma-backend/variants/python/api-template.py +378 -0
- package/skills/oma-backend/variants/python/snippets.md +199 -0
- package/skills/oma-backend/variants/python/stack.yaml +18 -0
- package/skills/oma-backend/variants/python/tech-stack.md +45 -0
- package/skills/oma-backend/variants/rust/api-template.rs +635 -0
- package/skills/oma-backend/variants/rust/snippets.md +471 -0
- package/skills/oma-backend/variants/rust/stack.yaml +20 -0
- package/skills/oma-backend/variants/rust/tech-stack.md +36 -0
- package/skills/oma-backend/variants/stack.schema.json +73 -0
- package/skills/oma-brainstorm/SKILL.md +166 -0
- package/skills/oma-brainstorm/resources/triz-lite.md +117 -0
- package/skills/oma-coordination/SKILL.md +171 -0
- package/skills/oma-db/SKILL.md +201 -0
- package/skills/oma-db/resources/anti-patterns.md +177 -0
- package/skills/oma-db/resources/checklist.md +67 -0
- package/skills/oma-db/resources/document-templates.md +107 -0
- package/skills/oma-db/resources/error-playbook.md +50 -0
- package/skills/oma-db/resources/examples.md +170 -0
- package/skills/oma-db/resources/execution-protocol.md +127 -0
- package/skills/oma-db/resources/iso-controls.md +98 -0
- package/skills/oma-db/resources/migration-playbook.md +93 -0
- package/skills/oma-db/resources/query-tuning.md +57 -0
- package/skills/oma-db/resources/vector-db.md +159 -0
- package/skills/oma-debug/SKILL.md +146 -0
- package/skills/oma-debug/resources/bug-report-template.md +327 -0
- package/skills/oma-debug/resources/checklist.md +31 -0
- package/skills/oma-debug/resources/common-patterns.md +734 -0
- package/skills/oma-debug/resources/debugging-checklist.md +364 -0
- package/skills/oma-debug/resources/error-playbook.md +94 -0
- package/skills/oma-debug/resources/execution-protocol.md +40 -0
- package/skills/oma-design/SKILL.md +135 -0
- package/skills/oma-design/resources/asset-strategy.md +34 -0
- package/skills/oma-design/resources/checklist.md +63 -0
- package/skills/oma-design/resources/data-grid.md +48 -0
- package/skills/oma-design/resources/design-md-spec.md +107 -0
- package/skills/oma-design/resources/design-tokens.md +53 -0
- package/skills/oma-design/resources/error-playbook.md +18 -0
- package/skills/oma-design/resources/execution-protocol.md +95 -0
- package/skills/oma-design/resources/external-design-skills.md +130 -0
- package/skills/oma-design/resources/getdesign-fetcher.md +104 -0
- package/skills/oma-design/resources/product-interface-review.md +59 -0
- package/skills/oma-design/resources/redesign-protocol.md +52 -0
- package/skills/oma-design/resources/stitch-integration.md +244 -0
- package/skills/oma-dev-workflow/SKILL.md +375 -0
- package/skills/oma-dev-workflow/resources/affected-checks.py +58 -0
- package/skills/oma-dev-workflow/resources/api-workflows.md +58 -0
- package/skills/oma-dev-workflow/resources/database-patterns.md +107 -0
- package/skills/oma-dev-workflow/resources/i18n-patterns.md +63 -0
- package/skills/oma-dev-workflow/resources/release-coordination.md +240 -0
- package/skills/oma-dev-workflow/resources/tooling-profiles.md +217 -0
- package/skills/oma-dev-workflow/resources/troubleshooting.md +78 -0
- package/skills/oma-dev-workflow/resources/validation-pipeline.md +246 -0
- package/skills/oma-docs/SKILL.md +77 -0
- package/skills/oma-docs/resources/commands.md +76 -0
- package/skills/oma-explanation/SKILL.md +212 -0
- package/skills/oma-explanation/resources/document-structure.md +115 -0
- package/skills/oma-explanation/resources/draft-format.md +199 -0
- package/skills/oma-explanation/resources/html-contract.md +102 -0
- package/skills/oma-frontend/SKILL.md +227 -0
- package/skills/oma-frontend/resources/angular-rules.md +110 -0
- package/skills/oma-frontend/resources/checklist.md +76 -0
- package/skills/oma-frontend/resources/error-playbook.md +125 -0
- package/skills/oma-frontend/resources/execution-protocol.md +46 -0
- package/skills/oma-frontend/resources/snippets.md +354 -0
- package/skills/oma-frontend/resources/specialized-visual-implementation.md +193 -0
- package/skills/oma-frontend/resources/tailwind-rules.md +83 -0
- package/skills/oma-frontend/resources/tech-stack.md +156 -0
- package/skills/oma-hwp/SKILL.md +166 -0
- package/skills/oma-hwp/config/hwp-config.yaml +35 -0
- package/skills/oma-hwp/resources/balanced-tables.ts +39 -0
- package/skills/oma-hwp/resources/execution-protocol.md +145 -0
- package/skills/oma-hwp/resources/flatten-tables.ts +101 -0
- package/skills/oma-hwp/resources/package.json +13 -0
- package/skills/oma-hwp/resources/troubleshooting.md +70 -0
- package/skills/oma-hwp/resources/tsconfig.json +10 -0
- package/skills/oma-hwp/resources/turndown-plugin-gfm.d.ts +9 -0
- package/skills/oma-image/SKILL.md +142 -0
- package/skills/oma-image/config/image-config.yaml +70 -0
- package/skills/oma-image/resources/checklist.md +18 -0
- package/skills/oma-image/resources/execution-protocol.md +117 -0
- package/skills/oma-image/resources/invocation.md +105 -0
- package/skills/oma-image/resources/prompt-tips.md +71 -0
- package/skills/oma-image/resources/vendor-matrix.md +90 -0
- package/skills/oma-market/SKILL.md +142 -0
- package/skills/oma-market/resources/checklist.md +12 -0
- package/skills/oma-market/resources/error-playbook.md +12 -0
- package/skills/oma-market/resources/execution-protocol.md +60 -0
- package/skills/oma-market/resources/frameworks/pestel.md +101 -0
- package/skills/oma-market/resources/frameworks/porters-5f.md +90 -0
- package/skills/oma-market/resources/frameworks/swot.md +61 -0
- package/skills/oma-market/resources/intent-rules.md +35 -0
- package/skills/oma-market/resources/output-laws.md +53 -0
- package/skills/oma-mobile/SKILL.md +168 -0
- package/skills/oma-mobile/resources/checklist.md +77 -0
- package/skills/oma-mobile/resources/error-playbook.md +198 -0
- package/skills/oma-mobile/resources/execution-protocol.md +47 -0
- package/skills/oma-mobile/resources/screen-template.dart +331 -0
- package/skills/oma-mobile/resources/screen-template.swift +239 -0
- package/skills/oma-mobile/resources/screen-template.tsx +179 -0
- package/skills/oma-mobile/resources/tech-stack.md +69 -0
- package/skills/oma-mobile/variants/README.md +45 -0
- package/skills/oma-mobile/variants/flutter/api-template.dart +461 -0
- package/skills/oma-mobile/variants/flutter/snippets.md +1353 -0
- package/skills/oma-mobile/variants/flutter/stack.yaml +21 -0
- package/skills/oma-mobile/variants/flutter/tech-stack.md +201 -0
- package/skills/oma-mobile/variants/kotlin-android/api-template.kt +182 -0
- package/skills/oma-mobile/variants/kotlin-android/snippets.md +871 -0
- package/skills/oma-mobile/variants/kotlin-android/stack.yaml +32 -0
- package/skills/oma-mobile/variants/kotlin-android/tech-stack.md +159 -0
- package/skills/oma-mobile/variants/react-native/api-template.ts +531 -0
- package/skills/oma-mobile/variants/react-native/snippets.md +1014 -0
- package/skills/oma-mobile/variants/react-native/stack.yaml +22 -0
- package/skills/oma-mobile/variants/react-native/tech-stack.md +192 -0
- package/skills/oma-mobile/variants/stack.schema.json +68 -0
- package/skills/oma-mobile/variants/swift-ios/api-template.swift +165 -0
- package/skills/oma-mobile/variants/swift-ios/snippets.md +1028 -0
- package/skills/oma-mobile/variants/swift-ios/stack.yaml +25 -0
- package/skills/oma-mobile/variants/swift-ios/tech-stack.md +174 -0
- package/skills/oma-observability/SKILL.md +225 -0
- package/skills/oma-observability/resources/anti-patterns.md +555 -0
- package/skills/oma-observability/resources/boundaries/cross-application.md +348 -0
- package/skills/oma-observability/resources/boundaries/multi-tenant.md +290 -0
- package/skills/oma-observability/resources/boundaries/release.md +372 -0
- package/skills/oma-observability/resources/boundaries/slo.md +225 -0
- package/skills/oma-observability/resources/checklist.md +123 -0
- package/skills/oma-observability/resources/examples.md +448 -0
- package/skills/oma-observability/resources/execution-protocol.md +166 -0
- package/skills/oma-observability/resources/incident-forensics.md +348 -0
- package/skills/oma-observability/resources/intent-rules.md +307 -0
- package/skills/oma-observability/resources/layers/L3-network.md +281 -0
- package/skills/oma-observability/resources/layers/L4-transport.md +299 -0
- package/skills/oma-observability/resources/layers/L7-application/crash-analytics.md +359 -0
- package/skills/oma-observability/resources/layers/L7-application/mobile-rum.md +278 -0
- package/skills/oma-observability/resources/layers/L7-application/waf.md +246 -0
- package/skills/oma-observability/resources/layers/L7-application/web-rum.md +350 -0
- package/skills/oma-observability/resources/layers/mesh.md +368 -0
- package/skills/oma-observability/resources/matrix.md +177 -0
- package/skills/oma-observability/resources/meta-observability.md +605 -0
- package/skills/oma-observability/resources/observability-as-code.md +666 -0
- package/skills/oma-observability/resources/signals/audit.md +310 -0
- package/skills/oma-observability/resources/signals/cost.md +303 -0
- package/skills/oma-observability/resources/signals/logs.md +263 -0
- package/skills/oma-observability/resources/signals/metrics.md +478 -0
- package/skills/oma-observability/resources/signals/privacy.md +351 -0
- package/skills/oma-observability/resources/signals/profiles.md +245 -0
- package/skills/oma-observability/resources/signals/traces.md +360 -0
- package/skills/oma-observability/resources/standards.md +214 -0
- package/skills/oma-observability/resources/transport/collector-topology.md +308 -0
- package/skills/oma-observability/resources/transport/otlp-grpc-vs-http.md +256 -0
- package/skills/oma-observability/resources/transport/sampling-recipes.md +297 -0
- package/skills/oma-observability/resources/transport/udp-statsd-mtu.md +167 -0
- package/skills/oma-observability/resources/vendor-categories.md +352 -0
- package/skills/oma-orchestration/SKILL.md +302 -0
- package/skills/oma-orchestration/config/cli-config.yaml +92 -0
- package/skills/oma-orchestration/resources/memory-schema.md +232 -0
- package/skills/oma-orchestration/resources/subagent-prompt-template.md +30 -0
- package/skills/oma-orchestration/scripts/parallel-run.sh +6 -0
- package/skills/oma-orchestration/scripts/spawn-agent.sh +5 -0
- package/skills/oma-orchestration/scripts/verify.sh +20 -0
- package/skills/oma-orchestration/templates/backend-task.md +19 -0
- package/skills/oma-orchestration/templates/debug-task.md +16 -0
- package/skills/oma-orchestration/templates/frontend-task.md +18 -0
- package/skills/oma-orchestration/templates/mobile-task.md +18 -0
- package/skills/oma-orchestration/templates/qa-task.md +16 -0
- package/skills/oma-orchestration/templates/tasks-example.yaml +15 -0
- package/skills/oma-pdf/SKILL.md +162 -0
- package/skills/oma-pdf/config/pdf-config.yaml +27 -0
- package/skills/oma-pdf/resources/execution-protocol.md +127 -0
- package/skills/oma-pm/SKILL.md +157 -0
- package/skills/oma-pm/resources/error-playbook.md +75 -0
- package/skills/oma-pm/resources/examples.md +439 -0
- package/skills/oma-pm/resources/execution-protocol.md +62 -0
- package/skills/oma-pm/resources/iso-planning.md +110 -0
- package/skills/oma-pm/resources/plan-phase-protocol.md +66 -0
- package/skills/oma-pm/resources/task-template.json +86 -0
- package/skills/oma-qa/SKILL.md +141 -0
- package/skills/oma-qa/resources/checklist.md +339 -0
- package/skills/oma-qa/resources/error-playbook.md +98 -0
- package/skills/oma-qa/resources/execution-protocol.md +169 -0
- package/skills/oma-qa/resources/iso-quality.md +82 -0
- package/skills/oma-qa/resources/verify-ship-protocol.md +116 -0
- package/skills/oma-recap/SKILL.md +245 -0
- package/skills/oma-recap/resources/output-formats.md +83 -0
- package/skills/oma-refactor/SKILL.md +184 -0
- package/skills/oma-refactor/resources/definition.md +108 -0
- package/skills/oma-refactor/resources/governance.md +33 -0
- package/skills/oma-refactor/resources/hotspots.py +44 -0
- package/skills/oma-refactor/resources/measurement.md +93 -0
- package/skills/oma-scholar/SKILL.md +276 -0
- package/skills/oma-scholar/config/scholar-config.yaml +79 -0
- package/skills/oma-scholar/resources/api-endpoints.md +174 -0
- package/skills/oma-scholar/resources/checklist.md +92 -0
- package/skills/oma-scholar/resources/execution-protocol.md +224 -0
- package/skills/oma-scholar/resources/fallback-providers.md +143 -0
- package/skills/oma-scholar/resources/setup-openalex.md +85 -0
- package/skills/oma-scholar/resources/sidecar-spec.md +341 -0
- package/skills/oma-scholar/resources/upstream-spec-cache.md +972 -0
- package/skills/oma-scm/SKILL.md +103 -0
- package/skills/oma-scm/resources/cm-operations.md +56 -0
- package/skills/oma-scm/resources/codeowners-playbook.md +45 -0
- package/skills/oma-scm/resources/conventional-commits.md +108 -0
- package/skills/oma-scm/resources/merge-risk.md +76 -0
- package/skills/oma-scm/resources/onboarding-risk-signals.md +71 -0
- package/skills/oma-search/SKILL.md +125 -0
- package/skills/oma-search/resources/checklist.md +36 -0
- package/skills/oma-search/resources/error-playbook.md +66 -0
- package/skills/oma-search/resources/examples.md +80 -0
- package/skills/oma-search/resources/execution-protocol.md +86 -0
- package/skills/oma-search/resources/intent-rules.md +47 -0
- package/skills/oma-search/resources/trust-registry.md +53 -0
- package/skills/oma-security/SKILL.md +172 -0
- package/skills/oma-security/resources/artex.md +108 -0
- package/skills/oma-security/resources/ci.md +134 -0
- package/skills/oma-security/resources/cisco-source.md +108 -0
- package/skills/oma-security/resources/deepsec-config.md +45 -0
- package/skills/oma-security/resources/deepsec-matchers.md +35 -0
- package/skills/oma-security/resources/deepsec-scanning.md +45 -0
- package/skills/oma-security/resources/deepsec-setup.md +41 -0
- package/skills/oma-security/resources/findings-contract.md +408 -0
- package/skills/oma-security/resources/mcp-scanning.md +122 -0
- package/skills/oma-security/resources/skill-scanning.md +106 -0
- package/skills/oma-security/resources/validation.md +71 -0
- package/skills/oma-skill-creation/SKILL.md +84 -0
- package/skills/oma-skill-creation/resources/prompt-evaluation.md +36 -0
- package/skills/oma-skill-creation/resources/ssl-lite-template.md +108 -0
- package/skills/oma-skill-creation/resources/validation-checklist.md +101 -0
- package/skills/oma-slide/SKILL.md +277 -0
- package/skills/oma-slide/resources/animation-patterns.md +245 -0
- package/skills/oma-slide/resources/assets/deck-stage.js +514 -0
- package/skills/oma-slide/resources/assets/viewport-base.css +257 -0
- package/skills/oma-slide/resources/canva-integration.md +203 -0
- package/skills/oma-slide/resources/checklist.md +46 -0
- package/skills/oma-slide/resources/design-doctrine.md +260 -0
- package/skills/oma-slide/resources/fixed-stage.md +232 -0
- package/skills/oma-slide/resources/generation-protocol.md +393 -0
- package/skills/oma-slide/resources/native-pptx.md +84 -0
- package/skills/oma-slide/resources/selection-index.json +461 -0
- package/skills/oma-slide/resources/style-presets.LICENSE +10 -0
- package/skills/oma-slide/resources/style-presets.md +520 -0
- package/skills/oma-tf-infra/SKILL.md +201 -0
- package/skills/oma-tf-infra/resources/checklist.md +53 -0
- package/skills/oma-tf-infra/resources/cost-optimization.md +574 -0
- package/skills/oma-tf-infra/resources/error-playbook.md +68 -0
- package/skills/oma-tf-infra/resources/examples.md +38 -0
- package/skills/oma-tf-infra/resources/execution-protocol.md +129 -0
- package/skills/oma-tf-infra/resources/iso-42001-infra.md +229 -0
- package/skills/oma-tf-infra/resources/multi-cloud-examples.md +241 -0
- package/skills/oma-tf-infra/resources/policy-testing-examples.md +332 -0
- package/skills/oma-translation/SKILL.md +229 -0
- package/skills/oma-translation/resources/anti-ai-patterns.md +104 -0
- package/skills/oma-translation/resources/lang/_template.md +73 -0
- package/skills/oma-translation/resources/lang/en.md +123 -0
- package/skills/oma-translation/resources/lang/ja.md +274 -0
- package/skills/oma-translation/resources/lang/ko.md +228 -0
- package/skills/oma-translation/resources/lang/zh.md +285 -0
- package/skills/oma-translation/resources/style-skills.md +104 -0
- package/skills/oma-translation/resources/translation-rubric.md +126 -0
- package/skills/oma-video/SKILL.md +229 -0
- package/skills/oma-video/config/video-config.yaml +60 -0
- package/skills/oma-video/resources/checklist.md +26 -0
- package/skills/oma-video/resources/execution-protocol.md +122 -0
- package/skills/oma-video/resources/existing-media.md +185 -0
- package/skills/oma-video/resources/hyperframes-authoring/README.md +44 -0
- package/skills/oma-video/resources/hyperframes-authoring/demo.md +31 -0
- package/skills/oma-video/resources/hyperframes-authoring/explainer.md +10 -0
- package/skills/oma-video/resources/hyperframes-authoring/shorts.md +10 -0
- package/skills/oma-video/resources/motion-principles.md +81 -0
- package/skills/oma-video/resources/mpt/driver.py +301 -0
- package/skills/oma-video/resources/prompt-tips.md +75 -0
- package/skills/oma-video/resources/script-schema.md +81 -0
- package/skills/oma-video/resources/sound-design.md +127 -0
- package/skills/oma-video/resources/strudel/package.json +11 -0
- package/skills/oma-video/resources/strudel/page.html +87 -0
- package/skills/oma-video/resources/strudel/render.mjs +295 -0
- package/skills/oma-video/resources/vendor-matrix.md +124 -0
- package/skills/oma-voice/SKILL.md +249 -0
- package/skills/oma-voice/config/voice-config.yaml +30 -0
- package/skills/oma-voice/resources/audio-processing.md +119 -0
- package/skills/oma-voice/resources/checklist.md +47 -0
- package/skills/oma-voice/resources/execution-protocol.md +215 -0
- package/skills/oma-voice/resources/prompt-tips.md +43 -0
- package/skills/oma-voice/resources/voice-matrix.md +51 -0
- package/skills/oma-voice/resources/voicestudio.md +87 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Translation Quality Rubric
|
|
2
|
+
|
|
3
|
+
5 criteria, each scored on a 10-point scale. Total 50 points.
|
|
4
|
+
|
|
5
|
+
**This file is language-neutral.** Criterion 1 (Naturalness) and criterion 3
|
|
6
|
+
(Register) can only be scored against the target language's own conventions, so
|
|
7
|
+
score them with `lang/{code}.md` open. A draft that passes every red flag here
|
|
8
|
+
and fails its language profile's self-check is not a passing translation.
|
|
9
|
+
|
|
10
|
+
## Criteria
|
|
11
|
+
|
|
12
|
+
### 1. Naturalness (10 pts)
|
|
13
|
+
Does it read like it was originally written in the target language?
|
|
14
|
+
|
|
15
|
+
| Score | Description |
|
|
16
|
+
|-------|-------------|
|
|
17
|
+
| 9-10 | Native speaker cannot tell it's a translation |
|
|
18
|
+
| 7-8 | Reads naturally with minor awkwardness |
|
|
19
|
+
| 5-6 | Understandable but clearly "translated" |
|
|
20
|
+
| 3-4 | Awkward phrasing, unnatural word order |
|
|
21
|
+
| 1-2 | Word-for-word translation, painful to read |
|
|
22
|
+
|
|
23
|
+
Red flags:
|
|
24
|
+
- Source language word order leaking through
|
|
25
|
+
- Unnatural particles or prepositions
|
|
26
|
+
- Overly long sentences that should be split
|
|
27
|
+
- Pronouns handled against the target's pro-drop behavior
|
|
28
|
+
- Europeanized patterns: unnecessary connectives, passive voice abuse, noun pile-up, over-nominalization, cleft sentence calques
|
|
29
|
+
- Any rule in the target's language profile marked as a block-level failure
|
|
30
|
+
|
|
31
|
+
### 2. Accuracy (10 pts)
|
|
32
|
+
Is the meaning fully preserved?
|
|
33
|
+
|
|
34
|
+
| Score | Description |
|
|
35
|
+
|-------|-------------|
|
|
36
|
+
| 9-10 | Meaning, nuance, and intent fully preserved |
|
|
37
|
+
| 7-8 | Core meaning preserved, minor nuance loss |
|
|
38
|
+
| 5-6 | Main idea correct but some details lost |
|
|
39
|
+
| 3-4 | Partial meaning distortion |
|
|
40
|
+
| 1-2 | Meaning significantly changed or wrong |
|
|
41
|
+
|
|
42
|
+
Red flags:
|
|
43
|
+
- Added meaning not in source
|
|
44
|
+
- Omitted important qualifiers
|
|
45
|
+
- Reversed logic (negation errors)
|
|
46
|
+
- Hallucinated content
|
|
47
|
+
- Emotional connotations flattened (e.g., "alarming" rendered as a neutral "surprising" rather than something that carries concern)
|
|
48
|
+
- Figurative language translated literally when the image doesn't work in target language
|
|
49
|
+
|
|
50
|
+
### 3. Register Consistency (10 pts)
|
|
51
|
+
Does the tone match the configured register throughout?
|
|
52
|
+
|
|
53
|
+
The register system itself is language-specific (sentence endings, T-V
|
|
54
|
+
distinction, honorific paradigms, or none of these). Read the "Register" section
|
|
55
|
+
of `lang/{code}.md` before scoring this criterion.
|
|
56
|
+
|
|
57
|
+
| Score | Description |
|
|
58
|
+
|-------|-------------|
|
|
59
|
+
| 9-10 | Perfect register match, consistent throughout |
|
|
60
|
+
| 7-8 | Mostly consistent with rare slips |
|
|
61
|
+
| 5-6 | Noticeable register shifts |
|
|
62
|
+
| 3-4 | Inconsistent: mixes formal and casual |
|
|
63
|
+
| 1-2 | Wrong register entirely |
|
|
64
|
+
|
|
65
|
+
Red flags:
|
|
66
|
+
- Register drift between the opening and the closing of a document
|
|
67
|
+
- Mixing two register systems that the target treats as mutually exclusive
|
|
68
|
+
- Formal vocabulary in casual context or vice versa
|
|
69
|
+
- Honorific or politeness level that the source does not support
|
|
70
|
+
|
|
71
|
+
### 4. Terminology (10 pts)
|
|
72
|
+
Are domain terms consistent and correct?
|
|
73
|
+
|
|
74
|
+
| Score | Description |
|
|
75
|
+
|-------|-------------|
|
|
76
|
+
| 9-10 | All glossary terms applied, consistent throughout |
|
|
77
|
+
| 7-8 | Glossary followed with 1-2 misses |
|
|
78
|
+
| 5-6 | Some terms inconsistent across strings |
|
|
79
|
+
| 3-4 | Multiple glossary violations |
|
|
80
|
+
| 1-2 | Glossary ignored |
|
|
81
|
+
|
|
82
|
+
Red flags:
|
|
83
|
+
- Same source term translated differently in same batch
|
|
84
|
+
- Glossary term overridden without justification
|
|
85
|
+
- Technical term translated when it should stay in English
|
|
86
|
+
|
|
87
|
+
### 5. Technical Integrity (10 pts)
|
|
88
|
+
Are placeholders, formatting, and structure preserved?
|
|
89
|
+
|
|
90
|
+
| Score | Description |
|
|
91
|
+
|-------|-------------|
|
|
92
|
+
| 9-10 | All placeholders, tags, and structure intact |
|
|
93
|
+
| 7-8 | Intact with minor formatting differences |
|
|
94
|
+
| 5-6 | One placeholder or tag issue |
|
|
95
|
+
| 3-4 | Multiple broken placeholders |
|
|
96
|
+
| 1-2 | Structure significantly damaged |
|
|
97
|
+
|
|
98
|
+
Red flags:
|
|
99
|
+
- Modified or deleted `{variables}`
|
|
100
|
+
- Broken HTML/markdown tags
|
|
101
|
+
- Changed JSON/YAML key names
|
|
102
|
+
- Added or removed line breaks that affect rendering
|
|
103
|
+
|
|
104
|
+
## Scoring Guide
|
|
105
|
+
|
|
106
|
+
| Total | Grade | Action |
|
|
107
|
+
|-------|-------|--------|
|
|
108
|
+
| 45-50 | Excellent | Ship as-is |
|
|
109
|
+
| 38-44 | Good | Minor polish recommended |
|
|
110
|
+
| 30-37 | Acceptable | Review flagged items before shipping |
|
|
111
|
+
| 20-29 | Needs work | Re-translate problem sections |
|
|
112
|
+
| < 20 | Reject | Full re-translation required |
|
|
113
|
+
|
|
114
|
+
## Quick Self-Check (for translator)
|
|
115
|
+
|
|
116
|
+
Before submitting, verify:
|
|
117
|
+
- [ ] Read the full translation aloud: does it flow?
|
|
118
|
+
- [ ] Glossary terms are consistent across all strings
|
|
119
|
+
- [ ] Register matches config from start to finish
|
|
120
|
+
- [ ] All placeholders survived intact
|
|
121
|
+
- [ ] No source language word order leaking through
|
|
122
|
+
- [ ] Emotional connotations preserved (not flattened into neutral words)
|
|
123
|
+
- [ ] Figurative language handled naturally (interpret/substitute/retain, not literal calques)
|
|
124
|
+
- [ ] No Europeanized patterns (passive voice, noun pile-up, forced pronouns, unnecessary connectives)
|
|
125
|
+
- [ ] Translator's notes are concise, accurate, and calibrated to target audience
|
|
126
|
+
- [ ] The target language's own self-check in `lang/{code}.md` passed
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oma-video
|
|
3
|
+
description: Create videos through the OMA video CLI, or analyze and edit
|
|
4
|
+
existing clips with media tools. Use for frame extraction, visual analysis,
|
|
5
|
+
silence cuts, dubbing assembly, sound effects, scripts, and composition;
|
|
6
|
+
audio-only work uses oma-voice.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Video Router
|
|
10
|
+
|
|
11
|
+
## Scheduling
|
|
12
|
+
|
|
13
|
+
### Goal
|
|
14
|
+
|
|
15
|
+
Create a playable video, or derive requested frames, analysis, or edits from an
|
|
16
|
+
existing clip while retaining its source timeline.
|
|
17
|
+
|
|
18
|
+
### Intent signature
|
|
19
|
+
|
|
20
|
+
- Create a short, explainer, or recorded demo.
|
|
21
|
+
- Extract frames, count visible objects, remove pauses, or assemble a dubbed clip.
|
|
22
|
+
- Add sound effects to a video or check its soundtrack against the picture.
|
|
23
|
+
|
|
24
|
+
### When to use
|
|
25
|
+
|
|
26
|
+
Use this skill for a short/reel, README or code explainer, demo walkthrough, or
|
|
27
|
+
analysis and editing of an existing video.
|
|
28
|
+
|
|
29
|
+
| Request | Mode | Default aspect | Required source |
|
|
30
|
+
|---|---|---|---|
|
|
31
|
+
| Short, reel, social clip | `shorts` | `9:16` | Topic or brief |
|
|
32
|
+
| README, code, data explanation | `explainer` | `16:9` | Topic or source path |
|
|
33
|
+
| Demo or walkthrough | `demo` | `16:9` | Human recording via `--capture` |
|
|
34
|
+
|
|
35
|
+
Processing a supplied or already-rendered video conditionally loads the upstream
|
|
36
|
+
`kajisho5/ffmpeg-skill` through `resources/existing-media.md`. This is separate
|
|
37
|
+
from the OMA creation modes. Sound effects, a sound-designed soundtrack, or
|
|
38
|
+
listening checks on a video's audio conditionally load `Leonxlnx/earshot`
|
|
39
|
+
through `resources/sound-design.md`.
|
|
40
|
+
|
|
41
|
+
### When NOT to use
|
|
42
|
+
|
|
43
|
+
Use `oma-image` for a still image, `oma-slide` for a deck, `oma-voice` for
|
|
44
|
+
audio only, and `oma-explanation` for an interactive HTML explainer. Route
|
|
45
|
+
transcription, synthesis, and TTS duration fitting to `oma-voice`, and spoken
|
|
46
|
+
translation to `oma-translation`; this skill owns their placement in video.
|
|
47
|
+
Live streaming is out of scope.
|
|
48
|
+
|
|
49
|
+
### Expected inputs
|
|
50
|
+
|
|
51
|
+
A creation brief, or an existing clip plus the requested analysis/edit, selected
|
|
52
|
+
streams, timing or sampling requirements, and output path.
|
|
53
|
+
|
|
54
|
+
### Expected outputs
|
|
55
|
+
|
|
56
|
+
A generated video and its asset bus, or requested frames/analysis/edited media
|
|
57
|
+
with source timestamps and the parameters used to derive them.
|
|
58
|
+
|
|
59
|
+
### Dependencies
|
|
60
|
+
|
|
61
|
+
Creation requires the selected OMA providers/compositor. For processing supplied
|
|
62
|
+
or rendered video, use the runtime skill catalog first; otherwise load
|
|
63
|
+
`kajisho5/ffmpeg-skill` with `bunx skills use` as described in the conditional
|
|
64
|
+
resource. Its complete support bundle, Python, FFmpeg/FFprobe and any
|
|
65
|
+
operation-specific capabilities are required. Sound effects and audio listening
|
|
66
|
+
use the upstream earshot skills plus a resolved earshot runtime with
|
|
67
|
+
FFmpeg/FFprobe; never install it without consent. Visual interpretation uses the
|
|
68
|
+
host vision tool. Report unavailable capabilities rather than invent results.
|
|
69
|
+
|
|
70
|
+
## Structural Flow
|
|
71
|
+
|
|
72
|
+
For supplied or already-rendered video, use the existing-media branch in the
|
|
73
|
+
canonical path. The upstream skill owns its scripts, flags, templates,
|
|
74
|
+
`project.json` and mechanical editing workflow. OMA retains source-timeline
|
|
75
|
+
evidence and the visual, speech and editorial decisions described there. Its
|
|
76
|
+
project format is separate from the OMA creation asset bus below.
|
|
77
|
+
For creation, inputs are a brief plus optional mode, aspect, locale, captions,
|
|
78
|
+
visual, voice, music, duration, compositor, capture path, and seed. Outputs live in
|
|
79
|
+
`.agents/results/videos/<timestamp>-<shortid>-<mode>/`:
|
|
80
|
+
|
|
81
|
+
- `script.json`, `timing.json`, and `render-spec.json` form the deterministic
|
|
82
|
+
asset bus.
|
|
83
|
+
- Captions and acquired audio/visual assets are recorded in `manifest.json`
|
|
84
|
+
with hashes, providers, cost, warnings, and exit code.
|
|
85
|
+
- A successful real render contains `<mode>-<slug>.mp4`, an encoded video
|
|
86
|
+
stream, and a positive ffprobe duration.
|
|
87
|
+
|
|
88
|
+
`OMA_VIDEO_MOCK=1` is a test harness only. It can create deterministic text
|
|
89
|
+
placeholders with an `.mp4` name; those files are never a user deliverable. A
|
|
90
|
+
missing HyperFrames/MPT toolchain, an un-authored composition, a render error, or
|
|
91
|
+
an invalid video fails with diagnostics and leaves the script/render spec for
|
|
92
|
+
recovery.
|
|
93
|
+
|
|
94
|
+
### Decide and confirm
|
|
95
|
+
|
|
96
|
+
For creation, infer mode when clear: short/reel -> `shorts`;
|
|
97
|
+
README/code/data/explain -> `explainer`; demo/walkthrough/capture -> `demo`.
|
|
98
|
+
For a one-line creation request, state
|
|
99
|
+
the inferred mode, aspect, duration, visual strategy, captions, locale, and
|
|
100
|
+
voice/music before invoking. Do not make the user complete a questionnaire
|
|
101
|
+
when those defaults are clear.
|
|
102
|
+
|
|
103
|
+
Ask only when it changes the result: an ambiguous mode/source, a required demo
|
|
104
|
+
recording, or a cost confirmation. Respect an explicit mode, aspect, duration,
|
|
105
|
+
captions, or voice verbatim.
|
|
106
|
+
|
|
107
|
+
For a demo, a human records the screen and controls login. `--source web --url`
|
|
108
|
+
provides context only; it never automates login or starts a recorder. Without
|
|
109
|
+
`--capture`, return guided capture instructions and stop.
|
|
110
|
+
|
|
111
|
+
## Logical Operations
|
|
112
|
+
|
|
113
|
+
### Guardrails
|
|
114
|
+
|
|
115
|
+
1. Keep output and capture paths inside `$PWD` unless external output is
|
|
116
|
+
explicitly allowed. Validate capture formats and copy external assets into
|
|
117
|
+
the run directory. Mask URL query/hash tokens in logs and manifests.
|
|
118
|
+
2. Provider configuration is key-optional: use the configured chain. Paid
|
|
119
|
+
providers require their environment key and the cost guardrail. Local
|
|
120
|
+
fallbacks may replace voice, visuals, captions, or music; record coverage in
|
|
121
|
+
warnings. A compositor failure is never a fallback video.
|
|
122
|
+
3. Before a paid provider action or rerun, compare the planning estimate with
|
|
123
|
+
`cost.guardrail_usd` or `--max-usd` and reuse existing spend authorization.
|
|
124
|
+
In an active OMA video workflow, record the actual paid, limited, fallback, or
|
|
125
|
+
declined choice before executing it (execution protocol Step 2). Pass `--yes`
|
|
126
|
+
or `OMA_VIDEO_YES=1` only for an already authorized paid action; the event does
|
|
127
|
+
not grant permission.
|
|
128
|
+
4. For creation, respect `limits.max_duration_sec` (180) and
|
|
129
|
+
`limits.max_scenes` (40). Cancel subprocess work on SIGINT/SIGTERM.
|
|
130
|
+
5. Keep run directories. Never auto-prune a user’s video artifacts.
|
|
131
|
+
A demo capture is inspected for personal information and masked before
|
|
132
|
+
render (`resources/hyperframes-authoring/demo.md`); an unchecked capture is
|
|
133
|
+
not rendered.
|
|
134
|
+
6. Creation via `oma video generate --dry-run` writes only planning artifacts
|
|
135
|
+
and does no provider render. It does not prove an MP4 exists. For delegated
|
|
136
|
+
media work, follow the loaded upstream operation's dry-run contract.
|
|
137
|
+
|
|
138
|
+
### Canonical command path
|
|
139
|
+
|
|
140
|
+
1. Supplied or already-rendered video: load `resources/existing-media.md`.
|
|
141
|
+
Resolve the upstream skill, follow its supported operation, and retain OMA
|
|
142
|
+
timeline and interpretation evidence. These operations do not pass through
|
|
143
|
+
`oma video generate` or the creation-only limits above.
|
|
144
|
+
2. New video: use the commands below and the creation pipeline. Keep existing
|
|
145
|
+
`shorts`, `explainer`, and `demo` behavior.
|
|
146
|
+
3. Sound effects or soundtrack listening on either path: load
|
|
147
|
+
`resources/sound-design.md`. earshot supplies the sounds and the listening
|
|
148
|
+
evidence; OMA keeps cue times, placement in the composition, and delivery.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Plan or create the asset bus. Supply --script whenever an agent authored it.
|
|
152
|
+
oma video generate "Jeju coffee" --mode shorts --aspect 9:16 \
|
|
153
|
+
--captions tiktok --script ./script.json --output json
|
|
154
|
+
|
|
155
|
+
# Deterministic planning only; no real render or provider work.
|
|
156
|
+
oma video generate "explain this project" --mode explainer --seed 42 --dry-run
|
|
157
|
+
|
|
158
|
+
# Human-recorded demo input.
|
|
159
|
+
oma video generate "feature walkthrough" --mode demo --capture <absolute-path>.mp4
|
|
160
|
+
|
|
161
|
+
# Scaffold the per-run HyperFrames project, author index.html as instructed,
|
|
162
|
+
# then render and validate the encoded output.
|
|
163
|
+
oma video compose <runDir> --output json
|
|
164
|
+
oma video render <runDir> --output json
|
|
165
|
+
|
|
166
|
+
# Diagnose required toolchains without changing a run.
|
|
167
|
+
oma video doctor
|
|
168
|
+
oma video provider list
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`oma video generate --output json` returns
|
|
172
|
+
`{exitCode, runDir, manifestPath, scriptPath, renderSpecPath, warnings, error}`.
|
|
173
|
+
Read video and asset paths from the manifest; the JSON envelope has no
|
|
174
|
+
`outputs` field.
|
|
175
|
+
|
|
176
|
+
### Failure and recovery
|
|
177
|
+
|
|
178
|
+
- Missing HyperFrames composition: `oma video compose <runDir>` prepares the
|
|
179
|
+
project and authoring contract. Author `<runDir>/hyperframes/index.html` using
|
|
180
|
+
the generated `AUTHORING.md`, then invoke `oma video render <runDir>`. The
|
|
181
|
+
command lints, renders, and ffprobes the output. Fix a reported composition
|
|
182
|
+
or toolchain failure and re-run; return a failure report when it cannot render.
|
|
183
|
+
|
|
184
|
+
- Missing MPT toolchain: `--compositor mpt` requires the installed checkout, its virtual environment,
|
|
185
|
+
and ffmpeg. Use `oma video doctor --install-mpt` when setup is authorized and
|
|
186
|
+
available. MPT setup failures, driver failures, and non-video output fail with
|
|
187
|
+
the diagnostic; they do not write a placeholder MP4.
|
|
188
|
+
|
|
189
|
+
For creation, success means all asset schemas and manifest hashes validate and a
|
|
190
|
+
real MP4 passes video-stream and duration validation. A partial success may use a
|
|
191
|
+
key-free visual, timing, caption, or music fallback, but it still requires that
|
|
192
|
+
real video validation.
|
|
193
|
+
|
|
194
|
+
## References
|
|
195
|
+
|
|
196
|
+
### Conditional resources
|
|
197
|
+
|
|
198
|
+
Load only what the task needs:
|
|
199
|
+
|
|
200
|
+
- `resources/execution-protocol.md` for the creation pipeline, failure
|
|
201
|
+
mapping, and JSON reporting rules.
|
|
202
|
+
- `resources/existing-media.md` when processing supplied or rendered video:
|
|
203
|
+
upstream skill loading, source-timeline evidence and visual/speech decisions.
|
|
204
|
+
- `resources/sound-design.md` when a video needs sound effects, foley, ambience
|
|
205
|
+
or soundtrack review: earshot routing, cue placement and listening evidence.
|
|
206
|
+
- `resources/vendor-matrix.md` before changing providers, keys, cost, or
|
|
207
|
+
fallback order.
|
|
208
|
+
- `resources/script-schema.md` when authoring or validating `--script` input.
|
|
209
|
+
- `resources/prompt-tips.md` when turning a brief into scene prompts.
|
|
210
|
+
- `resources/motion-principles.md` when authoring `script.json` or the
|
|
211
|
+
composition: scene cast, motion, text, narration sync and diagram rules.
|
|
212
|
+
- `resources/hyperframes-authoring/README.md` and the selected mode guide before
|
|
213
|
+
writing `index.html`.
|
|
214
|
+
- `resources/checklist.md` before handing a newly generated video to a user.
|
|
215
|
+
|
|
216
|
+
### Verification
|
|
217
|
+
|
|
218
|
+
For CLI/runtime changes, add a regression test for the affected success and
|
|
219
|
+
failure paths. At minimum run the focused Vitest files, for example:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
cd cli
|
|
223
|
+
bunx vitest run commands/video/providers/compositor.test.ts \
|
|
224
|
+
commands/video/orchestrator.test.ts
|
|
225
|
+
bunx biome check commands/video/providers/compositor.ts \
|
|
226
|
+
commands/video/providers/compositor.test.ts
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Do not run a live render merely to test documentation or a mock-only branch.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# oma-video skill configuration — NO LONGER READ BY THE CLI.
|
|
2
|
+
#
|
|
3
|
+
# Editing this file has no effect. Put your overrides under `video:` 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 are the frozen migration 022 baseline, not current defaults.
|
|
9
|
+
# Keep them unchanged so migration 022 can identify historical user overrides.
|
|
10
|
+
# Current defaults (HyperFrames) live in cli/io/video/config.ts.
|
|
11
|
+
default_output_dir: .agents/results/videos
|
|
12
|
+
default_mode: shorts
|
|
13
|
+
default_aspect: auto
|
|
14
|
+
default_locale: en
|
|
15
|
+
default_captions: tiktok
|
|
16
|
+
default_visual: auto
|
|
17
|
+
default_voice: none
|
|
18
|
+
default_music: none
|
|
19
|
+
default_compositor: hyperframes
|
|
20
|
+
default_timeout_sec: 600
|
|
21
|
+
|
|
22
|
+
providers:
|
|
23
|
+
script:
|
|
24
|
+
order: [agent-script]
|
|
25
|
+
voice:
|
|
26
|
+
order: [oma-voice]
|
|
27
|
+
visual:
|
|
28
|
+
order: [oma-image, pexels, pixelle]
|
|
29
|
+
caption:
|
|
30
|
+
order: [oma-captions]
|
|
31
|
+
# Capture dispatch is currently driven by --source directly
|
|
32
|
+
# (cli/commands/video/orchestrator/capture.ts): --source web -> guided/cap,
|
|
33
|
+
# --source file -> guided/cap. This key mirrors the code default and is
|
|
34
|
+
# informational only — the orchestrator does not walk it as a chain.
|
|
35
|
+
capture:
|
|
36
|
+
order: [cap]
|
|
37
|
+
# Strudel renders the BGM bed offline (headless Chrome + OfflineAudioContext).
|
|
38
|
+
# Deps are AGPL and opt-in: `oma video doctor --install-strudel`.
|
|
39
|
+
music:
|
|
40
|
+
order: [strudel]
|
|
41
|
+
compositor:
|
|
42
|
+
order: [hyperframes, mpt]
|
|
43
|
+
# Paid providers — auto-enabled only when their env key is present (backend
|
|
44
|
+
# rule 11: real path gated on key, key-free fallback otherwise).
|
|
45
|
+
pexels:
|
|
46
|
+
enabled: false
|
|
47
|
+
envVar: PEXELS_API_KEY
|
|
48
|
+
pixelle:
|
|
49
|
+
enabled: false
|
|
50
|
+
envVar: RUNNINGHUB_API_KEY
|
|
51
|
+
|
|
52
|
+
cost:
|
|
53
|
+
guardrail_usd: 0.20
|
|
54
|
+
|
|
55
|
+
limits:
|
|
56
|
+
max_duration_sec: 180
|
|
57
|
+
max_scenes: 40
|
|
58
|
+
|
|
59
|
+
naming:
|
|
60
|
+
single_folder_pattern: "{timestamp}-{shortid}-{mode}"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Checklist: before you run `oma video generate`
|
|
2
|
+
|
|
3
|
+
- [ ] Mode is set or inferable (shorts / explainer / demo) and the topic/source is clear (see `prompt-tips.md`).
|
|
4
|
+
- [ ] `--aspect` matches the mode (9:16 shorts, 16:9 explainer/demo) or is `auto`.
|
|
5
|
+
- [ ] Duration ≤ 180s and the script stays ≤ 40 scenes.
|
|
6
|
+
- [ ] `--output-dir` is inside the project, or `--allow-external-output` is set.
|
|
7
|
+
- [ ] For `demo`: `--capture <path>` exists, is absolute + inside `$PWD`, and is a valid video format — or you accept the guided protocol.
|
|
8
|
+
- [ ] Provider readiness checked with `oma video doctor` (Node/Chromium/FFmpeg · Voicebox MCP or VoiceStudio · oma-image vendors · Pixelle-MCP · Cap).
|
|
9
|
+
- [ ] Paid visuals (Pexels / Pixelle) have their env key set, OR you accept the key-free oma-image fallback.
|
|
10
|
+
- [ ] Pixelle-MCP, if used: one-time explicit consent + source review done; `--max-usd` set for RunningHub credits.
|
|
11
|
+
- [ ] Estimated cost is acceptable. Run `--dry-run` first for unfamiliar combinations.
|
|
12
|
+
- [ ] Secrets are not in the brief, or `--no-brief-in-manifest` is set.
|
|
13
|
+
|
|
14
|
+
# Checklist: after the run
|
|
15
|
+
|
|
16
|
+
- [ ] The run directory contains `script.json`, `timing.json`, `render-spec.json`, `captions.srt`/`.vtt`, the `<mode>-<slug>.mp4`, and `manifest.json`.
|
|
17
|
+
- [ ] Every asset-bus schema validates (`schemaVersion: "1.0"`).
|
|
18
|
+
- [ ] `manifest.json` records each provider, asset `sha256` hashes, cost breakdown, and the exit code.
|
|
19
|
+
- [ ] `warnings[]` annotates any fallback taken (e.g. Pexels key absent -> oma-image stills, translator absent -> source locale).
|
|
20
|
+
- [ ] External assets were copied into the run dir and hashed (no URL refs).
|
|
21
|
+
- [ ] The mp4 has a video stream and positive duration (the CLI ffprobe check passed). A deterministic placeholder is valid only under `OMA_VIDEO_MOCK=1` tests and is never a deliverable.
|
|
22
|
+
- [ ] For a demo capture: sampled frames were inspected, every personal detail is cropped out or covered with an opaque layer, and the masked regions are listed in the report (see `hyperframes-authoring/demo.md`).
|
|
23
|
+
- [ ] If sound effects were placed: the upstream kit check is clean, each `<audio>` start comes from `kit.lock.json`, and the report quotes earshot `timeline` sync and loudness readings (see `sound-design.md`).
|
|
24
|
+
- [ ] Re-rendering with `oma video render <runDir>` reproduces the same output from `render-spec.json`.
|
|
25
|
+
- [ ] If results are consumed downstream, the consumer parses the `--output json` stdout envelope `{exitCode, runDir, manifestPath, scriptPath, renderSpecPath, warnings, error}` (there is no `outputs` key) and reads output/asset paths from the manifest at `manifestPath`.
|
|
26
|
+
- [ ] Old run directories under `.agents/results/videos/` are pruned **manually** when no longer needed — every run adds a new dir and the CLI never auto-deletes them.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Video Agent - Execution Protocol
|
|
2
|
+
|
|
3
|
+
## Step -1: Clarify / Infer Mode (agent-side, before `oma video generate`)
|
|
4
|
+
|
|
5
|
+
Run the **Clarification Protocol** in `SKILL.md` before shelling out. Infer the
|
|
6
|
+
mode from keywords (shorts/reels/쇼츠/릴스 -> shorts; README/code/data/explain/설명
|
|
7
|
+
-> explainer; demo/walkthrough/capture/데모 -> demo) and show the user the inferred
|
|
8
|
+
plan when the brief is a one-liner.
|
|
9
|
+
|
|
10
|
+
## Step 0: Parse Request
|
|
11
|
+
|
|
12
|
+
1. Extract the brief and flags from the invocation.
|
|
13
|
+
2. Resolve defaults from shipped code defaults -> the `video:` section of `.agents/oma-config.yaml` -> env vars -> CLI flags (lowest to highest precedence). `config/video-config.yaml` is not consulted.
|
|
14
|
+
3. Validate:
|
|
15
|
+
- `mode` ∈ {`shorts`, `explainer`, `demo`}.
|
|
16
|
+
- `aspect` ∈ {`9:16`, `16:9`, `1:1`, `auto`} (`auto` snaps to the mode default: shorts -> 9:16, explainer/demo -> 16:9).
|
|
17
|
+
- `captions` ∈ {`tiktok`, `lower-third`, `none`}; `visual` ∈ {`auto`, `generate`, `stock`, `aigc`, `slide`}.
|
|
18
|
+
- `music` ∈ {`upbeat`, `calm`, `cinematic`, `lofi`, `piano`, `none`}; `compositor` ∈ {`hyperframes`, `mpt`}.
|
|
19
|
+
- `duration` ≤ `limits.max_duration_sec` (180); resulting `scenes` ≤ `limits.max_scenes` (40).
|
|
20
|
+
- `out` is inside `$PWD` unless `--allow-external-output`.
|
|
21
|
+
- For `demo`: `--capture` (if given) exists, is absolute + `$PWD`-guarded, and is a valid video format.
|
|
22
|
+
4. If invalid: exit code 4 with a message identifying the offending field.
|
|
23
|
+
|
|
24
|
+
## Step 0.5: Mode Routing
|
|
25
|
+
|
|
26
|
+
- **shorts** (9:16): synthetic from the topic. Default visual = static oma-image stills.
|
|
27
|
+
- **explainer** (16:9 / 9:16): from README / code / data. Default visual = oma-slide frames + oma-image diagrams.
|
|
28
|
+
- **demo** (16:9): from a screen capture. If no `--capture` and Cap is unavailable -> emit the **guided capture protocol** (Step 4b) and stop.
|
|
29
|
+
|
|
30
|
+
## Step 1: Provider Availability + Selection
|
|
31
|
+
|
|
32
|
+
1. Call `available()` on every registered provider in parallel (`oma video provider list`).
|
|
33
|
+
2. For each capability, walk `providers.<capability>.order`:
|
|
34
|
+
- The first available provider wins.
|
|
35
|
+
- Paid providers (`pexels`, `pixelle`) are skipped unless their env key is present (`enabled` gate).
|
|
36
|
+
- On chain exhaustion for a required capability -> exit 5 naming the capability.
|
|
37
|
+
3. Log `using: <provider>` per capability to stderr before generation.
|
|
38
|
+
|
|
39
|
+
## Step 2: Cost Guardrail
|
|
40
|
+
|
|
41
|
+
1. Estimate cost = sum of each selected provider's `estimateCost()` (most are `$0`; Pixelle/RunningHub credits are non-zero).
|
|
42
|
+
2. If `--dry-run`: emit `script.json` / `render-spec.json` / `manifest.json`, skip rendering, exit 0.
|
|
43
|
+
3. Before a non-dry run whose estimate reaches the guardrail or whose paid-provider choice requires authorization, reuse existing authorization for that provider, amount, and scope. Resolve only missing authorization. In an active OMA video workflow, emit `video.cost-confirmation` with the current script/provider-plan `instanceId`, actual paid/limited/fallback/declined action, rationale, and planning-manifest evidence; verify with `--instance` before the provider action (workflow Step 4 owns the command template).
|
|
44
|
+
4. The CLI throws a cost-guardrail error and exits 1 when the cumulative provider estimate reaches the threshold without `--yes`; it does not collect a workflow decision through an interactive prompt. Planning may hit the same guard: retain the error/manifest estimate or rerun with `--dry-run --yes` to finish planning without paid generation or rendering. Keep `--dry-run` on that planning rerun. On a non-dry run, pass `--yes` / `OMA_VIDEO_YES=1` only when the paid action is already authorized. A declined path may be replaced by an authorized key-free plan and re-planned. A new provider or increased estimate must fit current authorization before paid work resumes.
|
|
45
|
+
|
|
46
|
+
## Step 3: Cancellation Setup
|
|
47
|
+
|
|
48
|
+
1. Install `SIGINT` / `SIGTERM` handlers that call `AbortController.abort()`.
|
|
49
|
+
2. Thread the signal into every provider call and into the render subprocess.
|
|
50
|
+
|
|
51
|
+
## Step 4: Pipeline (asset bus)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
brief ─► [ScriptProvider] ─► script.json {scenes[], narration[], onScreenText[]}
|
|
55
|
+
script.json ─► parallel:
|
|
56
|
+
├► [VoiceProvider] ─► audio/narration-01.wav (single joined track) + timing.json
|
|
57
|
+
├► [VisualProvider] ─► visuals/scene-NN.*
|
|
58
|
+
└► [CaptionProvider] ─► captions.srt / captions.vtt
|
|
59
|
+
all assets ─► render-spec.json ─► [Compositor: HyperFrames] ─► <mode>-<slug>.mp4
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
1. **Script**: AgentScriptProvider writes `script.json` (start of the determinism boundary).
|
|
63
|
+
2. **Voice**: oma-voice synthesizes narration on the `voice.backend` speech backend (Voicebox, or VoiceStudio; `auto` tries Voicebox first) -> a **single** `audio/narration-01.wav` (all scene lines joined into one track; per-line offsets live in `timing.json`). Fallback: estimated timing (no wav).
|
|
64
|
+
3. **Visuals**: walk the visual chain. oma-image stills (key-free default) / oma-slide frames (explainer) / Pexels (key) / Pixelle (key). Aspect -> 16-multiple size; HyperFrames crops to the exact frame.
|
|
65
|
+
4. **Captions**: oma-captions builds `captions.srt` + `captions.vtt` from `timing.json`. For a non-source locale, translate via oma-translation (key-free); absent -> warn + keep source.
|
|
66
|
+
5. **render-spec**: compose `render-spec.json` (the deterministic compute boundary) from the assets + seed.
|
|
67
|
+
6. **Render**: the compositor consumes `render-spec.json`.
|
|
68
|
+
|
|
69
|
+
### Step 4b: Guided Capture Protocol (demo, no capture)
|
|
70
|
+
|
|
71
|
+
State plainly to the user: **"Demo capture is performed by a human."** Then:
|
|
72
|
+
1. Instruct: record the walkthrough with Cap (or any recorder) at 16:9.
|
|
73
|
+
2. Ask the user to re-run with `--capture <absolute-path>.mp4`.
|
|
74
|
+
3. Stop without rendering (capture-required is a guided stop, not a hard error).
|
|
75
|
+
|
|
76
|
+
## Step 5: Compositor Render
|
|
77
|
+
|
|
78
|
+
<!-- oma-docs:ignore-start -->
|
|
79
|
+
- **HyperFrames (default, live)**: `generate` emits the asset bus and a pending HTML project at `<runDir>/hyperframes/`. Read its `AUTHORING.md`, the listed upstream API skills, and `resources/hyperframes-authoring/<mode>.md`. Author `index.html` with local assets and seekable animation. Run `oma video render <runDir> --output json`: lint → strict render → ffprobe stream/dimensions/duration checks → manifest update. Fix reported failures and re-render.
|
|
80
|
+
<!-- oma-docs:ignore-end -->
|
|
81
|
+
- **Failure**: a missing toolchain, render failure, missing video stream, or non-positive duration is a failure with diagnostics. Keep the run directory and recovery artifacts; do not write a placeholder MP4. `OMA_VIDEO_MOCK=1` permits deterministic placeholders for tests only.
|
|
82
|
+
- **MPT (`--compositor mpt`)**: inject the agent-written script (custom-script mode); keys env-only + log masking. It requires the installed checkout, venv, and ffmpeg; setup or render failures fail with diagnostics.
|
|
83
|
+
|
|
84
|
+
## Step 6: Write Artifacts
|
|
85
|
+
|
|
86
|
+
1. Copy every external asset into the run dir and hash it (`sha256`); no URL refs.
|
|
87
|
+
2. Validate each asset-bus schema (`script` / `timing` / `render-spec` / `manifest`) — `schemaVersion` must be `"1.0"`.
|
|
88
|
+
3. Build `manifest.json`: `runId`, `mode`, `providers{...}`, `assets[{path,sha256,bytes,seed}]`, `outputs{video,durationSec,sha256}`, `cost{usd,breakdown}`, `warnings[]`, `exitCode`.
|
|
89
|
+
4. If `--no-brief-in-manifest`: replace `prompt` with `promptSha256`.
|
|
90
|
+
|
|
91
|
+
## Step 7: Report
|
|
92
|
+
|
|
93
|
+
1. Print a one-line status per capability to stderr:
|
|
94
|
+
- `[oma video] <capability> <provider> ok (Xs)`
|
|
95
|
+
- `[oma video] <capability> <provider> fallback -> <fallback>`
|
|
96
|
+
2. Print the run-dir path and, only on success, the validated mp4 path.
|
|
97
|
+
3. For `--output json`: write `{exitCode, runDir, manifestPath, scriptPath, renderSpecPath, warnings, error}` to stdout as one JSON object (no `outputs` key — read output/asset paths from the manifest at `manifestPath`).
|
|
98
|
+
|
|
99
|
+
## Step 8: Exit Code Aggregation (aligned with `oma search fetch`)
|
|
100
|
+
|
|
101
|
+
- Success (playable mp4 with a video stream and positive duration + valid manifest) -> exit 0. Asset-provider fallbacks are recorded in `warnings`.
|
|
102
|
+
- Otherwise pick the most specific code:
|
|
103
|
+
- `safety-refused` -> 2
|
|
104
|
+
- `not-found` (profile/asset) -> 3
|
|
105
|
+
- `schema-validation` / invalid input -> 4
|
|
106
|
+
- `provider-unavailable` / `auth-required` -> 5
|
|
107
|
+
- `timeout` -> 6
|
|
108
|
+
- otherwise -> 1
|
|
109
|
+
|
|
110
|
+
## On Error
|
|
111
|
+
|
|
112
|
+
| Situation | Action |
|
|
113
|
+
|-----------|--------|
|
|
114
|
+
| No provider for a required capability | Exit 5, print `Run: oma video doctor` |
|
|
115
|
+
| HyperFrames or MPT toolchain not bootstrapped | Exit 1 + `oma video doctor` remediation; retain render-spec and authored composition for recovery |
|
|
116
|
+
| No speech backend reachable (Voicebox / VoiceStudio) | Fall back to estimated timing; still emit captions (whisper.cpp hop deferred: `TODO(oma-deferred): whisper-cpp`) |
|
|
117
|
+
| Pexels / Pixelle key absent | Skip provider; fall through to oma-image stills; annotate coverage in `warnings` |
|
|
118
|
+
| `demo` with no capture + no Cap | Guided protocol (Step 4b); stop without rendering |
|
|
119
|
+
| `--capture` outside `$PWD` or wrong format | Exit 4 with the path/format problem |
|
|
120
|
+
| Cost over guardrail, declined | Exit 1 |
|
|
121
|
+
| Timeout | Exit 6, manifest records `after_ms` |
|
|
122
|
+
| Cancelled (Ctrl+C) | Exit 130 (signal); no manifest if abort was pre-write |
|