oh-my-opencode 5.0.0-beta.85 → 5.0.0-beta.87
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/.agents/skills/codex-qa/SKILL.md +2 -0
- package/.agents/skills/hyperplan/SKILL.md +1 -1
- package/.agents/skills/senpi-qa/SKILL.md +9 -3
- package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs +4 -4
- package/.opencode/skills/hyperplan/SKILL.md +1 -1
- package/README.md +1 -1
- package/dist/cli/index.js +68 -41
- package/dist/cli-node/index.js +68 -41
- package/dist/index.js +126 -107
- package/dist/skills/browser/ATTRIBUTION.md +26 -14
- package/dist/skills/browser/SKILL.md +65 -52
- package/dist/skills/browser/references/commands.md +81 -66
- package/dist/skills/browser/references/install.md +31 -34
- package/dist/skills/browser/references/owned-engine/README.md +41 -21
- package/dist/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/dist/skills/browser/references/owned-engine/ladder.md +24 -22
- package/dist/skills/browser/references/owned-engine/network.md +35 -15
- package/dist/skills/browser/references/recipes/1password.md +13 -11
- package/dist/skills/browser/references/remote.md +5 -4
- package/dist/skills/browser/runtime/omowright/index.js +1534 -0
- package/dist/skills/browser/runtime/omowright/manifest.json +9 -0
- package/dist/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/dist/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/dist/skills/browser/scripts/browser-install.mjs +31 -44
- package/dist/skills/browser/scripts/omowright.mjs +25 -0
- package/dist/skills/debugging/SKILL.md +2 -2
- package/dist/skills/debugging/references/methodology/06-fix.md +3 -3
- package/dist/skills/debugging/references/methodology/08-qa.md +1 -1
- package/dist/skills/debugging/references/tools/browser-qa.md +104 -0
- package/dist/skills/frontend/SKILL.md +1 -1
- package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
- package/dist/skills/programming/SKILL.md +12 -18
- package/dist/skills/programming/references/rust/README.md +43 -15
- package/dist/skills/programming/references/rust/api-design.md +81 -0
- package/dist/skills/programming/references/rust/async-tokio.md +60 -28
- package/dist/skills/programming/references/rust/axum-stack.md +1 -13
- package/dist/skills/programming/references/rust/cargo-strict.md +44 -8
- package/dist/skills/programming/references/rust/clap-stack.md +8 -3
- package/dist/skills/programming/references/rust/concurrency.md +66 -52
- package/dist/skills/programming/references/rust/libraries.md +35 -25
- package/dist/skills/programming/references/rust/macros.md +63 -0
- package/dist/skills/programming/references/rust/one-liners.md +5 -3
- package/dist/skills/programming/references/rust/proptest-insta.md +8 -0
- package/dist/skills/programming/references/rust/type-state.md +50 -12
- package/dist/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/dist/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/dist/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/dist/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.test.ts +83 -0
- package/dist/skills/programming/scripts/rust/new-project.py +31 -28
- package/dist/skills/review-work/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/SKILL.md +27 -20
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/dist/skills/ulw-execute/SKILL.md +4 -4
- package/dist/skills/visual-qa/SKILL.md +1 -1
- package/dist/skills/visual-qa/references/browser-setup.md +46 -46
- package/dist/tui.js +47 -23
- package/package.json +15 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +63 -89
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +63 -89
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +2 -3
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +8 -2
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
- package/packages/omo-codex/plugin/skills/browser/ATTRIBUTION.md +26 -14
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +65 -52
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +81 -66
- package/packages/omo-codex/plugin/skills/browser/references/install.md +31 -34
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +41 -21
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +24 -22
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +35 -15
- package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +13 -11
- package/packages/omo-codex/plugin/skills/browser/references/remote.md +5 -4
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +1534 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +9 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +31 -44
- package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +25 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +3 -3
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +104 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +12 -18
- package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +43 -15
- package/packages/omo-codex/plugin/skills/programming/references/rust/api-design.md +81 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +60 -28
- package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +1 -13
- package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +44 -8
- package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +8 -3
- package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +66 -52
- package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +35 -25
- package/packages/omo-codex/plugin/skills/programming/references/rust/macros.md +63 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +5 -3
- package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +8 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +50 -12
- package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +31 -28
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +27 -20
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +63 -89
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +2 -3
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +46 -46
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
- package/packages/prompts-core/prompts/ultrawork/codex.md +63 -89
- package/packages/shared-skills/skills/browser/ATTRIBUTION.md +26 -14
- package/packages/shared-skills/skills/browser/SKILL.md +65 -52
- package/packages/shared-skills/skills/browser/references/commands.md +81 -66
- package/packages/shared-skills/skills/browser/references/install.md +31 -34
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +41 -21
- package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +24 -22
- package/packages/shared-skills/skills/browser/references/owned-engine/network.md +35 -15
- package/packages/shared-skills/skills/browser/references/recipes/1password.md +13 -11
- package/packages/shared-skills/skills/browser/references/remote.md +5 -4
- package/packages/shared-skills/skills/browser/runtime/omowright/index.js +1534 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +9 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +31 -44
- package/packages/shared-skills/skills/browser/scripts/omowright.mjs +25 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +2 -2
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +3 -3
- package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +1 -1
- package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +104 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +12 -18
- package/packages/shared-skills/skills/programming/references/rust/README.md +43 -15
- package/packages/shared-skills/skills/programming/references/rust/api-design.md +81 -0
- package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +60 -28
- package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +1 -13
- package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +44 -8
- package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +8 -3
- package/packages/shared-skills/skills/programming/references/rust/concurrency.md +66 -52
- package/packages/shared-skills/skills/programming/references/rust/libraries.md +35 -25
- package/packages/shared-skills/skills/programming/references/rust/macros.md +63 -0
- package/packages/shared-skills/skills/programming/references/rust/one-liners.md +5 -3
- package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +8 -0
- package/packages/shared-skills/skills/programming/references/rust/type-state.md +50 -12
- package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.test.ts +83 -0
- package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +31 -28
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +27 -20
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +4 -4
- package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
- package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +46 -46
- package/dist/skills/browser/scripts/browser-env.mjs +0 -41
- package/dist/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +0 -41
- package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
- package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +0 -41
- package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
package/dist/index.js
CHANGED
|
@@ -20057,26 +20057,20 @@ var AGENT_MODEL_REQUIREMENTS = {
|
|
|
20057
20057
|
fallbackChain: [
|
|
20058
20058
|
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
20059
20059
|
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20060
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
20060
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
|
|
20061
20061
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
20062
|
-
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
20063
|
-
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
20064
20062
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
20065
|
-
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
20066
|
-
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
20063
|
+
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
20067
20064
|
]
|
|
20068
20065
|
},
|
|
20069
20066
|
explore: {
|
|
20070
20067
|
fallbackChain: [
|
|
20071
20068
|
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
20072
20069
|
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20073
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
20070
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
|
|
20074
20071
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
20075
|
-
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
20076
|
-
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
20077
20072
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
20078
|
-
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
20079
|
-
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
20073
|
+
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
20080
20074
|
]
|
|
20081
20075
|
},
|
|
20082
20076
|
"multimodal-looker": {
|
|
@@ -20206,15 +20200,11 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20206
20200
|
},
|
|
20207
20201
|
"deep-low": {
|
|
20208
20202
|
fallbackChain: [
|
|
20203
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-sol-fast", variant: "medium" },
|
|
20209
20204
|
{
|
|
20210
20205
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
20211
20206
|
model: "gpt-6-sol",
|
|
20212
20207
|
variant: "medium"
|
|
20213
|
-
},
|
|
20214
|
-
{
|
|
20215
|
-
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
20216
|
-
model: "gpt-5.6-sol",
|
|
20217
|
-
variant: "medium"
|
|
20218
20208
|
}
|
|
20219
20209
|
]
|
|
20220
20210
|
},
|
|
@@ -20223,7 +20213,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20223
20213
|
{
|
|
20224
20214
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
20225
20215
|
model: "gpt-6-astra",
|
|
20226
|
-
variant: "
|
|
20216
|
+
variant: "xhigh"
|
|
20227
20217
|
}
|
|
20228
20218
|
]
|
|
20229
20219
|
},
|
|
@@ -20248,8 +20238,8 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20248
20238
|
},
|
|
20249
20239
|
quick: {
|
|
20250
20240
|
fallbackChain: [
|
|
20251
|
-
{ providers: ["chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20252
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
20241
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20242
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "off" },
|
|
20253
20243
|
{
|
|
20254
20244
|
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
|
|
20255
20245
|
model: "qwen3.6-flash",
|
|
@@ -20293,7 +20283,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20293
20283
|
{
|
|
20294
20284
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
20295
20285
|
model: "claude-opus-5-5",
|
|
20296
|
-
variant: "
|
|
20286
|
+
variant: "medium"
|
|
20297
20287
|
},
|
|
20298
20288
|
{ providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
|
|
20299
20289
|
{
|
|
@@ -20304,6 +20294,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20304
20294
|
]
|
|
20305
20295
|
},
|
|
20306
20296
|
writing: {
|
|
20297
|
+
requiresAnyModel: true,
|
|
20307
20298
|
fallbackChain: [
|
|
20308
20299
|
{
|
|
20309
20300
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
@@ -21915,6 +21906,22 @@ var SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
|
21915
21906
|
output: 128000
|
|
21916
21907
|
}
|
|
21917
21908
|
},
|
|
21909
|
+
"gpt-6-sol-fast": {
|
|
21910
|
+
id: "gpt-6-sol-fast",
|
|
21911
|
+
family: "gpt",
|
|
21912
|
+
reasoning: true,
|
|
21913
|
+
temperature: false,
|
|
21914
|
+
toolCall: true,
|
|
21915
|
+
modalities: {
|
|
21916
|
+
input: ["text", "image"],
|
|
21917
|
+
output: ["text"]
|
|
21918
|
+
},
|
|
21919
|
+
limit: {
|
|
21920
|
+
context: 1050000,
|
|
21921
|
+
input: 922000,
|
|
21922
|
+
output: 128000
|
|
21923
|
+
}
|
|
21924
|
+
},
|
|
21918
21925
|
"gpt-6-luna": {
|
|
21919
21926
|
id: "gpt-6-luna",
|
|
21920
21927
|
family: "gpt-nano",
|
|
@@ -21995,6 +22002,21 @@ var SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
|
21995
22002
|
output: 128000
|
|
21996
22003
|
}
|
|
21997
22004
|
},
|
|
22005
|
+
"deepseek-flash": {
|
|
22006
|
+
id: "deepseek-flash",
|
|
22007
|
+
family: "deepseek-flash",
|
|
22008
|
+
reasoning: true,
|
|
22009
|
+
temperature: true,
|
|
22010
|
+
toolCall: true,
|
|
22011
|
+
modalities: {
|
|
22012
|
+
input: ["text", "image"],
|
|
22013
|
+
output: ["text"]
|
|
22014
|
+
},
|
|
22015
|
+
limit: {
|
|
22016
|
+
context: 1e6,
|
|
22017
|
+
output: 384000
|
|
22018
|
+
}
|
|
22019
|
+
},
|
|
21998
22020
|
"gpt-6-luna-fast": {
|
|
21999
22021
|
id: "gpt-6-luna-fast",
|
|
22000
22022
|
family: "gpt-nano",
|
|
@@ -23540,6 +23562,8 @@ function isRecord9(value) {
|
|
|
23540
23562
|
}
|
|
23541
23563
|
var OmoModelProfileInputSchema = z9.object({
|
|
23542
23564
|
display_name: z9.string().optional(),
|
|
23565
|
+
family: z9.enum(["daily", "geeky"]).optional(),
|
|
23566
|
+
tier: z9.enum(["normal", "heavy"]).optional(),
|
|
23543
23567
|
models: z9.array(z9.union([z9.string(), OmoFallbackModelObjectSchema])).optional()
|
|
23544
23568
|
}).strict();
|
|
23545
23569
|
var OmoModelProfileSchema = z9.preprocess((value) => isRecord9(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
@@ -27292,7 +27316,7 @@ You are working on tasks that don't fit specific categories but require substant
|
|
|
27292
27316
|
var UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`;
|
|
27293
27317
|
var DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`;
|
|
27294
27318
|
var DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`;
|
|
27295
|
-
var DEEP_LOW_GATE_MODELS = ["gpt-6-sol", "gpt-
|
|
27319
|
+
var DEEP_LOW_GATE_MODELS = ["gpt-6-sol-fast", "gpt-6-sol"];
|
|
27296
27320
|
var DEEP_HIGH_GATE_MODEL = "gpt-6-astra";
|
|
27297
27321
|
var OPENAI_CATEGORIES = [
|
|
27298
27322
|
{
|
|
@@ -27304,7 +27328,7 @@ var OPENAI_CATEGORIES = [
|
|
|
27304
27328
|
},
|
|
27305
27329
|
{
|
|
27306
27330
|
name: "deep-low",
|
|
27307
|
-
config: { model: "openai/gpt-6-sol", variant: "medium" },
|
|
27331
|
+
config: { model: "openai/gpt-6-sol-fast", variant: "medium" },
|
|
27308
27332
|
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
|
|
27309
27333
|
callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
27310
27334
|
promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
|
|
@@ -27313,7 +27337,7 @@ var OPENAI_CATEGORIES = [
|
|
|
27313
27337
|
},
|
|
27314
27338
|
{
|
|
27315
27339
|
name: "deep-high",
|
|
27316
|
-
config: { model: "openai/gpt-6-astra", variant: "
|
|
27340
|
+
config: { model: "openai/gpt-6-astra", variant: "xhigh" },
|
|
27317
27341
|
description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
|
|
27318
27342
|
callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
27319
27343
|
promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -27336,7 +27360,7 @@ var OPENAI_CATEGORIES = [
|
|
|
27336
27360
|
},
|
|
27337
27361
|
{
|
|
27338
27362
|
name: "unspecified-high",
|
|
27339
|
-
config: { model: "anthropic/claude-opus-5-5", variant: "
|
|
27363
|
+
config: { model: "anthropic/claude-opus-5-5", variant: "medium" },
|
|
27340
27364
|
description: "Tasks that don't fit other categories, high effort required",
|
|
27341
27365
|
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
27342
27366
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -97691,7 +97715,7 @@ function getCachedVersion(options = {}) {
|
|
|
97691
97715
|
// package.json
|
|
97692
97716
|
var package_default = {
|
|
97693
97717
|
name: "oh-my-opencode",
|
|
97694
|
-
version: "5.0.0-beta.
|
|
97718
|
+
version: "5.0.0-beta.87",
|
|
97695
97719
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
97696
97720
|
main: "./dist/index.js",
|
|
97697
97721
|
types: "dist/index.d.ts",
|
|
@@ -97874,7 +97898,7 @@ var package_default = {
|
|
|
97874
97898
|
zod: "^4.6.5"
|
|
97875
97899
|
},
|
|
97876
97900
|
devDependencies: {
|
|
97877
|
-
"@code-yeongyu/senpi": "2026.9.23",
|
|
97901
|
+
"@code-yeongyu/senpi": "2026.9.23-4",
|
|
97878
97902
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
97879
97903
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
97880
97904
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -97910,22 +97934,23 @@ var package_default = {
|
|
|
97910
97934
|
"@xterm/xterm": "^6.0.0",
|
|
97911
97935
|
"bun-types": "1.4.2",
|
|
97912
97936
|
"node-pty": "^1.1.0",
|
|
97937
|
+
omowright: "github:code-yeongyu/omowright#25781c8ac04f9aae358b06551520b792ac45c6ed",
|
|
97913
97938
|
"puppeteer-core": "^25.11.0",
|
|
97914
97939
|
typescript: "^7.0.2"
|
|
97915
97940
|
},
|
|
97916
97941
|
optionalDependencies: {
|
|
97917
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
97918
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
97919
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
97920
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
97921
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
97922
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
97923
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
97924
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
97925
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
97926
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
97927
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
97928
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
97942
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.87",
|
|
97943
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.87",
|
|
97944
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.87",
|
|
97945
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.87",
|
|
97946
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.87",
|
|
97947
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.87",
|
|
97948
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.87",
|
|
97949
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.87",
|
|
97950
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.87",
|
|
97951
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.87",
|
|
97952
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.87",
|
|
97953
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.87"
|
|
97929
97954
|
},
|
|
97930
97955
|
overrides: {
|
|
97931
97956
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -103766,9 +103791,9 @@ task(category="quick", load_skills=["git-master"], run_in_background=true)
|
|
|
103766
103791
|
|
|
103767
103792
|
## EXECUTION RULES
|
|
103768
103793
|
- **TODO format**: \`path: <action> for <scenario-id> \u2014 verify by <check>\` encoding WHERE / WHY (which scenario it advances) / HOW / VERIFY. Exactly ONE in_progress at a time. Mark completed IMMEDIATELY \u2014 never batch.
|
|
103769
|
-
- GOOD pair (
|
|
103770
|
-
- BAD: "Implement feature" / "Fix bug" / "Add tests later"
|
|
103771
|
-
- **PARALLEL**: Fire independent agent calls simultaneously via task(run_in_background=true) \u2014 NEVER wait sequentially. But
|
|
103794
|
+
- GOOD pair (ordered): \`test/module.test: read the validateEmail cases for S2 - verify by noting intent / coverage / pass in the notepad\` \u2192 \`src/module: Implement validateEmail() for S2 - verify by curl 400 body + module.test green\`
|
|
103795
|
+
- BAD: "Implement feature" / "Fix bug" / "Add tests later" \u2192 rewrite.
|
|
103796
|
+
- **PARALLEL**: Fire independent agent calls simultaneously via task(run_in_background=true) \u2014 NEVER wait sequentially. But READ before CHANGE, never in parallel with it.
|
|
103772
103797
|
- **BACKGROUND FIRST**: Use task for exploration/research agents (10+ concurrent if needed).
|
|
103773
103798
|
- **VERIFY**: Re-read request after completion. Check every scenario PASS with both artifacts captured.
|
|
103774
103799
|
- **DELEGATE**: Don't do everything yourself \u2014 orchestrate specialized agents for their strengths.
|
|
@@ -103799,10 +103824,10 @@ BEFORE writing ANY code, define realistic scenarios sized to the change \u2014 *
|
|
|
103799
103824
|
|
|
103800
103825
|
Each scenario MUST specify, upfront:
|
|
103801
103826
|
- Pass condition as a binary observable ("returns 200 + body matches schema"), not "should work".
|
|
103802
|
-
- The REAL surface that proves it: tmux transcript, curl status+body, browser
|
|
103803
|
-
- The
|
|
103827
|
+
- The REAL surface that proves it: tmux transcript, curl status+body, browser (omowright) assertion, computer-use action log, CLI stdout, parsed config dump, DB state diff. Asserting "tests pass" alone is NOT evidence.
|
|
103828
|
+
- The existing tests that cover it (read first \u2014 see Test Decision below) and the real-surface scenario that proves it. Prose, docs, prompt, and visual-only changes take review + real-surface QA \u2014 a test pinning their text is pretend-coverage, not proof.
|
|
103804
103829
|
|
|
103805
|
-
**These scenarios are the CONTRACT.** Record them in your TODO/notepad. You are not done until every one PASSES with
|
|
103830
|
+
**These scenarios are the CONTRACT.** Record them in your TODO/notepad. You are not done until every one PASSES with its real-surface artifact captured and the tests the repository keeps for it green.
|
|
103806
103831
|
|
|
103807
103832
|
### Durable Notepad (survives context loss)
|
|
103808
103833
|
|
|
@@ -103828,12 +103853,12 @@ Every scenario requires TWO captured artifacts \u2014 both mandatory:
|
|
|
103828
103853
|
|
|
103829
103854
|
| Artifact | Source | Captures |
|
|
103830
103855
|
|----------|--------|----------|
|
|
103831
|
-
| **
|
|
103832
|
-
| **Real-surface artifact** | tmux / curl / browser
|
|
103856
|
+
| **Tests of record** | The existing suite for the area, read before the change and green after it | Intent / coverage / pass noted; stale expectations updated |
|
|
103857
|
+
| **Real-surface artifact** | tmux / curl / browser (omowright) / computer-use / CLI / DB | What the user actually sees |
|
|
103833
103858
|
|
|
103834
103859
|
Supporting (necessary, not sufficient): build exit 0, full suite green, lsp_diagnostics clean on changed files, regression scenarios still PASS.
|
|
103835
103860
|
|
|
103836
|
-
The real-surface artifact is always required. A test
|
|
103861
|
+
The real-surface artifact is always required. A new test only where the repository keeps tests for this behavior and a regression would otherwise pass unnoticed. "tests pass" alone is NOT done, and a test pinning prose or visual text is NOT evidence.
|
|
103837
103862
|
|
|
103838
103863
|
<MANUAL_QA_MANDATE>
|
|
103839
103864
|
### YOU MUST EXECUTE MANUAL QA YOURSELF. THIS IS NOT OPTIONAL.
|
|
@@ -103847,7 +103872,7 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
103847
103872
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
103848
103873
|
| Changes build output | Run the build. Verify the output files exist and are correct. |
|
|
103849
103874
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
103850
|
-
| Changes UI rendering | Drive the REAL page from js eval
|
|
103875
|
+
| Changes UI rendering | Drive the REAL page from js eval with omowright (staged in the \`browser\` skill): the owned engine (\`connectPipe\` on a task-owned profile, \`connectCloakProfile\` for bot-scored targets) for unauthenticated pages, the attached engine (\`connectBrowserSkill()\` in the user's own signed-in browser) when the page needs their login. Capture screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile, and never clone it; if the attached engine is missing, run the browser skill's onboarding script and relay its one human step instead of launching a headless browser. |
|
|
103851
103876
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
103852
103877
|
| Changes a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
103853
103878
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
@@ -103867,36 +103892,29 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
103867
103892
|
**CLEANUP IS PART OF QA \u2014 TRACK IT AS TODOS.** The moment a QA scenario spawns any resource, add a teardown todo for it (QA scripts, tmux assets, browser contexts, PIDs, ports, containers, temp dirs). Execute every teardown todo and capture the receipt before declaring done. A leftover process / tmux session / browser context / bound port / temp dir = NOT done.
|
|
103868
103893
|
</MANUAL_QA_MANDATE>
|
|
103869
103894
|
|
|
103870
|
-
###
|
|
103871
|
-
|
|
103872
|
-
Test-first is not optional for code. Every code behavior change \u2014 features, fixes, refactors, perf, glue, config-with-logic \u2014 follows RED \u2192 GREEN \u2192 SURFACE. Prose, docs, and visual-only changes have no seam: skip RED\u2192GREEN and prove them through the surface channel.
|
|
103873
|
-
|
|
103874
|
-
1. **RED**: Write the failing test FIRST. Run it. Capture the assertion message proving it fails for the RIGHT reason (not syntax, not import). Paste RED output into the notepad. No production code yet.
|
|
103875
|
-
2. **GREEN**: Write the SMALLEST change that flips RED\u2192GREEN. Re-run. Capture GREEN output. If GREEN required ~20+ lines, your test was too coarse \u2014 split it.
|
|
103876
|
-
3. **SURFACE**: Exercise the real user-facing surface named by the scenario. Capture artifact path into the notepad.
|
|
103877
|
-
4. **REFACTOR**: Optional, only if needed. Tests MUST stay green throughout.
|
|
103878
|
-
5. **REGRESSION**: Re-run the FULL scenario list. Record PASS/FAIL inline with both evidence paths.
|
|
103895
|
+
### Test Decision (every production code change)
|
|
103879
103896
|
|
|
103880
|
-
**
|
|
103897
|
+
1. **READ** the tests covering the area BEFORE touching it \u2014 they are the behavior of record. Note in the notepad: do they encode the intent, cover this path, pass? One WRONG before your change is a FINDING to report \u2014 NEVER edit a test green. A bug: reproduce it first and capture the failure. A refactor: the existing tests are green on the unchanged code first.
|
|
103898
|
+
2. **CHANGE**: the SMALLEST change that meets the scenario; update the tests your change makes stale. Add a test ONLY when BOTH hold: the repository keeps tests for this behavior AND a regression would otherwise pass unnoticed by the run and the existing tests \u2014 sized like its neighbors, one case per stated behavior, failing when that behavior breaks. A test that restates the change (a constant, a string, a rename, a call) is NOT evidence; the run is.
|
|
103899
|
+
3. **SURFACE**: Exercise the real user-facing surface named by the scenario; a reproduction now passes. Capture the artifact path into the notepad.
|
|
103900
|
+
4. **REGRESSION**: Re-run the FULL scenario list plus the step-1 tests. Record PASS/FAIL inline with evidence paths.
|
|
103881
103901
|
|
|
103882
|
-
|
|
103883
|
-
|
|
103884
|
-
**If you typed production code without a failing test preceding it in the notepad: STOP, revert, write the test, watch it fail, then redo.**
|
|
103902
|
+
Prose, docs, prompt, and visual-only changes have no test seam: review + real-surface QA, NO test \u2014 a test pinning their text is pretend-coverage.
|
|
103885
103903
|
|
|
103886
103904
|
### Commit Discipline (MANDATORY)
|
|
103887
103905
|
|
|
103888
|
-
Commit frequently: one atomic commit per verified increment (
|
|
103906
|
+
Commit frequently: one atomic commit per verified increment (change + evidence captured), never one end-of-run omnibus. BEFORE composing each message, study the history and mimic it \u2014 run \`git log --oneline -20\` plus \`git log -5 -- <touched paths>\` \u2014 matching subject shape, scope names, message language, body style, and typical commit size. Load the \`git-master\` skill for the commit workflow when available. Skip committing only when the user forbade commits this session.
|
|
103889
103907
|
|
|
103890
103908
|
### Verification Anti-Patterns (BLOCKING)
|
|
103891
103909
|
|
|
103892
103910
|
| Violation | Why It Fails |
|
|
103893
103911
|
|-----------|--------------|
|
|
103894
103912
|
| "It should work now" | No evidence. Run it. |
|
|
103895
|
-
| "I added the tests" | Did
|
|
103913
|
+
| "I added the tests" | Did the repository keep tests here, and would the regression have passed unnoticed without them? Otherwise the run is the proof. |
|
|
103896
103914
|
| "Fixed the bug" | What scenario proves it? Where's the artifact? |
|
|
103897
103915
|
| "Implementation complete" | Every scenario PASS with both artifacts captured? |
|
|
103898
103916
|
| Skipping test execution | Tests exist to be RUN, not just written |
|
|
103899
|
-
|
|
|
103917
|
+
| A test that restates the change | Cannot fail for any regression \u2014 delete it; the run is the proof |
|
|
103900
103918
|
|
|
103901
103919
|
**CLAIM NOTHING WITHOUT PROOF. EXECUTE. VERIFY. SHOW EVIDENCE.**
|
|
103902
103920
|
|
|
@@ -104144,43 +104162,37 @@ When the \`create_goal\` tool exists, you MUST register the run's goal with it B
|
|
|
104144
104162
|
|
|
104145
104163
|
### SCENARIO CONTRACT (binding, defined BEFORE coding)
|
|
104146
104164
|
|
|
104147
|
-
Define scenarios sized to the change \u2014 1-2 for a small single-surface change, 3+ for risky or multi-surface work \u2014 each with a binary pass condition and the
|
|
104165
|
+
Define scenarios sized to the change \u2014 1-2 for a small single-surface change, 3+ for risky or multi-surface work \u2014 each with a binary pass condition and the existing tests that cover it (read first) and the real-surface scenario that proves it (prose, docs, visual-only: review + real-surface QA, no test). Classes:
|
|
104148
104166
|
- **Happy path** (always)
|
|
104149
104167
|
- **Edge** (boundary, empty, malformed, concurrent \u2014 when risky)
|
|
104150
104168
|
- **Adjacent-surface regression** (callers, sibling endpoints, related modules \u2014 when multi-surface)
|
|
104151
104169
|
|
|
104152
|
-
Scenarios are the contract. Done = every scenario PASSES with
|
|
104170
|
+
Scenarios are the contract. Done = every scenario PASSES with its real-surface artifact captured and the tests of record green.
|
|
104153
104171
|
|
|
104154
104172
|
### DURABLE NOTEPAD
|
|
104155
104173
|
|
|
104156
104174
|
At start: \`NOTE=$(mktemp -t ulw-$(date +%Y%m%d-%H%M%S).XXXXXX.md)\`. Echo the path. APPEND-ONLY sections: Plan, Scenarios, Now, Todo, Findings (file:line), Learnings. If context is lost, re-read and resume \u2014 this is your only durable memory.
|
|
104157
104175
|
|
|
104158
|
-
###
|
|
104159
|
-
|
|
104160
|
-
Every production code change \u2014 features, fixes, refactors, perf, glue, config-with-logic \u2014 follows RED\u2192GREEN\u2192SURFACE. Prose, docs, and visual-only changes have no seam: skip RED\u2192GREEN, prove them through the surface channel.
|
|
104161
|
-
|
|
104162
|
-
1. **RED**: Write the failing test FIRST. Run it. Capture the assertion message that proves it fails for the RIGHT reason (not syntax, not import). Paste RED output into the notepad. No production code yet.
|
|
104163
|
-
2. **GREEN**: Smallest change to flip RED\u2192GREEN. Re-run, capture GREEN output. If GREEN required ~20+ lines, your test was too coarse \u2014 split it.
|
|
104164
|
-
3. **SURFACE**: Exercise the real user-facing surface (CLI / API / build / UI / config). Capture artifact path.
|
|
104165
|
-
4. **REGRESSION**: Re-run the FULL scenario list every increment. Record PASS/FAIL with both artifact paths.
|
|
104166
|
-
|
|
104167
|
-
**Refactors**: write characterization tests pinning current observable behavior FIRST, watch them GREEN against the old code, THEN refactor. Stay green throughout.
|
|
104176
|
+
### TEST DECISION (every production code change)
|
|
104168
104177
|
|
|
104169
|
-
**
|
|
104178
|
+
1. **READ** the tests covering the area BEFORE touching it \u2014 the behavior of record: do they encode the intent, cover this path, pass? One WRONG before your change is a FINDING to report \u2014 NEVER edit a test green. A bug: reproduce it first and capture the failure. A refactor: the existing tests are green on the unchanged code first.
|
|
104179
|
+
2. **CHANGE**: the SMALLEST change that meets the scenario; update the tests it makes stale. Add a test ONLY when BOTH hold: the repository keeps tests for this behavior AND a regression would otherwise pass unnoticed by the run and the existing tests \u2014 sized like its neighbors, never one that restates the change. The run is the proof, not a test that certifies the diff.
|
|
104180
|
+
3. **SURFACE**: Exercise the real user-facing surface (CLI / API / build / UI / config); a reproduction now passes. Capture artifact path.
|
|
104181
|
+
4. **REGRESSION**: Re-run the FULL scenario list plus the step-1 tests every increment. Record PASS/FAIL with artifact paths.
|
|
104170
104182
|
|
|
104171
|
-
|
|
104183
|
+
Prose, docs, and visual-only changes have no seam: prove them through the surface channel, NO test.
|
|
104172
104184
|
|
|
104173
104185
|
### COMMIT DISCIPLINE (MANDATORY)
|
|
104174
104186
|
|
|
104175
|
-
Commit frequently: one atomic commit per verified increment (
|
|
104187
|
+
Commit frequently: one atomic commit per verified increment (change + evidence captured), never one end-of-run omnibus. BEFORE composing each message, study the history and mimic it \u2014 run \`git log --oneline -20\` plus \`git log -5 -- <touched paths>\` \u2014 matching subject shape, scope names, message language, body style, and typical commit size. Skip committing only when the user forbade commits this session.
|
|
104176
104188
|
|
|
104177
104189
|
### Evidence Gates
|
|
104178
104190
|
|
|
104179
104191
|
| Gate | Required Evidence |
|
|
104180
104192
|
|------|-------------------|
|
|
104181
|
-
| **
|
|
104182
|
-
| **
|
|
104183
|
-
| **Surface** | tmux / curl / browser
|
|
104193
|
+
| **Read** | Existing tests for the area noted (intent / coverage / pass) before the change |
|
|
104194
|
+
| **Run** | Tests of record green after it; stale expectations updated |
|
|
104195
|
+
| **Surface** | tmux / curl / browser (omowright) / computer-use / CLI / DB diff artifact path |
|
|
104184
104196
|
| **Build** | Exit code 0 |
|
|
104185
104197
|
| **Suite** | Full run green; no skip/.only/xfail added this turn |
|
|
104186
104198
|
| **Lint** | lsp_diagnostics clean on changed files |
|
|
@@ -104188,13 +104200,13 @@ Commit frequently: one atomic commit per verified increment (RED\u2192GREEN + ev
|
|
|
104188
104200
|
<ANTI_OPTIMISM_CHECKPOINT>
|
|
104189
104201
|
## BEFORE YOU CLAIM DONE, ANSWER HONESTLY:
|
|
104190
104202
|
|
|
104191
|
-
1. Did EVERY scenario reach
|
|
104203
|
+
1. Did EVERY scenario reach surface artifact captured with the tests of record green? (paths in notepad)
|
|
104192
104204
|
2. Did I run \`lsp_diagnostics\` and see ZERO errors on changed files? (not "I'm sure")
|
|
104193
104205
|
3. Did I run the FULL suite and see it PASS? (not "they should pass")
|
|
104194
104206
|
4. Did I read the actual output of every command? (not skim)
|
|
104195
104207
|
5. Is EVERY requirement from the request actually implemented? (re-read the request NOW)
|
|
104196
104208
|
6. Did I classify intent at the start? (if not, my entire approach may be wrong)
|
|
104197
|
-
7. Did I
|
|
104209
|
+
7. Did I add a test that only restates the change, or edit a wrong test green? (if yes, delete it / report the finding)
|
|
104198
104210
|
|
|
104199
104211
|
If ANY answer is no \u2192 GO BACK AND DO IT. Do not claim completion.
|
|
104200
104212
|
</ANTI_OPTIMISM_CHECKPOINT>
|
|
@@ -104219,7 +104231,7 @@ Trigger if user said "\uC5C4\uBC00"/"strictly"/"rigorously"/"properly review", o
|
|
|
104219
104231
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
104220
104232
|
| Changes build output | Run the build. Verify output files exist and are correct. |
|
|
104221
104233
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
104222
|
-
| Renders/changes a page | Drive the REAL page from js eval
|
|
104234
|
+
| Renders/changes a page | Drive the REAL page from js eval with omowright (staged in the \`browser\` skill): the owned engine (\`connectPipe\` on a task-owned profile, \`connectCloakProfile\` for bot-scored targets) for unauthenticated pages, the attached engine (\`connectBrowserSkill()\` in the user's own signed-in browser) when the page needs their login. Capture screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile, and never clone it; if the attached engine is missing, run the browser skill's onboarding script and relay its one human step instead of launching a headless browser. |
|
|
104223
104235
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
104224
104236
|
| Drives a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
104225
104237
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
@@ -104427,17 +104439,14 @@ Before production changes, define scenarios covering:
|
|
|
104427
104439
|
|
|
104428
104440
|
Each scenario needs a binary pass condition. "Looks good" is not a pass condition.
|
|
104429
104441
|
|
|
104430
|
-
##
|
|
104442
|
+
## TEST DECISION
|
|
104431
104443
|
|
|
104432
|
-
|
|
104444
|
+
1. READ: the tests covering the area, before any edit \u2014 intent, coverage, pass. One wrong before your change is a finding, never edited green. A bug: reproduce it first.
|
|
104445
|
+
2. CHANGE: the smallest change; update tests it makes stale. A new test only where the repository keeps tests for this behavior AND a regression would otherwise pass unnoticed \u2014 never one that restates the change.
|
|
104446
|
+
3. SURFACE: exercise the real user path and capture the artifact; a reproduction now passes.
|
|
104447
|
+
4. REGRESSION: rerun the scenario list and the step-1 tests.
|
|
104433
104448
|
|
|
104434
|
-
|
|
104435
|
-
2. GREEN: make the smallest change that flips the test to passing.
|
|
104436
|
-
3. SURFACE: exercise the real user path and capture the artifact.
|
|
104437
|
-
4. REFACTOR: improve structure only while tests stay green.
|
|
104438
|
-
5. REGRESSION: rerun the scenario list.
|
|
104439
|
-
|
|
104440
|
-
Exemptions: pure prompt text, formatting, comment-only edits, version bumps with no behavior delta, and rename-only moves. Justify every exemption in the final report.
|
|
104449
|
+
Prose, docs, and visual-only changes take review + real-surface QA, no test (a test pinning their text is pretend-coverage).
|
|
104441
104450
|
|
|
104442
104451
|
## COMMIT DISCIPLINE
|
|
104443
104452
|
|
|
@@ -104599,8 +104608,8 @@ deep_context = background_output(task_id=...)
|
|
|
104599
104608
|
- If delegating: every child prompt carries GOAL, STOP WHEN (the exact observable condition that ends its run \u2014 the child stops the moment it holds), and EVIDENCE (what it returns so you can verify, not trust) \u2014 plus exhaustive context. Judge the child by its returned EVIDENCE against its STOP WHEN, never by its self-report.
|
|
104600
104609
|
|
|
104601
104610
|
**Verify (per-scenario, not just "at the end"):**
|
|
104602
|
-
-
|
|
104603
|
-
- Real-surface artifact (tmux / curl / browser
|
|
104611
|
+
- Existing tests read (intent / coverage / pass), stale expectations updated
|
|
104612
|
+
- Real-surface artifact (tmux / curl / browser (omowright) / computer-use / CLI / DB diff)
|
|
104604
104613
|
- \`lsp_diagnostics\` clean on modified files
|
|
104605
104614
|
- Full suite green, regression scenarios still PASS
|
|
104606
104615
|
|
|
@@ -104621,17 +104630,13 @@ Maintain a live todo list for every multi-step task: one atomic item per action
|
|
|
104621
104630
|
Define scenarios sized to the change \u2014 1-2 for small single-surface work, 3+ for risky or multi-surface work \u2014 covering: **happy path**, plus **edge** (boundary / empty / malformed / concurrent) and **adjacent-surface regression** when the change is risky or multi-surface. For each, write:
|
|
104622
104631
|
- Binary pass condition ("returns 200 with schema-matching body"), not "should work".
|
|
104623
104632
|
- The real surface that proves it.
|
|
104624
|
-
- The
|
|
104625
|
-
|
|
104626
|
-
Scenarios are the contract. Done = every scenario PASSES with RED\u2192GREEN proof AND real-surface artifact captured. Then declare WHEN TO STOP for the whole run, in one line: "I'll stop right away when <the exact observable state that ends this run>" \u2014 its end state MUST be the full STOP GOAL from the Stop rules, never scenario completion alone. The Stop rules bind to this line \u2014 the moment it holds, you stop.
|
|
104627
|
-
|
|
104628
|
-
## TDD (MANDATORY on every production code change with a test seam)
|
|
104633
|
+
- The existing tests that cover it (see TEST DECISION) and the real-surface scenario that proves it (prose, docs, visual-only: review + real-surface QA, no test).
|
|
104629
104634
|
|
|
104630
|
-
|
|
104635
|
+
Scenarios are the contract. Done = every scenario PASSES with its real-surface artifact captured and the tests of record green. Then declare WHEN TO STOP for the whole run, in one line: "I'll stop right away when <the exact observable state that ends this run>" \u2014 its end state MUST be the full STOP GOAL from the Stop rules, never scenario completion alone. The Stop rules bind to this line \u2014 the moment it holds, you stop.
|
|
104631
104636
|
|
|
104632
|
-
|
|
104637
|
+
## TEST DECISION
|
|
104633
104638
|
|
|
104634
|
-
|
|
104639
|
+
READ the tests covering the area BEFORE touching it \u2014 they are the behavior of record: intent, coverage, pass. One WRONG before your change is a FINDING \u2014 never edit a test green. Reproduce a bug before fixing it; a refactor starts with the existing tests green on the unchanged code. The run proves the change: add a test ONLY where the repository keeps tests for this behavior AND a regression would otherwise pass unnoticed \u2014 sized like its neighbors, never one that restates the change. Prose, docs, and visual-only changes have no test seam: real-surface channel, no test; a test pinning their text is pretend-coverage.
|
|
104635
104640
|
|
|
104636
104641
|
## COMMIT DISCIPLINE
|
|
104637
104642
|
|
|
@@ -104641,8 +104646,8 @@ Commit one atomic commit per verified increment; never one end-of-run omnibus. B
|
|
|
104641
104646
|
|
|
104642
104647
|
| Phase | Action | Required Evidence |
|
|
104643
104648
|
|-------|--------|-------------------|
|
|
104644
|
-
|
|
|
104645
|
-
|
|
|
104649
|
+
| Read | Existing tests for the area, before the change | Intent / coverage / pass noted |
|
|
104650
|
+
| Run | Tests of record after the change | Green; stale expectations updated |
|
|
104646
104651
|
| Surface | Exercise real user path | Artifact path (tmux/curl/browser/...) |
|
|
104647
104652
|
| Build | Run build command | Exit code 0 |
|
|
104648
104653
|
| Suite | Full test run | All green; no skip/.only/xfail added |
|
|
@@ -104658,7 +104663,7 @@ lsp_diagnostics catches type errors only. Logic bugs, missing behavior, broken f
|
|
|
104658
104663
|
| Adds/modifies a CLI command | Run it with Bash. Show output. |
|
|
104659
104664
|
| Changes build output | Run build. Verify output files. |
|
|
104660
104665
|
| Modifies API behavior | Call the endpoint. Show response. |
|
|
104661
|
-
| Renders/changes a page | Drive the page from js eval
|
|
104666
|
+
| Renders/changes a page | Drive the REAL page from js eval with omowright (staged in the \`browser\` skill): the owned engine (\`connectPipe\` on a task-owned profile, \`connectCloakProfile\` for bot-scored targets) for unauthenticated pages, the attached engine (\`connectBrowserSkill()\` in the user's own signed-in browser) when the page needs their login. Screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile, and never clone it; if the attached engine is missing, run the browser skill's onboarding script and relay its one human step instead of launching a headless browser. |
|
|
104662
104667
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
104663
104668
|
| Drives a desktop GUI | Computer use: OS-level GUI automation against the running app. Action log + screenshot. |
|
|
104664
104669
|
| Adds tool/hook/feature | Test end-to-end in a real scenario. |
|
|
@@ -104674,7 +104679,7 @@ Trigger if user said "\uC5C4\uBC00"/"strictly"/"rigorously"/"properly review", o
|
|
|
104674
104679
|
## STOP RULES
|
|
104675
104680
|
|
|
104676
104681
|
- After each result, ask whether the user's core request can now be answered with useful evidence in hand. If yes, answer now \u2014 skip any remaining retrieval, ceremony, or verification that adds no evidence.
|
|
104677
|
-
- The STOP GOAL: every scenario PASSES with
|
|
104682
|
+
- The STOP GOAL: every scenario PASSES with its real-surface artifact captured and the tests of record green; full suite green and \`lsp_diagnostics\` clean on changed files; QA teardown receipts recorded; no scope creep; and (if triggered) the reviewer gate approved unconditionally. Above ALL of that, the decisive test \u2014 outranking every other consideration \u2014 is: is the user's problem ACTUALLY SOLVED in observable behavior? If no, you are NOT done, whatever the checklist says. If yes, deliver the final message and STOP \u2014 no hesitation, no extra verification pass, no polish loop. Work past the stop goal is scope creep, not diligence.
|
|
104678
104683
|
- After 2 identical failed attempts at one step, surface what was tried and ask the user before another retry.
|
|
104679
104684
|
- After 2 parallel exploration waves yield no new useful facts, stop exploring and act.
|
|
104680
104685
|
|
|
@@ -132201,6 +132206,10 @@ function resolveCategoryConfig(categoryName, options) {
|
|
|
132201
132206
|
return null;
|
|
132202
132207
|
}
|
|
132203
132208
|
}
|
|
132209
|
+
if (categoryReq?.requiresAnyModel && availableModels && !hasExplicitUserConfig && !isAnyFallbackModelAvailable(categoryReq.fallbackChain, availableModels)) {
|
|
132210
|
+
log2(`[resolveCategoryConfig] Category ${categoryName} has no available model in its fallback chain`);
|
|
132211
|
+
return null;
|
|
132212
|
+
}
|
|
132204
132213
|
const defaultPromptAppend = CATEGORY_PROMPT_APPENDS[categoryName] ?? "";
|
|
132205
132214
|
if (!defaultConfig && !userConfig) {
|
|
132206
132215
|
return null;
|
|
@@ -132391,6 +132400,16 @@ To use this category:
|
|
|
132391
132400
|
1. Connect a provider with this model: ${requiredModel}
|
|
132392
132401
|
2. Or configure an alternative model in your .omo/omo.jsonc for this category
|
|
132393
132402
|
|
|
132403
|
+
Available categories: ${allCategoryNames}`);
|
|
132404
|
+
}
|
|
132405
|
+
if (categoryExists && requirement?.requiresAnyModel && userCategories?.[categoryName] === undefined) {
|
|
132406
|
+
const chainModels = [...new Set(requirement.fallbackChain.map((entry) => entry.model))].join(", ");
|
|
132407
|
+
return categoryResolutionError(`Category "${categoryName}" has no available model: none of its fallback-chain models (${chainModels}) is available.
|
|
132408
|
+
|
|
132409
|
+
To use this category:
|
|
132410
|
+
1. Connect a provider that serves one of: ${chainModels}
|
|
132411
|
+
2. Or configure a model for this category in your .omo/omo.jsonc
|
|
132412
|
+
|
|
132394
132413
|
Available categories: ${allCategoryNames}`);
|
|
132395
132414
|
}
|
|
132396
132415
|
return categoryResolutionError(`Unknown category: "${categoryName}". Available: ${allCategoryNames}`);
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
# ATTRIBUTION / NOTICE
|
|
2
2
|
|
|
3
|
-
This skill (`browser`, part of `@oh-my-opencode/shared-skills`) is project-original documentation
|
|
4
|
-
|
|
3
|
+
This skill (`browser`, part of `@oh-my-opencode/shared-skills`) is project-original documentation
|
|
4
|
+
plus a staged copy of one library it drives.
|
|
5
|
+
|
|
6
|
+
## omowright — bundled
|
|
7
|
+
|
|
8
|
+
Both engines this skill documents are provided by **omowright**.
|
|
9
|
+
|
|
10
|
+
- Upstream: the `omowright` repository on GitHub, pinned by commit in the root `package.json`
|
|
11
|
+
devDependency.
|
|
12
|
+
- License: MIT
|
|
13
|
+
- What ships here: `runtime/omowright/index.js` (the library bundled into one ESM file, including
|
|
14
|
+
its `ws` and `zod` dependencies) and `runtime/omowright/page-bundle.js` (the in-page snapshot
|
|
15
|
+
script it reads at import time), staged at build time by
|
|
16
|
+
`packages/shared-skills/stage-omowright-runtime.mjs` from the pinned root devDependency, with a
|
|
17
|
+
`manifest.json` recording the version and file digests. The repository holds no copy; the
|
|
18
|
+
staged files are gitignored and packed through the sibling `.npmignore`.
|
|
19
|
+
- omowright's own license notice is preserved inside the bundled file.
|
|
5
20
|
|
|
6
21
|
## BrowserSkill — driven, not vendored
|
|
7
22
|
|
|
8
|
-
The attached engine
|
|
23
|
+
The attached engine reaches the user's browser through **BrowserSkill** by Tencent.
|
|
9
24
|
|
|
10
25
|
- Upstream: https://github.com/Tencent/BrowserSkill
|
|
11
26
|
- License: MIT
|
|
12
|
-
- What ships here:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
MIT permits redistribution; we simply have no reason to, because upstream publishes signed
|
|
18
|
-
per-platform releases and store builds that stay current on their own.
|
|
27
|
+
- What ships here: nothing of upstream's. omowright speaks the daemon's IPC protocol; the user
|
|
28
|
+
installs the `bsk` CLI from upstream's own installer (run by `scripts/browser-install.mjs`) and
|
|
29
|
+
the extension from the Chrome Web Store / Edge Add-ons listings (registered by the same script
|
|
30
|
+
through Chrome's external-extension mechanism). This package never bundles a browser binary or
|
|
31
|
+
an extension payload.
|
|
19
32
|
|
|
20
33
|
## Owned-engine references
|
|
21
34
|
|
|
22
|
-
`references/owned-engine/`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
source is reproduced.
|
|
35
|
+
`references/owned-engine/` summarizes omowright's own skill and presets (escalation ladder,
|
|
36
|
+
network-first reading, frames, dialogs, human handoff) as routing text; the library's repository
|
|
37
|
+
is the authoritative treatment.
|