oh-my-agent-commandcode 0.0.0-stage → 20.38.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,92 @@
|
|
|
1
|
+
# Subagent vendor transport registry.
|
|
2
|
+
# Select routing with model_preset/agents/default_cli in .agents/oma-config.yaml.
|
|
3
|
+
# Legacy active_vendor and execution settings are not consumed by the parser.
|
|
4
|
+
|
|
5
|
+
# Vendor configurations
|
|
6
|
+
vendors:
|
|
7
|
+
claude:
|
|
8
|
+
command: claude
|
|
9
|
+
prompt_flag: "-p"
|
|
10
|
+
output_format_flag: "--output-format"
|
|
11
|
+
output_format: "json"
|
|
12
|
+
auto_approve_flag: "--dangerously-skip-permissions"
|
|
13
|
+
model_flag: "--model"
|
|
14
|
+
default_model: "sonnet"
|
|
15
|
+
# JSON output parsing
|
|
16
|
+
response_jq: ".result"
|
|
17
|
+
isolation_method: "flags"
|
|
18
|
+
|
|
19
|
+
# Codex runs in its workspace-write sandbox. oma also enables network and
|
|
20
|
+
# grants the project root, the OMA state home (~/.oma), and existing
|
|
21
|
+
# package-manager caches. This file is replaced by `oma update`; choose
|
|
22
|
+
# another mode durably with OMA_CODEX_SANDBOX=read-only|workspace-write|
|
|
23
|
+
# danger-full-access (danger-full-access = no sandbox, no approvals).
|
|
24
|
+
codex:
|
|
25
|
+
command: codex
|
|
26
|
+
subcommand: "exec"
|
|
27
|
+
prompt_flag: "none"
|
|
28
|
+
output_format_flag: "--json"
|
|
29
|
+
auto_approve_flag: "--sandbox workspace-write"
|
|
30
|
+
model_flag: "-m"
|
|
31
|
+
default_model: "gpt-6.1-terra"
|
|
32
|
+
response_jq: ".response"
|
|
33
|
+
isolation_method: "directory"
|
|
34
|
+
|
|
35
|
+
qwen:
|
|
36
|
+
command: qwen
|
|
37
|
+
prompt_flag: "-p"
|
|
38
|
+
output_format_flag: "--output-format"
|
|
39
|
+
output_format: "json"
|
|
40
|
+
auto_approve_flag: "--yolo"
|
|
41
|
+
model_flag: "-m"
|
|
42
|
+
default_model: "qwen3.7-plus"
|
|
43
|
+
response_jq: ".output"
|
|
44
|
+
isolation_method: "directory"
|
|
45
|
+
|
|
46
|
+
# Antigravity (agy) headless print mode: `agy -p "<prompt>"`.
|
|
47
|
+
# Models: run `agy models`. `--model` accepts ONLY those display names —
|
|
48
|
+
# a slug like `gemini-4-argon` makes agy exit with `Error: invalid --model`
|
|
49
|
+
# before running the prompt. The parenthesised tier is agy's effort dial.
|
|
50
|
+
# agy 1.0 had no --model / --add-dir / --print-timeout; oma probes
|
|
51
|
+
# `agy --help` once and drops whichever flags the installed binary lacks.
|
|
52
|
+
antigravity:
|
|
53
|
+
command: agy
|
|
54
|
+
prompt_flag: "-p"
|
|
55
|
+
auto_approve_flag: "--dangerously-skip-permissions"
|
|
56
|
+
model_flag: "--model"
|
|
57
|
+
default_model: "Gemini 4 Argon (High)"
|
|
58
|
+
isolation_method: "directory"
|
|
59
|
+
|
|
60
|
+
# Cursor Agent headless CLI: `cursor agent -p …` (--print). Prompt is positional.
|
|
61
|
+
# Models: run `cursor agent models` (legacy fallback: `cursor agent --list-models`).
|
|
62
|
+
# `auto` lets Cursor route to an available model (quota-friendly); pin to a specific
|
|
63
|
+
# id (e.g. composer-2.5, composer-2.5-fast) for reproducibility.
|
|
64
|
+
cursor:
|
|
65
|
+
command: cursor
|
|
66
|
+
prompt_flag: none
|
|
67
|
+
output_format_flag: "--output-format"
|
|
68
|
+
output_format: "json"
|
|
69
|
+
auto_approve_flag: "--yolo"
|
|
70
|
+
model_flag: "--model"
|
|
71
|
+
default_model: "auto"
|
|
72
|
+
isolation_method: "directory"
|
|
73
|
+
|
|
74
|
+
# Kiro CLI headless: `kiro-cli chat --no-interactive --trust-all-tools [--model …] "<prompt>"`.
|
|
75
|
+
# Models: AWS Bedrock IDs (e.g. anthropic.claude-sonnet-4-5-20251001-v1:0).
|
|
76
|
+
# Use "auto" to let Kiro select the model based on its own configuration.
|
|
77
|
+
kiro:
|
|
78
|
+
command: kiro-cli
|
|
79
|
+
prompt_flag: none
|
|
80
|
+
auto_approve_flag: "--trust-all-tools"
|
|
81
|
+
model_flag: "--model"
|
|
82
|
+
default_model: "auto"
|
|
83
|
+
isolation_method: "directory"
|
|
84
|
+
|
|
85
|
+
# pi headless print mode: `pi [--model …] -p "<prompt>"`.
|
|
86
|
+
# Model accepts any pi model pattern/alias, including thinking suffixes.
|
|
87
|
+
pi:
|
|
88
|
+
command: pi
|
|
89
|
+
prompt_flag: "-p"
|
|
90
|
+
model_flag: "--model"
|
|
91
|
+
default_model: "sonnet:high"
|
|
92
|
+
isolation_method: "directory"
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# MCP Memory Schema for Multi-Agent Orchestration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Each subagent writes only to its own dedicated files. The orchestrator manages session-level files. This ownership model prevents write conflicts between concurrent agents.
|
|
6
|
+
|
|
7
|
+
## Configuration
|
|
8
|
+
|
|
9
|
+
Memory base path and tool names are configurable via `.agents/mcp.json` (not the repo-root `.mcp.json`, which is the Claude Code MCP server config):
|
|
10
|
+
```json
|
|
11
|
+
{
|
|
12
|
+
"memoryConfig": {
|
|
13
|
+
"basePath": ".agents/state/memories",
|
|
14
|
+
"tools": {
|
|
15
|
+
"read": "Read",
|
|
16
|
+
"write": "Write",
|
|
17
|
+
"edit": "Edit"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Default base path: `.agents/state/memories`
|
|
24
|
+
|
|
25
|
+
## File Structure
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
{memoryConfig.basePath}/
|
|
29
|
+
orchestrator-session-{sessionId}.md # Session metadata
|
|
30
|
+
task-board-{sessionId}.md # Master task list
|
|
31
|
+
progress-{agentId}-{taskId}-{runId}-{sessionId}.md # Per-run progress log
|
|
32
|
+
|
|
33
|
+
.agents/results/
|
|
34
|
+
result-{agentId}-{taskId}-{runId}-{sessionId}.md # Per-run final report
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> **Path rule**: Resolve coordination notes from the project-root memory base and
|
|
38
|
+
> final reports from the project-root `.agents/results/`, then isolate every
|
|
39
|
+
> artifact by session, task, and run. In monorepos, never choose a
|
|
40
|
+
> subproject memory root. The injected claim path and agent-run receipt keep
|
|
41
|
+
> their structured contract and are not replaced by this report layout.
|
|
42
|
+
|
|
43
|
+
## orchestrator-session.md
|
|
44
|
+
|
|
45
|
+
Created by the orchestrator at session start. Updated throughout execution.
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
# Orchestrator Session
|
|
49
|
+
## ID: session-{YYYYMMDD}-{HHMMSS}
|
|
50
|
+
## Started: {ISO timestamp}
|
|
51
|
+
## Status: running | completed | failed | aborted
|
|
52
|
+
|
|
53
|
+
## Agents
|
|
54
|
+
| Agent ID | CLI | PID | Status | Task |
|
|
55
|
+
|----------|-----|-----|--------|------|
|
|
56
|
+
| backend | gemini | 12345 | running | task-1 |
|
|
57
|
+
| frontend | gemini | 12346 | completed | task-2 |
|
|
58
|
+
| mobile | claude | 12347 | running | task-3 |
|
|
59
|
+
|
|
60
|
+
## Configuration
|
|
61
|
+
- MAX_PARALLEL: 3
|
|
62
|
+
- MAX_RETRIES: 2
|
|
63
|
+
- POLL_INTERVAL: 30s
|
|
64
|
+
|
|
65
|
+
## Summary (filled on completion)
|
|
66
|
+
- Total Tasks: X
|
|
67
|
+
- Completed: X
|
|
68
|
+
- Failed: X
|
|
69
|
+
- Files Created: [list]
|
|
70
|
+
- Issues: [list]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## task-board.md
|
|
74
|
+
|
|
75
|
+
Master task list created by the orchestrator. Subagents read this to understand their assignment but never write to it.
|
|
76
|
+
|
|
77
|
+
`Selected References` and `Selection Reason` are coordinator notes from PHASE
|
|
78
|
+
1.5 in `SKILL.md`. They explain the task's relevant domain resources and any
|
|
79
|
+
uncertainty. The launcher does not enforce these Markdown fields; supply
|
|
80
|
+
references through the dispatch path's supported context mechanism. A single
|
|
81
|
+
confidently matched skill is sufficient.
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# Task Board
|
|
85
|
+
## Session: session-{YYYYMMDD}-{HHMMSS}
|
|
86
|
+
|
|
87
|
+
### task-1
|
|
88
|
+
- **Agent**: backend
|
|
89
|
+
- **CLI**: gemini
|
|
90
|
+
- **Title**: JWT authentication API
|
|
91
|
+
- **Status**: pending | in_progress | completed | failed | blocked
|
|
92
|
+
- **Priority**: 1
|
|
93
|
+
- **Dependencies**: none
|
|
94
|
+
- **Selected References**: oma-backend, oma-db
|
|
95
|
+
- **Selection Reason**: API implementation changes the existing data-access boundary
|
|
96
|
+
- **Description**: Implement user registration and login with JWT tokens
|
|
97
|
+
- **Acceptance Criteria**:
|
|
98
|
+
- POST /api/auth/register with email + password
|
|
99
|
+
- POST /api/auth/login returns access + refresh tokens
|
|
100
|
+
- Password hashing with bcrypt
|
|
101
|
+
- Rate limiting on auth endpoints
|
|
102
|
+
|
|
103
|
+
### task-2
|
|
104
|
+
- **Agent**: frontend
|
|
105
|
+
- **CLI**: gemini
|
|
106
|
+
- **Title**: Login and registration UI
|
|
107
|
+
- **Status**: pending
|
|
108
|
+
- **Priority**: 1
|
|
109
|
+
- **Dependencies**: none
|
|
110
|
+
- **Selected References**: oma-frontend, oma-design
|
|
111
|
+
- **Selection Reason**: Form implementation also requires the project's visual system
|
|
112
|
+
- **Description**: Build login and registration forms with validation
|
|
113
|
+
- **Acceptance Criteria**:
|
|
114
|
+
- Login form with email + password
|
|
115
|
+
- Registration form with validation
|
|
116
|
+
- Error handling for failed auth
|
|
117
|
+
- JWT token storage and auto-refresh
|
|
118
|
+
|
|
119
|
+
### task-3
|
|
120
|
+
- **Agent**: qa
|
|
121
|
+
- **CLI**: gemini
|
|
122
|
+
- **Title**: Security and performance review
|
|
123
|
+
- **Status**: blocked
|
|
124
|
+
- **Priority**: 2
|
|
125
|
+
- **Dependencies**: task-1, task-2
|
|
126
|
+
- **Selected References**: oma-qa
|
|
127
|
+
- **Selection Reason**: Quality review matches one domain; load implementation references only when needed
|
|
128
|
+
- **Description**: Review all deliverables for security and performance
|
|
129
|
+
- **Acceptance Criteria**:
|
|
130
|
+
- OWASP Top 10 security check
|
|
131
|
+
- Performance benchmarks pass
|
|
132
|
+
- No critical or high severity issues
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## progress-{agentId}-{taskId}-{runId}-{sessionId}.md
|
|
136
|
+
|
|
137
|
+
Each agent creates this file at start and appends entries every 3-5 turns. Only the owning agent writes to this file.
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
# Progress: backend
|
|
141
|
+
## Task: task-1
|
|
142
|
+
## Agent ID: backend
|
|
143
|
+
## Started: {ISO timestamp}
|
|
144
|
+
|
|
145
|
+
### Turn 1 - {ISO timestamp}
|
|
146
|
+
- **Action**: Reading task-board.md and understanding requirements
|
|
147
|
+
- **Status**: in_progress
|
|
148
|
+
- **Details**: Identified 4 acceptance criteria for JWT auth API
|
|
149
|
+
|
|
150
|
+
### Turn 5 - {ISO timestamp}
|
|
151
|
+
- **Action**: Created user model and auth endpoints
|
|
152
|
+
- **Status**: in_progress
|
|
153
|
+
- **Details**: Implemented POST /api/auth/register and /api/auth/login
|
|
154
|
+
- **Files**: app/models/user.py, app/api/auth.py
|
|
155
|
+
|
|
156
|
+
### Turn 12 - {ISO timestamp}
|
|
157
|
+
- **Action**: Added tests and rate limiting
|
|
158
|
+
- **Status**: in_progress
|
|
159
|
+
- **Details**: 15 test cases passing, rate limiter configured
|
|
160
|
+
|
|
161
|
+
### Turn 18 - {ISO timestamp}
|
|
162
|
+
- **Action**: All acceptance criteria met
|
|
163
|
+
- **Status**: completed
|
|
164
|
+
- **Summary**: JWT auth API fully implemented with tests
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## result-{agentId}-{taskId}-{runId}-{sessionId}.md
|
|
168
|
+
|
|
169
|
+
Each agent creates `.agents/results/result-{agentId}-{taskId}-{runId}-{sessionId}.md` upon completion (success or failure). Only the owning agent writes to this file. Preserve the injected filename and include the report path in the structured claim. Existing reports under the configured memory base, `.agents/state/memories/`, or `.serena/memories/` remain read fallback until migration; new reports always use `.agents/results/`.
|
|
170
|
+
|
|
171
|
+
```markdown
|
|
172
|
+
# Result: backend
|
|
173
|
+
## Task: task-1
|
|
174
|
+
## Status: completed
|
|
175
|
+
## Turns Used: 18
|
|
176
|
+
|
|
177
|
+
## Summary
|
|
178
|
+
Implemented JWT authentication API with user registration, login,
|
|
179
|
+
password hashing (bcrypt), and rate limiting.
|
|
180
|
+
|
|
181
|
+
## Files Created/Modified
|
|
182
|
+
- `app/models/user.py` (NEW) - User model with password hashing
|
|
183
|
+
- `app/api/auth.py` (NEW) - Auth endpoints
|
|
184
|
+
- `app/middleware/rate_limit.py` (NEW) - Rate limiting middleware
|
|
185
|
+
- `tests/test_auth.py` (NEW) - 15 test cases
|
|
186
|
+
- `alembic/versions/001_create_users.py` (NEW) - Migration
|
|
187
|
+
|
|
188
|
+
## Acceptance Criteria
|
|
189
|
+
- [x] POST /api/auth/register with email + password
|
|
190
|
+
- [x] POST /api/auth/login returns access + refresh tokens
|
|
191
|
+
- [x] Password hashing with bcrypt
|
|
192
|
+
- [x] Rate limiting on auth endpoints
|
|
193
|
+
|
|
194
|
+
## Issues Encountered
|
|
195
|
+
- None
|
|
196
|
+
|
|
197
|
+
## Notes
|
|
198
|
+
- Access token expiry: 15 minutes
|
|
199
|
+
- Refresh token expiry: 7 days
|
|
200
|
+
- Rate limit: 5 requests/minute on login endpoint
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Failed Result Example
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
# Result: backend
|
|
207
|
+
## Task: task-1
|
|
208
|
+
## Status: failed
|
|
209
|
+
## Turns Used: 20
|
|
210
|
+
|
|
211
|
+
## Summary
|
|
212
|
+
Unable to complete JWT auth API. Database connection issues prevented testing.
|
|
213
|
+
|
|
214
|
+
## Files Created/Modified
|
|
215
|
+
- `app/models/user.py` (NEW) - User model (untested)
|
|
216
|
+
- `app/api/auth.py` (NEW) - Auth endpoints (untested)
|
|
217
|
+
|
|
218
|
+
## Acceptance Criteria
|
|
219
|
+
- [x] POST /api/auth/register with email + password
|
|
220
|
+
- [x] POST /api/auth/login returns access + refresh tokens
|
|
221
|
+
- [x] Password hashing with bcrypt
|
|
222
|
+
- [ ] Rate limiting on auth endpoints (NOT DONE)
|
|
223
|
+
|
|
224
|
+
## Issues Encountered
|
|
225
|
+
- PostgreSQL connection refused on localhost:5432
|
|
226
|
+
- Could not run integration tests
|
|
227
|
+
- Rate limiting implementation incomplete due to turn limit
|
|
228
|
+
|
|
229
|
+
## Notes
|
|
230
|
+
- Needs database running to complete testing
|
|
231
|
+
- Rate limiting code is written but untested
|
|
232
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Subagent Prompt Template
|
|
2
|
+
|
|
3
|
+
Use this template for a bounded task. CLI dispatch injects the owning skill, vendor protocol, execution policy, and result contract; do not duplicate their bodies here.
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
## Assignment
|
|
7
|
+
- Agent: {AGENT_ROLE}
|
|
8
|
+
- Task ID: {TASK_ID}
|
|
9
|
+
- Workspace: {WORKSPACE_PATH}
|
|
10
|
+
- Scope: {ALLOWED_PATHS}
|
|
11
|
+
|
|
12
|
+
{TASK_DESCRIPTION}
|
|
13
|
+
|
|
14
|
+
## Acceptance criteria
|
|
15
|
+
{ACCEPTANCE_CRITERIA}
|
|
16
|
+
|
|
17
|
+
## Task references
|
|
18
|
+
{RELEVANT_ARTIFACT_PATHS_AND_LOAD_CONDITIONS}
|
|
19
|
+
|
|
20
|
+
## Material constraints
|
|
21
|
+
{TASK_SPECIFIC_CONSTRAINTS}
|
|
22
|
+
|
|
23
|
+
Use the injected run and claim identity. Preserve other agents' edits. Report necessary changes outside scope for coordination. Apply existing authorization and pause only dependent work when required information is missing.
|
|
24
|
+
|
|
25
|
+
Complete the assigned criteria and relevant checks. If interrupted or unable to finish, save progress, unresolved work, and evidence in the injected result contract. Turn estimates guide checkpoints; they are not completion boundaries.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Use the assigned plan task ID and flat report name `result-{agentId}-{taskId}-{runId}-{sessionId}.md`. A report file supplements the structured claim; it is not proof of completion. Select tests or alternative verification for the task's risk under `_shared/core/test-approach.md`. No fixed Charter block is required.
|
|
29
|
+
|
|
30
|
+
For native dispatch, provide paths to the execution policy, result contract, and owning skill if not already present. Make additional specialist skills available as routes, rather than pasting every skill into the prompt.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# verify.sh - Wrapper for oma verify
|
|
3
|
+
# Usage: ./verify.sh <agent-type> [workspace-path]
|
|
4
|
+
|
|
5
|
+
AGENT_TYPE="${1:-}"
|
|
6
|
+
WORKSPACE="${2:-.}"
|
|
7
|
+
|
|
8
|
+
case "$AGENT_TYPE" in
|
|
9
|
+
backend|frontend|mobile|qa|debug|pm) ;;
|
|
10
|
+
db|refactor|architecture|tf-infra|docs)
|
|
11
|
+
echo "SKIP: oma verify does not support agent type '$AGENT_TYPE'; continue with mechanical checks and QA cross-review."
|
|
12
|
+
exit 0
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
echo "ERROR: unknown orchestrator agent type '$AGENT_TYPE'" >&2
|
|
16
|
+
exit 2
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
|
|
20
|
+
exec oma verify agent "$AGENT_TYPE" --workspace "$WORKSPACE"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Backend SubAgent Task
|
|
2
|
+
|
|
3
|
+
You are a Backend specialist. Focus only on the task below.
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
> Default stack assumptions. Use the owning skill and existing project conventions; these starter defaults do not authorize stack changes.
|
|
7
|
+
- Use FastAPI with async/await
|
|
8
|
+
- SQLAlchemy for database operations
|
|
9
|
+
- Pydantic for validation
|
|
10
|
+
- JWT for authentication
|
|
11
|
+
- Follow REST conventions
|
|
12
|
+
- Include error handling
|
|
13
|
+
- Select risk-relevant tests or an explicit alternative verification
|
|
14
|
+
|
|
15
|
+
## Output Requirements
|
|
16
|
+
- Implement the requested functionality
|
|
17
|
+
- Create/modify necessary files
|
|
18
|
+
- Add appropriate tests
|
|
19
|
+
- Document API endpoints if created
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Debug SubAgent Task
|
|
2
|
+
|
|
3
|
+
You are a Debug specialist. Focus only on fixing the bug below.
|
|
4
|
+
|
|
5
|
+
## Approach
|
|
6
|
+
1. Reproduce the issue
|
|
7
|
+
2. Identify root cause
|
|
8
|
+
3. Implement fix
|
|
9
|
+
4. Add regression test
|
|
10
|
+
5. Document the fix
|
|
11
|
+
|
|
12
|
+
## Output Requirements
|
|
13
|
+
- Explain the root cause
|
|
14
|
+
- Show before/after code
|
|
15
|
+
- Include regression test
|
|
16
|
+
- List related patterns to check
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Frontend SubAgent Task
|
|
2
|
+
|
|
3
|
+
You are a Frontend specialist. Focus only on the task below.
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
> Default stack assumptions. Use the owning skill and existing project conventions; these starter defaults do not authorize stack changes.
|
|
7
|
+
- React with TypeScript
|
|
8
|
+
- TailwindCSS for styling
|
|
9
|
+
- React Query for data fetching
|
|
10
|
+
- Proper loading/error states
|
|
11
|
+
- Accessible components (WCAG 2.2 AA)
|
|
12
|
+
- Mobile-responsive design
|
|
13
|
+
|
|
14
|
+
## Output Requirements
|
|
15
|
+
- Implement the requested UI/feature
|
|
16
|
+
- Create/modify necessary components
|
|
17
|
+
- Add component tests if appropriate
|
|
18
|
+
- Ensure responsive behavior
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Mobile SubAgent Task
|
|
2
|
+
|
|
3
|
+
You are a Mobile specialist. Focus only on the task below.
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
> Default stack assumptions. Use the owning skill and existing project conventions; these starter defaults do not authorize stack changes.
|
|
7
|
+
- Flutter with Dart
|
|
8
|
+
- Clean Architecture (presentation/domain/data)
|
|
9
|
+
- Riverpod for state management
|
|
10
|
+
- Platform-aware UI components
|
|
11
|
+
- Proper navigation handling
|
|
12
|
+
- Offline-first when applicable
|
|
13
|
+
|
|
14
|
+
## Output Requirements
|
|
15
|
+
- Implement the requested screen/feature
|
|
16
|
+
- Create/modify necessary files
|
|
17
|
+
- Handle both iOS and Android
|
|
18
|
+
- Test on multiple screen sizes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# QA SubAgent Task
|
|
2
|
+
|
|
3
|
+
You are a QA specialist. Focus only on the review below.
|
|
4
|
+
|
|
5
|
+
## Review Checklist
|
|
6
|
+
- Security (OWASP Top 10)
|
|
7
|
+
- Performance (bundle size, API latency)
|
|
8
|
+
- Accessibility (WCAG 2.2 AA)
|
|
9
|
+
- Code quality (complexity, duplication)
|
|
10
|
+
- Test coverage
|
|
11
|
+
|
|
12
|
+
## Output Requirements
|
|
13
|
+
- List issues found with severity (CRITICAL/HIGH/MEDIUM/LOW)
|
|
14
|
+
- Provide specific file:line references
|
|
15
|
+
- Suggest fixes for each issue
|
|
16
|
+
- Prioritize actionable feedback
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Example parallel tasks file
|
|
2
|
+
# Usage: ./parallel-run.sh tasks-example.yaml
|
|
3
|
+
|
|
4
|
+
tasks:
|
|
5
|
+
- agent: backend
|
|
6
|
+
task: "Implement JWT authentication with register and login endpoints"
|
|
7
|
+
workspace: ./backend
|
|
8
|
+
|
|
9
|
+
- agent: frontend
|
|
10
|
+
task: "Create login and registration forms with validation"
|
|
11
|
+
workspace: ./frontend
|
|
12
|
+
|
|
13
|
+
- agent: mobile
|
|
14
|
+
task: "Build authentication screens for iOS and Android"
|
|
15
|
+
workspace: ./mobile
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oma-pdf
|
|
3
|
+
description: Extract PDF text, headings, tables, and images into Markdown using
|
|
4
|
+
opendataloader-pdf. Use for PDF parsing, not PDF layout creation.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PDF Skill - PDF to Markdown Conversion
|
|
8
|
+
|
|
9
|
+
## Scheduling
|
|
10
|
+
|
|
11
|
+
### Goal
|
|
12
|
+
Convert PDF files into structured Markdown or another requested extraction format while preserving readable document structure for LLM context, RAG, or downstream review.
|
|
13
|
+
|
|
14
|
+
### Intent signature
|
|
15
|
+
- User asks to convert, parse, read, extract, or transform a PDF.
|
|
16
|
+
- User needs PDF text, headings, lists, tables, or images prepared for AI consumption.
|
|
17
|
+
- User mentions "PDF to markdown", "parse PDF", "read this PDF", or equivalent wording.
|
|
18
|
+
|
|
19
|
+
### When to use
|
|
20
|
+
- Converting PDF documents to Markdown for LLM context or RAG
|
|
21
|
+
- Extracting structured content such as tables, headings, lists, images, footnotes, or hyperlinks
|
|
22
|
+
- Preparing PDF data for AI consumption
|
|
23
|
+
- Checking whether a PDF has a text layer before choosing OCR
|
|
24
|
+
|
|
25
|
+
### When NOT to use
|
|
26
|
+
- Generating or creating PDFs -> use document-generation tools
|
|
27
|
+
- Editing existing PDFs -> out of scope
|
|
28
|
+
- Reading an already-text file -> use direct file reading
|
|
29
|
+
- Processing HWP, HWPX, DOCX, XLSX, or slide decks -> use the matching document skill
|
|
30
|
+
|
|
31
|
+
### Expected inputs
|
|
32
|
+
- `input_path`: PDF file or folder path
|
|
33
|
+
- `output_dir`: optional target directory
|
|
34
|
+
- `format`: optional output format, default `markdown`
|
|
35
|
+
- `ocr_languages`: optional OCR language list for scanned or image-based PDFs
|
|
36
|
+
- `extraction_options`: optional flags for tagged structure, image extraction, or hybrid conversion
|
|
37
|
+
|
|
38
|
+
### Expected outputs
|
|
39
|
+
- Markdown, text, JSON, HTML, or combined extraction output
|
|
40
|
+
- Normalized Markdown when Markdown is produced
|
|
41
|
+
- A short report with output path, page count, and conversion issues
|
|
42
|
+
|
|
43
|
+
### Dependencies
|
|
44
|
+
- `uvx opendataloader-pdf` for standard conversion
|
|
45
|
+
- `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid` for OCR or hybrid conversion (the hybrid server is a console script of the `[hybrid]` extra, not a standalone package)
|
|
46
|
+
- `uvx mdformat` for Markdown normalization
|
|
47
|
+
- Local filesystem access to input and output paths
|
|
48
|
+
- Optional OCR runtime via the hybrid server
|
|
49
|
+
|
|
50
|
+
### Control-flow features
|
|
51
|
+
- Branches on text-layer quality, tagged PDF availability, scan/OCR needs, and user-requested output format
|
|
52
|
+
- Calls external CLI tools through `uvx`
|
|
53
|
+
- Reads local files and writes local extraction outputs
|
|
54
|
+
- Uses a hybrid server only when OCR or complex extraction needs justify it
|
|
55
|
+
|
|
56
|
+
## Structural Flow
|
|
57
|
+
|
|
58
|
+
### Entry
|
|
59
|
+
1. Confirm that the input path exists and is a PDF file, PDF folder, or supported batch input.
|
|
60
|
+
2. Check file size and warn when the input is large enough to risk slow conversion or memory pressure.
|
|
61
|
+
3. Resolve `output_dir` and the expected output filename.
|
|
62
|
+
|
|
63
|
+
### Scenes
|
|
64
|
+
1. **PREPARE**: Validate the input path, output target, and requested extraction options.
|
|
65
|
+
2. **ACQUIRE**: Assess whether the PDF has a readable text layer by extracting a text preview.
|
|
66
|
+
3. **ACT**: Convert using standard mode, tagged-structure mode, or hybrid OCR mode.
|
|
67
|
+
4. **VERIFY**: Run `mdformat` for Markdown output and inspect the result for readable structure.
|
|
68
|
+
5. **FINALIZE**: Report output path, page count, format, and any extraction quality issues.
|
|
69
|
+
|
|
70
|
+
### Transitions
|
|
71
|
+
- If the preview text is readable, use standard conversion.
|
|
72
|
+
- If the PDF is tagged and standard output is garbled, retry with `--use-struct-tree`.
|
|
73
|
+
- If tables are missing or broken, retry with `--table-method cluster` or `--markdown-with-html` before escalating to hybrid mode.
|
|
74
|
+
- If the PDF is scanned or image-based, start or reuse the hybrid OCR server and convert with hybrid mode.
|
|
75
|
+
- If conversion fails because the PDF is encrypted, stop and ask for the password or an unlocked copy.
|
|
76
|
+
- If conversion hits memory or size limits, process smaller page ranges into distinct output directories (or append `--to-stdout`) so repeated runs do not overwrite the same basename.
|
|
77
|
+
|
|
78
|
+
### Failure and recovery
|
|
79
|
+
| Failure | Recovery |
|
|
80
|
+
|---------|----------|
|
|
81
|
+
| `uvx` unavailable | Ask user to install `uv` before conversion |
|
|
82
|
+
| `opendataloader-pdf-hybrid` not found | Invoke via `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid`; the bare package name does not exist on PyPI |
|
|
83
|
+
| Password-protected PDF | Ask for password or unlocked PDF |
|
|
84
|
+
| Garbled output | Retry with tagged structure or hybrid mode |
|
|
85
|
+
| Missing tables | Retry with `--table-method cluster` or `--markdown-with-html` first; hybrid mode for scanned tables |
|
|
86
|
+
| OCR language mismatch | Retry with explicit OCR languages, for example `ko,en` |
|
|
87
|
+
| Large file or memory pressure | Split into page ranges using distinct output directories or `--to-stdout`; never reuse one output directory for the same basename |
|
|
88
|
+
|
|
89
|
+
### Exit
|
|
90
|
+
- Success: output file exists, Markdown is formatted when applicable, and extracted structure is readable.
|
|
91
|
+
- Partial success: output exists but quality issues are reported explicitly.
|
|
92
|
+
- Failure: no reliable output is produced and the blocking cause is reported.
|
|
93
|
+
|
|
94
|
+
## Logical Operations
|
|
95
|
+
|
|
96
|
+
### Actions
|
|
97
|
+
| Action | SSL primitive | Evidence |
|
|
98
|
+
|--------|---------------|----------|
|
|
99
|
+
| Validate path and options | `VALIDATE` | Input preflight in execution protocol |
|
|
100
|
+
| Probe text layer | `READ` | Text preview extraction |
|
|
101
|
+
| Choose conversion strategy | `SELECT` | Standard, tagged, or hybrid mode decision |
|
|
102
|
+
| Run converter | `CALL_TOOL` | `uvx opendataloader-pdf` |
|
|
103
|
+
| Start OCR server | `CALL_TOOL` | `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid` |
|
|
104
|
+
| Write output artifact | `WRITE` | Markdown, text, JSON, or HTML output |
|
|
105
|
+
| Normalize Markdown | `CALL_TOOL` | `uvx mdformat` |
|
|
106
|
+
| Inspect extraction quality | `VALIDATE` | Structure/readability verification |
|
|
107
|
+
| Report result | `NOTIFY` | Final user-facing summary |
|
|
108
|
+
|
|
109
|
+
### Tools and instruments
|
|
110
|
+
- `opendataloader-pdf`: primary PDF extraction CLI
|
|
111
|
+
- `opendataloader-pdf-hybrid`: hybrid OCR and complex extraction path
|
|
112
|
+
- `mdformat`: Markdown normalization
|
|
113
|
+
- Filesystem commands such as `file`, `wc`, or `pdfinfo` may be used for preflight when available
|
|
114
|
+
|
|
115
|
+
### Canonical command path
|
|
116
|
+
```bash
|
|
117
|
+
uvx opendataloader-pdf "{input_path}" -f text --pages 1-3 --to-stdout -q # text-layer probe (no temp files)
|
|
118
|
+
uvx opendataloader-pdf "{input_path}" --format markdown --output-dir "{output_dir}"
|
|
119
|
+
uvx mdformat "{output_path}"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For scanned/image-based PDFs, start OCR first and then convert through hybrid mode:
|
|
123
|
+
```bash
|
|
124
|
+
uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "{languages}"
|
|
125
|
+
uvx opendataloader-pdf --hybrid docling-fast --hybrid-mode full "{input_path}" --format markdown --output-dir "{output_dir}"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
On-request flags — `--sanitize` (PII masking), `--pages` (range extraction), `--threads` (parallel pages), `--detect-strikethrough`, hybrid `--enrich-formula` / `--enrich-picture-description` — are detailed in `resources/execution-protocol.md`. The two enrichment flags require client-side `--hybrid-mode full`.
|
|
129
|
+
|
|
130
|
+
### Resource scope
|
|
131
|
+
| Scope | Resource target |
|
|
132
|
+
|-------|-----------------|
|
|
133
|
+
| `LOCAL_FS` | Input PDFs and generated output files |
|
|
134
|
+
| `PROCESS` | `uvx` subprocesses and optional hybrid server |
|
|
135
|
+
| `MEMORY` | Extracted previews and validation notes |
|
|
136
|
+
| `OTHER` | OCR model/runtime behavior inside hybrid mode |
|
|
137
|
+
|
|
138
|
+
### Preconditions
|
|
139
|
+
- The input PDF path exists and is readable.
|
|
140
|
+
- The output location is writable or can be created.
|
|
141
|
+
- Required CLIs are available through `uvx`.
|
|
142
|
+
- OCR is only attempted when hybrid mode is available or can be started.
|
|
143
|
+
- Defaults come from the `pdf:` section of `.agents/oma-config.yaml`, falling back to `config/pdf-config.yaml` for unset keys; explicit user options override both, and `output.overwrite: false` requires confirmation before replacing an existing output file.
|
|
144
|
+
|
|
145
|
+
### Effects and side effects
|
|
146
|
+
- Creates or overwrites extraction output depending on configuration and user intent.
|
|
147
|
+
- May start a local hybrid OCR server on the configured port.
|
|
148
|
+
- May consume significant CPU, memory, or time for large or scanned PDFs.
|
|
149
|
+
- Does not intentionally modify the source PDF.
|
|
150
|
+
|
|
151
|
+
### Guardrails
|
|
152
|
+
1. Do not invent missing content when extraction is incomplete.
|
|
153
|
+
2. Always report garbled text, missing tables, OCR uncertainty, or partial extraction.
|
|
154
|
+
3. Prefer standard conversion first when the text layer is readable.
|
|
155
|
+
4. Use OCR only when the PDF is scanned, image-based, or standard extraction quality is insufficient.
|
|
156
|
+
5. Keep detailed command sequences in `resources/execution-protocol.md` rather than duplicating every variant here.
|
|
157
|
+
|
|
158
|
+
## References
|
|
159
|
+
- Execution protocol: `resources/execution-protocol.md`
|
|
160
|
+
- Configuration: read the `pdf:` section of `.agents/oma-config.yaml` first, then fall back to `config/pdf-config.yaml` for any key it does not set. User overrides belong in `.agents/oma-config.yaml`, since `oma update` overwrites the skill config.
|
|
161
|
+
- Context loading: `../_shared/core/context-loading.md`
|
|
162
|
+
- Quality principles: `../_shared/core/quality-principles.md`
|