Summary
I installed opencode-sdlc-wizard into an existing repo and configured a professional OpenCode Zen fallback lane:
- Plan: GPT-5.5 at
xhigh reasoning — opencode/gpt-5.5
- Build: Claude Sonnet 4.6 —
opencode/claude-sonnet-4-6
- Review: GPT-5.5 at
xhigh reasoning — opencode/gpt-5.5 (merge-blocking subagent)
- Provider isolation:
enabled_providers: ["opencode"] so the lane can only use Zen and cannot touch my Claude Code / Codex / ChatGPT subscription pools.
This is a deliberate "third lane": Claude Code + Opus and Codex + GPT-5.5 are lanes 1 and 2; this Zen lane is a separate budget/quota for when those are exhausted.
Why this matters
Lots of developers already run Claude Code and Codex but want a separate, reliable third budget with strict provider isolation. The wizard is a great fit because it enforces Plan -> TDD -> self-review while staying backend-agnostic. The missing piece is a documented, copy-pasteable "Zen professional fallback profile" that wires the three canonical agents (plan/build/review) to specific Zen model IDs with the right reasoning effort and permission sandbox — without a multi-agent swarm.
What worked
- Install was clean and non-destructive. Ran:
npx opencode-sdlc-wizard@latest init --dry-run (preview)
npx opencode-sdlc-wizard@latest init (apply)
- Dry-run output accurately previewed the file set, and the real run reported:
28 installed, 0 overwrote, 1 kept-customized.
- It preserved my existing
AGENTS.md (marked CUSTOMIZED ... kept; rerun with --force to overwrite) instead of clobbering it.
- It detected sibling installs (
claude-sdlc-wizard in .claude/, codex-sdlc-wizard in .codex/) and correctly noted .opencode/ coexists.
- It did not write
opencode.json (backend selection is opt-in), so there was zero conflict with the config I hand-wrote.
opencode debug config parsed/merged the final config with no errors; reasoningEffort: "xhigh" and textVerbosity: "low" survived the merge on both the plan and review agents.
Friction / questions
-
Zen has two different opencode provider shapes — this is the biggest doc gap.
.opencode/scripts/configure-backend.sh (tier managed/opencode) writes a custom OpenAI-compatible provider block: npm: "@ai-sdk/openai-compatible", baseURL: https://opencode.ai/zen/v1, apiKey: {env:OPENCODE_ZEN_API_KEY}.
- But many users already have the built-in
opencode (Zen) provider authenticated via OAuth/login (it shows up in auth.json as provider opencode, and opencode/<model> IDs resolve natively). That path needs no provider block and no env var — just enabled_providers: ["opencode"].
- If a user on the built-in/OAuth path runs
configure-backend.sh, they get a config that expects OPENCODE_ZEN_API_KEY, which they may not have set. Suggest documenting both paths and detecting which one is already active.
-
Model ID discovery. opencode models is the source of truth and worked great. Most guessed IDs matched exactly (opencode/gpt-5.5, opencode/claude-sonnet-4-6, opencode/deepseek-v4-flash, opencode/gpt-5.5-pro, opencode/gemini-3.5-flash, opencode/kimi-k2.6, opencode/big-pickle). Ambiguous ones worth calling out in a recipe: Claude Opus ships several (claude-opus-4-1/4-5/4-6/4-7/4-8) and Qwen ships qwen3.5-plus / qwen3.6-plus — a recipe should say "pick the newest" or pin explicitly.
-
reasoningEffort xhigh mechanism. Confirmed via docs that agent-level reasoningEffort + textVerbosity pass through as model options, and xhigh is a built-in OpenAI variant. This works for Zen's opencode/gpt-5.5. A short note in the wizard docs ("for xhigh planning/review, set reasoningEffort: "xhigh" on the agent, not a separate variant") would save time.
-
Permission shorthand vs. requirements. A naive "bash": "ask" on an agent neither allows safe commands nor denies destructive ones — it just prompts. To actually get "allow tests/lint/typecheck, deny git push/rm/reset --hard/clean", I used self-contained per-agent bash maps with explicit allow+deny rules (matching the docs example that restates rules per agent). A recipe should show this pattern rather than the shorthand.
-
Python repo defaults. The wizard's testing templates are great, but the permission examples skew toward npm/pnpm/yarn. For this Python/FastAPI repo I had to add pytest / ruff check / mypy (and .venv/bin/*) allow rules myself.
Suggested docs addition
Add a "Zen professional fallback profile" recipe page:
- Plan: GPT-5.5
xhigh (opencode/gpt-5.5, read-only — edit: deny)
- Build: Claude Sonnet 4.6 (
opencode/claude-sonnet-4-6, edit: ask)
- Review: GPT-5.5
xhigh (opencode/gpt-5.5, subagent, read-only, merge-blocking)
small_model: opencode/deepseek-v4-flash
- Emergency: GPT-5.5 Pro (
opencode/gpt-5.5-pro) / Claude Opus (opencode/claude-opus-4-8)
- Cheap experiments:
opencode/gemini-3.5-flash, opencode/kimi-k2.6, opencode/qwen3.6-plus, opencode/deepseek-v4-flash, opencode/big-pickle — with a privacy warning (free/experimental models: no proprietary/client code)
enabled_providers: ["opencode"] for Zen-only isolation (call out built-in OAuth vs. env-key paths)
- Self-contained per-agent permission maps (allow safe tests/lint/typecheck, deny
git push/rm/reset --hard/clean)
- Three simple commands (
/plan-feature, /driver-task, /final-review) — explicitly no multi-agent swarm, just Plan -> Build -> Review.
Environment
- OpenCode: 1.16.2
- opencode-sdlc-wizard: 0.13.4
- OS: macOS 15.1 (24B83), arm64
- Node / npm: v25.9.0 / 11.12.1
- Zen model IDs available (
opencode models): opencode/gpt-5.5, opencode/gpt-5.5-pro, opencode/claude-sonnet-4-6, opencode/claude-opus-4-8 (+ 4-1/4-5/4-6/4-7), opencode/deepseek-v4-flash (+ -free), opencode/gemini-3.5-flash, opencode/kimi-k2.6, opencode/qwen3.6-plus (+ qwen3.5-plus), opencode/big-pickle, plus the gpt-5.x / codex / glm / minimax / grok families.
Summary
I installed
opencode-sdlc-wizardinto an existing repo and configured a professional OpenCode Zen fallback lane:xhighreasoning —opencode/gpt-5.5opencode/claude-sonnet-4-6xhighreasoning —opencode/gpt-5.5(merge-blocking subagent)enabled_providers: ["opencode"]so the lane can only use Zen and cannot touch my Claude Code / Codex / ChatGPT subscription pools.This is a deliberate "third lane": Claude Code + Opus and Codex + GPT-5.5 are lanes 1 and 2; this Zen lane is a separate budget/quota for when those are exhausted.
Why this matters
Lots of developers already run Claude Code and Codex but want a separate, reliable third budget with strict provider isolation. The wizard is a great fit because it enforces Plan -> TDD -> self-review while staying backend-agnostic. The missing piece is a documented, copy-pasteable "Zen professional fallback profile" that wires the three canonical agents (plan/build/review) to specific Zen model IDs with the right reasoning effort and permission sandbox — without a multi-agent swarm.
What worked
npx opencode-sdlc-wizard@latest init --dry-run(preview)npx opencode-sdlc-wizard@latest init(apply)28 installed, 0 overwrote, 1 kept-customized.AGENTS.md(markedCUSTOMIZED ... kept; rerun with --force to overwrite) instead of clobbering it.claude-sdlc-wizardin.claude/,codex-sdlc-wizardin.codex/) and correctly noted.opencode/coexists.opencode.json(backend selection is opt-in), so there was zero conflict with the config I hand-wrote.opencode debug configparsed/merged the final config with no errors;reasoningEffort: "xhigh"andtextVerbosity: "low"survived the merge on both theplanandreviewagents.Friction / questions
Zen has two different
opencodeprovider shapes — this is the biggest doc gap..opencode/scripts/configure-backend.sh(tiermanaged/opencode) writes a custom OpenAI-compatible provider block:npm: "@ai-sdk/openai-compatible",baseURL: https://opencode.ai/zen/v1,apiKey: {env:OPENCODE_ZEN_API_KEY}.opencode(Zen) provider authenticated via OAuth/login (it shows up inauth.jsonas provideropencode, andopencode/<model>IDs resolve natively). That path needs no provider block and no env var — justenabled_providers: ["opencode"].configure-backend.sh, they get a config that expectsOPENCODE_ZEN_API_KEY, which they may not have set. Suggest documenting both paths and detecting which one is already active.Model ID discovery.
opencode modelsis the source of truth and worked great. Most guessed IDs matched exactly (opencode/gpt-5.5,opencode/claude-sonnet-4-6,opencode/deepseek-v4-flash,opencode/gpt-5.5-pro,opencode/gemini-3.5-flash,opencode/kimi-k2.6,opencode/big-pickle). Ambiguous ones worth calling out in a recipe: Claude Opus ships several (claude-opus-4-1/4-5/4-6/4-7/4-8) and Qwen shipsqwen3.5-plus/qwen3.6-plus— a recipe should say "pick the newest" or pin explicitly.reasoningEffortxhigh mechanism. Confirmed via docs that agent-levelreasoningEffort+textVerbositypass through as model options, andxhighis a built-in OpenAI variant. This works for Zen'sopencode/gpt-5.5. A short note in the wizard docs ("for xhigh planning/review, setreasoningEffort: "xhigh"on the agent, not a separate variant") would save time.Permission shorthand vs. requirements. A naive
"bash": "ask"on an agent neither allows safe commands nor denies destructive ones — it just prompts. To actually get "allow tests/lint/typecheck, denygit push/rm/reset --hard/clean", I used self-contained per-agent bash maps with explicit allow+deny rules (matching the docs example that restates rules per agent). A recipe should show this pattern rather than the shorthand.Python repo defaults. The wizard's testing templates are great, but the permission examples skew toward
npm/pnpm/yarn. For this Python/FastAPI repo I had to addpytest/ruff check/mypy(and.venv/bin/*) allow rules myself.Suggested docs addition
Add a "Zen professional fallback profile" recipe page:
xhigh(opencode/gpt-5.5, read-only —edit: deny)opencode/claude-sonnet-4-6,edit: ask)xhigh(opencode/gpt-5.5, subagent, read-only, merge-blocking)small_model:opencode/deepseek-v4-flashopencode/gpt-5.5-pro) / Claude Opus (opencode/claude-opus-4-8)opencode/gemini-3.5-flash,opencode/kimi-k2.6,opencode/qwen3.6-plus,opencode/deepseek-v4-flash,opencode/big-pickle— with a privacy warning (free/experimental models: no proprietary/client code)enabled_providers: ["opencode"]for Zen-only isolation (call out built-in OAuth vs. env-key paths)git push/rm/reset --hard/clean)/plan-feature,/driver-task,/final-review) — explicitly no multi-agent swarm, just Plan -> Build -> Review.Environment
opencode models):opencode/gpt-5.5,opencode/gpt-5.5-pro,opencode/claude-sonnet-4-6,opencode/claude-opus-4-8(+ 4-1/4-5/4-6/4-7),opencode/deepseek-v4-flash(+-free),opencode/gemini-3.5-flash,opencode/kimi-k2.6,opencode/qwen3.6-plus(+qwen3.5-plus),opencode/big-pickle, plus the gpt-5.x / codex / glm / minimax / grok families.