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,35 @@
|
|
|
1
|
+
# Session Evidence
|
|
2
|
+
|
|
3
|
+
Consult this guide for a requested retrospective, a substantive correction, or a review finding worth preserving. Routine work does not need a second log alongside existing progress and result artifacts.
|
|
4
|
+
|
|
5
|
+
## Record observations, not penalty scores
|
|
6
|
+
|
|
7
|
+
Do not assign points to questions, corrections, or review judgments. The former Clarification Debt (CD) and Evaluator Accuracy (EA) weights and thresholds are retired; they were prompt instructions, not CLI-computed metrics. Necessary clarification is not a failure, a user changing scope is not an agent error, and a disputed QA finding is not an established false positive.
|
|
8
|
+
|
|
9
|
+
When useful, record an event with session/task/run identity, an evidence path, observed impact, cause if known, and the action taken. Reuse the existing result or progress artifact. For a separate session summary, use the configured coordination store's `session-metrics-{sessionId}.md` (default `.agents/state/memories/`). Distinguish:
|
|
10
|
+
|
|
11
|
+
| Observation | Evidence to retain |
|
|
12
|
+
|---|---|
|
|
13
|
+
| Material clarification | Missing decision and how the answer changed dependent work |
|
|
14
|
+
| User scope change | New request and affected acceptance criteria |
|
|
15
|
+
| Agent mistake or rework | Requirement missed, affected behavior, correction, and verification |
|
|
16
|
+
| Blocked action | Exact missing input or authority and independent work completed |
|
|
17
|
+
| Review error or useful finding | Finding, reproduction or counterexample, adjudicated outcome, and impact |
|
|
18
|
+
|
|
19
|
+
A disputed finding stays unresolved until code, tests, or other evidence settle it. Judge severity by impact and exposure, not diff size. Keep useful catches, false positives, and missed defects separate; do not net them into an agent score or claim an accuracy rate without a defined labeled evaluation set.
|
|
20
|
+
|
|
21
|
+
## Respond to the cause
|
|
22
|
+
|
|
23
|
+
Correct the affected work and verify it. Pause only actions dependent on unresolved information or authorization, under `execution-policy.md`. Do not stop a session, trigger another agent, or require an RCA because a counter crossed a threshold.
|
|
24
|
+
|
|
25
|
+
For repeated failures, a consequential incident, or a user-requested retrospective, record the known cause and prevention evidence using `lessons-learned.md`. An ordinary failed check, including an expected RED test, does not require a separate RCA. Propose durable instruction changes only when evidence supports them; edit canonical definitions within an authorized source-maintenance task.
|
|
26
|
+
|
|
27
|
+
## Measurements and tooling
|
|
28
|
+
|
|
29
|
+
- Prefer observed task outcomes, relevant check results, retries, elapsed time, and recorded usage over inferred scores. State the measurement source and limits; progress updates are not a reliable turn counter, and checkpoint counts are not reset counts.
|
|
30
|
+
- `oma stats` reports the CLI's productivity and recorded usage/cost summaries. It does not parse this Markdown into CD or EA scores. Cost estimates are not billing receipts.
|
|
31
|
+
- `oma retro` groups recorded `gate.failed`, `blocker.raised`, and `decision.missing` events into harness suggestions. Those suggestions still need causal review; they do not automatically modify prompts.
|
|
32
|
+
- If the active workflow uses quality measurement or experiments, link the actual artifacts from `../conditional/quality-score.md` and `../conditional/experiment-ledger.md`. Do not fabricate missing measurements or mix them with conversational event counts.
|
|
33
|
+
- For model or prompt comparisons, use `../../oma-skill-creation/resources/prompt-evaluation.md`. Compare equivalent tasks and report correctness, interruptions, latency, and measured cost separately.
|
|
34
|
+
|
|
35
|
+
Keep existing historical logs as evidence. This guide neither schedules deletion nor imposes a retention deadline.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Skill Routing
|
|
2
|
+
|
|
3
|
+
Use this map when selecting a specialist or coordinating an authorized multi-agent task. Route by the requested outcome and concrete dependencies, not a keyword alone. Choosing a skill does not start a workflow or authorize delegation.
|
|
4
|
+
|
|
5
|
+
## Context and ownership
|
|
6
|
+
|
|
7
|
+
The runtime exposes skill names and descriptions for discovery. Read the owning SKILL.md when the task matches its scope or the user invokes it, under the host's skill rules. Load supporting references only when needed (`context-loading.md`). Use one owning specialist for a scoped task; add a handoff only when it supplies a distinct needed capability.
|
|
8
|
+
|
|
9
|
+
| Requested outcome | Owning skill |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Application API, server auth, service/data access logic | `oma-backend` |
|
|
12
|
+
| Schema, migration design, indexing, query tuning, database operations | `oma-db` |
|
|
13
|
+
| Web components, pages, forms, client state | `oma-frontend` |
|
|
14
|
+
| Mobile screens, widgets, platform integration | `oma-mobile` |
|
|
15
|
+
| System boundaries, architecture tradeoffs, ADR | `oma-architecture` |
|
|
16
|
+
| Diagnose and fix incorrect behavior | `oma-debug` |
|
|
17
|
+
| Review correctness, security, accessibility, performance | `oma-qa` |
|
|
18
|
+
| Visual system, DESIGN.md, redesign direction | `oma-design` |
|
|
19
|
+
| Requested ideation or alternative exploration | `oma-brainstorm` |
|
|
20
|
+
| Requirements, dependencies, acceptance criteria | `oma-pm` |
|
|
21
|
+
| Requested parallel specialist execution | `oma-orchestration` |
|
|
22
|
+
| Requested manual multi-agent coordination | `oma-coordination` |
|
|
23
|
+
| Git branches, commits, merges, repository history | `oma-scm` |
|
|
24
|
+
|
|
25
|
+
For other domains, select from the installed skill descriptions. Preserve explicit task ownership and vendor/model configuration.
|
|
26
|
+
|
|
27
|
+
## Dependencies
|
|
28
|
+
|
|
29
|
+
- Resolve an unsettled architecture or product decision before work that depends on it. Existing decisions do not need to pass through architecture, brainstorming, or PM again.
|
|
30
|
+
- Backend and client work may proceed independently when their shared API contract is usable. If it is missing, settle that boundary with the relevant owners; use `api-contracts/README.md` when a contract artifact is needed.
|
|
31
|
+
- Review can start on a completed, reviewable portion while independent implementation continues. Do not review an unstable artifact as final evidence.
|
|
32
|
+
- A bug found during implementation can be fixed by its owner. Add debug assistance when diagnosis warrants it; there is no required implementation-to-debug chain.
|
|
33
|
+
- For a cross-domain defect, identify the failing contract and responsible owner from evidence. An API mismatch does not automatically mean the backend must change.
|
|
34
|
+
|
|
35
|
+
## Dispatch and completion
|
|
36
|
+
|
|
37
|
+
Use `vendor-detection.md` when dispatch details are unresolved. Parallelize only independent work within the authorized task and available runtime. Each dispatched task needs ownership, acceptance criteria, relevant context, and the runtime's result contract.
|
|
38
|
+
|
|
39
|
+
A difficulty estimate does not impose fixed per-agent turn limits. Respect explicit user/runtime budgets and preserve partial progress when a real limit is reached. Completion and unresolved decisions follow `execution-policy.md`.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Per-Task Test Approach & TDD Evidence
|
|
2
|
+
|
|
3
|
+
Opt-in, per-task test strategy carried in the PM plan (`plan-{sessionId}.json`).
|
|
4
|
+
PM assigns it (see `oma-pm/resources/execution-protocol.md` Step 3); implementation
|
|
5
|
+
agents honor it; QA and Ultrawork gates verify evidence **only** for tasks marked `tdd`.
|
|
6
|
+
|
|
7
|
+
## Approaches
|
|
8
|
+
|
|
9
|
+
| `test_approach` | Meaning | Agent obligation |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `tdd` | Deterministic, high-risk behavior (validation, authorization, state transitions, calculations, error handling) | Write and run the focused test **before** the production change (RED), make the minimal change (GREEN), refactor only if needed. Record a `TDD_EVIDENCE` block in the result file. |
|
|
12
|
+
| `test_after` | Automated tests required, but a useful isolated RED state is impractical | Write tests with/after the implementation. No evidence block required. |
|
|
13
|
+
| `not_applicable` | Automated tests inappropriate | Perform the plan's `alternative_verification` and report its outcome. Plan must carry `test_approach_rationale`. |
|
|
14
|
+
|
|
15
|
+
Tasks without a `test_approach` field behave as today (tests per the agent's
|
|
16
|
+
normal protocol). Refactor tasks never use `tdd` — they keep the
|
|
17
|
+
characterization-test safety net (`oma-refactor`).
|
|
18
|
+
|
|
19
|
+
## Coverage applicability rule
|
|
20
|
+
|
|
21
|
+
`test_approach` does not silently waive coverage. Use the project's declared
|
|
22
|
+
baseline, changed-code target, or task-specific risk target when coverage is
|
|
23
|
+
applicable. When it is not, the plan must state risk-focused tests or an
|
|
24
|
+
alternative verification method and its limits. Do not impose a global numeric
|
|
25
|
+
floor on projects that have not defined one.
|
|
26
|
+
|
|
27
|
+
## TDD_EVIDENCE block format
|
|
28
|
+
|
|
29
|
+
Append to the task/run-scoped result report, one entry per `tdd` task:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
TDD_EVIDENCE:
|
|
33
|
+
- task: task-2
|
|
34
|
+
test_command: bun test src/services/discount.test.ts
|
|
35
|
+
red: "expected 400, received 200" (before implementation)
|
|
36
|
+
green: 12 pass, 0 fail (after implementation)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Requirements (enforced by `oma verify agent <agent>` → "TDD Evidence" check):
|
|
40
|
+
|
|
41
|
+
1. Block starts with the literal marker `TDD_EVIDENCE:`
|
|
42
|
+
2. Every `tdd` task id from the plan appears in the block
|
|
43
|
+
3. At least one `red:` entry (the observed failure before the change) and one
|
|
44
|
+
`green:` entry (the passing result after the change)
|
|
45
|
+
|
|
46
|
+
A task may opt out with `tdd_evidence_required: false` in the plan (e.g., the
|
|
47
|
+
RED state is demonstrated in a linked CI run instead); the rationale belongs in
|
|
48
|
+
the task description.
|
|
49
|
+
|
|
50
|
+
## Debug parity
|
|
51
|
+
|
|
52
|
+
Debug regression tests follow the same discipline where feasible: run the
|
|
53
|
+
regression test before applying the fix, record the failing output (RED) and
|
|
54
|
+
the post-fix pass (GREEN) in the bug report / result file.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Vendor Detection Protocol
|
|
2
|
+
|
|
3
|
+
When executing a workflow, determine your runtime environment using this priority order.
|
|
4
|
+
Then resolve the target vendor for each agent from `.agents/oma-config.cue` or `.agents/oma-config.yaml`. Apply project-local configuration overlays. With `model_preset: free`, use `oma agent spawn` so the FreeLLMAPI route is applied. Otherwise explicit `agents:` model overrides take priority. With `model_preset: auto` (the default for new installs), unconfigured agents follow the current runtime's native agent definitions and model settings; do not substitute a fixed vendor preset or inject a model/effort override. When the runtime cannot be detected, use `default_cli` (or `claude` when omitted). Fixed built-in and custom presets continue to resolve model slugs (`<owner>/<slug>`) to their owning vendors. See `web/docs/guide/per-agent-models.md` for details.
|
|
5
|
+
|
|
6
|
+
Important:
|
|
7
|
+
- Do **not** choose one spawn strategy for the entire workflow based only on the main runtime vendor.
|
|
8
|
+
- Decide per agent:
|
|
9
|
+
- `current_runtime_vendor`
|
|
10
|
+
- `target_vendor_for_agent`
|
|
11
|
+
- whether that exact runtime can invoke that target vendor natively
|
|
12
|
+
- If native invocation is not available for that agent, fall back to `oma agent spawn`.
|
|
13
|
+
|
|
14
|
+
## Identify the current runtime
|
|
15
|
+
|
|
16
|
+
Use explicit host identity and runtime configuration first. Inspect the native dispatch capability actually exposed in the session. Shared tool names such as `apply_patch`, an `@` syntax, or a skill-directory path do not uniquely identify a vendor.
|
|
17
|
+
|
|
18
|
+
If identity or native dispatch is unresolved, use the configured fallback; do not guess that the runtime is Codex or Antigravity from a generic tool. For OpenCode, an explicitly identified session with native `task` can dispatch through it even when `apply_patch` is also available.
|
|
19
|
+
|
|
20
|
+
## Vendor-Specific Spawn Methods
|
|
21
|
+
|
|
22
|
+
| Vendor | Spawn Method | Result Handling |
|
|
23
|
+
|:---|:---|:---|
|
|
24
|
+
| Claude Code | `Agent` tool with `.claude/agents/{name}.md` | Return value (foreground) or completion notification (`run_in_background=true`) |
|
|
25
|
+
| OpenCode | Same session: native `task` tool with `subagent_type: {agent-id}` (the only path that shows as a native child task in the active OpenCode GUI/TUI). External fallback: `oma agent spawn`, which creates a temporary primary wrapper that delegates to the `mode: subagent` agent — `opencode run --agent {subagent}` alone is rejected and falls back to the default agent. | Native task return / result file poll |
|
|
26
|
+
| Kilo Code | Same as OpenCode (Kilo is an OpenCode fork): native `task` tool with `subagent_type: {agent-id}` for `.kilo/agents/{name}.md`; external fallback `oma agent spawn` uses the same temporary primary wrapper (`kilo run --agent {subagent}` alone is rejected the same way). Kilo sets `KILO=1` in tool subprocesses. | Native task return / result file poll |
|
|
27
|
+
| Codex CLI | Current-session native dispatch with custom agents in `.codex/agents/{name}.toml` when available, otherwise `oma agent spawn`. A role file without `model` runs on the parent's model; spawn `docs-curator` and `research-explorer` with the fastest model the spawn tool lists as available, and leave `model` unset for other roles and for files that pin one. Never invent a model name. | JSON output |
|
|
28
|
+
| Antigravity | Prefer `oma agent spawn` unless a native role-subagent path is explicitly verified for the target vendor | MCP memory poll |
|
|
29
|
+
| CLI Fallback | `oma agent spawn {agent} {prompt} {session} -w {workspace}` | Result file poll |
|
|
30
|
+
|
|
31
|
+
## Dispatch Rule
|
|
32
|
+
|
|
33
|
+
For each agent:
|
|
34
|
+
|
|
35
|
+
1. Resolve `target_vendor_for_agent` from config
|
|
36
|
+
2. If `target_vendor_for_agent === current_runtime_vendor` and that runtime has a verified native role-subagent path for that vendor, use the vendor variant agent definition
|
|
37
|
+
3. Otherwise, use `oma agent spawn`
|
|
38
|
+
|
|
39
|
+
Example:
|
|
40
|
+
- Runtime: Claude Code
|
|
41
|
+
- Resolved models: `frontend` → `anthropic/…`, `backend` → `anthropic/…`, `qa` → `openai/…` (owning vendors: claude, claude, codex)
|
|
42
|
+
- Result:
|
|
43
|
+
- `frontend` -> native Claude subagent
|
|
44
|
+
- `backend` -> native Claude subagent
|
|
45
|
+
- `qa` -> external Codex spawn via `oma agent spawn`
|
|
46
|
+
|
|
47
|
+
### OpenCode specifics
|
|
48
|
+
|
|
49
|
+
- If `current_runtime_vendor == opencode` and `target_vendor_for_agent == opencode` and the `task` tool exists, use native `task(subagent_type: "<agent-id>")`.
|
|
50
|
+
- Do **not** use `oma agent spawn` for same-session OpenCode subagents — it is an external fallback and will not appear as a native child task in the active OpenCode GUI/TUI.
|
|
51
|
+
- Before using the `oma agent spawn` fallback, confirm that native same-runtime dispatch is genuinely unavailable.
|
|
52
|
+
- Kilo Code follows the same rules with `kilo` in place of `opencode`.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Memory Protocol (CLI Mode)
|
|
2
|
+
|
|
3
|
+
> **Note**: This file documents the default (direct-file) memory protocol. Vendor-specific execution protocols are injected automatically by `oma agent spawn` from `execution-protocols/{vendor}.md`.
|
|
4
|
+
|
|
5
|
+
When running as a CLI subagent, follow this protocol.
|
|
6
|
+
|
|
7
|
+
## Tool Reference
|
|
8
|
+
|
|
9
|
+
Coordination artifacts are read and written as plain files using your native file tools.
|
|
10
|
+
Tool names remain configurable via `mcp.json → memoryConfig.tools`; this file
|
|
11
|
+
memory contract is independent of any code-intelligence provider.
|
|
12
|
+
- `[READ]` → default: `Read`
|
|
13
|
+
- `[WRITE]` → default: `Write`
|
|
14
|
+
- `[EDIT]` → default: `Edit`
|
|
15
|
+
- `[LIST]` → default: directory listing (e.g. `ls` / `list_dir`)
|
|
16
|
+
- `[DELETE]` → default: file delete (e.g. `rm`)
|
|
17
|
+
|
|
18
|
+
Memory base path is configurable via `memoryConfig.basePath` (default: `.agents/state/memories`). Create the directory if it does not yet exist.
|
|
19
|
+
|
|
20
|
+
> **CRITICAL**: Do NOT use Serena's MCP `write_memory` / `read_memory` for workflow state or result reports. Use file tools (`Read`/`Write`/`Edit`): session and progress notes go under `{memoryConfig.basePath}/`, and `result-*.md` reports always go under the project-root `.agents/results/`. Create `.agents/results/` if it does not yet exist. Verification gates check these durable files and their receipt bindings.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Path Resolution (CRITICAL)
|
|
25
|
+
|
|
26
|
+
Use the injected `claimPath` for structured result claims and do not rename or
|
|
27
|
+
move it. Keep existing flat session artifacts for consumer compatibility. Add
|
|
28
|
+
task and run identity to human-readable reports:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
{memoryConfig.basePath}/
|
|
32
|
+
orchestrator-session-{sessionId}.md
|
|
33
|
+
task-board-{sessionId}.md
|
|
34
|
+
progress-{agentId}-{taskId}-{runId}-{sessionId}.md
|
|
35
|
+
lessons-{sessionId}.md
|
|
36
|
+
experiment-ledger-{sessionId}.md
|
|
37
|
+
|
|
38
|
+
.agents/results/
|
|
39
|
+
result-{agentId}-{taskId}-{runId}-{sessionId}.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`taskId` and `runId` are required for plan-based work. A manual run may use a
|
|
43
|
+
generated local run ID. Never use workspace or agent ID alone as artifact
|
|
44
|
+
identity. Receipts remain in `.agents/state/agent-runs/` and retain their
|
|
45
|
+
existing structured schema. Reports are independent of `memoryConfig.basePath`.
|
|
46
|
+
|
|
47
|
+
Existing reports under `.agents/state/memories/`, the configured memory base, or `.serena/memories/` remain read fallback until migration. Write new reports only to `.agents/results/`, preserving task/run/session filenames. Do not move structured claims or manually rewrite verification receipts when relocating reports.
|
|
48
|
+
|
|
49
|
+
## On Start
|
|
50
|
+
|
|
51
|
+
1. `[READ]("task-board-{sessionId}.md")` to confirm your assigned task
|
|
52
|
+
2. `[WRITE]("progress-{agentId}-{taskId}-{runId}-{sessionId}.md", initial progress entry)` with Turn 1 status
|
|
53
|
+
|
|
54
|
+
## During Execution
|
|
55
|
+
|
|
56
|
+
- Every 3-5 turns: `[EDIT]("progress-{agentId}-{taskId}-{runId}-{sessionId}.md")` to append a new turn entry
|
|
57
|
+
- Include: action taken, current status, files created/modified
|
|
58
|
+
|
|
59
|
+
## On Completion
|
|
60
|
+
|
|
61
|
+
- `[WRITE](".agents/results/result-{agentId}-{taskId}-{runId}-{sessionId}.md")` with final result including:
|
|
62
|
+
- Status: `completed`, `partial`, `blocked`, or `failed`
|
|
63
|
+
- Summary of work done
|
|
64
|
+
- Files created/modified
|
|
65
|
+
- Acceptance criteria checklist
|
|
66
|
+
|
|
67
|
+
## On Failure
|
|
68
|
+
|
|
69
|
+
- Still create the run-scoped result with an accurate status.
|
|
70
|
+
- Include detailed error description and what remains incomplete
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Experiment Tracking (Optional Extension)
|
|
75
|
+
|
|
76
|
+
When a task compares an actual experiment, use `../conditional/experiment-ledger.md` for recording and `../conditional/quality-score.md` for comparable measurements. Routine verification does not require a ledger.
|
|
77
|
+
|
|
78
|
+
Use `experiment-ledger-{sessionId}.md` under the configured coordination store. The coordinator merges task/run-scoped agent results into this shared artifact; parallel workers do not append concurrently. Link baseline and candidate evidence, required check results, the decision and reason, and owned paths. No composite score, fixed row layout, or agent ranking is required.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Example with Default Tools (Direct File)
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
# On Start
|
|
86
|
+
Read(".agents/state/memories/task-board-session-20260405-100835.md")
|
|
87
|
+
Write(".agents/state/memories/progress-backend-task-api-run-01-session-20260405-100835.md", initial_content)
|
|
88
|
+
|
|
89
|
+
# During Execution
|
|
90
|
+
Edit(".agents/state/memories/progress-backend-task-api-run-01-session-20260405-100835.md", turn_update)
|
|
91
|
+
|
|
92
|
+
# On Completion
|
|
93
|
+
Write(".agents/results/result-backend-task-api-run-01-session-20260405-100835.md", final_result)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Example with Custom Tools
|
|
97
|
+
|
|
98
|
+
If `memoryConfig.tools` is configured differently:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"memoryConfig": {
|
|
103
|
+
"tools": {
|
|
104
|
+
"read": "fs_read",
|
|
105
|
+
"write": "fs_write",
|
|
106
|
+
"edit": "fs_patch"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Then use:
|
|
113
|
+
```python
|
|
114
|
+
fs_read("task-board-session-20260405-100835.md")
|
|
115
|
+
fs_write("progress-backend-task-api-run-01-session-20260405-100835.md", initial_content)
|
|
116
|
+
fs_patch("progress-backend-task-api-run-01-session-20260405-100835.md", turn_update)
|
|
117
|
+
fs_write(".agents/results/result-backend-task-api-run-01-session-20260405-100835.md", final_result)
|
|
118
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Agent Result Contract
|
|
2
|
+
|
|
3
|
+
`oma agent spawn` and `oma agent parallel` create a unique run and inject its result path. Use `--task-id` on spawn to match the session plan. A process exiting zero without a valid claim is `partial`, and a failed process is `failed`.
|
|
4
|
+
|
|
5
|
+
Native agents use the same contract:
|
|
6
|
+
|
|
7
|
+
1. Define the acceptance contract in the session plan (see below), then run `oma agent begin <agent-id> <task-id> <session-id>` from the project root. Save `runId` and `claimPath` from its JSON output.
|
|
8
|
+
2. Load task references with `oma agent context <agent-id> --difficulty Medium`, perform the task, and execute its pinned checks with `oma agent verify <run-id> --required`. Spawn/parallel already inject this graph-selected context. Individual exact commands can also be recorded with `oma agent verify <run-id> -- <executable> <args...>`. Run checks serially per run. No build unless explicitly requested.
|
|
9
|
+
3. Write the claim file with `status` (`completed`, `partial`, `blocked`, or `failed`), `changedFiles` (relative paths), `unresolved` (descriptions), and `artifacts` (relative paths to reports). A non-executable review may use `verificationSkipped` with a specific reason; it cannot override failed checks.
|
|
10
|
+
4. Native agents call `oma agent finish <run-id> <claim-file>`. Spawned processes leave finalization to the parent. The parent captures the actual exit code.
|
|
11
|
+
|
|
12
|
+
Example claim:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{"status":"completed","changedFiles":["src/parser.ts"],"unresolved":[],"artifacts":[".agents/results/result-qa-s1.md",".agents/results/plan-s1.json",".agents/state/memories/session-ultrawork.md"]}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Receipts live in `.agents/state/agent-runs/`. They contain session/task/run IDs, vendor, workspace, timestamps, actual command argv and exit codes, working tree hashes, artifact hashes, unresolved work, and final status. These records prevent accidental reuse of stale evidence; they are local files, not a security boundary against an agent that intentionally edits receipts. Human-readable workflow reports are supplemental files at `.agents/results/result-{agentId}-{taskId}-{runId}-{sessionId}.md` for every dispatch path; the injected claim path and receipt schema remain unchanged. Preserve report filenames. Existing reports under configured coordination memory, `.agents/state/memories/`, or `.serena/memories/` remain read fallback until migration; write new reports only to `.agents/results/`.
|
|
19
|
+
|
|
20
|
+
The Ralph gate requires QA and REFINE task IDs in a nonempty plan, current successful executable checks, and report/plan/phase artifacts bound to those runs. A waiver alone does not pass this gate. Record a justified REFINE exception as `REFINE skipped: <specific reason>` before QA finalizes its evidence. Old Markdown-only reports remain readable but must be reverified to pass the gate.
|
|
21
|
+
|
|
22
|
+
Checks cover the Git working tree (HEAD, tracked contents/modes and nonignored untracked files). Generated `.agents/state`, `.agents/results`, and `.serena/memories`, and generated `.opencode/agents/oma-spawn-*.md` / `.kilo/agents/oma-spawn-*.md` wrappers are excluded from the tree hash and artifacts are hashed separately. In an unversioned directory, all files except those generated directories, `.git`, and `node_modules` are covered. External services, ignored dependencies, and malicious receipt tampering require separate controls.
|
|
23
|
+
|
|
24
|
+
## Artifact storage
|
|
25
|
+
|
|
26
|
+
- `docs/decisions/`: retained approach proposals, architecture decisions, and ADRs intended for version control; update `docs/decisions/index.md`. `design` names UI work. Read `docs/plans/designs/` and `docs/design-docs/` only as legacy fallback until migration.
|
|
27
|
+
- `docs/plans/work/`: execution plans and technical debt; `docs/plans/contracts/`: adopted API contracts. Keep their existing lifecycle and promotion rules.
|
|
28
|
+
- `.agents/results/`: run-specific reports, research, explanations, and draft contracts. When promoting a selected document into `docs/`, leave its destination in the source report.
|
|
29
|
+
- `.agents/state/`: coordination, resumption, and verification records. State notes link reports instead of holding duplicate report bodies.
|
|
30
|
+
|
|
31
|
+
If a report is already bound to a verification receipt, preserve its original path and bytes. Create a maintained copy and link it from the documentation index instead of editing or moving the bound report. Migration reports these files as deferred and never rewrites receipts, claims, or frozen plans.
|
|
32
|
+
|
|
33
|
+
Preview existing files with `oma docs migrate --dry-run --json`; apply the migration with `oma docs migrate`. The report lists moved and rewritten paths, skips, and conflicts.
|
|
34
|
+
|
|
35
|
+
## Coordination notes
|
|
36
|
+
|
|
37
|
+
Use native file tools and `memoryConfig.basePath` (default `.agents/state/memories/`) at the project root for optional coordination notes. Read an assigned task board and report progress for long tasks. Use the unique progress names from [Memory Protocol](memory-protocol.md); keep the injected claim path unchanged. Write all `result-*.md` reports in the project-root `.agents/results/`, independently of `memoryConfig.basePath`. Their presence alone does not prove completion. Include unresolved work in the claim even after failure.
|
|
38
|
+
|
|
39
|
+
Read-only dispatch returns `OMA_RESULT_JSON: {claim}` as one final stdout line. The parent persists that inspection. A `verificationSkipped` inspection remains distinguishable from executable checks and does not pass Ralph.
|
|
40
|
+
|
|
41
|
+
Repository checks: `cli/state/agent-results.test.ts`, `cli/state/artifact-verifier.test.ts`.
|
|
42
|
+
|
|
43
|
+
## Acceptance and recovery
|
|
44
|
+
|
|
45
|
+
Each executable task declares `acceptance_criteria: [{id, description}]` and `required_checks: [{id, criteria: [criterionId], command: [executable, ...args], cwd: "."}]`. Every criterion needs a check. Check IDs and executable/argv/cwd selectors must be unique. The run snapshots this contract. Another command/directory, a removed requirement or an uncovered criterion cannot count as acceptance evidence. Legacy plans without required checks remain readable but need a new contract/run to pass executable completion.
|
|
46
|
+
|
|
47
|
+
`oma agent verify RUN_ID --affected PATH...` executes tests selected from actual graph references and records outcomes. They count toward acceptance only when matching pinned checks. Use `--required` for all declared checks. Unmatched paths and empty graph test selections fail explicitly.
|
|
48
|
+
|
|
49
|
+
Optional `inputs` narrows hashing to declared project-relative files/directories and must include all relevant source, tests, configuration and dependency inputs. Missing/deleted inputs change the hash. No globs or symlink traversal are supported. Omit it for whole-tree hashing. The contract is checked independently of scope. Task dependency IDs use the existing `dependencies` array.
|
|
50
|
+
|
|
51
|
+
`oma agent resume SESSION_ID --dry-run` reports reused, ready, running and blocked tasks. Without `--dry-run`, it retries ready tasks in dependency order, persists outcomes, and revalidates evidence before success. Changed dependencies invalidate dependent reuse even if their own inputs match. Live managed processes and native attempts without liveness evidence are not duplicated.
|
|
52
|
+
|
|
53
|
+
Automatic replay requires `retry_policy: "safe"` and a prompt/agent in the plan or saved dispatch. The default is `manual`. `--max-attempts` defaults to 3 including the original attempt. A session lease prevents duplicate coordinators and permits recovery after the local owner dies. Mark interrupted native attempts partial/failed through their result contract before resuming. Keep the JSON plan fixed while recovery runs; record progress separately. This resumes tasks, not the model's interrupted conversation.
|
|
54
|
+
|
|
55
|
+
## Plan lineage and evidence failures
|
|
56
|
+
|
|
57
|
+
The plan's optional `lineage_id` defaults to its session ID. Keep it stable for the same workflow goal across resumed sessions. A task's optional `goal_id` defaults to its task ID; predeclared alternative task IDs for the same logical work must share it. Plan `max_attempts` defaults to 3 including the original attempt. Direct begin/spawn and resume count all runs for that lineage/goal, including runs without `resumedFrom`. `resume --max-attempts` can lower, but cannot raise, the frozen plan's bound.
|
|
58
|
+
|
|
59
|
+
First dispatch pins the full plan under `.agents/state/agent-plans/`. Task IDs, prompts, dependencies, checks, scope, and retry limits are immutable. JSON formatting/key order and transport `session_id`/`created` metadata do not change the contract. Progress belongs in coordination notes. Unknown task IDs and dependency cycles fail before dispatch. Contract changes require an explicitly separated new session and lineage; record why the scope changed and preserve the prior run's outcome. Never use a new lineage to evade a retry limit or repair metadata for the same goal. Do not insert tasks that recursively regenerate/review the executing plan.
|
|
60
|
+
|
|
61
|
+
- `PRODUCT_FAILURE`: executable checks failed, product inputs changed, or product work remains unresolved. Retry only within the shared goal budget.
|
|
62
|
+
- `WORKFLOW_EVIDENCE_FAILURE`: current product checks pass but a claim, artifact binding, or completion metadata is invalid. Automatic resume blocks product replay and returns the run/claim paths. One direct begin/spawn for that existing task may repair metadata within the same attempt budget; the run is marked `evidenceRepair`, and completion rejects product-input changes. Correct claim/report bindings and reverify the pinned checks, without changing the plan or dispatching planners/reviewers. A second evidence repair is rejected. If unresolved, stop with `partial`, distinguish product success from workflow failure, and provide the exact diagnostic and correction needed.
|
|
63
|
+
|
|
64
|
+
Keep mutable task boards, phase logs, receipts, and repair notes under `.agents/state/`, `.agents/results/`, or `.serena/memories/`, which are excluded from product hashes. They may be bound as separate artifacts only after their final update; a later metadata edit invalidates that binding without making it a product failure. Do not narrow product `inputs` to hide relevant source changes.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# UI Interaction Quality
|
|
2
|
+
|
|
3
|
+
Load the relevant sections when changing motion, input feedback, or rendered
|
|
4
|
+
web-component behavior. Static document corrections do not require this resource.
|
|
5
|
+
Follow existing project conventions; native implementation uses `oma-mobile`.
|
|
6
|
+
|
|
7
|
+
## Decide what the interaction needs
|
|
8
|
+
|
|
9
|
+
`oma-design` owns the intended behavior and its effect on the user:
|
|
10
|
+
|
|
11
|
+
- Name the purpose: acknowledge input, show a state change, explain a spatial
|
|
12
|
+
relationship, preserve continuity, or support an explicitly requested effect.
|
|
13
|
+
Keep a direct state change when motion adds no useful information.
|
|
14
|
+
- Consider how often the interaction occurs and whether it blocks the next
|
|
15
|
+
action. Repeated work and keyboard-driven workflows need prompt, unobstructed
|
|
16
|
+
feedback; occasional explanatory moments can support more expression.
|
|
17
|
+
- Keep content stable while the user reads, compares, selects, or acts on it.
|
|
18
|
+
Decorative movement must not compete with task information or conceal state.
|
|
19
|
+
- Define the reduced-motion result with the behavior. Preserve essential state,
|
|
20
|
+
feedback, and control when movement is reduced or removed.
|
|
21
|
+
- Reuse the approved project direction, motion tokens, and component behavior.
|
|
22
|
+
Specify the affected states and acceptance criteria rather than imposing a new
|
|
23
|
+
timing scale, spring table, or page-wide motion quota.
|
|
24
|
+
|
|
25
|
+
Use the supplied brief and inspected UI to make these decisions. Ask only about
|
|
26
|
+
a material unresolved choice. An audit returns findings within its read-only
|
|
27
|
+
scope; an implementation request proceeds under the existing authorization.
|
|
28
|
+
|
|
29
|
+
## Implement within the current stack
|
|
30
|
+
|
|
31
|
+
`oma-frontend` owns the implementation. First inspect the component primitives,
|
|
32
|
+
existing motion mechanisms, tokens, and affected lifecycle. Extend a suitable
|
|
33
|
+
existing mechanism before adding a second one.
|
|
34
|
+
|
|
35
|
+
| Mechanism | Relevant use |
|
|
36
|
+
|---|---|
|
|
37
|
+
| CSS transitions or animations | Stylesheet-driven changes and predetermined motion that need no additional controller |
|
|
38
|
+
| Web Animations API | Browser-native imperative playback, cancellation, or sequencing where it fits the required behavior |
|
|
39
|
+
| Project-selected Motion integration | Supported spring, layout, entry/exit, or gesture behavior in the project's current component architecture |
|
|
40
|
+
| Existing or selected GSAP integration | Its timelines, scroll coordination, or plugins when those capabilities are part of the task |
|
|
41
|
+
|
|
42
|
+
This table identifies capabilities, not an automatic dependency choice. A fade
|
|
43
|
+
does not justify installing an engine. Preserve the project's framework,
|
|
44
|
+
component library, styling, state, and dependency policy.
|
|
45
|
+
|
|
46
|
+
### State and interruption
|
|
47
|
+
|
|
48
|
+
An interaction may reverse, repeat, or be cancelled before a transition ends.
|
|
49
|
+
Continue from the currently displayed position and velocity where appropriate,
|
|
50
|
+
rather than resetting to an obsolete starting frame. Keep one owner for each
|
|
51
|
+
animated property and cancel or supersede stale work.
|
|
52
|
+
|
|
53
|
+
Keep semantic state authoritative. A visual exit must not leave a hidden control
|
|
54
|
+
active, preserve stale content after reopening, or lose the intended focus
|
|
55
|
+
destination. Use the existing component's state and lifecycle contracts instead
|
|
56
|
+
of adding an independent animation state machine without a demonstrated need.
|
|
57
|
+
|
|
58
|
+
In React, keep continuous visual values outside component render state when they
|
|
59
|
+
do not change the UI's meaning. Use the existing controller, motion values, or
|
|
60
|
+
refs for those updates. Commit meaningful state changes through the normal React
|
|
61
|
+
model; do not force a render for every animation frame or pointer sample merely
|
|
62
|
+
to move an element.
|
|
63
|
+
|
|
64
|
+
### Press, focus, hover, and touch
|
|
65
|
+
|
|
66
|
+
- Give prompt press feedback through the project's control primitives. Feedback
|
|
67
|
+
on pointer-down is distinct from committing an action: preserve cancellation,
|
|
68
|
+
click/activation semantics, and keyboard behavior.
|
|
69
|
+
- Keep focus visible and stable through transitions. Exercise keyboard entry,
|
|
70
|
+
activation, dismissal, and return focus where the component supports them.
|
|
71
|
+
- Gate hover-only decoration by input capability. Keep essential information
|
|
72
|
+
and actions available to touch and keyboard users; support mixed input devices
|
|
73
|
+
without assuming a screen width or user-agent identifies the input method.
|
|
74
|
+
- Preserve zoom, browser scrolling, and text interaction. Scope gesture handling
|
|
75
|
+
and selection restrictions to the control that needs them.
|
|
76
|
+
- Verify pending, disabled, success, and failure feedback where those states
|
|
77
|
+
exist. Appearance alone must not substitute for the component's actual state.
|
|
78
|
+
|
|
79
|
+
### Component lifetime
|
|
80
|
+
|
|
81
|
+
Tie controllers, frames, listeners, observers, timers, and subscriptions to the
|
|
82
|
+
component lifetime. Use the incumbent integration's cleanup mechanisms; cancel
|
|
83
|
+
obsolete work on unmount or replacement. Check repeated mount/unmount and rapid
|
|
84
|
+
open/close for duplicate handlers, stale callbacks, and continuing animations.
|
|
85
|
+
Pause nonessential continuous work when the surface is inactive when appropriate.
|
|
86
|
+
|
|
87
|
+
## Diagnose performance from evidence
|
|
88
|
+
|
|
89
|
+
Reproduce the affected interaction with representative content and concurrent
|
|
90
|
+
work. Inspect browser profiling, renders, layout, paint, and compositing as the
|
|
91
|
+
symptom requires. Compare frame work with the actual target device's budget;
|
|
92
|
+
do not infer smoothness from a library name or a desktop screenshot.
|
|
93
|
+
|
|
94
|
+
Transforms and opacity often avoid layout work, but acceleration depends on the
|
|
95
|
+
actual property, browser, controller, and content. Check costly descendants,
|
|
96
|
+
inherited custom-property updates, effects, and large layers before choosing a
|
|
97
|
+
fix. Add layer promotion or `will-change` only for an observed need, then verify
|
|
98
|
+
the effect and resource cost.
|
|
99
|
+
|
|
100
|
+
Measure the affected case before and after a proposed performance fix. Record
|
|
101
|
+
the browser/device, content, steps, relevant trace or observation, and remaining
|
|
102
|
+
limits. Emulation and code inspection can support findings; they do not prove
|
|
103
|
+
behavior on an untested physical device.
|
|
104
|
+
|
|
105
|
+
## Exercise realistic content and states
|
|
106
|
+
|
|
107
|
+
Use fixtures at the component's real data boundary and container size. Derive
|
|
108
|
+
limits from the schema, API, validation, and supported product behavior. Mark an
|
|
109
|
+
unknown limit as unknown; use plausible stress data without inventing product
|
|
110
|
+
claims or introducing real personal data into a fixture.
|
|
111
|
+
|
|
112
|
+
Select cases relevant to the affected UI:
|
|
113
|
+
|
|
114
|
+
- Long and short names, unbroken identifiers, translated labels, CJK text and
|
|
115
|
+
mixed scripts. Check glyph fallback, line breaking, wrapping, and readable
|
|
116
|
+
control labels with the project's actual fonts and supported languages.
|
|
117
|
+
- Empty, single-item, and realistic large collections; absent optional fields,
|
|
118
|
+
unavailable images, and the number/date formats the product supports.
|
|
119
|
+
- Loading, failure, retry, disabled and successful states; repeated activation,
|
|
120
|
+
cancellation, reopening, and interruption while content or layout changes.
|
|
121
|
+
- Supported narrow containers, zoom/text enlargement, themes, directionality,
|
|
122
|
+
and input modes. Include keyboard, touch, safe-area, or software-keyboard
|
|
123
|
+
behavior when the changed surface depends on them.
|
|
124
|
+
|
|
125
|
+
Keep meaning and essential values accessible when space is tight. Use the
|
|
126
|
+
project's existing wrapping, disclosure, scrolling, or truncation conventions
|
|
127
|
+
according to the data's purpose. An optional debug fixture or prototype stays
|
|
128
|
+
outside production flows unless the task explicitly includes it.
|
|
129
|
+
|
|
130
|
+
Report what was exercised and observed, including the component/state, content,
|
|
131
|
+
viewport or input, and result. Separate rendered findings from code-only
|
|
132
|
+
inferences and unrun checks. Keep fixes within the authorized scope and repeat
|
|
133
|
+
the affected checks after a change.
|