@tudeorangbiasa/sdd-multiagent-opencode 0.2.2 → 0.3.0
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/.opencode/commands/sdd-construct.md +693 -0
- package/.opencode/commands/sdd-quick.md +136 -105
- package/.opencode/plugins/sdd-register.js +869 -3
- package/.sdd/templates/model-profile-template.json +4 -2
- package/.sdd/templates/reasoning-profile-template.json +4 -2
- package/GUIDE.md +141 -4
- package/README.md +100 -33
- package/bin/sdd-opencode.js +476 -164
- package/bin/sdd-quick.js +607 -0
- package/opencode.json +1 -2
- package/package.json +7 -4
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"explorer": "FREE: DeepSeek v4 Flash — fast readonly exploration, token-efficient",
|
|
14
14
|
"implementer": "FREE: DeepSeek v4 Flash — code generation, high token usage",
|
|
15
15
|
"verifier": "FREE: Qwen3.6 Plus — multimodal for Chrome DevTools screenshots",
|
|
16
|
-
"reviewer": "FREE: MiniMax M2.5 — structured code review output"
|
|
16
|
+
"reviewer": "FREE: MiniMax M2.5 — structured code review output",
|
|
17
|
+
"quick": "FREE: Qwen3.6 Plus or DeepSeek v4 Flash — minimal prompt for small edits"
|
|
17
18
|
}
|
|
18
19
|
},
|
|
19
20
|
"defaultPrimary": "openai/gpt-5.5",
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
"sdd-explorer": "opencode/deepseek-v4-flash-free",
|
|
25
26
|
"sdd-implementer": "opencode/deepseek-v4-flash-free",
|
|
26
27
|
"sdd-verifier": "opencode/qwen3.6-plus-free",
|
|
27
|
-
"sdd-reviewer": "opencode/minimax-m2.5-free"
|
|
28
|
+
"sdd-reviewer": "opencode/minimax-m2.5-free",
|
|
29
|
+
"sdd-quick": "opencode/qwen3.6-plus-free"
|
|
28
30
|
}
|
|
29
31
|
}
|
|
@@ -10,12 +10,14 @@
|
|
|
10
10
|
"sdd-explorer": "low",
|
|
11
11
|
"sdd-implementer": "medium",
|
|
12
12
|
"sdd-verifier": "medium",
|
|
13
|
-
"sdd-reviewer": "medium"
|
|
13
|
+
"sdd-reviewer": "medium",
|
|
14
|
+
"sdd-quick": "low"
|
|
14
15
|
},
|
|
15
16
|
"commands": {
|
|
16
17
|
"sdd-explore": "medium",
|
|
17
18
|
"sdd-propose": "high",
|
|
18
19
|
"sdd-apply": "medium",
|
|
19
|
-
"sdd-ship": "medium"
|
|
20
|
+
"sdd-ship": "medium",
|
|
21
|
+
"sdd-quick": "low"
|
|
20
22
|
}
|
|
21
23
|
}
|
package/GUIDE.md
CHANGED
|
@@ -1,21 +1,77 @@
|
|
|
1
1
|
# SDD Multi-Agent OpenCode Guide
|
|
2
2
|
|
|
3
|
-
This kit exposes
|
|
3
|
+
This kit exposes five core commands for OpenCode:
|
|
4
4
|
|
|
5
5
|
```text
|
|
6
|
-
/sdd-explore -> /sdd-propose -> /sdd-apply -> /sdd-ship
|
|
6
|
+
/sdd-construct -> /sdd-explore -> /sdd-propose -> /sdd-apply -> /sdd-ship
|
|
7
|
+
/sdd-quick (standalone for small fixes)
|
|
7
8
|
```
|
|
8
9
|
|
|
9
|
-
It is inspired by spec-driven development
|
|
10
|
+
It is inspired by spec-driven development and Matt Pocock's skill-driven engineering workflow. The goal is to make OpenCode safer on real projects by separating investigation, planning, implementation, and final verification — with type-aware guardrails for different project types.
|
|
10
11
|
|
|
11
12
|
## Commands
|
|
12
13
|
|
|
13
14
|
| Command | Purpose | Writes Code? |
|
|
14
15
|
|---------|---------|--------------|
|
|
16
|
+
| `/sdd-construct` | Initialize SDD workflow for a new or existing project | Yes (config files) |
|
|
15
17
|
| `/sdd-explore` | Investigate unclear ideas, bugs, or code areas | No |
|
|
16
18
|
| `/sdd-propose` | Create one focused change plan | No |
|
|
17
19
|
| `/sdd-apply` | Implement an approved change | Yes |
|
|
18
20
|
| `/sdd-ship` | Verify readiness before merge/release | No, unless explicitly asked |
|
|
21
|
+
| `/sdd-quick` | Lightweight cosmetic/config fix (~200 tokens) | Yes |
|
|
22
|
+
|
|
23
|
+
## One-Time Project Setup
|
|
24
|
+
|
|
25
|
+
### `/sdd-construct`
|
|
26
|
+
|
|
27
|
+
Run this once at the start of a project to set up the "spine" — stack detection, domain glossary, model routing, and type-specific guardrails.
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
/sdd-construct
|
|
31
|
+
/sdd-construct "e-commerce platform for digital goods"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**What it does:**
|
|
35
|
+
|
|
36
|
+
1. **Phase 1: Stack Detection**
|
|
37
|
+
- Empty directory guard → asks user for project type
|
|
38
|
+
- Quick sniff test → classifies clear patterns (Next.js, Laravel, etc.) instantly
|
|
39
|
+
- Conditional subagent exploration → only for unclear/complex projects
|
|
40
|
+
- Three-layer fallback: explorer → direct read → user input
|
|
41
|
+
|
|
42
|
+
2. **Phase 2: Grilling Session** (one question at a time)
|
|
43
|
+
- Section A: Project Vision (all types)
|
|
44
|
+
- Section B: Constraints & Preferences (all types)
|
|
45
|
+
- Section C: Model Budget (all types)
|
|
46
|
+
- Section D: Issue Tracker (all types)
|
|
47
|
+
- Section E: Domain Glossary (all types)
|
|
48
|
+
- Section F: Type-specific guardrails (conditional)
|
|
49
|
+
|
|
50
|
+
3. **Phase 3: Scaffold Artifacts**
|
|
51
|
+
- `.sdd/project-profile.json`, `.sdd/model-profile.json`, `.sdd/reasoning-profile.json`
|
|
52
|
+
- `CONTEXT.md` (domain glossary)
|
|
53
|
+
- `docs/adr/0001-project-initialization.md`
|
|
54
|
+
- Type-specific artifacts (conditional):
|
|
55
|
+
|
|
56
|
+
| Project Type | Artifacts |
|
|
57
|
+
|-------------|-----------|
|
|
58
|
+
| **frontend** | `DESIGN.md` (locked tokens), design rules in `AGENTS.md` |
|
|
59
|
+
| **backend** | `API_CONTRACT.md`, `SECURITY_RULES.md` |
|
|
60
|
+
| **library/sdk** | `PUBLIC_API.md`, `VERSIONING.md` |
|
|
61
|
+
| **cli** | `COMMAND_STRUCTURE.md` |
|
|
62
|
+
| **fullstack** | `DESIGN.md` + `API_CONTRACT.md` |
|
|
63
|
+
|
|
64
|
+
4. **Phase 4: Verification** — checks all artifacts exist
|
|
65
|
+
|
|
66
|
+
**Project Type Classification:**
|
|
67
|
+
|
|
68
|
+
| Type | Signal Pattern | Example |
|
|
69
|
+
|------|---------------|---------|
|
|
70
|
+
| **frontend** | UI framework + styling + component dir, NO server | React + Tailwind + `components/` |
|
|
71
|
+
| **backend** | Server framework + NO UI framework | Express, Fastify, Laravel, Django |
|
|
72
|
+
| **library/sdk** | `exports` in package.json + NO entry point + NO server | Utility package, SDK |
|
|
73
|
+
| **cli** | `bin` in package.json + NO server + NO UI framework | CLI tool, scaffolding tool |
|
|
74
|
+
| **fullstack** | UI framework + server framework | Next.js App Router + API routes |
|
|
19
75
|
|
|
20
76
|
## Default Flow
|
|
21
77
|
|
|
@@ -61,6 +117,15 @@ specs/active/<change-id>/
|
|
|
61
117
|
└── progress.md optional for large changes
|
|
62
118
|
```
|
|
63
119
|
|
|
120
|
+
**Test Spec Tables:** For tasks involving logic, `tasks.md` includes structured Test Spec tables:
|
|
121
|
+
|
|
122
|
+
| Scenario | Input | Expected Output | Mock Requirement |
|
|
123
|
+
|----------|-------|-----------------|------------------|
|
|
124
|
+
| Invalid email | `email: "abc"` | `400 Bad Request` | No mock needed |
|
|
125
|
+
| Valid login | `email: "a@b.c", pass: "123"` | `200 OK + token` | Mock DB query |
|
|
126
|
+
|
|
127
|
+
The implementer must translate this table exactly into test code.
|
|
128
|
+
|
|
64
129
|
Review these files before applying. This is the agreement point.
|
|
65
130
|
|
|
66
131
|
### `/sdd-apply`
|
|
@@ -73,6 +138,12 @@ Use this after the proposal is accepted.
|
|
|
73
138
|
|
|
74
139
|
It reads the artifacts, implements `tasks.md`, updates checkboxes, and runs targeted verification when possible.
|
|
75
140
|
|
|
141
|
+
**Test Integrity Rules:**
|
|
142
|
+
- **Source of Truth**: The Test Spec table in `tasks.md` defines exact test cases
|
|
143
|
+
- **No Weakening**: Forbidden from modifying assertions to make tests pass
|
|
144
|
+
- **Fix Implementation, Not Test**: If a test fails, fix source code, not the test
|
|
145
|
+
- **Report Mismatches**: If the Test Spec is incorrect, STOP and report it
|
|
146
|
+
|
|
76
147
|
For large changes, it uses `progress.md` as a checkpoint so work can resume without relying on chat history. If tasks touch disjoint files, it can run safe batches in parallel through subagents; otherwise it runs sequentially.
|
|
77
148
|
|
|
78
149
|
### `/sdd-ship`
|
|
@@ -89,6 +160,54 @@ It audits the implementation against the artifacts and writes:
|
|
|
89
160
|
specs/active/<change-id>/verification.md
|
|
90
161
|
```
|
|
91
162
|
|
|
163
|
+
**Asymmetric Verification:**
|
|
164
|
+
- **Completeness**: Every row in the Test Spec table has a corresponding test case
|
|
165
|
+
- **Assertion Strength**: Detects "weakening" (e.g., spec says `toBe(401)` but code says `toBeTruthy()`)
|
|
166
|
+
- **Mock Accuracy**: Verifies mocks match the spec
|
|
167
|
+
- **Halt on Violation**: If a violation is found, marks `ready: no` and reports — NO auto-correction
|
|
168
|
+
|
|
169
|
+
### `/sdd-quick`
|
|
170
|
+
|
|
171
|
+
Use this for small, safe cosmetic/config changes — typo fixes, variable renames, config value changes.
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
/sdd-quick "fix typo: succesful -> successful"
|
|
175
|
+
/sdd-quick "rename isLoading to isFetching in auth.ts"
|
|
176
|
+
/sdd-quick "change MAX_RETRIES from 3 to 5"
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**What it does (hybrid CLI + LLM, ~200 tokens):**
|
|
180
|
+
|
|
181
|
+
1. **Phase 1a**: CLI keyword scan (0 tokens) — detects operators, control flow keywords
|
|
182
|
+
2. **Phase 1b**: Context-aware classification (~50 tokens) — only if ambiguous
|
|
183
|
+
3. **Phase 2**: CLI pre-flight (0 tokens) — lock check, grep scan, string delta
|
|
184
|
+
4. **Phase 3**: LLM edit (~150 tokens) — full file return for < 500 lines
|
|
185
|
+
5. **Phase 4**: CLI post-flight (0 tokens) — actual diff, lint, typecheck, auto-revert
|
|
186
|
+
6. **Phase 5**: CLI ledger append (0 tokens) — atomic write to `specs/QUICKFIX_LOG.md`
|
|
187
|
+
|
|
188
|
+
**Blocked automatically** (no LLM invoked):
|
|
189
|
+
- Logic changes (operators, control flow)
|
|
190
|
+
- Contract boundary files (`**/api/**`, `**/dto/**`, `**/schema/**`)
|
|
191
|
+
- Exported function/class/type name changes
|
|
192
|
+
|
|
193
|
+
**Warns and asks confirmation:**
|
|
194
|
+
- Cross-file references > 5
|
|
195
|
+
- String length delta > 20 chars or > 50% increase (UI layout risk)
|
|
196
|
+
- Another SDD process is active (lock file)
|
|
197
|
+
|
|
198
|
+
## Example: New Project
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
/sdd-construct "task management app for teams"
|
|
202
|
+
-> detects Next.js + TypeScript + Tailwind
|
|
203
|
+
-> classifies as: fullstack
|
|
204
|
+
-> asks: vision, constraints, model budget, issue tracker, domain terms
|
|
205
|
+
-> generates: DESIGN.md (locked tokens), API_CONTRACT.md, CONTEXT.md, ADR
|
|
206
|
+
/sdd-propose auth-login "add email/password login with JWT"
|
|
207
|
+
/sdd-apply auth-login
|
|
208
|
+
/sdd-ship auth-login
|
|
209
|
+
```
|
|
210
|
+
|
|
92
211
|
## Example: New Feature
|
|
93
212
|
|
|
94
213
|
```text
|
|
@@ -115,9 +234,24 @@ specs/active/<change-id>/verification.md
|
|
|
115
234
|
/sdd-ship admin-ui-components
|
|
116
235
|
```
|
|
117
236
|
|
|
237
|
+
## Example: Quick Fix
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
/sdd-quick "fix typo: 'succesful' -> 'successful'"
|
|
241
|
+
-> CLI: no blocking keywords, no contract path, 1 cross-file ref
|
|
242
|
+
-> LLM: change string in src/messages.ts
|
|
243
|
+
-> CLI: lint passed, typecheck passed, ledger updated
|
|
244
|
+
-> ✅ Applied (~200 tokens)
|
|
245
|
+
|
|
246
|
+
/sdd-quick "Ganti > jadi >= di validator.ts"
|
|
247
|
+
-> CLI: detected operator '>' → blocked
|
|
248
|
+
-> ❌ Abort: "Request contains operators which indicates a logic change."
|
|
249
|
+
-> Suggestion: Run `/sdd-propose "Ganti > jadi >= di validator.ts"`
|
|
250
|
+
```
|
|
251
|
+
|
|
118
252
|
## Design Principles
|
|
119
253
|
|
|
120
|
-
-
|
|
254
|
+
- Five commands + one quick-fix command.
|
|
121
255
|
- No fake flags like `--deep` or `--until-finish`.
|
|
122
256
|
- No source code changes during explore/propose.
|
|
123
257
|
- One change folder per unit of work.
|
|
@@ -126,3 +260,6 @@ specs/active/<change-id>/verification.md
|
|
|
126
260
|
- Long-running apply work must checkpoint to `progress.md`.
|
|
127
261
|
- Parallel execution is a capability inside `/sdd-apply`, not a separate command.
|
|
128
262
|
- Verification is a first-class step, not a vague final message.
|
|
263
|
+
- Type-aware scaffolding: frontend gets DESIGN.md, backend gets API_CONTRACT.md, library gets PUBLIC_API.md.
|
|
264
|
+
- Test-driven: Test Spec tables in tasks.md, Test Integrity rules in apply, Asymmetric Verification in ship.
|
|
265
|
+
- CLI-first for quick fixes: deterministic checks in Node.js, LLM only for the edit.
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# SDD Multi-Agent OpenCode
|
|
2
2
|
|
|
3
|
-
Spec-Driven Development workflow kit for OpenCode with
|
|
3
|
+
Spec-Driven Development workflow kit for OpenCode with five core commands, CLI wrappers, multi-agent orchestration, and configurable model routing.
|
|
4
4
|
|
|
5
|
-
Inspired by [spec-kit-command-cursor](https://github.com/madebyaris/spec-kit-command-cursor), rebuilt from scratch for OpenCode's multi-agent architecture.
|
|
5
|
+
Inspired by [spec-kit-command-cursor](https://github.com/madebyaris/spec-kit-command-cursor) and [mattpocock/skills](https://github.com/mattpocock/skills), rebuilt from scratch for OpenCode's multi-agent architecture.
|
|
6
6
|
|
|
7
7
|
## Layering
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ This repo is the **SDD workflow layer**. For base agent behavior, CLI-first scaf
|
|
|
11
11
|
```txt
|
|
12
12
|
opencode-agent-rules # base behavior + context/compaction policy
|
|
13
13
|
↓
|
|
14
|
-
sdd-multiagent-opencode # SDD commands, agents, skills, templates
|
|
14
|
+
sdd-multiagent-opencode # SDD commands, agents, skills, templates, CLI wrappers
|
|
15
15
|
↓
|
|
16
16
|
external UI skills # impeccable, taste, nothing-design, etc.
|
|
17
17
|
```
|
|
@@ -26,19 +26,20 @@ external UI skills # impeccable, taste, nothing-design, etc.
|
|
|
26
26
|
| **Web Research** | Cursor web search | `exa_web_search_exa` |
|
|
27
27
|
| **Visual Verification** | N/A | Chrome DevTools + Qwen (image-capable) |
|
|
28
28
|
| **Hooks** | `hooks.json` | Plugin JS/TS with event system |
|
|
29
|
-
| **Commands** | 15+ slash commands |
|
|
30
|
-
| **Cost** | Per-token billing | Free-tier optimized with paid model routing |
|
|
29
|
+
| **Commands** | 15+ slash commands | 5 core commands: construct, propose, apply, ship, quick |
|
|
30
|
+
| **Cost** | Per-token billing | Free-tier optimized with paid model routing + CLI wrappers |
|
|
31
31
|
|
|
32
32
|
## Multi-Agent Architecture
|
|
33
33
|
|
|
34
34
|
| Agent | Default Model | Role |
|
|
35
35
|
|-------|--------------|------|
|
|
36
36
|
| **sdd-orchestrator** | configurable | DAG scheduling, conflict detection, deadlock handling |
|
|
37
|
-
| **sdd-planner** | configurable | Architecture design, technical planning |
|
|
37
|
+
| **sdd-planner** | configurable | Architecture design, technical planning, project construction |
|
|
38
38
|
| **sdd-explorer** | configurable | Codebase discovery (readonly) |
|
|
39
39
|
| **sdd-implementer** | configurable | Code generation (high token usage) |
|
|
40
40
|
| **sdd-verifier** | configurable | Completeness check + visual/UI verification (Chrome DevTools) |
|
|
41
41
|
| **sdd-reviewer** | configurable | Code review (security, performance, spec compliance) |
|
|
42
|
+
| **sdd-quick** | configurable | Small cosmetic/config edits (~200 tokens via CLI wrapper) |
|
|
42
43
|
|
|
43
44
|
**All models are configurable** via `.sdd/model-profile.json`. Edit this file to change which model each agent uses. See [Model Settings](#model-settings) below.
|
|
44
45
|
|
|
@@ -63,7 +64,7 @@ To pin a specific version:
|
|
|
63
64
|
```json
|
|
64
65
|
{
|
|
65
66
|
"plugin": [
|
|
66
|
-
"@tudeorangbiasa/sdd-multiagent-opencode@0.2.
|
|
67
|
+
"@tudeorangbiasa/sdd-multiagent-opencode@0.2.2"
|
|
67
68
|
]
|
|
68
69
|
}
|
|
69
70
|
```
|
|
@@ -103,13 +104,15 @@ See [GUIDE.md](GUIDE.md) for the practical command flow.
|
|
|
103
104
|
Default workflow:
|
|
104
105
|
|
|
105
106
|
```text
|
|
106
|
-
/sdd-
|
|
107
|
-
/sdd-
|
|
108
|
-
/sdd-
|
|
109
|
-
/sdd-
|
|
107
|
+
/sdd-construct # initialize SDD workflow for a new or existing project (one-time)
|
|
108
|
+
/sdd-explore # investigate unclear ideas, bugs, or code areas; no code changes
|
|
109
|
+
/sdd-propose # create proposal.md, spec.md, design.md, tasks.md; no code changes
|
|
110
|
+
/sdd-apply # implement an approved change
|
|
111
|
+
/sdd-ship # final verification and readiness review
|
|
112
|
+
/sdd-quick # lightweight cosmetic/config fix (~200 tokens via CLI wrapper)
|
|
110
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
|
+
Most work starts with `/sdd-propose`, then `/sdd-apply`, then `/sdd-ship`. Use `/sdd-explore` first only when the problem is unclear. Use `/sdd-construct` once per project to set up the spine.
|
|
113
116
|
|
|
114
117
|
## Model Settings
|
|
115
118
|
|
|
@@ -211,7 +214,7 @@ Models available at no cost via OpenCode Zen. Run `opencode models opencode | gr
|
|
|
211
214
|
| DeepSeek V4 Flash Free | `opencode/deepseek-v4-flash-free` | Explorer, Implementer | Code generation |
|
|
212
215
|
| MiniMax M2.5 Free | `opencode/minimax-m2.5-free` | Reviewer, Compaction | Structured output |
|
|
213
216
|
| 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 |
|
|
217
|
+
| Qwen3.6 Plus Free | `opencode/qwen3.6-plus-free` | Verifier, General, Quick fix | Multimodal support |
|
|
215
218
|
|
|
216
219
|
⚠️ 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
220
|
|
|
@@ -234,7 +237,8 @@ Recommended starting configuration (orchestrator/planner use OpenAI GPT 5.5, oth
|
|
|
234
237
|
"sdd-explorer": "opencode/deepseek-v4-flash-free",
|
|
235
238
|
"sdd-implementer": "opencode/deepseek-v4-flash-free",
|
|
236
239
|
"sdd-verifier": "opencode/qwen3.6-plus-free",
|
|
237
|
-
"sdd-reviewer": "opencode/minimax-m2.5-free"
|
|
240
|
+
"sdd-reviewer": "opencode/minimax-m2.5-free",
|
|
241
|
+
"sdd-quick": "opencode/qwen3.6-plus-free"
|
|
238
242
|
}
|
|
239
243
|
}
|
|
240
244
|
```
|
|
@@ -251,7 +255,8 @@ Recommended starting configuration (orchestrator/planner use OpenAI GPT 5.5, oth
|
|
|
251
255
|
"sdd-explorer": "opencode/deepseek-v4-flash-free",
|
|
252
256
|
"sdd-implementer": "opencode/deepseek-v4-flash-free",
|
|
253
257
|
"sdd-verifier": "opencode-go/kimi-k2.6",
|
|
254
|
-
"sdd-reviewer": "opencode/minimax-m2.5-free"
|
|
258
|
+
"sdd-reviewer": "opencode/minimax-m2.5-free",
|
|
259
|
+
"sdd-quick": "opencode-go/qwen3.6-plus"
|
|
255
260
|
}
|
|
256
261
|
}
|
|
257
262
|
```
|
|
@@ -263,6 +268,7 @@ Recommended starting configuration (orchestrator/planner use OpenAI GPT 5.5, oth
|
|
|
263
268
|
- **Implementer** → DeepSeek free: code generation, handles high token usage
|
|
264
269
|
- **Verifier** → Qwen3.6 Plus free: multimodal for Chrome DevTools screenshots
|
|
265
270
|
- **Reviewer** → MiniMax M2.5 free: structured code review output
|
|
271
|
+
- **Quick** → Qwen3.6 Plus free: minimal prompt for small cosmetic/config edits (~200 tokens)
|
|
266
272
|
|
|
267
273
|
`.opencode/plugins/sdd-model-router.js` reads this file at OpenCode startup and applies the model settings. **Restart OpenCode after editing it.**
|
|
268
274
|
|
|
@@ -286,7 +292,8 @@ Default routing:
|
|
|
286
292
|
"sdd-orchestrator": "high",
|
|
287
293
|
"sdd-planner": "high",
|
|
288
294
|
"sdd-implementer": "medium",
|
|
289
|
-
"sdd-reviewer": "medium"
|
|
295
|
+
"sdd-reviewer": "medium",
|
|
296
|
+
"sdd-quick": "low"
|
|
290
297
|
}
|
|
291
298
|
}
|
|
292
299
|
```
|
|
@@ -316,6 +323,7 @@ Merge the `agent` and `permission` sections from `opencode.json` into your proje
|
|
|
316
323
|
See [GUIDE.md](GUIDE.md) for the practical flow.
|
|
317
324
|
|
|
318
325
|
```text
|
|
326
|
+
/sdd-construct # one-time project initialization
|
|
319
327
|
/sdd-propose auth-reset "add secure password reset by email"
|
|
320
328
|
/sdd-apply auth-reset
|
|
321
329
|
/sdd-ship auth-reset
|
|
@@ -327,14 +335,23 @@ If the problem is unclear, start with exploration:
|
|
|
327
335
|
/sdd-explore "admin UI feels messy, find reusable component opportunities"
|
|
328
336
|
```
|
|
329
337
|
|
|
338
|
+
For small cosmetic fixes:
|
|
339
|
+
|
|
340
|
+
```text
|
|
341
|
+
/sdd-quick "fix typo: succesful -> successful"
|
|
342
|
+
/sdd-quick "rename isLoading to isFetching in auth.ts"
|
|
343
|
+
```
|
|
344
|
+
|
|
330
345
|
## Commands
|
|
331
346
|
|
|
332
|
-
| Command | Purpose | Writes Code? |
|
|
333
|
-
|
|
334
|
-
| `/sdd-
|
|
335
|
-
| `/sdd-
|
|
336
|
-
| `/sdd-
|
|
337
|
-
| `/sdd-
|
|
347
|
+
| Command | Purpose | Writes Code? | Token Cost |
|
|
348
|
+
|---------|---------|--------------|------------|
|
|
349
|
+
| `/sdd-construct` | Initialize SDD workflow for a project | Yes (config files) | ~500-1000 |
|
|
350
|
+
| `/sdd-explore` | Investigate unclear ideas, bugs, or code areas | No | ~200-500 |
|
|
351
|
+
| `/sdd-propose` | Create one focused change plan | No | ~300-800 |
|
|
352
|
+
| `/sdd-apply` | Implement an approved change | Yes | ~500-5000 |
|
|
353
|
+
| `/sdd-ship` | Final verification and readiness review | No, unless explicitly asked | ~200-500 |
|
|
354
|
+
| `/sdd-quick` | Lightweight cosmetic/config fix | Yes | ~200 |
|
|
338
355
|
|
|
339
356
|
## Project Structure
|
|
340
357
|
|
|
@@ -348,10 +365,12 @@ If the problem is unclear, start with exploration:
|
|
|
348
365
|
│ ├── sdd-verifier.md # Completeness and UI verification
|
|
349
366
|
│ └── sdd-reviewer.md # Final review and readiness checks
|
|
350
367
|
├── commands/
|
|
368
|
+
│ ├── sdd-construct.md # /sdd-construct
|
|
351
369
|
│ ├── sdd-explore.md # /sdd-explore
|
|
352
370
|
│ ├── sdd-propose.md # /sdd-propose
|
|
353
371
|
│ ├── sdd-apply.md # /sdd-apply
|
|
354
|
-
│
|
|
372
|
+
│ ├── sdd-ship.md # /sdd-ship
|
|
373
|
+
│ └── sdd-quick.md # /sdd-quick
|
|
355
374
|
└── skills/
|
|
356
375
|
├── sdd-research/SKILL.md
|
|
357
376
|
├── sdd-planning/SKILL.md
|
|
@@ -361,6 +380,8 @@ If the problem is unclear, start with exploration:
|
|
|
361
380
|
.sdd/
|
|
362
381
|
├── config.json # Project configuration
|
|
363
382
|
├── project-profile.json # Stack and skill routing config
|
|
383
|
+
├── model-profile.json # Model routing per agent
|
|
384
|
+
├── reasoning-profile.json # Reasoning effort per agent/command
|
|
364
385
|
└── templates/ # Document templates
|
|
365
386
|
├── proposal-template.md
|
|
366
387
|
├── spec-template.md
|
|
@@ -369,33 +390,79 @@ If the problem is unclear, start with exploration:
|
|
|
369
390
|
├── progress-template.md
|
|
370
391
|
└── verification-template.md
|
|
371
392
|
|
|
393
|
+
bin/
|
|
394
|
+
├── sdd-opencode.js # Main installer CLI
|
|
395
|
+
└── sdd-quick.js # Quick fix CLI wrapper (deterministic checks)
|
|
396
|
+
|
|
372
397
|
specs/
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
398
|
+
├── active/
|
|
399
|
+
│ └── <change-id>/
|
|
400
|
+
│ ├── proposal.md
|
|
401
|
+
│ ├── spec.md
|
|
402
|
+
│ ├── design.md
|
|
403
|
+
│ ├── tasks.md
|
|
404
|
+
│ ├── progress.md
|
|
405
|
+
│ └── verification.md
|
|
406
|
+
├── QUICKFIX_LOG.md # Ledger for /sdd-quick changes
|
|
407
|
+
└── QUICKFIX_LOG_ARCHIVE.md # Archived ledger entries
|
|
381
408
|
```
|
|
382
409
|
|
|
383
410
|
## Workflows
|
|
384
411
|
|
|
385
|
-
|
|
412
|
+
### New Project Setup
|
|
413
|
+
|
|
414
|
+
```text
|
|
415
|
+
/sdd-construct # one-time: detect stack, grill vision, scaffold config, create CONTEXT.md
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Feature Development
|
|
386
419
|
|
|
387
420
|
```text
|
|
388
421
|
/sdd-propose -> /sdd-apply -> /sdd-ship
|
|
389
422
|
```
|
|
390
423
|
|
|
391
|
-
Unclear
|
|
424
|
+
### Unclear Changes
|
|
392
425
|
|
|
393
426
|
```text
|
|
394
427
|
/sdd-explore -> /sdd-propose -> /sdd-apply -> /sdd-ship
|
|
395
428
|
```
|
|
396
429
|
|
|
430
|
+
### Quick Fixes
|
|
431
|
+
|
|
432
|
+
```text
|
|
433
|
+
/sdd-quick "fix typo in error message" # ~200 tokens, CLI-verified
|
|
434
|
+
```
|
|
435
|
+
|
|
397
436
|
This kit intentionally avoids fake CLI flags such as `--deep` or `--until-finish`. If deeper research or parallel execution is needed, describe that in normal language and let the agent plan it explicitly.
|
|
398
437
|
|
|
438
|
+
## CLI Wrapper: `/sdd-quick` Architecture
|
|
439
|
+
|
|
440
|
+
The `/sdd-quick` command uses a **hybrid CLI + LLM** architecture to minimize token cost (~200 tokens vs ~1000 for all-LLM):
|
|
441
|
+
|
|
442
|
+
```
|
|
443
|
+
CLI (0 tokens) → Phase 1a: Keyword scan → PASS/FAIL
|
|
444
|
+
↓ (if ambiguous)
|
|
445
|
+
LLM (~50 tokens) → Phase 1b: Context-aware classification
|
|
446
|
+
↓
|
|
447
|
+
CLI (0 tokens) → Phase 2: Pre-flight (lock, grep, string delta)
|
|
448
|
+
↓
|
|
449
|
+
LLM (~150 tokens) → Phase 3: Edit (full file return for < 500 lines)
|
|
450
|
+
↓
|
|
451
|
+
CLI (0 tokens) → Phase 4: Post-flight (actual diff, lint, typecheck, auto-revert)
|
|
452
|
+
↓
|
|
453
|
+
CLI (0 tokens) → Phase 5: Atomic ledger append
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
The CLI wrapper (`bin/sdd-quick.js`) handles deterministic checks:
|
|
457
|
+
- **Phase 1a**: Regex-based keyword scan (operators, control flow, contract paths)
|
|
458
|
+
- **Phase 2**: Lock file management, cross-file grep scan, string length delta
|
|
459
|
+
- **Phase 4**: Post-flight verification — actual diff check, lint/typecheck, auto-revert
|
|
460
|
+
- **Phase 5**: Atomic ledger append via temp file + rename, automatic archiving
|
|
461
|
+
|
|
462
|
+
The LLM is only invoked for:
|
|
463
|
+
- **Phase 1b**: Context-aware classification (if keywords found in comments/strings)
|
|
464
|
+
- **Phase 3**: The actual edit (full file return or search-replace blocks)
|
|
465
|
+
|
|
399
466
|
## Tools Integration
|
|
400
467
|
|
|
401
468
|
### codebase-memory-mcp
|