oh-my-opencode 5.0.0-beta.86 → 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/hyperplan/SKILL.md +1 -1
- package/.opencode/skills/hyperplan/SKILL.md +1 -1
- package/dist/cli/index.js +27 -21
- package/dist/cli-node/index.js +27 -21
- package/dist/index.js +85 -87
- 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 +6 -3
- 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
|
@@ -20238,7 +20238,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20238
20238
|
},
|
|
20239
20239
|
quick: {
|
|
20240
20240
|
fallbackChain: [
|
|
20241
|
-
{ providers: ["chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20241
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
20242
20242
|
{ providers: ["deepseek"], model: "deepseek-flash", variant: "off" },
|
|
20243
20243
|
{
|
|
20244
20244
|
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
|
|
@@ -20283,7 +20283,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20283
20283
|
{
|
|
20284
20284
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
20285
20285
|
model: "claude-opus-5-5",
|
|
20286
|
-
variant: "
|
|
20286
|
+
variant: "medium"
|
|
20287
20287
|
},
|
|
20288
20288
|
{ providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
|
|
20289
20289
|
{
|
|
@@ -20294,6 +20294,7 @@ var CATEGORY_MODEL_REQUIREMENTS = {
|
|
|
20294
20294
|
]
|
|
20295
20295
|
},
|
|
20296
20296
|
writing: {
|
|
20297
|
+
requiresAnyModel: true,
|
|
20297
20298
|
fallbackChain: [
|
|
20298
20299
|
{
|
|
20299
20300
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
@@ -23561,6 +23562,8 @@ function isRecord9(value) {
|
|
|
23561
23562
|
}
|
|
23562
23563
|
var OmoModelProfileInputSchema = z9.object({
|
|
23563
23564
|
display_name: z9.string().optional(),
|
|
23565
|
+
family: z9.enum(["daily", "geeky"]).optional(),
|
|
23566
|
+
tier: z9.enum(["normal", "heavy"]).optional(),
|
|
23564
23567
|
models: z9.array(z9.union([z9.string(), OmoFallbackModelObjectSchema])).optional()
|
|
23565
23568
|
}).strict();
|
|
23566
23569
|
var OmoModelProfileSchema = z9.preprocess((value) => isRecord9(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
@@ -27357,7 +27360,7 @@ var OPENAI_CATEGORIES = [
|
|
|
27357
27360
|
},
|
|
27358
27361
|
{
|
|
27359
27362
|
name: "unspecified-high",
|
|
27360
|
-
config: { model: "anthropic/claude-opus-5-5", variant: "
|
|
27363
|
+
config: { model: "anthropic/claude-opus-5-5", variant: "medium" },
|
|
27361
27364
|
description: "Tasks that don't fit other categories, high effort required",
|
|
27362
27365
|
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
27363
27366
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -97712,7 +97715,7 @@ function getCachedVersion(options = {}) {
|
|
|
97712
97715
|
// package.json
|
|
97713
97716
|
var package_default = {
|
|
97714
97717
|
name: "oh-my-opencode",
|
|
97715
|
-
version: "5.0.0-beta.
|
|
97718
|
+
version: "5.0.0-beta.87",
|
|
97716
97719
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
97717
97720
|
main: "./dist/index.js",
|
|
97718
97721
|
types: "dist/index.d.ts",
|
|
@@ -97895,7 +97898,7 @@ var package_default = {
|
|
|
97895
97898
|
zod: "^4.6.5"
|
|
97896
97899
|
},
|
|
97897
97900
|
devDependencies: {
|
|
97898
|
-
"@code-yeongyu/senpi": "2026.9.23-
|
|
97901
|
+
"@code-yeongyu/senpi": "2026.9.23-4",
|
|
97899
97902
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
97900
97903
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
97901
97904
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -97931,22 +97934,23 @@ var package_default = {
|
|
|
97931
97934
|
"@xterm/xterm": "^6.0.0",
|
|
97932
97935
|
"bun-types": "1.4.2",
|
|
97933
97936
|
"node-pty": "^1.1.0",
|
|
97937
|
+
omowright: "github:code-yeongyu/omowright#25781c8ac04f9aae358b06551520b792ac45c6ed",
|
|
97934
97938
|
"puppeteer-core": "^25.11.0",
|
|
97935
97939
|
typescript: "^7.0.2"
|
|
97936
97940
|
},
|
|
97937
97941
|
optionalDependencies: {
|
|
97938
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
97939
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
97940
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
97941
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
97942
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
97943
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
97944
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
97945
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
97946
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
97947
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
97948
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
97949
|
-
"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"
|
|
97950
97954
|
},
|
|
97951
97955
|
overrides: {
|
|
97952
97956
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -103787,9 +103791,9 @@ task(category="quick", load_skills=["git-master"], run_in_background=true)
|
|
|
103787
103791
|
|
|
103788
103792
|
## EXECUTION RULES
|
|
103789
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.
|
|
103790
|
-
- GOOD pair (
|
|
103791
|
-
- BAD: "Implement feature" / "Fix bug" / "Add tests later"
|
|
103792
|
-
- **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.
|
|
103793
103797
|
- **BACKGROUND FIRST**: Use task for exploration/research agents (10+ concurrent if needed).
|
|
103794
103798
|
- **VERIFY**: Re-read request after completion. Check every scenario PASS with both artifacts captured.
|
|
103795
103799
|
- **DELEGATE**: Don't do everything yourself \u2014 orchestrate specialized agents for their strengths.
|
|
@@ -103820,10 +103824,10 @@ BEFORE writing ANY code, define realistic scenarios sized to the change \u2014 *
|
|
|
103820
103824
|
|
|
103821
103825
|
Each scenario MUST specify, upfront:
|
|
103822
103826
|
- Pass condition as a binary observable ("returns 200 + body matches schema"), not "should work".
|
|
103823
|
-
- The REAL surface that proves it: tmux transcript, curl status+body, browser
|
|
103824
|
-
- 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.
|
|
103825
103829
|
|
|
103826
|
-
**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.
|
|
103827
103831
|
|
|
103828
103832
|
### Durable Notepad (survives context loss)
|
|
103829
103833
|
|
|
@@ -103849,12 +103853,12 @@ Every scenario requires TWO captured artifacts \u2014 both mandatory:
|
|
|
103849
103853
|
|
|
103850
103854
|
| Artifact | Source | Captures |
|
|
103851
103855
|
|----------|--------|----------|
|
|
103852
|
-
| **
|
|
103853
|
-
| **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 |
|
|
103854
103858
|
|
|
103855
103859
|
Supporting (necessary, not sufficient): build exit 0, full suite green, lsp_diagnostics clean on changed files, regression scenarios still PASS.
|
|
103856
103860
|
|
|
103857
|
-
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.
|
|
103858
103862
|
|
|
103859
103863
|
<MANUAL_QA_MANDATE>
|
|
103860
103864
|
### YOU MUST EXECUTE MANUAL QA YOURSELF. THIS IS NOT OPTIONAL.
|
|
@@ -103868,7 +103872,7 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
103868
103872
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
103869
103873
|
| Changes build output | Run the build. Verify the output files exist and are correct. |
|
|
103870
103874
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
103871
|
-
| 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. |
|
|
103872
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. |
|
|
103873
103877
|
| Changes a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
103874
103878
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
@@ -103888,36 +103892,29 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
103888
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.
|
|
103889
103893
|
</MANUAL_QA_MANDATE>
|
|
103890
103894
|
|
|
103891
|
-
###
|
|
103892
|
-
|
|
103893
|
-
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.
|
|
103894
|
-
|
|
103895
|
-
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.
|
|
103896
|
-
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.
|
|
103897
|
-
3. **SURFACE**: Exercise the real user-facing surface named by the scenario. Capture artifact path into the notepad.
|
|
103898
|
-
4. **REFACTOR**: Optional, only if needed. Tests MUST stay green throughout.
|
|
103899
|
-
5. **REGRESSION**: Re-run the FULL scenario list. Record PASS/FAIL inline with both evidence paths.
|
|
103895
|
+
### Test Decision (every production code change)
|
|
103900
103896
|
|
|
103901
|
-
**
|
|
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.
|
|
103902
103901
|
|
|
103903
|
-
|
|
103904
|
-
|
|
103905
|
-
**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.
|
|
103906
103903
|
|
|
103907
103904
|
### Commit Discipline (MANDATORY)
|
|
103908
103905
|
|
|
103909
|
-
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.
|
|
103910
103907
|
|
|
103911
103908
|
### Verification Anti-Patterns (BLOCKING)
|
|
103912
103909
|
|
|
103913
103910
|
| Violation | Why It Fails |
|
|
103914
103911
|
|-----------|--------------|
|
|
103915
103912
|
| "It should work now" | No evidence. Run it. |
|
|
103916
|
-
| "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. |
|
|
103917
103914
|
| "Fixed the bug" | What scenario proves it? Where's the artifact? |
|
|
103918
103915
|
| "Implementation complete" | Every scenario PASS with both artifacts captured? |
|
|
103919
103916
|
| Skipping test execution | Tests exist to be RUN, not just written |
|
|
103920
|
-
|
|
|
103917
|
+
| A test that restates the change | Cannot fail for any regression \u2014 delete it; the run is the proof |
|
|
103921
103918
|
|
|
103922
103919
|
**CLAIM NOTHING WITHOUT PROOF. EXECUTE. VERIFY. SHOW EVIDENCE.**
|
|
103923
103920
|
|
|
@@ -104165,43 +104162,37 @@ When the \`create_goal\` tool exists, you MUST register the run's goal with it B
|
|
|
104165
104162
|
|
|
104166
104163
|
### SCENARIO CONTRACT (binding, defined BEFORE coding)
|
|
104167
104164
|
|
|
104168
|
-
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:
|
|
104169
104166
|
- **Happy path** (always)
|
|
104170
104167
|
- **Edge** (boundary, empty, malformed, concurrent \u2014 when risky)
|
|
104171
104168
|
- **Adjacent-surface regression** (callers, sibling endpoints, related modules \u2014 when multi-surface)
|
|
104172
104169
|
|
|
104173
|
-
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.
|
|
104174
104171
|
|
|
104175
104172
|
### DURABLE NOTEPAD
|
|
104176
104173
|
|
|
104177
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.
|
|
104178
104175
|
|
|
104179
|
-
###
|
|
104180
|
-
|
|
104181
|
-
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.
|
|
104182
|
-
|
|
104183
|
-
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.
|
|
104184
|
-
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.
|
|
104185
|
-
3. **SURFACE**: Exercise the real user-facing surface (CLI / API / build / UI / config). Capture artifact path.
|
|
104186
|
-
4. **REGRESSION**: Re-run the FULL scenario list every increment. Record PASS/FAIL with both artifact paths.
|
|
104176
|
+
### TEST DECISION (every production code change)
|
|
104187
104177
|
|
|
104188
|
-
**
|
|
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.
|
|
104189
104182
|
|
|
104190
|
-
|
|
104191
|
-
|
|
104192
|
-
**If you typed production code without a failing test preceding it: STOP, revert, write the test, watch it fail, then redo.** No exceptions \u2014 "obvious" / "one-liner" / "too small" do NOT exempt you.
|
|
104183
|
+
Prose, docs, and visual-only changes have no seam: prove them through the surface channel, NO test.
|
|
104193
104184
|
|
|
104194
104185
|
### COMMIT DISCIPLINE (MANDATORY)
|
|
104195
104186
|
|
|
104196
|
-
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.
|
|
104197
104188
|
|
|
104198
104189
|
### Evidence Gates
|
|
104199
104190
|
|
|
104200
104191
|
| Gate | Required Evidence |
|
|
104201
104192
|
|------|-------------------|
|
|
104202
|
-
| **
|
|
104203
|
-
| **
|
|
104204
|
-
| **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 |
|
|
104205
104196
|
| **Build** | Exit code 0 |
|
|
104206
104197
|
| **Suite** | Full run green; no skip/.only/xfail added this turn |
|
|
104207
104198
|
| **Lint** | lsp_diagnostics clean on changed files |
|
|
@@ -104209,13 +104200,13 @@ Commit frequently: one atomic commit per verified increment (RED\u2192GREEN + ev
|
|
|
104209
104200
|
<ANTI_OPTIMISM_CHECKPOINT>
|
|
104210
104201
|
## BEFORE YOU CLAIM DONE, ANSWER HONESTLY:
|
|
104211
104202
|
|
|
104212
|
-
1. Did EVERY scenario reach
|
|
104203
|
+
1. Did EVERY scenario reach surface artifact captured with the tests of record green? (paths in notepad)
|
|
104213
104204
|
2. Did I run \`lsp_diagnostics\` and see ZERO errors on changed files? (not "I'm sure")
|
|
104214
104205
|
3. Did I run the FULL suite and see it PASS? (not "they should pass")
|
|
104215
104206
|
4. Did I read the actual output of every command? (not skim)
|
|
104216
104207
|
5. Is EVERY requirement from the request actually implemented? (re-read the request NOW)
|
|
104217
104208
|
6. Did I classify intent at the start? (if not, my entire approach may be wrong)
|
|
104218
|
-
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)
|
|
104219
104210
|
|
|
104220
104211
|
If ANY answer is no \u2192 GO BACK AND DO IT. Do not claim completion.
|
|
104221
104212
|
</ANTI_OPTIMISM_CHECKPOINT>
|
|
@@ -104240,7 +104231,7 @@ Trigger if user said "\uC5C4\uBC00"/"strictly"/"rigorously"/"properly review", o
|
|
|
104240
104231
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
104241
104232
|
| Changes build output | Run the build. Verify output files exist and are correct. |
|
|
104242
104233
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
104243
|
-
| 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. |
|
|
104244
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. |
|
|
104245
104236
|
| Drives a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
104246
104237
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
@@ -104448,17 +104439,14 @@ Before production changes, define scenarios covering:
|
|
|
104448
104439
|
|
|
104449
104440
|
Each scenario needs a binary pass condition. "Looks good" is not a pass condition.
|
|
104450
104441
|
|
|
104451
|
-
##
|
|
104452
|
-
|
|
104453
|
-
TDD is mandatory on production code changes with a test seam; prose, docs, and visual-only changes take review + real-surface QA instead (a test pinning their text is pretend-coverage).
|
|
104442
|
+
## TEST DECISION
|
|
104454
104443
|
|
|
104455
|
-
1.
|
|
104456
|
-
2.
|
|
104457
|
-
3. SURFACE: exercise the real user path and capture the artifact.
|
|
104458
|
-
4.
|
|
104459
|
-
5. REGRESSION: rerun the scenario list.
|
|
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.
|
|
104460
104448
|
|
|
104461
|
-
|
|
104449
|
+
Prose, docs, and visual-only changes take review + real-surface QA, no test (a test pinning their text is pretend-coverage).
|
|
104462
104450
|
|
|
104463
104451
|
## COMMIT DISCIPLINE
|
|
104464
104452
|
|
|
@@ -104620,8 +104608,8 @@ deep_context = background_output(task_id=...)
|
|
|
104620
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.
|
|
104621
104609
|
|
|
104622
104610
|
**Verify (per-scenario, not just "at the end"):**
|
|
104623
|
-
-
|
|
104624
|
-
- 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)
|
|
104625
104613
|
- \`lsp_diagnostics\` clean on modified files
|
|
104626
104614
|
- Full suite green, regression scenarios still PASS
|
|
104627
104615
|
|
|
@@ -104642,17 +104630,13 @@ Maintain a live todo list for every multi-step task: one atomic item per action
|
|
|
104642
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:
|
|
104643
104631
|
- Binary pass condition ("returns 200 with schema-matching body"), not "should work".
|
|
104644
104632
|
- The real surface that proves it.
|
|
104645
|
-
- The
|
|
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).
|
|
104646
104634
|
|
|
104647
|
-
Scenarios are the contract. Done = every scenario PASSES with
|
|
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.
|
|
104648
104636
|
|
|
104649
|
-
##
|
|
104637
|
+
## TEST DECISION
|
|
104650
104638
|
|
|
104651
|
-
|
|
104652
|
-
|
|
104653
|
-
Refactors of behavior whose regressions the change could hide: write characterization tests pinning current behavior FIRST, watch them GREEN against old code, THEN refactor. They stay green throughout.
|
|
104654
|
-
|
|
104655
|
-
Exemption whitelist (no new test required): formatting, comment-only, version bumps with no behavior delta, rename-only. Each must be justified in writing. Unjustified exemption is rejection.
|
|
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.
|
|
104656
104640
|
|
|
104657
104641
|
## COMMIT DISCIPLINE
|
|
104658
104642
|
|
|
@@ -104662,8 +104646,8 @@ Commit one atomic commit per verified increment; never one end-of-run omnibus. B
|
|
|
104662
104646
|
|
|
104663
104647
|
| Phase | Action | Required Evidence |
|
|
104664
104648
|
|-------|--------|-------------------|
|
|
104665
|
-
|
|
|
104666
|
-
|
|
|
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 |
|
|
104667
104651
|
| Surface | Exercise real user path | Artifact path (tmux/curl/browser/...) |
|
|
104668
104652
|
| Build | Run build command | Exit code 0 |
|
|
104669
104653
|
| Suite | Full test run | All green; no skip/.only/xfail added |
|
|
@@ -104679,7 +104663,7 @@ lsp_diagnostics catches type errors only. Logic bugs, missing behavior, broken f
|
|
|
104679
104663
|
| Adds/modifies a CLI command | Run it with Bash. Show output. |
|
|
104680
104664
|
| Changes build output | Run build. Verify output files. |
|
|
104681
104665
|
| Modifies API behavior | Call the endpoint. Show response. |
|
|
104682
|
-
| 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. |
|
|
104683
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. |
|
|
104684
104668
|
| Drives a desktop GUI | Computer use: OS-level GUI automation against the running app. Action log + screenshot. |
|
|
104685
104669
|
| Adds tool/hook/feature | Test end-to-end in a real scenario. |
|
|
@@ -104695,7 +104679,7 @@ Trigger if user said "\uC5C4\uBC00"/"strictly"/"rigorously"/"properly review", o
|
|
|
104695
104679
|
## STOP RULES
|
|
104696
104680
|
|
|
104697
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.
|
|
104698
|
-
- 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.
|
|
104699
104683
|
- After 2 identical failed attempts at one step, surface what was tried and ask the user before another retry.
|
|
104700
104684
|
- After 2 parallel exploration waves yield no new useful facts, stop exploring and act.
|
|
104701
104685
|
|
|
@@ -132222,6 +132206,10 @@ function resolveCategoryConfig(categoryName, options) {
|
|
|
132222
132206
|
return null;
|
|
132223
132207
|
}
|
|
132224
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
|
+
}
|
|
132225
132213
|
const defaultPromptAppend = CATEGORY_PROMPT_APPENDS[categoryName] ?? "";
|
|
132226
132214
|
if (!defaultConfig && !userConfig) {
|
|
132227
132215
|
return null;
|
|
@@ -132412,6 +132400,16 @@ To use this category:
|
|
|
132412
132400
|
1. Connect a provider with this model: ${requiredModel}
|
|
132413
132401
|
2. Or configure an alternative model in your .omo/omo.jsonc for this category
|
|
132414
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
|
+
|
|
132415
132413
|
Available categories: ${allCategoryNames}`);
|
|
132416
132414
|
}
|
|
132417
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.
|