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