@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
|
-
"
|
|
10
|
-
"
|
|
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
|
|
27
|
-
"planner": "PAID: GPT 5.5
|
|
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": "
|
|
19
|
+
"defaultPrimary": "openai/gpt-5.5",
|
|
35
20
|
"small": "opencode/deepseek-v4-flash-free",
|
|
36
21
|
"agents": {
|
|
37
|
-
"sdd-orchestrator": "
|
|
38
|
-
"sdd-planner": "
|
|
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@
|
|
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@
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
**
|
|
242
|
+
**Budget alternative** (OpenCode Go $10/month):
|
|
149
243
|
|
|
150
244
|
```json
|
|
151
245
|
{
|
|
152
|
-
"defaultPrimary": "opencode/
|
|
246
|
+
"defaultPrimary": "opencode-go/deepseek-v4-pro",
|
|
153
247
|
"small": "opencode/deepseek-v4-flash-free",
|
|
154
248
|
"agents": {
|
|
155
|
-
"sdd-orchestrator": "opencode/
|
|
156
|
-
"sdd-planner": "opencode/
|
|
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/
|
|
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 (
|
|
167
|
-
- **Planner** → GPT 5.5 (
|
|
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** →
|
|
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.
|
|
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",
|