@tudeorangbiasa/sdd-multiagent-opencode 0.2.0 → 0.2.2

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.
@@ -28,6 +28,13 @@ Implement an existing change from `specs/active/<change-id>/`.
28
28
  - Verify with the commands listed in `design.md` when available.
29
29
  - Stop on blockers. Do not silently skip tasks.
30
30
 
31
+ ## Test Integrity
32
+
33
+ - **Source of Truth**: The "Test Spec" table in `tasks.md` defines the exact test cases. You must implement every row in that table.
34
+ - **No Weakening**: You are FORBIDDEN from modifying test assertions (e.g., changing `toBe(401)` to `toBeTruthy()`, or removing edge cases) to make a test pass.
35
+ - **Fix Implementation, Not Test**: If a test fails, fix the source code (`src/...`), NOT the test code (`*.test.ts`).
36
+ - **Report Mismatches**: If you believe the Test Spec in `tasks.md` is incorrect, STOP and report it as a blocker. Do not silently change the test to fit your implementation.
37
+
31
38
  ## Context Safety
32
39
 
33
40
  - Treat `tasks.md` and `progress.md` as the source of truth, not chat history.
@@ -77,6 +77,7 @@ Keep artifacts short enough to review. Prefer concrete bullets over generic proc
77
77
  - Dependencies, if any
78
78
  - Test or verification step for each phase
79
79
  - Suggested execution mode: sequential or parallel-safe groups
80
+ - **Structured Test Specifications**: For tasks involving logic, include a Markdown table with columns: `Scenario`, `Input`, `Expected Output`, `Mock Requirement`. The implementer must translate this table exactly into code.
80
81
 
81
82
  `progress.md` for large changes must include:
82
83
  - Current phase
@@ -0,0 +1,165 @@
1
+ ---
2
+ description: Quick one-shot fix for cosmetic/config changes with lightweight verification
3
+ agent: sdd-implementer
4
+ ---
5
+
6
+ Execute a small, safe change with minimal overhead. No full spec artifacts required.
7
+
8
+ ## Usage
9
+
10
+ ```text
11
+ /sdd-quick "fix typo: succesful -> successful"
12
+ /sdd-quick "rename isLoading to isFetching in auth.ts"
13
+ ```
14
+
15
+ ## Phase 1: Rule-Based Change Classification
16
+
17
+ Do NOT guess the change type. Classify using these deterministic rules, evaluated in order. The first matching rule wins.
18
+
19
+ ### Force → CONTRACT (❌ Abort → suggest `/sdd-propose`)
20
+ - Change to any exported function, class, interface, or type name
21
+ - Change to any file matching: `**/api/**`, `**/dto/**`, `**/schema/**`, `**/types/public-api.ts`, `**/graphql/types.ts`
22
+ - Change to function signature (add/remove/rename parameter)
23
+ - Change to any file explicitly marked as `@public` or `@api` in JSDoc
24
+
25
+ ### Force → LOGIC (❌ Abort → suggest `/sdd-propose`)
26
+ - ANY change to operators: `>`, `<`, `>=`, `<=`, `==`, `===`, `!=`, `!==`, `&&`, `||`, `!`, `?:`
27
+ - ANY change to control flow keywords: `if`, `else`, `switch`, `case`, `for`, `while`, `return`, `throw`, `try`, `catch`, `finally`
28
+ - ANY change to a condition expression or boolean logic
29
+ - ANY change to calculation or math expression
30
+ - Adding or removing a function call
31
+ - Changing a function's return value
32
+
33
+ ### Force → CONFIG (⚠️ Allowed with warning)
34
+ - Change to constant value, env var, feature flag, or config file (`*.config.*`, `.env`, `*.json`)
35
+ - Change to a string that is NOT rendered in a UI component
36
+
37
+ ### Default → COSMETIC (✅ Allowed)
38
+ - Typo fix in string literal or comment
39
+ - Whitespace or formatting change
40
+ - Internal variable rename (not exported)
41
+ - Import reordering or unused import removal
42
+ - Dead code removal
43
+ - Comment addition or update
44
+
45
+ If the change matches CONTRACT or LOGIC, STOP immediately. Do not proceed. Report why and suggest `/sdd-propose`.
46
+
47
+ ## Phase 2: Pre-Flight Checks
48
+
49
+ ### Lock File Check
50
+ 1. Check if `specs/.sdd-lock` exists.
51
+ 2. If it exists:
52
+ - Read the PID from the lock file.
53
+ - Check if that process is still running (`ps -p <PID>` or equivalent).
54
+ - If PID is alive → Warn: "Another SDD process is active. Proceed anyway? (yes/no)"
55
+ - If PID is dead → Remove stale lock and continue.
56
+ 3. If no lock exists → Create `specs/.sdd-lock` with current PID and command name.
57
+
58
+ ### Cross-File Impact Scan
59
+ 1. Identify the symbol, string, or pattern that will change.
60
+ 2. Run a project-wide grep for that pattern.
61
+ 3. Count references:
62
+ - ≤ 5 references → ✅ Continue
63
+ - > 5 references → ⚠️ Flag as "Ripple Risk", show user the affected files, ask for confirmation before proceeding.
64
+
65
+ ### String Length Check (for string changes only)
66
+ 1. Calculate the length delta: `|new_length - old_length|`
67
+ 2. Calculate percentage change: `delta / old_length * 100`
68
+ 3. If delta > 20 characters OR percentage increase > 50%:
69
+ - Flag as "UI Layout Risk"
70
+ - Check if the string is in a UI component file (`.tsx`, `.vue`, `.jsx`, `.svelte`)
71
+ - If in UI component → Require explicit user confirmation before proceeding
72
+ 4. If the string is in a non-UI file (`.ts` logic, config, etc.) → Allow without flag
73
+
74
+ ## Phase 3: Execute Change
75
+
76
+ - Make the smallest possible change that satisfies the request.
77
+ - Do NOT touch any file beyond what is strictly necessary.
78
+ - Do NOT create new files.
79
+ - Do NOT refactor or "improve" surrounding code.
80
+ - Do NOT change logic, only what was explicitly requested.
81
+
82
+ ## Phase 4: Verification
83
+
84
+ ### Mandatory Checks
85
+ Run the project's available verification commands. Check `package.json` scripts or equivalent:
86
+
87
+ 1. **Lint**: `npm run lint` (or `pnpm lint`, `yarn lint`, etc.)
88
+ 2. **Typecheck**: `npm run typecheck` (or `tsc --noEmit`, `vue-tsc`, etc.)
89
+
90
+ ### Decision Table
91
+ | Result | Action |
92
+ |--------|--------|
93
+ | Both pass | ✅ Continue to Phase 5 |
94
+ | Lint fails | ❌ Auto-revert all changes, report failure |
95
+ | Typecheck fails | ❌ Auto-revert all changes, report failure |
96
+ | Test fails (if run) | ⚠️ Check if failure is pre-existing or caused by this change. If caused by this change → auto-revert. If pre-existing → allow with warning. |
97
+
98
+ If the project has NO lint or typecheck script → ❌ Reject, suggest `/sdd-propose` (project lacks safety net for quick changes).
99
+
100
+ ## Phase 5: Atomic Ledger Append
101
+
102
+ Do NOT create individual files per change. Append to a single ledger file.
103
+
104
+ ### Ledger File: `specs/QUICKFIX_LOG.md`
105
+
106
+ Format for each entry:
107
+
108
+ ```markdown
109
+ ## YYYY-MM-DD HH:MM — <kebab-case-slug>
110
+
111
+ - **Trigger:** `/sdd-quick "<original request>"`
112
+ - **Files:** `<file-path>` (L<line>, L<line>)
113
+ - **Type:** Cosmetic | Config
114
+ - **Verification:** `npm run lint` passed, `npm run typecheck` passed
115
+ - **Cross-file refs:** <count> files affected (list if > 3)
116
+ - **Status:** ✅ Applied | ❌ Reverted (reason)
117
+ ```
118
+
119
+ ### Atomic Write Procedure
120
+ 1. Read current content of `specs/QUICKFIX_LOG.md` (create if not exists, with header `# Quick Change Log`)
121
+ 2. Append new entry at the END of the file
122
+ 3. Write to temp file: `specs/QUICKFIX_LOG.md.tmp`
123
+ 4. Atomic rename: replace `specs/QUICKFIX_LOG.md` with temp file
124
+ 5. Remove `specs/.sdd-lock`
125
+
126
+ ### Ledger Maintenance
127
+ If the ledger exceeds 50 entries:
128
+ - Move the oldest 25 entries to `specs/QUICKFIX_LOG_ARCHIVE.md`
129
+ - Keep only the most recent 25 entries in the main ledger
130
+
131
+ ## Anti-Generic Gate
132
+
133
+ Before final output, verify:
134
+
135
+ - [ ] Change type was classified using deterministic rules, not AI judgment.
136
+ - [ ] Lock file was checked and cleaned up.
137
+ - [ ] Cross-file scan was performed.
138
+ - [ ] Lint and typecheck were run and passed.
139
+ - [ ] Ledger was updated atomically.
140
+ - [ ] No logic, contract, or new files were touched.
141
+
142
+ If any item fails, report the failure and do not claim success.
143
+
144
+ ## Output
145
+
146
+ End with:
147
+
148
+ ```markdown
149
+ changed: Quick fix applied — <slug>
150
+ type: Cosmetic | Config
151
+ verified: lint + typecheck passed
152
+ cross-file refs: <count> files
153
+
154
+ Log: specs/QUICKFIX_LOG.md
155
+
156
+ Next: commit the change or run `/sdd-quick` again.
157
+ ```
158
+
159
+ If aborted:
160
+
161
+ ```markdown
162
+ aborted: Quick fix rejected — <slug>
163
+ reason: <specific rule that blocked it>
164
+ suggestion: Run `/sdd-propose "<request>"` for full workflow.
165
+ ```
@@ -21,6 +21,15 @@ Verify a completed change before considering it ready.
21
21
  - Do not make product code changes unless the user explicitly asks for fixes.
22
22
  - If the user asks to finalize, mark the change complete only when readiness is `yes`.
23
23
 
24
+ ## Asymmetric Verification
25
+
26
+ Perform a strict audit comparing the "Test Spec" tables in `tasks.md` against the actual test files (`*.test.ts`):
27
+
28
+ - **Completeness**: Ensure every row in the Test Spec table has a corresponding test case in the code.
29
+ - **Assertion Strength**: Check for "weakening" (e.g., spec says `expect(status).toBe(401)` but code says `expect(status).toBeGreaterThan(400)`). This is a VIOLATION.
30
+ - **Mock Accuracy**: Verify mocks match the "Mock Requirement" column in the spec.
31
+ - **Halt on Violation**: If you find a violation, DO NOT attempt to auto-correct. Mark `ready: no` and report the specific mismatch in findings.
32
+
24
33
  ## Review Focus
25
34
 
26
35
  - Requirements satisfied
@@ -3,39 +3,24 @@
3
3
  "description": "Model routing configuration. Edit this file to change which model each agent uses. Restart OpenCode after editing.",
4
4
  "requirement": "SDD requires at least ONE paid/subscription model for orchestrator and planner. These roles need strong reasoning that free models cannot provide.",
5
5
  "subscription_options": {
6
- "opencode_go": "$10/month — includes GLM 5.1, Kimi K2.5, MiniMax M2.5/M2.7",
7
- "kimi_moderato": "Kimi K2.6 with vision support",
8
6
  "openai_plus": "GPT 5.5 with reasoning and multimodal",
9
- "glm_lite": "GLM 5.1 with strong reasoning",
10
- "openrouter": "Access to frontier reasoning models"
11
- },
12
- "paid_models": {
13
- "opencode/gpt-5.5": "Best for orchestrator/planner — strongest reasoning + multimodal",
14
- "opencode/claude-sonnet-4-5": "Excellent for planner — code understanding and reasoning",
15
- "opencode/claude-opus-4-5": "Maximum capability for complex architecture planning",
16
- "opencode/kimi-k2.6": "Strong reasoning + vision, good alternative for planner",
17
- "opencode/glm-5.1": "Strong reasoning, good for orchestrator/planner"
18
- },
19
- "free_models": {
20
- "opencode/qwen3.6-plus-free": "Multimodal — best for verifier (Chrome DevTools screenshots)",
21
- "opencode/deepseek-v4-flash-free": "Fast code gen — best for explorer and implementer",
22
- "opencode/minimax-m2.5-free": "Structured output — best for reviewer (code review)",
23
- "opencode/nemotron-3-super-free": "1M context — good for exploration tasks"
7
+ "opencode_go": "$10/month — includes DeepSeek V4 Pro, GLM 5.1, Kimi K2.6, MiniMax M2.7",
8
+ "opencode_zen": "Pay-per-token, zero markup — access to Claude Opus 4.7, GPT 5.5, Gemini 3.1 Pro"
24
9
  },
25
10
  "recommendations": {
26
- "orchestrator": "PAID: GPT 5.5 or Claude Sonnet 4.5 — needs strong reasoning for DAG coordination",
27
- "planner": "PAID: GPT 5.5 or Claude Opus 4.5 — needs maximum reasoning for architecture",
11
+ "orchestrator": "PAID: GPT 5.5 (OpenAI) or DeepSeek V4 Pro (Go) — needs strong reasoning for DAG coordination",
12
+ "planner": "PAID: GPT 5.5 (OpenAI), Claude Opus 4.7, or DeepSeek V4 Pro (Go) — needs maximum reasoning for architecture",
28
13
  "explorer": "FREE: DeepSeek v4 Flash — fast readonly exploration, token-efficient",
29
14
  "implementer": "FREE: DeepSeek v4 Flash — code generation, high token usage",
30
15
  "verifier": "FREE: Qwen3.6 Plus — multimodal for Chrome DevTools screenshots",
31
16
  "reviewer": "FREE: MiniMax M2.5 — structured code review output"
32
17
  }
33
18
  },
34
- "defaultPrimary": "opencode/gpt-5.5",
19
+ "defaultPrimary": "openai/gpt-5.5",
35
20
  "small": "opencode/deepseek-v4-flash-free",
36
21
  "agents": {
37
- "sdd-orchestrator": "opencode/gpt-5.5",
38
- "sdd-planner": "opencode/gpt-5.5",
22
+ "sdd-orchestrator": "openai/gpt-5.5",
23
+ "sdd-planner": "openai/gpt-5.5",
39
24
  "sdd-explorer": "opencode/deepseek-v4-flash-free",
40
25
  "sdd-implementer": "opencode/deepseek-v4-flash-free",
41
26
  "sdd-verifier": "opencode/qwen3.6-plus-free",
package/README.md CHANGED
@@ -51,25 +51,27 @@ Add to your `opencode.json` (global or project-level):
51
51
  ```json
52
52
  {
53
53
  "plugin": [
54
- "@tudeorangbiasa/sdd-multiagent-opencode@git+https://github.com/TudeOrangBiasa/sdd-multiagent-opencode.git"
54
+ "@tudeorangbiasa/sdd-multiagent-opencode@latest"
55
55
  ]
56
56
  }
57
57
  ```
58
58
 
59
59
  Restart OpenCode. The plugin auto-registers skills, agents, commands, and internal plugins (model router, auto reasoning).
60
60
 
61
- To pin a version:
61
+ To pin a specific version:
62
62
 
63
63
  ```json
64
64
  {
65
65
  "plugin": [
66
- "@tudeorangbiasa/sdd-multiagent-opencode@git+https://github.com/TudeOrangBiasa/sdd-multiagent-opencode.git#v0.2.0"
66
+ "@tudeorangbiasa/sdd-multiagent-opencode@0.2.0"
67
67
  ]
68
68
  }
69
69
  ```
70
70
 
71
71
  Verify by asking: "What SDD commands do you have?"
72
72
 
73
+ **Why npm instead of GitHub?** GitHub installs pull the latest commit which may include beta/unstable changes. npm packages are versioned and tested before publish, so you get a stable, mature release.
74
+
73
75
  ### npx Install (Fallback)
74
76
 
75
77
  For projects that prefer local files instead of a plugin:
@@ -90,11 +92,7 @@ npx -y -p @tudeorangbiasa/sdd-multiagent-opencode sdd-opencode init --dry-run
90
92
 
91
93
  ### Updating
92
94
 
93
- Plugin installs update automatically when OpenCode restarts and fetches the latest git commit. To pin a stable version, use a tag:
94
-
95
- ```json
96
- "@tudeorangbiasa/sdd-multiagent-opencode@git+https://github.com/TudeOrangBiasa/sdd-multiagent-opencode.git#v0.2.0"
97
- ```
95
+ Plugin installs from npm update when you bump the version in your `opencode.json` and restart OpenCode. Check [npm](https://www.npmjs.com/package/@tudeorangbiasa/sdd-multiagent-opencode) for the latest version.
98
96
 
99
97
  For npx installs, run the installer again with `--force` to overwrite existing files.
100
98
 
@@ -113,62 +111,158 @@ Default workflow:
113
111
 
114
112
  Most work starts with `/sdd-propose`, then `/sdd-apply`, then `/sdd-ship`. Use `/sdd-explore` first only when the problem is unclear.
115
113
 
116
- ### Model Settings
114
+ ## Model Settings
117
115
 
118
116
  The installer creates `.sdd/model-profile.json`. Edit this file to change which model each OpenCode agent uses.
119
117
 
120
118
  **⚠️ Requirement:** SDD works best with at least **ONE paid/subscription model** for orchestrator and planner. These roles need strong reasoning + multimodal capabilities that free models lack.
121
119
 
122
- **Subscription options:**
123
- - **OpenCode Go** ($10/month) — GLM 5.1, Kimi K2.5, MiniMax M2.5/M2.7
124
- - **Kimi Moderato** Kimi K2.6 with vision support
125
- - **OpenAI Plus** — GPT 5.5 with reasoning and multimodal
126
- - **GLM Lite** GLM 5.1 with strong reasoning
127
- - **OpenRouter** — Access to frontier reasoning models
128
-
129
- **Recommended paid models for SDD:**
120
+ ### Provider Prefix Format
121
+
122
+ OpenCode supports 75+ providers. Model IDs use the format `provider_id/model_id`. Run `opencode provider list` for the full list on your system.
123
+
124
+ | Provider | Prefix | Example |
125
+ |----------|--------|---------|
126
+ | OpenAI | `openai/` | `openai/gpt-5.5` |
127
+ | Anthropic | `anthropic/` | `anthropic/claude-sonnet-4-5` |
128
+ | Google Gemini | `google/` | `google/gemini-3-pro` |
129
+ | OpenCode Zen | `opencode/` | `opencode/claude-opus-4-7` |
130
+ | OpenCode Go | `opencode-go/` | `opencode-go/deepseek-v4-pro` |
131
+ | OpenRouter | `openrouter/` | `openrouter/anthropic/claude-sonnet-4-5` |
132
+ | Groq | `groq/` | `groq/qwen-qwq` |
133
+ | DeepSeek | `deepseek/` | `deepseek/deepseek-chat` |
134
+ | MiniMax | `minimax/` | `minimax/minimax-m2.7` |
135
+ | Moonshot AI | `moonshot/` | `moonshot/kimi-k2.6` |
136
+ | Z.AI | `zai/` | `zai/glm-5.1` |
137
+
138
+ ### OpenAI (Frontier Models)
139
+
140
+ Best for orchestration and complex planning. Access via OpenAI API key.
141
+
142
+ | Model | ID | Best For | Notes |
143
+ |-------|----|----------|-------|
144
+ | GPT 5.5 | `openai/gpt-5.5` | Orchestrator, Planner | Strongest reasoning + multimodal |
145
+ | GPT 5.5 Pro | `openai/gpt-5.5-pro` | Planner (complex) | Maximum capability, slower |
146
+ | GPT 5.5 Fast | `openai/gpt-5.5-fast` | Explorer, Implementer | Optimized for speed |
147
+ | GPT 5.2 | `openai/gpt-5.2` | General | Previous generation |
148
+
149
+ ### Anthropic (Claude)
150
+
151
+ Access via Anthropic API key or OpenCode Zen.
152
+
153
+ | Model | ID (Zen) | Best For | Notes |
154
+ |-------|----------|----------|-------|
155
+ | Claude Opus 4.7 | `opencode/claude-opus-4-7` | Planner (complex) | Latest, strongest reasoning |
156
+ | Claude Opus 4.6 | `opencode/claude-opus-4-6` | Planner | Same price as 4.7, good alternative |
157
+ | Claude Opus 4.5 | `opencode/claude-opus-4-5` | Planner | Proven, stable |
158
+ | Claude Sonnet 4.6 | `opencode/claude-sonnet-4-6` | Planner, Reviewer | Balanced cost/performance |
159
+ | Claude Sonnet 4.5 | `opencode/claude-sonnet-4-5` | Planner, Reviewer | Excellent code understanding |
160
+
161
+ ### OpenCode Zen (Curated Paid Models)
162
+
163
+ Models tested and verified by the OpenCode team. Access via OpenCode API key.
164
+
165
+ | Model | ID | Best For | Price (Input/Output per 1M) |
166
+ |-------|----|----------|----------------------------|
167
+ | Claude Opus 4.7 | `opencode/claude-opus-4-7` | Planner (complex) | $5.00 / $25.00 |
168
+ | Claude Opus 4.6 | `opencode/claude-opus-4-6` | Planner | $5.00 / $25.00 |
169
+ | Claude Sonnet 4.6 | `opencode/claude-sonnet-4-6` | Planner, Reviewer | $3.00 / $15.00 |
170
+ | Claude Sonnet 4.5 | `opencode/claude-sonnet-4-5` | Planner, Reviewer | $3.00 / $15.00 |
171
+ | Gemini 3.1 Pro | `opencode/gemini-3.1-pro` | Verifier, Planner | $2.00 / $12.00 |
172
+ | Gemini 3 Flash | `opencode/gemini-3-flash` | Explorer | $0.50 / $3.00 |
173
+ | MiniMax M2.7 | `opencode/minimax-m2.7` | Reviewer | $0.30 / $1.20 |
174
+ | MiniMax M2.5 | `opencode/minimax-m2.5` | Reviewer | $0.30 / $1.20 |
175
+ | GLM 5.1 | `opencode/glm-5.1` | Explorer, Planner | $1.40 / $4.40 |
176
+ | GLM 5 | `opencode/glm-5` | Explorer | $1.00 / $3.20 |
177
+ | Kimi K2.6 | `opencode/kimi-k2.6` | Verifier | $0.95 / $4.00 |
178
+ | Kimi K2.5 | `opencode/kimi-k2.5` | Explorer | $0.60 / $3.00 |
179
+ | Qwen3.6 Plus | `opencode/qwen3.6-plus` | General | $0.50 / $3.00 |
180
+ | Qwen3.5 Plus | `opencode/qwen3.5-plus` | General | $0.20 / $1.20 |
181
+
182
+ ### OpenCode Go (Budget Subscription — $10/month)
183
+
184
+ Curated open-source models with generous limits. Best value for planner/orchestrator on a budget.
185
+
186
+ | Model | ID | Best For | Notes |
187
+ |-------|----|----------|-------|
188
+ | DeepSeek V4 Pro | `opencode-go/deepseek-v4-pro` | Orchestrator, Planner | Strong reasoning, 1M context, MIT license |
189
+ | DeepSeek V4 Flash | `opencode-go/deepseek-v4-flash` | Explorer, Implementer | Fast code gen |
190
+ | GLM 5.1 | `opencode-go/glm-5.1` | Planner | Strong reasoning |
191
+ | GLM 5 | `opencode-go/glm-5` | Explorer | Budget reasoning |
192
+ | Kimi K2.6 | `opencode-go/kimi-k2.6` | Verifier | Vision support, open weights |
193
+ | Kimi K2.5 | `opencode-go/kimi-k2.5` | Explorer | Fast exploration |
194
+ | MiniMax M2.7 | `opencode-go/minimax-m2.7` | Reviewer | Structured output |
195
+ | MiniMax M2.5 | `opencode-go/minimax-m2.5` | Reviewer | Fast review |
196
+ | Qwen3.6 Plus | `opencode-go/qwen3.6-plus` | General | Balanced |
197
+ | Qwen3.5 Plus | `opencode-go/qwen3.5-plus` | General | Budget |
198
+ | MiMo-V2.5-Pro | `opencode-go/mimo-v2.5-pro` | Explorer | Alternative |
199
+ | MiMo-V2.5 | `opencode-go/mimo-v2.5` | Explorer | Alternative |
200
+
201
+ **DeepSeek V4 Pro vs MiniMax M2.7:** Based on [Artificial Analysis benchmarks](https://artificialanalysis.ai/models/comparisons/deepseek-v4-pro-vs-minimax-m2-7), DeepSeek V4 Pro scores higher on intelligence index, has 1M context (vs 205K), MIT license (vs non-commercial), and is more recent. Recommended for orchestrator/planner over MiniMax M2.7.
202
+
203
+ ### Free-Tier Models
204
+
205
+ Models available at no cost via OpenCode Zen. Run `opencode models opencode | grep "free"` to check current availability — free models change frequently.
206
+
207
+ **Current free models (verified):**
208
+
209
+ | Model | ID | Best For | Notes |
210
+ |-------|----|----------|-------|
211
+ | DeepSeek V4 Flash Free | `opencode/deepseek-v4-flash-free` | Explorer, Implementer | Code generation |
212
+ | MiniMax M2.5 Free | `opencode/minimax-m2.5-free` | Reviewer, Compaction | Structured output |
213
+ | Nemotron 3 Super Free | `opencode/nemotron-3-super-free` | Explorer | NVIDIA model, 1M context |
214
+ | Qwen3.6 Plus Free | `opencode/qwen3.6-plus-free` | Verifier, General | Multimodal support |
215
+
216
+ ⚠️ Free models are limited-time offers and may be removed or rotated without notice. Not recommended for production SDD workflows. Use `opencode models opencode | grep "free"` to verify what's currently available.
217
+
218
+ **Alternative free options via other providers:**
219
+ - `groq/qwen-qwq` — Qwen QwQ 32B via Groq (free tier available)
220
+ - `groq/llama-3.3-70b-versatile` — Llama 3.3 70B via Groq
221
+ - `openrouter/deepseek-r1-free` — DeepSeek R1 via OpenRouter (free)
222
+
223
+ ### Default Profile
224
+
225
+ Recommended starting configuration (orchestrator/planner use OpenAI GPT 5.5, others use free):
130
226
 
131
- | Model | Best For | Notes |
132
- |-------|----------|-------|
133
- | `opencode/gpt-5.5` | Orchestrator, Planner | Strongest reasoning + multimodal |
134
- | `opencode/claude-sonnet-4-5` | Planner, Reviewer | Excellent code understanding |
135
- | `opencode/claude-opus-4-5` | Planner (complex) | Maximum capability for architecture |
136
- | `opencode/kimi-k2.6` | Verifier, Planner | Strong reasoning + vision support |
137
- | `opencode/glm-5.1` | Orchestrator, Planner | Strong reasoning alternative |
138
-
139
- **Free-tier fallback** (limited capability — not recommended for production):
140
-
141
- | Model | Best For | Limitations |
142
- |-------|----------|-------------|
143
- | `opencode/qwen3.6-plus-free` | General fallback | Limited multimodal |
144
- | `opencode/deepseek-v4-flash-free` | Explorer, Implementer | Code gen only, no reasoning |
145
- | `opencode/minimax-m2.5-free` | Reviewer, Orchestrator | Basic coordination |
146
- | `opencode/big-pickle` | Explorer | Limited-time free |
227
+ ```json
228
+ {
229
+ "defaultPrimary": "openai/gpt-5.5",
230
+ "small": "opencode/deepseek-v4-flash-free",
231
+ "agents": {
232
+ "sdd-orchestrator": "openai/gpt-5.5",
233
+ "sdd-planner": "openai/gpt-5.5",
234
+ "sdd-explorer": "opencode/deepseek-v4-flash-free",
235
+ "sdd-implementer": "opencode/deepseek-v4-flash-free",
236
+ "sdd-verifier": "opencode/qwen3.6-plus-free",
237
+ "sdd-reviewer": "opencode/minimax-m2.5-free"
238
+ }
239
+ }
240
+ ```
147
241
 
148
- **Default profile** (orchestrator/planner require paid, others use free):
242
+ **Budget alternative** (OpenCode Go $10/month):
149
243
 
150
244
  ```json
151
245
  {
152
- "defaultPrimary": "opencode/gpt-5.5",
246
+ "defaultPrimary": "opencode-go/deepseek-v4-pro",
153
247
  "small": "opencode/deepseek-v4-flash-free",
154
248
  "agents": {
155
- "sdd-orchestrator": "opencode/gpt-5.5",
156
- "sdd-planner": "opencode/gpt-5.5",
249
+ "sdd-orchestrator": "opencode-go/deepseek-v4-pro",
250
+ "sdd-planner": "opencode-go/deepseek-v4-pro",
157
251
  "sdd-explorer": "opencode/deepseek-v4-flash-free",
158
252
  "sdd-implementer": "opencode/deepseek-v4-flash-free",
159
- "sdd-verifier": "opencode/qwen3.6-plus-free",
253
+ "sdd-verifier": "opencode-go/kimi-k2.6",
160
254
  "sdd-reviewer": "opencode/minimax-m2.5-free"
161
255
  }
162
256
  }
163
257
  ```
164
258
 
165
259
  **Model routing rationale:**
166
- - **Orchestrator** → GPT 5.5 (paid): needs strongest reasoning for DAG coordination, deadlock detection
167
- - **Planner** → GPT 5.5 (paid): needs maximum reasoning for architecture design, risk assessment
260
+ - **Orchestrator** → GPT 5.5 (OpenAI) or DeepSeek V4 Pro (Go): needs strongest reasoning for DAG coordination, deadlock detection
261
+ - **Planner** → GPT 5.5 (OpenAI) or DeepSeek V4 Pro (Go): needs maximum reasoning for architecture design, risk assessment
168
262
  - **Explorer** → DeepSeek free: fast readonly exploration, token-efficient
169
263
  - **Implementer** → DeepSeek free: code generation, handles high token usage
170
- - **Verifier** → Qwen free: multimodal for Chrome DevTools screenshots
171
- - **Reviewer** → MiniMax free: structured code review output
264
+ - **Verifier** → Qwen3.6 Plus free: multimodal for Chrome DevTools screenshots
265
+ - **Reviewer** → MiniMax M2.5 free: structured code review output
172
266
 
173
267
  `.opencode/plugins/sdd-model-router.js` reads this file at OpenCode startup and applies the model settings. **Restart OpenCode after editing it.**
174
268
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tudeorangbiasa/sdd-multiagent-opencode",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Spec-Driven Development workflow kit for OpenCode with 4 core commands, multi-agent support, and configurable model routing",
5
5
  "type": "module",
6
6
  "main": ".opencode/plugins/sdd-register.js",