devloom 1.0.0 → 1.1.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/.ai/core.dsl +44 -0
- package/.ai/skills.dsl +39 -0
- package/.ai/verify.dsl +97 -0
- package/.ai/workflow.dsl +81 -0
- package/.opencode/themes/devloom-night-owl.json +103 -0
- package/GUIDE.md +547 -114
- package/README.md +557 -109
- package/SECURITY.md +93 -0
- package/agents/devloom-developer-flash.md +27 -0
- package/agents/devloom-developer-senior.md +28 -0
- package/agents/devloom-developer.md +18 -56
- package/agents/devloom-documenter-flash.md +24 -0
- package/agents/devloom-documenter.md +14 -57
- package/agents/devloom-orchestrator.md +232 -356
- package/agents/devloom-planner-flash.md +30 -0
- package/agents/devloom-planner-senior.md +31 -0
- package/agents/devloom-planner.md +32 -0
- package/agents/devloom-qa-flash.md +28 -0
- package/agents/devloom-qa.md +18 -84
- package/agents/devloom-security-senior.md +31 -0
- package/agents/devloom-security.md +30 -0
- package/agents/devloom-verifier.md +29 -0
- package/agents/devloom-vision.md +109 -0
- package/agents/devloom-visual-critic.md +98 -0
- package/agents/devloom-visual-director.md +80 -0
- package/commands/devloom-agents.md +49 -0
- package/commands/devloom-auto.md +11 -0
- package/commands/devloom-context.md +82 -0
- package/commands/devloom-deepseek.md +11 -0
- package/commands/devloom-free.md +11 -0
- package/commands/devloom-go-economy.md +11 -0
- package/commands/devloom-go-flash.md +11 -0
- package/commands/devloom-go.md +11 -0
- package/commands/devloom-init.md +28 -50
- package/commands/devloom-loop-status.md +25 -0
- package/commands/devloom-loop.md +36 -0
- package/commands/devloom-mimo.md +11 -0
- package/commands/devloom-plan.md +13 -0
- package/commands/devloom-refresh.md +22 -0
- package/commands/devloom-resume.md +30 -49
- package/commands/devloom-save.md +69 -0
- package/commands/devloom-status.md +9 -18
- package/commands/devloom.md +99 -67
- package/dist/agents.d.ts +30 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +139 -0
- package/dist/agents.js.map +1 -0
- package/dist/bootstrap.d.ts +56 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +116 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/constraints.d.ts +5 -0
- package/dist/constraints.d.ts.map +1 -0
- package/dist/constraints.js +45 -0
- package/dist/constraints.js.map +1 -0
- package/dist/context.d.ts +42 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +636 -0
- package/dist/context.js.map +1 -0
- package/dist/guard.d.ts +19 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +418 -0
- package/dist/guard.js.map +1 -0
- package/dist/loop.d.ts +64 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +164 -0
- package/dist/loop.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +101 -1
- package/dist/plugin.js.map +1 -1
- package/dist/tui-agents.d.ts +61 -0
- package/dist/tui-agents.d.ts.map +1 -0
- package/dist/tui-agents.js +89 -0
- package/dist/tui-agents.js.map +1 -0
- package/dist/tui.d.ts +6 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +92 -0
- package/dist/tui.js.map +1 -0
- package/dist/worktree.d.ts +46 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +272 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +46 -6
- package/patterns/changelog-drafter.md +38 -0
- package/patterns/ci-sweeper.md +40 -0
- package/patterns/daily-triage.md +37 -0
- package/patterns/dependency-sweeper.md +40 -0
- package/patterns/design-audit.md +63 -0
- package/patterns/issue-triage.md +37 -0
- package/patterns/post-merge-cleanup.md +34 -0
- package/patterns/pr-babysitter.md +37 -0
- package/patterns/registry.yaml +52 -0
- package/postinstall.mjs +259 -63
- package/project/README.md +29 -0
- package/protocol/agent-contracts.md +27 -0
- package/protocol/artifact-system.md +53 -0
- package/protocol/model-routing.md +185 -0
- package/protocol/orchestrator-core.md +43 -0
- package/protocol/project-system.md +45 -0
- package/protocol/rules.md +18 -0
- package/protocol/verification-policy.md +48 -0
- package/scripts/loop-run.mjs +205 -0
- package/scripts/model-capabilities.mjs +169 -0
- package/scripts/plugin-cache.mjs +269 -0
- package/scripts/profile.mjs +691 -0
- package/scripts/visual-benchmark.mjs +149 -0
- package/scripts/worktree.mjs +445 -0
- package/skills/build/development.md +33 -0
- package/skills/build/live-docs.md +38 -0
- package/skills/build/simplify.md +50 -0
- package/skills/build/vision-analysis.md +98 -0
- package/skills/design/app-design.md +31 -0
- package/skills/design/design-grounding.md +30 -0
- package/skills/design/design-system.md +27 -0
- package/skills/design/game-design.md +35 -0
- package/skills/design/motion-design.md +34 -0
- package/skills/design/visual-direction.md +32 -0
- package/skills/design/web-design.md +33 -0
- package/skills/loop/changelog-drafter.md +32 -0
- package/skills/loop/ci-sweeper.md +24 -0
- package/skills/loop/constraints.md +21 -0
- package/skills/loop/dependency-sweeper.md +24 -0
- package/skills/loop/design-audit.md +67 -0
- package/skills/loop/issue-triage.md +27 -0
- package/skills/loop/post-merge-cleanup.md +24 -0
- package/skills/loop/pr-babysitter.md +26 -0
- package/skills/loop/triage.md +25 -0
- package/skills/loop/verifier.md +20 -0
- package/skills/meta/skill-discovery.md +23 -0
- package/skills/plan/planning.md +27 -0
- package/skills/plan/verification-planning.md +40 -0
- package/skills/review/security-review.md +63 -0
- package/skills/ship/documentation.md +11 -0
- package/skills/verify/app-verification.md +19 -0
- package/skills/verify/quality-assurance.md +17 -0
- package/skills/verify/visual-critique.md +30 -0
- package/skills/verify/visual-quality-gate.md +29 -0
- package/skills/verify/visual-regression.md +25 -0
- package/agents/devloom-analyst.md +0 -83
- package/agents/devloom-architect.md +0 -88
package/GUIDE.md
CHANGED
|
@@ -40,20 +40,39 @@ DevLoom — post-install
|
|
|
40
40
|
Config dir : /home/you/.config/opencode
|
|
41
41
|
Agents dir : /home/you/.config/opencode/agents
|
|
42
42
|
Commands dir: /home/you/.config/opencode/commands
|
|
43
|
+
AI dir : /home/you/.config/opencode/devloom-ai
|
|
43
44
|
|
|
44
45
|
Installing agents:
|
|
45
46
|
- Agent: devloom-orchestrator
|
|
46
|
-
- Agent: devloom-
|
|
47
|
-
- Agent: devloom-
|
|
48
|
-
- Agent: devloom-
|
|
49
|
-
- Agent: devloom-
|
|
50
|
-
- Agent: devloom-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
47
|
+
- Agent: devloom-planner (+ -senior, -flash)
|
|
48
|
+
- Agent: devloom-developer (+ -senior, -flash)
|
|
49
|
+
- Agent: devloom-qa (+ -flash)
|
|
50
|
+
- Agent: devloom-verifier
|
|
51
|
+
- Agent: devloom-security (+ -senior)
|
|
52
|
+
- Agent: devloom-documenter (+ -flash)
|
|
53
|
+
- Agent: devloom-vision
|
|
54
|
+
- Agent: devloom-visual-director
|
|
55
|
+
- Agent: devloom-visual-critic
|
|
56
|
+
|
|
57
|
+
Installing commands (17 total):
|
|
58
|
+
- /devloom, /devloom-init, /devloom-status, /devloom-resume
|
|
59
|
+
- /devloom-save, /devloom-agents
|
|
60
|
+
- /devloom-go, /devloom-go-economy, /devloom-go-flash, /devloom-deepseek
|
|
61
|
+
- /devloom-mimo, /devloom-free, /devloom-auto
|
|
62
|
+
- /devloom-plan, /devloom-context, /devloom-loop, /devloom-loop-status
|
|
63
|
+
|
|
64
|
+
Installing skills (21 total):
|
|
65
|
+
- plan/{planning, verification-planning}
|
|
66
|
+
- build/{development, simplify, vision-analysis, live-docs}
|
|
67
|
+
- verify/{quality-assurance, app-verification, visual-critique, visual-quality-gate, visual-regression}
|
|
68
|
+
- design/{visual-direction, design-grounding, web-design, app-design, game-design, motion-design, design-system}
|
|
69
|
+
- review/security-review
|
|
70
|
+
- ship/documentation
|
|
71
|
+
- meta/skill-discovery
|
|
72
|
+
- loop/* (10 loop engineering skills)
|
|
73
|
+
|
|
74
|
+
Installing theme:
|
|
75
|
+
- DevLoom Night Owl (auto-activated)
|
|
57
76
|
|
|
58
77
|
DevLoom installed successfully!
|
|
59
78
|
```
|
|
@@ -89,6 +108,8 @@ project without a global install:
|
|
|
89
108
|
```
|
|
90
109
|
|
|
91
110
|
OpenCode loads it automatically when you open a session in that directory.
|
|
111
|
+
On load, the plugin bootstraps `.opencode/devloom/project/` and normalizes any
|
|
112
|
+
legacy DevLoom workspace files into the compact canonical format.
|
|
92
113
|
|
|
93
114
|
---
|
|
94
115
|
|
|
@@ -97,10 +118,19 @@ OpenCode loads it automatically when you open a session in that directory.
|
|
|
97
118
|
Start OpenCode and open the command palette by typing `/`:
|
|
98
119
|
|
|
99
120
|
```
|
|
100
|
-
/devloom
|
|
101
|
-
/devloom-status
|
|
102
|
-
/devloom-resume
|
|
103
|
-
/devloom-init
|
|
121
|
+
/devloom → Weave a full feature from a single prompt
|
|
122
|
+
/devloom-status → Show current weaving progress
|
|
123
|
+
/devloom-resume → Resume an interrupted execution
|
|
124
|
+
/devloom-init → Initialize a project for DevLoom
|
|
125
|
+
/devloom-save → Persist current state and pause for the next command
|
|
126
|
+
/devloom-agents → List all agents and their current model assignments
|
|
127
|
+
/devloom-go → Switch to Go premium profile
|
|
128
|
+
/devloom-go-economy → Switch to Go economy profile
|
|
129
|
+
/devloom-go-flash → Switch to Go flash profile (cheapest paid)
|
|
130
|
+
/devloom-mimo → Switch to the MiMo V2.6 Flash profile (multimodal all-role stack)
|
|
131
|
+
/devloom-free → Switch to free-tier profile
|
|
132
|
+
/devloom-auto → Auto-detect best profile for your environment
|
|
133
|
+
/devloom-loop → Start/stop loop engineering patterns
|
|
104
134
|
```
|
|
105
135
|
|
|
106
136
|
Or check installed files directly:
|
|
@@ -109,14 +139,23 @@ Or check installed files directly:
|
|
|
109
139
|
# Linux / macOS
|
|
110
140
|
ls ~/.config/opencode/agents/ | grep devloom
|
|
111
141
|
|
|
112
|
-
# Expected:
|
|
113
|
-
devloom-analyst.md
|
|
114
|
-
devloom-architect.md
|
|
115
|
-
devloom-developer.md
|
|
116
|
-
devloom-documenter.md
|
|
142
|
+
# Expected (17 agents):
|
|
117
143
|
devloom-orchestrator.md
|
|
118
|
-
devloom-
|
|
119
|
-
|
|
144
|
+
devloom-planner.md devloom-planner-senior.md devloom-planner-flash.md
|
|
145
|
+
devloom-developer.md devloom-developer-senior.md devloom-developer-flash.md
|
|
146
|
+
devloom-qa.md devloom-qa-flash.md
|
|
147
|
+
devloom-verifier.md
|
|
148
|
+
devloom-security.md devloom-security-senior.md
|
|
149
|
+
devloom-documenter.md devloom-documenter-flash.md
|
|
150
|
+
devloom-vision.md
|
|
151
|
+
devloom-visual-director.md devloom-visual-critic.md
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
All installed `devloom-*` subagents are callable by `devloom-orchestrator`
|
|
155
|
+
during normal autonomous runs. You may invoke them manually, but they are not
|
|
156
|
+
restricted to manual-only use.
|
|
157
|
+
The expected behavior is delegation by default: the orchestrator routes and
|
|
158
|
+
persists state, while the matching subagent executes each specialist phase.
|
|
120
159
|
|
|
121
160
|
---
|
|
122
161
|
|
|
@@ -124,45 +163,158 @@ devloom-qa.md
|
|
|
124
163
|
|
|
125
164
|
### Default (no config)
|
|
126
165
|
|
|
127
|
-
All agents default to `opencode/
|
|
166
|
+
All agents default to the best available free model via per-role candidate chains — currently led by `opencode/big-pickle` (orchestrator), `opencode/nemotron-3-ultra-free` (planner), `opencode/big-pickle` (developer/QA/verifier/security) and `opencode/muse-spark-1.2-contributor-free` (documenter).
|
|
167
|
+
|
|
168
|
+
### Model Routing — Profiles
|
|
169
|
+
|
|
170
|
+
DevLoom provides model profiles that trade off quality vs cost:
|
|
171
|
+
|
|
172
|
+
| Profile | Use case | Tier |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| `go` | Production-grade builds, maximum quality | Go (paid) |
|
|
175
|
+
| `go-economy` | Good quality at lower cost | Go (paid) |
|
|
176
|
+
| `deepseek` | DeepSeek-only stack | Go (paid) |
|
|
177
|
+
| `glm` | GLM-only stack | Go (paid) |
|
|
178
|
+
| `go-flash` | Maximum throughput, minimum cost | Go (paid) |
|
|
179
|
+
| `mimo` | Multimodal all-role stack incl. vision | Go/MiMo |
|
|
180
|
+
| `free` | Zero-cost experimentation | Free |
|
|
181
|
+
|
|
182
|
+
The profile determines which model is assigned to each of the 10 agent roles.
|
|
183
|
+
Premium roles (planner, QA, verifier, security) get stronger models; the
|
|
184
|
+
`vision` and `visual-critic` roles always get a multimodal model regardless of
|
|
185
|
+
profile.
|
|
186
|
+
|
|
187
|
+
#### go (max quality)
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"models": {
|
|
192
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
193
|
+
"planner": "opencode-go/qwen3.7-max",
|
|
194
|
+
"developer": "opencode-go/kimi-k2.7-code",
|
|
195
|
+
"qa": "opencode-go/deepseek-v4-pro",
|
|
196
|
+
"verifier": "opencode-go/deepseek-v4-pro",
|
|
197
|
+
"security": "opencode-go/glm-5.2",
|
|
198
|
+
"documenter": "opencode-go/qwen3.7-plus",
|
|
199
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
200
|
+
"visual-director": "opencode-go/glm-5.2",
|
|
201
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### go-economy
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"models": {
|
|
211
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
212
|
+
"planner": "opencode-go/deepseek-v4-pro",
|
|
213
|
+
"developer": "opencode-go/deepseek-v4-pro",
|
|
214
|
+
"qa": "opencode-go/deepseek-v4-flash",
|
|
215
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
216
|
+
"security": "opencode-go/deepseek-v4-pro",
|
|
217
|
+
"documenter": "opencode-go/qwen3.7-plus",
|
|
218
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
219
|
+
"visual-director": "opencode-go/deepseek-v4-pro",
|
|
220
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
#### go-flash
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"models": {
|
|
230
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
231
|
+
"planner": "opencode-go/deepseek-v4-flash",
|
|
232
|
+
"developer": "opencode-go/deepseek-v4-flash",
|
|
233
|
+
"qa": "opencode-go/deepseek-v4-flash",
|
|
234
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
235
|
+
"security": "opencode-go/deepseek-v4-flash",
|
|
236
|
+
"documenter": "opencode-go/deepseek-v4-flash",
|
|
237
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
238
|
+
"visual-director": "opencode-go/deepseek-v4-flash",
|
|
239
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
#### deepseek
|
|
128
245
|
|
|
129
|
-
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"models": {
|
|
249
|
+
"orchestrator": "opencode-go/deepseek-v4-pro",
|
|
250
|
+
"planner": "opencode-go/deepseek-v4-pro",
|
|
251
|
+
"developer": "opencode-go/deepseek-v4-pro",
|
|
252
|
+
"qa": "opencode-go/deepseek-v4-pro",
|
|
253
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
254
|
+
"security": "opencode-go/deepseek-v4-pro",
|
|
255
|
+
"documenter": "opencode-go/deepseek-v4-flash",
|
|
256
|
+
"vision": "opencode-go/deepseek-v4-flash-vision-exp",
|
|
257
|
+
"visual-director": "opencode-go/deepseek-v4-pro",
|
|
258
|
+
"visual-critic": "opencode-go/deepseek-v4-flash-vision-exp"
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
130
262
|
|
|
131
|
-
|
|
263
|
+
#### free
|
|
132
264
|
|
|
133
265
|
```json
|
|
134
266
|
{
|
|
135
267
|
"models": {
|
|
136
268
|
"orchestrator": "opencode/big-pickle",
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
269
|
+
"planner": "opencode/nemotron-3-ultra-free",
|
|
270
|
+
"developer": "opencode/big-pickle",
|
|
271
|
+
"qa": "opencode/big-pickle",
|
|
272
|
+
"verifier": "opencode/big-pickle",
|
|
273
|
+
"security": "opencode/big-pickle",
|
|
274
|
+
"documenter": "opencode/muse-spark-1.2-contributor-free",
|
|
275
|
+
"vision": "opencode/mimo-v2.5-free",
|
|
276
|
+
"visual-director": "opencode/mimo-v2.5-free",
|
|
277
|
+
"visual-critic": "opencode/mimo-v2.5-free"
|
|
142
278
|
}
|
|
143
279
|
}
|
|
144
280
|
```
|
|
145
281
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
282
|
+
### Complexity tiers (name-based agent selection)
|
|
283
|
+
|
|
284
|
+
The orchestrator classifies every prompt by complexity and calls the correct
|
|
285
|
+
variant sub-agent by name — no global state switching. Each variant has a fixed
|
|
286
|
+
model, so worktrees never conflict.
|
|
149
287
|
|
|
150
|
-
|
|
288
|
+
| Tier | Classification | Agent Variants | Model |
|
|
289
|
+
|------|---------------|---------------|-------|
|
|
290
|
+
| **senior** | Complex feature, architecture, debugging, security audit | `-senior` suffix (planner, developer, security) | GLM-5.2, Kimi K3 |
|
|
291
|
+
| **standard** | Everything else (default) | Base agents (no suffix) | deepseek-v4-flash, qwen3.7-max, kimi-k2.7-code |
|
|
292
|
+
| **senior developer** | (when senior tier is selected) | devloom-developer-senior | `kimi-k3` |
|
|
151
293
|
|
|
152
|
-
|
|
294
|
+
### Per-project override
|
|
295
|
+
|
|
296
|
+
Create `.opencode/devloom/config.json` in your project root with your chosen profile above. Every DevLoom command (`/devloom`, `/devloom-init`, `/devloom-resume`) reads this file before invoking the orchestrator and applies the models to the global agent files. Local config always wins.
|
|
297
|
+
|
|
298
|
+
You can also override individual agents by providing a partial `models` map — only specified roles are changed, others keep their existing assignment.
|
|
299
|
+
|
|
300
|
+
### Provider-agnostic model IDs
|
|
301
|
+
|
|
302
|
+
Model IDs are validated as `provider/model` — any OpenCode provider works, and
|
|
303
|
+
the model segment may itself contain slashes (e.g. `lmstudio/google/gemma-...`):
|
|
153
304
|
|
|
154
305
|
| Correct | Wrong |
|
|
155
306
|
|---|---|
|
|
156
|
-
| `
|
|
307
|
+
| `mimo/mimo-v2.6-flash` | `mimo-v2.6-flash` |
|
|
157
308
|
| `opencode-go/deepseek-v4-pro` | `deepseek-v4-pro` |
|
|
158
309
|
|
|
159
|
-
|
|
310
|
+
Availability is checked against `opencode models`: a well-formed but
|
|
311
|
+
unavailable model still fails validation. Bare ids without a provider
|
|
312
|
+
(`deepseek-v4-flash`, `invalid-no-provider`) are invalid. Unavailable models
|
|
313
|
+
fail validation or fall back per profile policy.
|
|
160
314
|
|
|
161
315
|
### First-run interactive setup
|
|
162
316
|
|
|
163
|
-
If no `config.json` exists, Phase 0 detects available models (`opencode models`),
|
|
164
|
-
asks whether to use **Free** (`opencode/`) or **Go** (`opencode-go/`) tier,
|
|
165
|
-
then assigns the best available model per agent role.
|
|
317
|
+
If no `config.json` exists, Phase 0 detects available models (`opencode models`), asks which profile to use (**go**, **go-economy**, **mimo**, or **free**), then assigns models per agent role matching the selected profile.
|
|
166
318
|
|
|
167
319
|
### Available models
|
|
168
320
|
|
|
@@ -170,39 +322,83 @@ then assigns the best available model per agent role.
|
|
|
170
322
|
|
|
171
323
|
| Model string |
|
|
172
324
|
|---|
|
|
173
|
-
| `opencode/deepseek-v4-flash-free` |
|
|
174
|
-
| `opencode/minimax-m2.5-free` |
|
|
175
|
-
| `opencode/nemotron-3-super-free` |
|
|
176
325
|
| `opencode/big-pickle` |
|
|
326
|
+
| `opencode/ling-3.0-flash-fin-free` |
|
|
327
|
+
| `opencode/mimo-v2.5-free` |
|
|
328
|
+
| `opencode/muse-spark-1.2-contributor-free` |
|
|
329
|
+
| `opencode/muse-spark-1.3-contributor-free` |
|
|
330
|
+
| `opencode/nemotron-3-ultra-free` |
|
|
331
|
+
| `opencode/nemotron-3.5-lightning-free` |
|
|
177
332
|
|
|
178
|
-
**Go tier** (`opencode-go/` — higher quality):
|
|
333
|
+
**Go tier** (`opencode-go/` — higher quality, paid):
|
|
179
334
|
|
|
180
335
|
| Model string |
|
|
181
336
|
|---|
|
|
182
|
-
| `opencode-go/deepseek-v4-pro` |
|
|
183
|
-
| `opencode-go/deepseek-v4-flash` |
|
|
184
|
-
| `opencode-go/kimi-k2.5` |
|
|
185
|
-
| `opencode-go/kimi-k2.6` |
|
|
186
337
|
| `opencode-go/glm-5` |
|
|
187
338
|
| `opencode-go/glm-5.1` |
|
|
339
|
+
| `opencode-go/kimi-k2.5` |
|
|
340
|
+
| `opencode-go/kimi-k2.6` |
|
|
341
|
+
| `opencode-go/deepseek-v4-pro` |
|
|
342
|
+
| `opencode-go/deepseek-v4-flash` |
|
|
188
343
|
| `opencode-go/minimax-m2.5` |
|
|
189
344
|
| `opencode-go/minimax-m2.7` |
|
|
345
|
+
| `opencode-go/minimax-m3` |
|
|
190
346
|
| `opencode-go/mimo-v2.5` |
|
|
191
347
|
| `opencode-go/mimo-v2.5-pro` |
|
|
192
|
-
| `opencode-go/qwen3.5-plus` |
|
|
193
348
|
| `opencode-go/qwen3.6-plus` |
|
|
349
|
+
| `opencode-go/qwen3.7-plus` |
|
|
350
|
+
| `opencode-go/qwen3.7-max` |
|
|
351
|
+
|
|
352
|
+
### Checking available models
|
|
194
353
|
|
|
195
|
-
Run `opencode models` to see
|
|
354
|
+
Run `opencode models` in your terminal to see which models are currently available in your environment. Available models vary by region and subscription tier.
|
|
196
355
|
|
|
197
356
|
### Global override (advanced)
|
|
198
357
|
|
|
199
358
|
Edit the agent files at `~/.config/opencode/agents/` directly:
|
|
200
359
|
|
|
201
360
|
```bash
|
|
202
|
-
sed -i 's|^model:.*|model: opencode/deepseek-v4-
|
|
361
|
+
sed -i 's|^model:.*|model: opencode-go/deepseek-v4-pro|' \
|
|
203
362
|
~/.config/opencode/agents/devloom-*.md
|
|
204
363
|
```
|
|
205
364
|
|
|
365
|
+
### Updating global agents after config change
|
|
366
|
+
|
|
367
|
+
After modifying `.opencode/devloom/config.json` (e.g., switching profiles or overriding individual models), run `/devloom-init` or start a new weave with `/devloom`. DevLoom re-reads the config and updates the global agent files at `~/.config/opencode/agents/devloom-*.md` automatically.
|
|
368
|
+
|
|
369
|
+
If you prefer a manual refresh:
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
node $(npm root -g)/devloom/postinstall.mjs
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
This re-installs agent files from the installed package. Then start a weave to apply your config models.
|
|
376
|
+
|
|
377
|
+
### Profile and agents in the sidebar
|
|
378
|
+
|
|
379
|
+
OpenCode installs npm plugins into `~/.cache/opencode/packages/` with
|
|
380
|
+
`ignoreScripts`, so the DevLoom plugin code there can go stale. When it does,
|
|
381
|
+
the plugin's `config` hook never runs and the sidebar does not reflect the
|
|
382
|
+
profile or the injected agent configs. DevLoom keeps that cache in sync:
|
|
383
|
+
|
|
384
|
+
- The package `postinstall` and the `/devloom-refresh` command re-copy the
|
|
385
|
+
current plugin code (the hook that injects all 17 agents + the active
|
|
386
|
+
profile) into the OpenCode plugin cache. The refresh rebuilds `dist/` from
|
|
387
|
+
source first, so the cache never receives stale compiled code.
|
|
388
|
+
- The sidebar header shows the active profile (`DevLoom - free`, `DevLoom - go`,
|
|
389
|
+
...) and every agent row shows its resolved model (e.g.
|
|
390
|
+
`orchestrator: opencode/big-pickle`). The active profile is also
|
|
391
|
+
visible on the orchestrator agent description:
|
|
392
|
+
`DevLoom Orchestrator: autonomous multi-agent delivery (profile: go-flash)`.
|
|
393
|
+
With a senior tier override the label is extended to
|
|
394
|
+
`(profile: go, tier: senior)`.
|
|
395
|
+
- The sidebar shows only the 10 base agents — all `-flash` and `-senior`
|
|
396
|
+
variants are hidden for every profile. All 17 agents stay registered, so the
|
|
397
|
+
orchestrator can still delegate to hidden variants via `task()`.
|
|
398
|
+
- After installing/updating DevLoom or switching profiles, **restart opencode**
|
|
399
|
+
(or continue with `opencode --continue`) to see the updated profile and
|
|
400
|
+
agents in the sidebar.
|
|
401
|
+
|
|
206
402
|
---
|
|
207
403
|
|
|
208
404
|
## Usage
|
|
@@ -216,6 +412,10 @@ cd /path/to/your/project
|
|
|
216
412
|
opencode
|
|
217
413
|
```
|
|
218
414
|
|
|
415
|
+
If this is the first time DevLoom is used in the project, or the project has an
|
|
416
|
+
older DevLoom workspace, plugin startup normalizes `.opencode/devloom/project/`
|
|
417
|
+
before command execution.
|
|
418
|
+
|
|
219
419
|
#### Option 1 — Slash command (recommended)
|
|
220
420
|
|
|
221
421
|
```
|
|
@@ -238,7 +438,12 @@ opencode run "/devloom Add OpenTelemetry tracing to all HTTP handlers"
|
|
|
238
438
|
|
|
239
439
|
### What happens after you submit the prompt
|
|
240
440
|
|
|
241
|
-
|
|
441
|
+
The orchestrator first **triages** the prompt and picks the minimal agent chain
|
|
442
|
+
for the intent (bug → developer-fix>qa-regression; docs → planner>documenter;
|
|
443
|
+
small change → developer>qa; etc. — see `workflow.dsl` CHAINS). Verifier
|
|
444
|
+
agents are added only when the work touches their surface (UI, API, CRUD/data
|
|
445
|
+
exposure, user flows). The full sequence below runs only for a feature that
|
|
446
|
+
touches all surfaces:
|
|
242
447
|
|
|
243
448
|
**Phase 0 — Model Setup**
|
|
244
449
|
|
|
@@ -248,29 +453,77 @@ preference (Free or Go tier), and assigns models per agent role.
|
|
|
248
453
|
|
|
249
454
|
**Phase 1 — Understand & Plan**
|
|
250
455
|
|
|
251
|
-
The
|
|
252
|
-
|
|
253
|
-
|
|
456
|
+
The Planner explores your codebase, writes `.opencode/devloom/requirements.md`,
|
|
457
|
+
then a CleanArch `.opencode/devloom/plan.md` with an ordered, dependency-resolved
|
|
458
|
+
task list (it can run REQ-only, PLAN-only, or both).
|
|
459
|
+
Before phase routing, the orchestrator appends the current user prompt as the
|
|
460
|
+
last item in `.opencode/devloom/project/tasks/TODO.md`, loads relevant memory
|
|
461
|
+
and skills, and keeps ticket/todo/plan artifacts synchronized.
|
|
254
462
|
|
|
255
|
-
**Phase 2 —
|
|
463
|
+
**Phase 2 — Implementation & QA Loop**
|
|
256
464
|
|
|
257
465
|
For each task in the plan:
|
|
258
|
-
1. The Developer implements the code.
|
|
259
|
-
2. QA writes tests, runs the linter, runs the full test suite,
|
|
260
|
-
`QA_PASS` or `QA_FAIL`.
|
|
261
|
-
3. On failure: the Orchestrator
|
|
262
|
-
|
|
263
|
-
|
|
466
|
+
1. The Developer implements the code (TDD, SOLID, clean architecture).
|
|
467
|
+
2. QA writes tests, runs the linter, runs the full test suite, reviews the code,
|
|
468
|
+
runs targeted regression, and reports `QA_PASS` or `QA_FAIL`.
|
|
469
|
+
3. On failure: the Orchestrator routes the defect back to the Developer for a
|
|
470
|
+
root-cause fix (no workarounds), then QA regression. Up to 3 fix cycles per
|
|
471
|
+
defect, then the ticket is marked blocked.
|
|
264
472
|
4. The Orchestrator marks the task `[x]` in `.opencode/devloom/plan.md`.
|
|
265
473
|
|
|
266
|
-
**
|
|
474
|
+
**Runtime verification (only when the change touches a surface)**
|
|
267
475
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
476
|
+
A single Verifier agent runs the requested scope(s) against the running app —
|
|
477
|
+
the running app is the source of truth, not specs. Scopes:
|
|
478
|
+
- `explore` — discover routes, pages, buttons, forms, modals, tables.
|
|
479
|
+
- `route` + `dom` — HTTP status, content, console errors, DOM integrity.
|
|
480
|
+
- `form` — valid/invalid/boundary submissions, validation, loading/error/success.
|
|
481
|
+
- `a11y` — ARIA, labels, keyboard nav, focus, contrast, semantic HTML.
|
|
482
|
+
- `api` + `contract` — auth, validation, schema, status codes; runtime vs OpenAPI.
|
|
483
|
+
- `journey` + `state` — generated user flows and state-transition coverage.
|
|
271
484
|
|
|
485
|
+
The orchestrator adds only the scopes the change requires (UI → route/form/a11y,
|
|
486
|
+
API → api/contract, user flow → journey/state).
|
|
487
|
+
|
|
488
|
+
**Security (mandatory on exposure)**
|
|
489
|
+
|
|
490
|
+
The `devloom-security` subagent is mandatory whenever a CRUD endpoint changes or
|
|
491
|
+
when a component/module starts exposing internal data through input or output
|
|
492
|
+
boundaries. It performs a forensic, evidence-based review.
|
|
493
|
+
|
|
494
|
+
**Acceptance Gate (Final)**
|
|
495
|
+
|
|
496
|
+
The Documenter updates README.md and any API docs.
|
|
497
|
+
The Orchestrator runs the final acceptance gate against the criteria relevant to
|
|
498
|
+
the chosen chain:
|
|
499
|
+
|
|
500
|
+
```
|
|
501
|
+
build: pass
|
|
502
|
+
lint: pass
|
|
503
|
+
unit_tests: pass
|
|
504
|
+
integration_tests: pass
|
|
505
|
+
e2e_tests: pass
|
|
506
|
+
all_routes_visited: pass
|
|
507
|
+
all_buttons_tested: pass
|
|
508
|
+
all_forms_tested: pass
|
|
509
|
+
all_links_verified: pass
|
|
510
|
+
all_user_journeys_passed: pass
|
|
511
|
+
all_api_endpoints_verified: pass
|
|
512
|
+
accessibility_verified: pass
|
|
513
|
+
responsive_layout_verified: pass
|
|
514
|
+
visual_validation_verified: pass
|
|
515
|
+
performance_validation_verified: pass
|
|
516
|
+
security_validation_verified: pass
|
|
517
|
+
no_open_defects: pass
|
|
272
518
|
```
|
|
273
|
-
|
|
519
|
+
|
|
520
|
+
If any gate fails, the Orchestrator routes back to the Developer for a
|
|
521
|
+
root-cause fix and re-verification. `DEVLOOM_DONE` is output only when all gates
|
|
522
|
+
for the chosen chain pass.
|
|
523
|
+
|
|
524
|
+
Completed output example:
|
|
525
|
+
```
|
|
526
|
+
DEVLOOM_DONE — ALL GATES PASSED
|
|
274
527
|
|
|
275
528
|
Completed 8 tasks:
|
|
276
529
|
- Task 1: Database schema and migration
|
|
@@ -351,17 +604,80 @@ without starting a weave:
|
|
|
351
604
|
|
|
352
605
|
---
|
|
353
606
|
|
|
607
|
+
## Visual Pipeline
|
|
608
|
+
|
|
609
|
+
For substantial graphical work, DevLoom routes through an extra visual loop:
|
|
610
|
+
|
|
611
|
+
```
|
|
612
|
+
planner (marks VISUAL_REQUIRED=true)
|
|
613
|
+
→ visual-director (classifies visual domain + defines direction;
|
|
614
|
+
persists .opencode/devloom/context/design.md)
|
|
615
|
+
→ developer (implements against design.md as the visual contract;
|
|
616
|
+
functionality overrides aesthetics)
|
|
617
|
+
→ visual-critic (independent screenshot review — fresh context, no
|
|
618
|
+
implementation rationale)
|
|
619
|
+
→ developer correction (max 3 visual cycles, integrated with DevLoom's
|
|
620
|
+
existing defect-loop circuit breakers)
|
|
621
|
+
→ qa → verifier (visual, responsive, motion, a11y + functional scopes)
|
|
622
|
+
→ documenter
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
- **Small UI bug**: developer → qa → verifier — no visual agents. Backend work never routes through visual agents.
|
|
626
|
+
- **Design memory**: `.opencode/devloom/context/design.md` with sections Visual Concept, Personality, UX Goal, Color Roles, Typography, Spacing, Grid/Layout, Surface, Shape Language, Components, Iconography, Motion, Interaction, Responsive, Accessibility, DO/DON'T (games add HUD Information Priority + Gameplay Attention Rules). Read before subsequent visual work; updated only when direction intentionally changes.
|
|
627
|
+
- **Visual complexity** is orchestration metadata: `none` / `standard` / `high` — separate from the engineering tier (senior/standard).
|
|
628
|
+
- **New skills**: `design/visual-direction`, `design/design-grounding`, `design/web-design`, `design/app-design`, `design/game-design`, `design/motion-design`, `design/design-system`; `verify/visual-critique`, `verify/visual-quality-gate`, `verify/visual-regression`.
|
|
629
|
+
- **Verifier scopes gained**: `visual` (render + screenshot + critique integration + design-direction alignment), `responsive` (1440×1000, 1024×900, 390×844 or project targets: overflow, clipping, nav, readability, reflow, control usability), `motion` (key transitions, feedback, prefers-reduced-motion, no motion breakage).
|
|
630
|
+
- **Completion gates**: FUNCTIONAL + QA + VISUAL + RESPONSIVE + ACCESSIBILITY for graphical work. `visual_validation_verified` requires actual rendered evidence when tooling supports it; if images cannot be inspected, DevLoom reports `VISUAL_VERIFICATION_LIMITED` instead of a false pass. Backend-only changes do not require visual gates.
|
|
631
|
+
- **Chrome MCP (optional)**: browser-renderable work uses the Chrome MCP when configured (screenshots, DOM/a11y snapshot, viewport resize, device emulation, console/network, JS eval, Lighthouse). It is discovered, never assumed; Playwright MCP is not a substitute. Without it, DevLoom falls back to structural/runtime verification and says so — it never fabricates visual checks.
|
|
632
|
+
- **One-time multimodal path check**: Chrome screenshot → actual image → vision-capable model. If real images cannot reach the model (e.g. a given MiMo endpoint), screenshot validation is not marked passed.
|
|
633
|
+
- **OpenDesign MCP (optional)**: if an `opendesign` MCP is configured, visual-director may use it for design grounding (typography/spacing/density/palette/motion/interaction relationships + explicit DON'T rules). Never a hard dependency; DevLoom works normally without it, and never clones another product.
|
|
634
|
+
- **Optional max-quality visual mode (documented, NOT default)**: 3 concepts → select 1 → 2 isolated implementations → blind visual-critic comparison → winner → max 2–3 refinement cycles → verifier gates. Only for high-value deliverables.
|
|
635
|
+
- **Anti-generic-aesthetic rules**: avoid card soup, pill soup, default purple gradients, meaningless glassmorphism, arbitrary glow, decorative blobs, giant text without compositional purpose, generic cyan sci-fi HUDs/hexagons/scanlines, and dark SaaS dashboards disguised as game UI. Quality = hierarchy, composition, typography, spacing, proportion, coherence, domain fit, interaction quality.
|
|
636
|
+
|
|
637
|
+
---
|
|
638
|
+
|
|
639
|
+
## Loop Engineering
|
|
640
|
+
|
|
641
|
+
DevLoom ships a cadence-driven execution system for recurring agent tasks. Seven
|
|
642
|
+
loop patterns are available out of the box: `daily-triage`, `pr-babysitter`,
|
|
643
|
+
`ci-sweeper`, `dependency-sweeper`, `changelog-drafter`, `post-merge-cleanup`,
|
|
644
|
+
and `issue-triage`.
|
|
645
|
+
|
|
646
|
+
Each pattern has a matching skill under `skills/loop/` and a safety level:
|
|
647
|
+
|
|
648
|
+
- **L1 (report-only)** — observe and report, no modifications
|
|
649
|
+
- **L2 (assisted)** — fix in an isolated worktree with verifier approval
|
|
650
|
+
- **L3 (unattended)** — full autonomous fix-and-close cycle
|
|
651
|
+
|
|
652
|
+
Start a loop from within OpenCode:
|
|
653
|
+
|
|
654
|
+
```
|
|
655
|
+
/devloom-loop start daily-triage --cadence "0 8 * * 1-5" --level L2
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
Run a single tick manually from the terminal:
|
|
659
|
+
|
|
660
|
+
```bash
|
|
661
|
+
node scripts/loop-run.mjs --pattern daily-triage
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
The loop system includes a token budget circuit breaker: if a run exceeds its
|
|
665
|
+
allocated budget, the loop auto-pauses and logs the overage. Run
|
|
666
|
+
`/devloom-loop status` to inspect current loop state, last run, and budget
|
|
667
|
+
consumption.
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
354
671
|
## Skills System
|
|
355
672
|
|
|
356
|
-
Each agent loads
|
|
357
|
-
|
|
358
|
-
|
|
673
|
+
Each agent loads exactly one skill via its `LOAD:` directive. The skill folds in
|
|
674
|
+
the relevant engineering standards (SOLID, clean code, clean architecture, TDD,
|
|
675
|
+
UI/UX, forensic root-cause discipline). The `skill-discovery` meta-skill maps
|
|
676
|
+
task domains to the right agent skill.
|
|
359
677
|
|
|
360
|
-
```
|
|
361
|
-
# Each agent declares its
|
|
362
|
-
|
|
363
|
-
- skill-discovery
|
|
364
|
-
- frontend-development
|
|
678
|
+
```
|
|
679
|
+
# Each agent's body declares its skill via LOAD:
|
|
680
|
+
LOAD: ...|~/.config/opencode/skills/build/development.md
|
|
365
681
|
```
|
|
366
682
|
|
|
367
683
|
Skills are stored in `~/.config/opencode/skills/` following the
|
|
@@ -369,15 +685,39 @@ Skills are stored in `~/.config/opencode/skills/` following the
|
|
|
369
685
|
|
|
370
686
|
```
|
|
371
687
|
skills/
|
|
372
|
-
├── meta/ skill-discovery
|
|
373
|
-
├──
|
|
374
|
-
|
|
375
|
-
├── build/
|
|
376
|
-
│
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
688
|
+
├── meta/ skill-discovery (orchestrator)
|
|
689
|
+
├── plan/ planning (planner)
|
|
690
|
+
│ verification-planning (planner — evidence path)
|
|
691
|
+
├── build/ development (developer)
|
|
692
|
+
│ simplify (developer, qa)
|
|
693
|
+
│ vision-analysis (vision)
|
|
694
|
+
│ live-docs (developer)
|
|
695
|
+
├── design/ visual-direction (visual-director — always)
|
|
696
|
+
│ design-grounding (visual-director)
|
|
697
|
+
│ web-design (visual-director — WEB_CREATIVE)
|
|
698
|
+
│ app-design (visual-director — PRODUCT_APP)
|
|
699
|
+
│ game-design (visual-director — GAME_UI)
|
|
700
|
+
│ motion-design (visual-director)
|
|
701
|
+
│ design-system (visual-director — EXISTING_DESIGN_SYSTEM)
|
|
702
|
+
├── verify/ quality-assurance (qa)
|
|
703
|
+
│ app-verification (verifier)
|
|
704
|
+
│ visual-critique (visual-critic)
|
|
705
|
+
│ visual-quality-gate (verifier)
|
|
706
|
+
│ visual-regression (verifier)
|
|
707
|
+
├── review/ security-review (security)
|
|
708
|
+
├── ship/ documentation (documenter)
|
|
709
|
+
└── loop/ 10 loop engineering skills (daily-triage, pr-babysitter, ...)
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
Discovery mapping for the visual roles: `visual-director` →
|
|
713
|
+
`design/visual-direction` plus its domain design skill
|
|
714
|
+
(`web-design` / `app-design` / `game-design`); `visual-critic` →
|
|
715
|
+
`verify/visual-critique`. Visual skills load only when the orchestrator routes
|
|
716
|
+
to those roles.
|
|
717
|
+
|
|
718
|
+
Agents may load multiple skills via pipe-separated `LOAD:` directives. For example,
|
|
719
|
+
planner loads both `planning` and `verification-planning`; developer and qa both
|
|
720
|
+
load `development`/or `quality-assurance` plus `simplify`.
|
|
381
721
|
|
|
382
722
|
---
|
|
383
723
|
|
|
@@ -398,9 +738,17 @@ node $(npm root -g)/devloom/postinstall.mjs
|
|
|
398
738
|
|
|
399
739
|
### ProviderModelNotFoundError
|
|
400
740
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
741
|
+
This error means an agent file references a model that is not available in your environment. Common causes:
|
|
742
|
+
|
|
743
|
+
1. **Missing provider** — model ids must be `provider/model`; bare ids (e.g. `deepseek-v4-flash`) are invalid and fail validation. DevLoom does not add a provider automatically.
|
|
744
|
+
2. **Model not available** — some Go models may not be available in your region or subscription. Run `opencode models` to list available models.
|
|
745
|
+
3. **Outdated agent files** — global agent files may reference a model that no longer exists. Re-run the installer and apply config:
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
node $(npm root -g)/devloom/postinstall.mjs
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Then update your `.opencode/devloom/config.json` with models from the available list and start a new weave.
|
|
404
752
|
|
|
405
753
|
### The weave stops before DEVLOOM_DONE
|
|
406
754
|
|
|
@@ -424,14 +772,37 @@ Note: this project uses bun test for testing and bun run build for builds.
|
|
|
424
772
|
|
|
425
773
|
### A task keeps failing QA
|
|
426
774
|
|
|
427
|
-
The Orchestrator
|
|
428
|
-
|
|
775
|
+
The Orchestrator routes failures to:
|
|
776
|
+
1. Root Cause Analysis — determines the root cause
|
|
777
|
+
2. Repair Agent — applies minimal fix
|
|
778
|
+
3. Regression Verification — re-runs all tests
|
|
779
|
+
|
|
780
|
+
Up to 3 repair cycles per defect, then the defect is marked `escalated` in the
|
|
781
|
+
registry and the task is skipped. To manually retry an escalated task:
|
|
429
782
|
|
|
430
783
|
1. Open `.opencode/devloom/plan.md` and change `- [x]` back to `- [ ]`
|
|
431
|
-
2.
|
|
784
|
+
2. Open `.opencode/devloom/defects.json` and remove or reset the defect
|
|
432
785
|
3. Run `/devloom-status` to confirm it is pending
|
|
433
786
|
4. Resume: `/devloom-resume`
|
|
434
787
|
|
|
788
|
+
### The acceptance gate is failing
|
|
789
|
+
|
|
790
|
+
Check `.opencode/devloom/defects.json` for open defects. Common gate failures:
|
|
791
|
+
|
|
792
|
+
| Gate | Common Cause |
|
|
793
|
+
|------|-------------|
|
|
794
|
+
| `all_routes_visited` | Explorer didn't discover all routes — check app starts correctly |
|
|
795
|
+
| `all_forms_tested` | Form verifier found validation issues — check error/success handling |
|
|
796
|
+
| `no_open_defects` | Defects in registry need repair — run RCA + Repair |
|
|
797
|
+
| `accessibility_verified` | ARIA labels or keyboard nav missing — check semantic HTML |
|
|
798
|
+
| `build` | Repair may have introduced build error — Recovery Agent auto-fixes most |
|
|
799
|
+
|
|
800
|
+
### The Recovery Agent keeps retrying
|
|
801
|
+
|
|
802
|
+
The Recovery Agent retries 3 times per failure type. If all 3 attempts fail,
|
|
803
|
+
the defect is marked `escalated`. Check `.opencode/devloom/recovery-log.md`
|
|
804
|
+
for the full recovery attempt history.
|
|
805
|
+
|
|
435
806
|
---
|
|
436
807
|
|
|
437
808
|
## Uninstalling
|
|
@@ -447,39 +818,101 @@ rm -rf ~/.config/opencode/skills/
|
|
|
447
818
|
|
|
448
819
|
---
|
|
449
820
|
|
|
821
|
+
## Security Considerations
|
|
822
|
+
|
|
823
|
+
### Permissions
|
|
824
|
+
|
|
825
|
+
DevLoom operates with your user permissions. It does not escalate privileges.
|
|
826
|
+
The agent `permission` blocks in `~/.config/opencode/agents/devloom-*.md` define
|
|
827
|
+
what each agent can do (edit files, run shell commands, fetch URLs, etc.).
|
|
828
|
+
Review these permissions and restrict them if needed.
|
|
829
|
+
|
|
830
|
+
**Hard delegation guarantees** — the orchestrator agent's `permission` block
|
|
831
|
+
sets `edit: deny`, `write: deny`, `patch: deny` at the OpenCode level. The model
|
|
832
|
+
cannot bypass this; the only way to produce code is via `task()` delegation to
|
|
833
|
+
sub-agents. Sub-agents have `task: deny`, preventing delegation chains. This is
|
|
834
|
+
enforced by OpenCode itself, not by the plugin — it survives plugin reloads.
|
|
835
|
+
|
|
836
|
+
### Prompt Sanitization
|
|
837
|
+
|
|
838
|
+
User prompts are truncated to 4000 characters and control characters are stripped
|
|
839
|
+
before they reach the orchestrator. This provides basic injection prevention.
|
|
840
|
+
However, AI agents may still follow instructions embedded in prompts — always
|
|
841
|
+
review generated output critically.
|
|
842
|
+
|
|
843
|
+
### Path Traversal Protection
|
|
844
|
+
|
|
845
|
+
The `postinstall.mjs` script validates all destination paths to ensure they stay
|
|
846
|
+
within the OpenCode config directory (`~/.config/opencode/`). Paths containing
|
|
847
|
+
`..` or absolute paths outside the config directory are rejected.
|
|
848
|
+
|
|
849
|
+
### Reporting Vulnerabilities
|
|
850
|
+
|
|
851
|
+
See [SECURITY.md](SECURITY.md) for our responsible disclosure policy.
|
|
852
|
+
|
|
853
|
+
### Best Practices
|
|
854
|
+
|
|
855
|
+
- Pin exact versions in `package.json` instead of using ranges.
|
|
856
|
+
- Review all generated code before committing or deploying.
|
|
857
|
+
- Run `npm audit` regularly to check dependency vulnerabilities.
|
|
858
|
+
- Keep DevLoom state in `.opencode/devloom/` and add it to `.gitignore` if you
|
|
859
|
+
do not want execution state tracked in version control.
|
|
860
|
+
|
|
861
|
+
---
|
|
862
|
+
|
|
450
863
|
## Architecture Reference
|
|
451
864
|
|
|
452
865
|
```
|
|
453
866
|
devloom/
|
|
454
867
|
├── src/
|
|
455
|
-
│ ├── index.ts
|
|
456
|
-
│
|
|
457
|
-
├──
|
|
458
|
-
│ ├──
|
|
459
|
-
│ ├──
|
|
460
|
-
│ ├──
|
|
461
|
-
│ ├──
|
|
462
|
-
│
|
|
463
|
-
|
|
464
|
-
├──
|
|
465
|
-
│ ├── devloom.md
|
|
466
|
-
│ ├── devloom-
|
|
467
|
-
│ ├── devloom-
|
|
468
|
-
│
|
|
469
|
-
├──
|
|
868
|
+
│ ├── index.ts # Plugin entry point (exports DevLoomPlugin)
|
|
869
|
+
│ ├── plugin.ts # Lifecycle hooks: event, chat.message, tool.execute.before/after
|
|
870
|
+
│ ├── guard.ts # Compliance guard, loop detection, state summary
|
|
871
|
+
│ ├── bootstrap.ts # Project workspace bootstrap
|
|
872
|
+
│ ├── context.ts # Architecture atlas generation
|
|
873
|
+
│ ├── loop.ts # Loop engineering state
|
|
874
|
+
│ ├── worktree.ts # Worktree management
|
|
875
|
+
│ └── constraints.ts # Loop constraints
|
|
876
|
+
├── agents/ # 17 agents — 10 base + 7 tier variants
|
|
877
|
+
│ ├── devloom-orchestrator.md # primary — triage, route, state, gate (edit/write/patch: deny)
|
|
878
|
+
│ ├── devloom-planner.md / -senior / -flash
|
|
879
|
+
│ ├── devloom-developer.md / -senior / -flash
|
|
880
|
+
│ ├── devloom-qa.md / -flash
|
|
881
|
+
│ ├── devloom-verifier.md
|
|
882
|
+
│ ├── devloom-security.md / -senior
|
|
883
|
+
│ ├── devloom-documenter.md / -flash
|
|
884
|
+
│ ├── devloom-vision.md
|
|
885
|
+
│ ├── devloom-visual-director.md
|
|
886
|
+
│ └── devloom-visual-critic.md
|
|
887
|
+
├── commands/ # 17 command files
|
|
888
|
+
│ ├── devloom.md, devloom-init.md, devloom-resume.md, devloom-status.md
|
|
889
|
+
│ ├── devloom-save.md, devloom-agents.md
|
|
890
|
+
│ ├── devloom-go.md, devloom-go-economy.md, devloom-go-flash.md
|
|
891
|
+
│ ├── devloom-deepseek.md, devloom-mimo.md, devloom-free.md, devloom-auto.md
|
|
892
|
+
│ ├── devloom-plan.md, devloom-context.md
|
|
893
|
+
│ └── devloom-loop.md, devloom-loop-status.md
|
|
894
|
+
├── skills/ # 21 skill files + 10 loop skills
|
|
470
895
|
│ ├── meta/ skill-discovery
|
|
471
|
-
│ ├──
|
|
472
|
-
│ ├──
|
|
473
|
-
│ ├──
|
|
474
|
-
│ │
|
|
475
|
-
│ ├── verify/ quality-assurance,
|
|
476
|
-
│
|
|
477
|
-
│
|
|
478
|
-
├──
|
|
896
|
+
│ ├── plan/ planning, verification-planning
|
|
897
|
+
│ ├── build/ development, simplify, vision-analysis, live-docs
|
|
898
|
+
│ ├── design/ visual-direction, design-grounding, web-design, app-design,
|
|
899
|
+
│ │ game-design, motion-design, design-system
|
|
900
|
+
│ ├── verify/ quality-assurance, app-verification,
|
|
901
|
+
│ │ visual-critique, visual-quality-gate, visual-regression
|
|
902
|
+
│ ├── review/ security-review (full audit playbook)
|
|
903
|
+
│ ├── ship/ documentation
|
|
904
|
+
│ └── loop/ 10 loop engineering skills
|
|
905
|
+
├── protocol/ # Shared protocols (orchestrator-core, agent-contracts, ...)
|
|
906
|
+
├── .opencode/themes/ # DevLoom Night Owl theme
|
|
907
|
+
├── __tests__/ # 228 unit tests (Jest)
|
|
908
|
+
├── postinstall.mjs # Installs 17 agents, 16 commands, 21 skills, theme
|
|
909
|
+
├── SECURITY.md # Security policy and disclosure
|
|
910
|
+
├── jest.config.mjs # Jest test configuration
|
|
479
911
|
├── package.json
|
|
480
912
|
├── tsconfig.json
|
|
481
913
|
├── README.md
|
|
482
|
-
|
|
914
|
+
├── GUIDE.md # This file
|
|
915
|
+
└── .github/workflows/ci.yml # CI pipeline (Node 18, 20, 22)
|
|
483
916
|
```
|
|
484
917
|
|
|
485
918
|
---
|