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.
- 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 +572 -115
- package/README.md +583 -109
- package/SECURITY.md +93 -0
- package/agents/devloom-developer-flash.md +31 -0
- package/agents/devloom-developer-senior.md +32 -0
- package/agents/devloom-developer.md +21 -55
- package/agents/devloom-documenter-flash.md +28 -0
- package/agents/devloom-documenter.md +17 -56
- package/agents/devloom-orchestrator.md +236 -356
- package/agents/devloom-planner-flash.md +34 -0
- package/agents/devloom-planner-senior.md +35 -0
- package/agents/devloom-planner.md +36 -0
- package/agents/devloom-qa-flash.md +32 -0
- package/agents/devloom-qa.md +21 -83
- package/agents/devloom-security-senior.md +35 -0
- package/agents/devloom-security.md +34 -0
- package/agents/devloom-verifier.md +33 -0
- package/agents/devloom-vision.md +113 -0
- package/agents/devloom-visual-critic.md +102 -0
- package/agents/devloom-visual-director.md +84 -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-mimo.md +11 -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 +264 -64
- 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 +194 -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/briefing.mjs +192 -0
- package/scripts/loop-run.mjs +205 -0
- package/scripts/model-capabilities.mjs +194 -0
- package/scripts/plugin-cache.mjs +269 -0
- package/scripts/profile.mjs +755 -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/README.md
CHANGED
|
@@ -1,50 +1,102 @@
|
|
|
1
1
|
# DevLoom
|
|
2
2
|
|
|
3
|
-
**Autonomous
|
|
3
|
+
**Autonomous Software Delivery System for OpenCode**
|
|
4
4
|
|
|
5
5
|
DevLoom combines *Developer* + *Loom* — the loom being the ancient machine that
|
|
6
|
-
weaves individual threads into finished fabric.
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
weaves individual threads into finished fabric. It transforms a single prompt
|
|
7
|
+
into verified, documented, production-ready software — not just generated code.
|
|
8
|
+
|
|
9
|
+
> Generating code is not success. Passing verification is not success.
|
|
10
|
+
> Success is achieved only when all acceptance gates have passed.
|
|
9
11
|
|
|
10
12
|
---
|
|
11
13
|
|
|
14
|
+
## Highlights
|
|
15
|
+
|
|
16
|
+
- **17 agents, hard-delegation enforced** — Orchestrator routes; Planner, Developer, QA, Verifier, Security, Documenter, Vision, plus the read-only Visual Director (design direction) and Visual Critic (independent visual review) execute. Orchestrator has `edit/write/patch: deny` at the OpenCode permission level — code production is IMPOSSIBLE without `task()` delegation. Sub-agents have `task: deny` to prevent delegation chains.
|
|
17
|
+
- **Complexity-based tiering** — Classifies prompts as senior/standard, calls variant agents by name. No global state.
|
|
18
|
+
- **Protocol compliance** — Inline RULES + guard injection per turn. Never skippable.
|
|
19
|
+
- **Pipeline continuity** — Sessions tracked via `state.sessions`, task_id reused across turns.
|
|
20
|
+
- **Loop detection** — Tracks retry counts per agent per ticket. Warns at 2+ retries, blocks at 3+. Detects delegation chains and phase stalls.
|
|
21
|
+
- **Peer review gate** — Multi-model consensus for high-risk changes.
|
|
22
|
+
- **Architecture atlas** — Auto-generated codebase map on plugin init.
|
|
23
|
+
- **Queue-over-preempt** — New prompts queue behind active work.
|
|
24
|
+
- **Tier degradation** — Auto-fallback on model failure: senior→standard→skip.
|
|
25
|
+
- **Agent listing** — `/devloom-agents` shows all agents and their current model assignments.
|
|
26
|
+
- **Background dispatch** — Independent lanes run via `task(..., background: true)` for parallel work.
|
|
27
|
+
|
|
12
28
|
## How It Works
|
|
13
29
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
30
|
+
```
|
|
31
|
+
/devloom "<prompt>"
|
|
32
|
+
|
|
|
33
|
+
v
|
|
34
|
+
ORCHESTRATOR (never implements — routes only)
|
|
35
|
+
|
|
|
36
|
+
+-- CLASSIFY: complex? senior tier. Standard? Base agent.
|
|
37
|
+
| Then call the right variant by name.
|
|
38
|
+
|
|
|
39
|
+
+-- TRIAGE: pick minimal chain for intent
|
|
40
|
+
| feature → planner > developer > qa > documenter
|
|
41
|
+
| bug → developer (root-cause) > qa (regression)
|
|
42
|
+
| small → developer > qa
|
|
43
|
+
|
|
|
44
|
+
+-- CONDITIONAL ADD-ONS (only when touched)
|
|
45
|
+
| image → vision first
|
|
46
|
+
| UI/API/CRUD → verifier / security
|
|
47
|
+
|
|
|
48
|
+
+-- DEFECT LOOP: max 3 cycles, then BLOCKED
|
|
49
|
+
+-- DEVLOOM_DONE: all chain gates pass
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Agents
|
|
53
|
+
|
|
54
|
+
| Agent | Role | Skill |
|
|
55
|
+
|-------|------|-------|
|
|
56
|
+
| Orchestrator | Triage, route, state, gate (hard-denied write/edit/patch) | — |
|
|
57
|
+
| Planner | Requirements + CleanArch plan + evidence path | `plan/planning` + `plan/verification-planning` |
|
|
58
|
+
| Developer | Implement / fix + simplify | `build/development` + `build/simplify` |
|
|
59
|
+
| QA | Tests, lint, review, regression + simplify | `verify/quality-assurance` + `build/simplify` |
|
|
60
|
+
| Verifier | Runtime checks by scope + peer review | `verify/app-verification` |
|
|
61
|
+
| Security | CRUD/exposure forensic review | `review/security-review` |
|
|
62
|
+
| Documenter | Docs + state updates | `ship/documentation` |
|
|
63
|
+
| Vision | Image/screenshot analysis | `build/vision-analysis` |
|
|
64
|
+
| Visual Director | Read-only visual design direction + project design memory (never implements frontend code) | `design/visual-direction` + domain design skill |
|
|
65
|
+
| Visual Critic | Independent read-only visual review of rendered output (never edits code) | `verify/visual-critique` |
|
|
66
|
+
|
|
67
|
+
Each agent has variant files: `-senior` (strongest models) or `-flash` (cheapest), plus base (standard tier). Protocol rules are inlined in every agent — no external LOAD needed beyond the skill files.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Visual Intelligence Pipeline
|
|
72
|
+
|
|
73
|
+
For substantial graphical work, DevLoom routes through an extra visual loop:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
planner (marks VISUAL_REQUIRED=true)
|
|
77
|
+
→ visual-director (classifies visual domain + defines direction;
|
|
78
|
+
persists .opencode/devloom/context/design.md)
|
|
79
|
+
→ developer (implements against design.md as the visual contract;
|
|
80
|
+
functionality overrides aesthetics)
|
|
81
|
+
→ visual-critic (independent screenshot review — fresh context, no
|
|
82
|
+
implementation rationale)
|
|
83
|
+
→ developer correction (max 3 visual cycles, integrated with DevLoom's
|
|
84
|
+
existing defect-loop circuit breakers)
|
|
85
|
+
→ qa → verifier (visual, responsive, motion, a11y + functional scopes)
|
|
86
|
+
→ documenter
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- **Small UI bug**: developer → qa → verifier — no visual agents. Backend work never routes through visual agents.
|
|
90
|
+
- **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.
|
|
91
|
+
- **Visual complexity** is orchestration metadata: `none` / `standard` / `high` — separate from the engineering tier (senior/standard).
|
|
92
|
+
- **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`.
|
|
93
|
+
- **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).
|
|
94
|
+
- **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.
|
|
95
|
+
- **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.
|
|
96
|
+
- **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.
|
|
97
|
+
- **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.
|
|
98
|
+
- **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.
|
|
99
|
+
- **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.
|
|
48
100
|
|
|
49
101
|
---
|
|
50
102
|
|
|
@@ -62,6 +114,18 @@ npm install -g devloom
|
|
|
62
114
|
npm install -g https://github.com/nsrau/devloom.git
|
|
63
115
|
```
|
|
64
116
|
|
|
117
|
+
**From GitHub Packages** (mirror `@nsrau/devloom`):
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# ~/.npmrc
|
|
121
|
+
@nsrau:registry=https://npm.pkg.github.com
|
|
122
|
+
//npm.pkg.github.com/:_authToken=<TOKEN> # PAT/granular token with read:packages
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npm install -g @nsrau/devloom
|
|
127
|
+
```
|
|
128
|
+
|
|
65
129
|
**From source:**
|
|
66
130
|
|
|
67
131
|
```bash
|
|
@@ -70,9 +134,6 @@ cd devloom
|
|
|
70
134
|
npm install && npm run build && node postinstall.mjs
|
|
71
135
|
```
|
|
72
136
|
|
|
73
|
-
All methods run the post-install script that copies agents, commands, and skills
|
|
74
|
-
to your OpenCode global config directory.
|
|
75
|
-
|
|
76
137
|
**Per-project via `opencode.json`:**
|
|
77
138
|
|
|
78
139
|
```json
|
|
@@ -82,6 +143,49 @@ to your OpenCode global config directory.
|
|
|
82
143
|
}
|
|
83
144
|
```
|
|
84
145
|
|
|
146
|
+
The plugin auto-bootstraps `.opencode/devloom/project/`, generates the
|
|
147
|
+
Architecture Atlas (`context/atlas.md`), and creates `.opencode/devloom/.tmp/`
|
|
148
|
+
for temporary files — all on OpenCode startup.
|
|
149
|
+
|
|
150
|
+
### Theme
|
|
151
|
+
|
|
152
|
+
DevLoom ships a custom **Night Owl** theme for OpenCode's TUI. Deep indigo
|
|
153
|
+
background with vibrant cyan, purple, and orange accents — designed for long
|
|
154
|
+
coding sessions and low eye strain.
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
# ~/.config/opencode/tui.json or .opencode/tui.json
|
|
158
|
+
{
|
|
159
|
+
"$schema": "https://opencode.ai/tui.json",
|
|
160
|
+
"theme": "devloom-night-owl"
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The theme file is at `.opencode/themes/devloom-night-owl.json` in the project
|
|
165
|
+
root. OpenCode loads it automatically when you open the devloom directory.
|
|
166
|
+
|
|
167
|
+
### Drift protection (always-on)
|
|
168
|
+
|
|
169
|
+
Long sessions make models "forget" prompt-only rules. DevLoom enforces the
|
|
170
|
+
flow deterministically at three levels — no reminders needed:
|
|
171
|
+
|
|
172
|
+
- **Level 1: OpenCode permissions (hardest)** — The orchestrator's `edit`/`write`/`patch` are denied at the OpenCode permission level. Calls fail with permission errors — the model has no way to bypass this. Sub-agents have `task: deny` so they cannot create delegation chains.
|
|
173
|
+
- **Level 2: Plugin guard** (`tool.execute.before`): if the orchestrator somehow attempts a write outside `.opencode/devloom/`, the plugin blocks it with an error telling it to delegate via `task()`. State persistence stays allowed.
|
|
174
|
+
- **Level 3: Per-turn injection** (`chat.message` + system transform): compliance requirements + protocol rules + live pipeline state injected into ALL devloom agents every turn.
|
|
175
|
+
- **Compaction guard** (`experimental.session.compacting`): the compaction summary is forced to preserve the routing rule and current pipeline state, so the flow survives context compression.
|
|
176
|
+
- **Session persistence**: session→agent mapping is written to `.opencode/devloom/.sessions.json` so the guard survives plugin reloads (e.g. after `opencode --continue`).
|
|
177
|
+
|
|
178
|
+
### Anti-loop protection
|
|
179
|
+
|
|
180
|
+
Agents that get stuck waste tokens. DevLoom tracks retry counts and stops runaway chains:
|
|
181
|
+
|
|
182
|
+
- **Per-agent retry counter** — `state.loopCounts[agentName]` tracks how many times the orchestrator re-delegated to the same agent for the current ticket.
|
|
183
|
+
- **WARN at 2 retries** — injected into the orchestrator's state summary as `loop_risk=[WARN:devloom-developer=2x]`.
|
|
184
|
+
- **HARD STOP at 3 retries** — orchestrator prompt enforces: mark ticket blocked, report BLOCKED, never attempt a 4th retry.
|
|
185
|
+
- **Phase stall detection** — if the same phase is re-entered 3+ times with no state advancement, report BLOCKED and ask for task decomposition.
|
|
186
|
+
- **Delegation chain detection** — if a sub-agent responds by calling `task()` instead of completing its work, STOP. Sub-agents have `task: deny` at the permission level as a hard guarantee.
|
|
187
|
+
- **Cost circuit breaker** — if a single ticket exceeds 2M tokens, pause and report.
|
|
188
|
+
|
|
85
189
|
---
|
|
86
190
|
|
|
87
191
|
## Usage
|
|
@@ -96,6 +200,18 @@ Check progress mid-run:
|
|
|
96
200
|
/devloom-status
|
|
97
201
|
```
|
|
98
202
|
|
|
203
|
+
List all agents and their current models:
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
/devloom-agents
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Persist current state and pause for the next user command:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
/devloom-save
|
|
213
|
+
```
|
|
214
|
+
|
|
99
215
|
Resume an interrupted execution:
|
|
100
216
|
|
|
101
217
|
```
|
|
@@ -116,117 +232,475 @@ opencode run "/devloom Add OpenTelemetry tracing to all HTTP handlers"
|
|
|
116
232
|
|
|
117
233
|
---
|
|
118
234
|
|
|
235
|
+
## The Completion Gate
|
|
236
|
+
|
|
237
|
+
DevLoom considers a task complete only when **all** of these pass:
|
|
238
|
+
|
|
239
|
+
| Gate | What It Checks |
|
|
240
|
+
|------|----------------|
|
|
241
|
+
| `build` | Compilation succeeds |
|
|
242
|
+
| `lint` | No lint errors |
|
|
243
|
+
| `unit_tests` | All unit tests pass |
|
|
244
|
+
| `integration_tests` | All integration tests pass |
|
|
245
|
+
| `e2e_tests` | All end-to-end tests pass |
|
|
246
|
+
| `all_routes_visited` | Every discovered route was visited |
|
|
247
|
+
| `all_buttons_tested` | Every button was clicked |
|
|
248
|
+
| `all_forms_tested` | Every form was verified |
|
|
249
|
+
| `all_links_verified` | Every link was navigated |
|
|
250
|
+
| `all_user_journeys_passed` | All user journeys executed successfully |
|
|
251
|
+
| `all_api_endpoints_verified` | Every endpoint validated |
|
|
252
|
+
| `accessibility_verified` | ARIA, keyboard, contrast all pass |
|
|
253
|
+
| `responsive_layout_verified` | No layout defects |
|
|
254
|
+
| `visual_validation_verified` | Rendering correct |
|
|
255
|
+
| `performance_validation_verified` | Performance baseline met |
|
|
256
|
+
| `security_validation_verified` | No security issues |
|
|
257
|
+
| `no_open_defects` | Defect registry is clean |
|
|
258
|
+
|
|
259
|
+
If any gate fails, DevLoom automatically returns to the repair phase.
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Autonomous Operation
|
|
264
|
+
|
|
265
|
+
DevLoom never stops after code generation. It continues through:
|
|
266
|
+
|
|
267
|
+
1. **Verification** -- Every route, form, button, link, and API endpoint is tested
|
|
268
|
+
2. **Defect Discovery** -- All defects logged to persistent registry
|
|
269
|
+
3. **Root Cause Analysis** -- Symptoms are traced to their source
|
|
270
|
+
4. **Repair** -- Minimal fixes applied to root causes only
|
|
271
|
+
5. **Re-Verification** -- Full regression suite after every fix
|
|
272
|
+
6. **Recovery** -- Self-healing from build/test/network failures
|
|
273
|
+
|
|
274
|
+
Human intervention is always the last resort.
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Loop Engineering
|
|
279
|
+
|
|
280
|
+
**Stop prompting the agent. Design the loop that prompts the agent.**
|
|
281
|
+
|
|
282
|
+
DevLoom's loop engineering system moves beyond one-shot prompts to recurring,
|
|
283
|
+
cadence-driven agent execution. A configured loop runs a pattern on a schedule,
|
|
284
|
+
with automatic circuit-breaking via token budget limits.
|
|
285
|
+
|
|
286
|
+
### Loop patterns (7 built-in)
|
|
287
|
+
|
|
288
|
+
| Pattern | Purpose |
|
|
289
|
+
|---------|---------|
|
|
290
|
+
| `daily-triage` | Review new issues, classify, route to planner |
|
|
291
|
+
| `pr-babysitter` | Check open PRs for CI status, staleness, conflicts |
|
|
292
|
+
| `ci-sweeper` | Retry or investigate failed CI jobs |
|
|
293
|
+
| `dependency-sweeper` | Scan for outdated/vulnerable dependencies |
|
|
294
|
+
| `changelog-drafter` | Generate changelog from recent commits |
|
|
295
|
+
| `post-merge-cleanup` | Clean up merged branches, update tickets |
|
|
296
|
+
| `issue-triage` | Triage issue queue with classification and routing |
|
|
297
|
+
|
|
298
|
+
### Safety levels
|
|
299
|
+
|
|
300
|
+
| Level | Behavior |
|
|
301
|
+
|-------|----------|
|
|
302
|
+
| L1 (report-only) | Observe and report — no file modifications |
|
|
303
|
+
| L2 (assisted) | Fix with worktree isolation + verifier approval |
|
|
304
|
+
| L3 (unattended) | Full autonomous fix-and-close cycle |
|
|
305
|
+
|
|
306
|
+
### Usage
|
|
307
|
+
|
|
308
|
+
Start a loop tick manually:
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
node .opencode/devloom/scripts/loop-run.mjs --pattern daily-triage
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
In OpenCode, start a background loop:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
/devloom-loop start daily-triage --cadence "0 8 * * 1-5" --level L2
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Each tick respects the token budget circuit breaker — if a run exceeds its
|
|
321
|
+
budget, the loop pauses and logs the overage before the next scheduled tick.
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Defect Registry
|
|
326
|
+
|
|
327
|
+
All discovered defects are tracked in `.opencode/devloom/defects.json`:
|
|
328
|
+
|
|
329
|
+
```json
|
|
330
|
+
{
|
|
331
|
+
"defects": [
|
|
332
|
+
{
|
|
333
|
+
"id": "BUG-001",
|
|
334
|
+
"severity": "high",
|
|
335
|
+
"location": "/customers",
|
|
336
|
+
"type": "route",
|
|
337
|
+
"status": "open"
|
|
338
|
+
}
|
|
339
|
+
]
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Defects flow through: `open -> analyzed -> fixed -> verified -> closed`.
|
|
344
|
+
The same defect is never rediscovered -- the registry prevents duplication.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
119
348
|
## Model Configuration
|
|
120
349
|
|
|
121
|
-
|
|
350
|
+
DevLoom provides seven selectable model profiles plus auto-detection. Each
|
|
351
|
+
maps every agent to a specific model optimized for its role.
|
|
122
352
|
|
|
123
|
-
###
|
|
353
|
+
### Profile comparison
|
|
124
354
|
|
|
125
|
-
|
|
126
|
-
|
|
355
|
+
| Profile | Quality | Cost | Best for |
|
|
356
|
+
|---------|---------|------|----------|
|
|
357
|
+
| **go** | Highest | Premium | Production delivery, complex features |
|
|
358
|
+
| **go-economy** | High | Lower | Daily development, budget-conscious |
|
|
359
|
+
| **deepseek** | High | Lower | DeepSeek-only stack |
|
|
360
|
+
| **go-flash** | Good | Cheapest paid | High-volume, simple tasks |
|
|
361
|
+
| **free** | Good | Zero | Evaluation, learning, hobby projects |
|
|
362
|
+
| **glm** | High | Lower | GLM-only stack |
|
|
363
|
+
| **mimo** | High | Low/Fast | MiMo V2.6 multimodal all-role stack |
|
|
364
|
+
| **deepseek-mimo** | High | Fast | DeepSeek V4.1 general + MiMo V2.6 graphical/complex hybrid |
|
|
365
|
+
|
|
366
|
+
### go profile (max quality)
|
|
367
|
+
|
|
368
|
+
Uses the strongest OpenCode Go models per role.
|
|
127
369
|
|
|
128
370
|
```json
|
|
129
371
|
{
|
|
130
372
|
"models": {
|
|
131
|
-
"orchestrator": "opencode/
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
373
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
374
|
+
"planner": "opencode-go/qwen3.7-max",
|
|
375
|
+
"developer": "opencode-go/kimi-k2.7-code",
|
|
376
|
+
"qa": "opencode-go/deepseek-v4-pro",
|
|
377
|
+
"verifier": "opencode-go/deepseek-v4-pro",
|
|
378
|
+
"security": "opencode-go/glm-5.2",
|
|
379
|
+
"documenter": "opencode-go/qwen3.7-plus",
|
|
380
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
381
|
+
"visual-director": "opencode-go/glm-5.2",
|
|
382
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
137
383
|
}
|
|
138
384
|
}
|
|
139
385
|
```
|
|
140
386
|
|
|
141
|
-
|
|
142
|
-
the prefix, DevLoom adds it automatically and warns you.
|
|
387
|
+
### go-economy profile
|
|
143
388
|
|
|
144
|
-
|
|
389
|
+
```json
|
|
390
|
+
{
|
|
391
|
+
"models": {
|
|
392
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
393
|
+
"planner": "opencode-go/deepseek-v4-pro",
|
|
394
|
+
"developer": "opencode-go/deepseek-v4-pro",
|
|
395
|
+
"qa": "opencode-go/deepseek-v4-flash",
|
|
396
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
397
|
+
"security": "opencode-go/deepseek-v4-pro",
|
|
398
|
+
"documenter": "opencode-go/qwen3.7-plus",
|
|
399
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
400
|
+
"visual-director": "opencode-go/deepseek-v4-pro",
|
|
401
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
```
|
|
145
405
|
|
|
146
|
-
|
|
147
|
-
to use **Free** (`opencode/`) or **Go** (`opencode-go/`) tier, then assigns
|
|
148
|
-
the best available model per agent role.
|
|
406
|
+
### deepseek profile
|
|
149
407
|
|
|
150
|
-
|
|
408
|
+
Uses only DeepSeek models for consistent provider affinity (vision uses cheapest vision-capable DeepSeek model):
|
|
151
409
|
|
|
152
|
-
|
|
410
|
+
```json
|
|
411
|
+
{
|
|
412
|
+
"models": {
|
|
413
|
+
"orchestrator": "opencode-go/deepseek-v4-pro",
|
|
414
|
+
"planner": "opencode-go/deepseek-v4-pro",
|
|
415
|
+
"developer": "opencode-go/deepseek-v4-pro",
|
|
416
|
+
"qa": "opencode-go/deepseek-v4-pro",
|
|
417
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
418
|
+
"security": "opencode-go/deepseek-v4-pro",
|
|
419
|
+
"documenter": "opencode-go/deepseek-v4-flash",
|
|
420
|
+
"vision": "opencode-go/deepseek-v4-flash-vision-exp",
|
|
421
|
+
"visual-director": "opencode-go/deepseek-v4-pro",
|
|
422
|
+
"visual-critic": "opencode-go/deepseek-v4-flash-vision-exp"
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
153
426
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
427
|
+
### go-flash profile
|
|
428
|
+
|
|
429
|
+
All agents on DeepSeek V4 Flash for maximum throughput at minimum cost:
|
|
430
|
+
|
|
431
|
+
```json
|
|
432
|
+
{
|
|
433
|
+
"models": {
|
|
434
|
+
"orchestrator": "opencode-go/deepseek-v4-flash",
|
|
435
|
+
"planner": "opencode-go/deepseek-v4-flash",
|
|
436
|
+
"developer": "opencode-go/deepseek-v4-flash",
|
|
437
|
+
"qa": "opencode-go/deepseek-v4-flash",
|
|
438
|
+
"verifier": "opencode-go/deepseek-v4-flash",
|
|
439
|
+
"security": "opencode-go/deepseek-v4-flash",
|
|
440
|
+
"documenter": "opencode-go/deepseek-v4-flash",
|
|
441
|
+
"vision": "opencode-go/qwen3.6-plus",
|
|
442
|
+
"visual-director": "opencode-go/deepseek-v4-flash",
|
|
443
|
+
"visual-critic": "opencode-go/glm-5.3-flash"
|
|
444
|
+
}
|
|
445
|
+
}
|
|
157
446
|
```
|
|
158
447
|
|
|
159
|
-
|
|
448
|
+
### free profile
|
|
160
449
|
|
|
161
|
-
|
|
450
|
+
Uses only OpenCode Free models (zero cost). The profile auto-picks the best
|
|
451
|
+
available free model per agent role using a candidate chain.
|
|
162
452
|
|
|
163
|
-
|
|
453
|
+
The orchestrator leads with `big-pickle` (strong free-tier routing). Role fallback order:
|
|
454
|
+
- **orchestration**: big-pickle → muse-spark-1.3-contributor-free →
|
|
455
|
+
mimo-v2.5-free → muse-spark-1.2-contributor-free → nemotron-3.5-lightning-free → nemotron-3-ultra-free → ling-3.0-flash-fin-free
|
|
456
|
+
- **implementation / verification**: big-pickle → muse-spark-1.3-contributor-free →
|
|
457
|
+
nemotron-3.5-lightning-free → mimo-v2.5-free → nemotron-3-ultra-free → ling-3.0-flash-fin-free
|
|
458
|
+
- **planning**: nemotron-3-ultra-free → muse-spark-1.3-contributor-free → muse-spark-1.2-contributor-free →
|
|
459
|
+
big-pickle → nemotron-3.5-lightning-free → ling-3.0-flash-fin-free
|
|
460
|
+
- **documentation**: muse-spark-1.3-contributor-free → muse-spark-1.2-contributor-free → nemotron-3-ultra-free →
|
|
461
|
+
mimo-v2.5-free → ling-3.0-flash-fin-free
|
|
462
|
+
- **vision** (vision-capable models only): mimo-v2.5-free → go multimodal fallbacks
|
|
463
|
+
(deepseek-v4-flash-vision-exp, minimax-m3, mimo-v2.5-pro — ordered by cost, cheapest first)
|
|
464
|
+
- **visual-director / visual-critic**: resolve through the same vision candidate
|
|
465
|
+
chain (they are vision-capable roles)
|
|
164
466
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
| **developer** | `skill-discovery`, `incremental-development`, `test-driven-development`, `frontend-development`, `backend-development`, `api-design` |
|
|
170
|
-
| **qa** | `skill-discovery`, `quality-assurance`, `code-review`, `security-review`, `performance-review`, `debugging` |
|
|
171
|
-
| **documenter** | `skill-discovery`, `documentation` |
|
|
172
|
-
| **orchestrator** | `skill-discovery` |
|
|
467
|
+
### mimo profile
|
|
468
|
+
|
|
469
|
+
All 10 roles mapped to MiMo V2.6 Flash — a multimodal all-role stack, so the
|
|
470
|
+
same model also covers vision and visual-critic (no separate vision provider):
|
|
173
471
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
472
|
+
```json
|
|
473
|
+
{
|
|
474
|
+
"models": {
|
|
475
|
+
"orchestrator": "opencode-go/mimo-v2.6-flash",
|
|
476
|
+
"planner": "opencode-go/mimo-v2.6-flash",
|
|
477
|
+
"developer": "opencode-go/mimo-v2.6-flash",
|
|
478
|
+
"qa": "opencode-go/mimo-v2.6-flash",
|
|
479
|
+
"verifier": "opencode-go/mimo-v2.6-flash",
|
|
480
|
+
"security": "opencode-go/mimo-v2.6-flash",
|
|
481
|
+
"documenter": "opencode-go/mimo-v2.6-flash",
|
|
482
|
+
"vision": "opencode-go/mimo-v2.6-flash",
|
|
483
|
+
"visual-director": "opencode-go/mimo-v2.6-flash",
|
|
484
|
+
"visual-critic": "opencode-go/mimo-v2.6-flash"
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
The actual id is the first available candidate from the chain
|
|
490
|
+
`mimo/mimo-v2.6-flash` → `xiaomi/mimo-v2.6-flash` → `opencode-go/mimo-v2.6-flash`,
|
|
491
|
+
checked against `opencode models`. If no MiMo V2.6 Flash candidate is available,
|
|
492
|
+
profile activation FAILS with a diagnostic listing the attempted candidates and
|
|
493
|
+
compatible models found — it never silently substitutes unrelated models (a
|
|
494
|
+
same-family fallback such as `mimo-v2.6-pro` is allowed but always reported
|
|
495
|
+
under "Fallbacks applied"). Tier overrides are locked for `mimo` (like
|
|
496
|
+
`go-flash` and `free`). Switch with `/devloom-mimo` (`profile.mjs set mimo`).
|
|
497
|
+
|
|
498
|
+
### deepseek-mimo profile (hybrid)
|
|
499
|
+
|
|
500
|
+
Fast everyday work on DeepSeek V4.1, graphical/complex work on MiMo V2.6.
|
|
501
|
+
The 7 general roles (orchestrator, planner, developer, qa, verifier, security,
|
|
502
|
+
documenter) resolve to `opencode-go/deepseek-v4.1-flash`; vision,
|
|
503
|
+
visual-director, and visual-critic resolve through the
|
|
504
|
+
`mimo/mimo-v2.6-flash` → `xiaomi/mimo-v2.6-flash` → `opencode-go/mimo-v2.6-flash`
|
|
505
|
+
chain. Both chains resolve strictly — if either finds nothing the profile exits
|
|
506
|
+
code 1 with the attempted candidates, never an unrelated substitution. Tier
|
|
507
|
+
overrides are allowed (deepseek pattern). Switch with
|
|
508
|
+
`/devloom-deepseek-mimo` (`profile.mjs set deepseek-mimo`).
|
|
509
|
+
|
|
510
|
+
### Model-routing table (go)
|
|
511
|
+
|
|
512
|
+
Each of the 10 agents is assigned a model optimized for its role:
|
|
513
|
+
|
|
514
|
+
| Agent | Role | Standard Tier | Senior Tier |
|
|
515
|
+
|---|---|---|---|
|
|
516
|
+
| `orchestrator` | Triage, routing, state, gate | `deepseek-v4-flash` | `deepseek-v4-flash` |
|
|
517
|
+
| `planner` | Requirements + CleanArch plan | `qwen3.7-max` | `glm-5.2` |
|
|
518
|
+
| `developer` | Implementation + root-cause fixes | `glm-5.3-flash` | `kimi-k3` |
|
|
519
|
+
| `qa` | Tests, lint, code review, regression | `v4-flash` | `v4-pro` |
|
|
520
|
+
| `verifier` | Runtime app checks + peer review | `v4-flash` | `v4-pro` |
|
|
521
|
+
| `security` | CRUD/exposure forensic review | `v4-flash` | `glm-5.2` |
|
|
522
|
+
| `documenter` | Docs + state updates | `v4-flash` | `qwen3.7-plus` |
|
|
523
|
+
| `vision` | Image analysis (multimodal) | `qwen3.6-plus` | `qwen3.6-plus` |
|
|
524
|
+
| `visual-director` | Visual direction + design memory | `glm-5.3-flash` | `glm-5.2` |
|
|
525
|
+
| `visual-critic` | Independent visual review (multimodal) | `glm-5.3-flash` | `glm-5.3-flash` |
|
|
526
|
+
|
|
527
|
+
### Tier system (complexity-based agent selection)
|
|
528
|
+
|
|
529
|
+
The orchestrator automatically classifies each prompt by complexity and calls the
|
|
530
|
+
correct variant sub-agent by name — no global state switching. Each variant has
|
|
531
|
+
a fixed model in its agent file, so parallel worktrees never conflict.
|
|
532
|
+
|
|
533
|
+
| Tier | When | Agent Variant | Model |
|
|
534
|
+
|------|------|--------------|-------|
|
|
535
|
+
| **senior** | Complex feature, architecture, security audit, debugging | `-senior` suffix (planner, developer, security) | GLM-5.2, Kimi K3 |
|
|
536
|
+
| **standard** | Everything else (default) | Base agents (no suffix) | deepseek-v4-flash, qwen3.7-max, kimi-k2.7-code |
|
|
537
|
+
|
|
538
|
+
### Provider-agnostic model IDs
|
|
539
|
+
|
|
540
|
+
Model IDs are validated as `provider/model` — any OpenCode provider works, and
|
|
541
|
+
the model segment may itself contain slashes (e.g. `lmstudio/google/gemma-...`):
|
|
542
|
+
|
|
543
|
+
| Correct | Wrong |
|
|
544
|
+
|---|---|
|
|
545
|
+
| `mimo/mimo-v2.6-flash` | `mimo-v2.6-flash` |
|
|
546
|
+
| `opencode-go/deepseek-v4-pro` | `deepseek-v4-pro` |
|
|
547
|
+
|
|
548
|
+
Availability is checked against `opencode models`: a well-formed but
|
|
549
|
+
unavailable model still fails validation. Bare ids without a provider
|
|
550
|
+
(`deepseek-v4-flash`, `invalid-no-provider`) are invalid. Unavailable models
|
|
551
|
+
fail validation or fall back per profile policy.
|
|
552
|
+
|
|
553
|
+
### First-run interactive setup
|
|
554
|
+
|
|
555
|
+
If no `config.json` exists, Phase 0 detects available models (`opencode models`),
|
|
556
|
+
asks which profile to use (**go**, **go-economy**, **mimo**, or **free**), then
|
|
557
|
+
assigns the best model per agent role for the chosen profile.
|
|
558
|
+
|
|
559
|
+
### Profile & sidebar visibility
|
|
560
|
+
|
|
561
|
+
OpenCode installs npm plugins into a package cache (`~/.cache/opencode/packages`)
|
|
562
|
+
with `ignoreScripts`, so the DevLoom plugin code there can go stale. The DevLoom
|
|
563
|
+
`postinstall` and the `/devloom-refresh` command re-copy the current plugin code
|
|
564
|
+
(including the `config` hook that injects all 17 DevLoom agents + the active
|
|
565
|
+
profile into the OpenCode sidebar) into that cache, rebuilding `dist/` from
|
|
566
|
+
source first so the cache never receives stale compiled code.
|
|
567
|
+
|
|
568
|
+
- After installing or updating DevLoom, run `/devloom-refresh` once, then
|
|
569
|
+
**restart opencode** (or continue with `opencode --continue`) to pick up the
|
|
570
|
+
refreshed plugin.
|
|
571
|
+
- The sidebar header shows the active profile (`DevLoom - free`,
|
|
572
|
+
`DevLoom - go`, ...) and every agent row shows its resolved model
|
|
573
|
+
(`orchestrator: opencode/big-pickle`, ...). The orchestrator
|
|
574
|
+
agent description also carries the profile label:
|
|
575
|
+
`DevLoom Orchestrator: autonomous multi-agent delivery (profile: go-flash)`,
|
|
576
|
+
extended to `(profile: go, tier: senior)` with a senior tier override.
|
|
577
|
+
- The sidebar shows only the 10 base agents — all `-flash` and `-senior`
|
|
578
|
+
variants are hidden for every profile. The variants stay registered so
|
|
579
|
+
orchestrator `task()` routing keeps working; they are simply not listed.
|
|
580
|
+
- Switching profiles (`/devloom-go`, `/devloom-go-flash`, `/devloom-mimo`,
|
|
581
|
+
`/devloom-deepseek-mimo`,
|
|
582
|
+
`/devloom-free`, ...)
|
|
583
|
+
updates the installed agent files immediately; restart opencode to see the
|
|
584
|
+
updated profile and models in the sidebar.
|
|
177
585
|
|
|
178
586
|
---
|
|
179
587
|
|
|
180
|
-
##
|
|
588
|
+
## OpenCode Go Optimization
|
|
181
589
|
|
|
182
|
-
DevLoom
|
|
590
|
+
DevLoom is **purpose-built for OpenCode Go** -- the premium model tier that
|
|
591
|
+
delivers the highest-quality results from the OpenCode platform.
|
|
183
592
|
|
|
184
|
-
|
|
185
|
-
|---|---|
|
|
186
|
-
| `requirements.md` | User story, functional requirements, acceptance criteria |
|
|
187
|
-
| `plan.md` | Ordered task checklist, updated as tasks complete |
|
|
188
|
-
| `config.json` | Model assignments per agent role (local override) |
|
|
189
|
-
| `state.json` | Execution state for resume support |
|
|
190
|
-
| `errors.md` | Tasks skipped after repeated failures |
|
|
593
|
+
### Why go?
|
|
191
594
|
|
|
192
|
-
|
|
595
|
+
Each agent in the pipeline has different cognitive demands. DevLoom assigns
|
|
596
|
+
role-optimized models via the tier system (senior/standard):
|
|
193
597
|
|
|
194
|
-
|
|
598
|
+
| Agent | Standard | Senior (complex) |
|
|
599
|
+
|-------|----------|-------------------|
|
|
600
|
+
| Orchestrator | `deepseek-v4-flash` (fast, reliable routing) | `deepseek-v4-flash` |
|
|
601
|
+
| Planner | `qwen3.7-max` (strong reasoning) | `glm-5.2` (deep analysis) |
|
|
602
|
+
| Developer | `kimi-k2.7-code` (code-specialized) | `kimi-k3` (newest gen) |
|
|
603
|
+
| QA | `v4-flash` (fast review) | `v4-pro` (thorough verification) |
|
|
604
|
+
| Verifier | `v4-flash` (fast checks) | `v4-pro` (deep inspection) |
|
|
605
|
+
| Security | `v4-flash` (light review) | `glm-5.2` (forensic depth) |
|
|
606
|
+
| Documenter | `v4-flash` (fast docs) | `qwen3.7-plus` (quality docs) |
|
|
607
|
+
| Vision | `qwen3.6-plus` (low-cost multimodal) | `qwen3.6-plus` |
|
|
195
608
|
|
|
196
|
-
|
|
609
|
+
### Token architecture
|
|
197
610
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
611
|
+
DevLoom eliminates redundant protocol loading at the architectural level:
|
|
612
|
+
|
|
613
|
+
1. **Inline RULES** — Every agent has protocol rules embedded in its own file body. No external LOAD needed.
|
|
614
|
+
2. **Single skill LOAD** — Agents load exactly one file: their skill. No protocol/DSL LOADs.
|
|
615
|
+
3. **Guard injection** — Compliance + state summary injected per turn (already in context).
|
|
616
|
+
4. **Tier degradation** — If a model fails twice, auto-fallback: senior→standard→skip agent.
|
|
203
617
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
618
|
+
**Pipeline token cost (planner→dev→qa→verifier→doc, one turn):**
|
|
619
|
+
- Before: ~24KB of LOADed protocol files
|
|
620
|
+
- After: ~8KB of inline rules + skill LOAD
|
|
621
|
+
- Savings: **~65%**
|
|
208
622
|
|
|
209
|
-
|
|
210
|
-
Increase `max_steps` in `~/.config/opencode/agents/devloom-orchestrator.md` (default 200).
|
|
623
|
+
Run `opencode models` to see what's currently available in your environment.
|
|
211
624
|
|
|
212
625
|
---
|
|
213
626
|
|
|
214
|
-
##
|
|
627
|
+
## Skills
|
|
628
|
+
|
|
629
|
+
DevLoom ships focused skills per agent. Each skill folds in the relevant engineering standards — SOLID, clean code, clean architecture, TDD, UI/UX (WCAG-AA), and forensic root-cause discipline (no workarounds):
|
|
630
|
+
|
|
631
|
+
| Category | Skill | Agent |
|
|
632
|
+
|----------|-------|-------|
|
|
633
|
+
| `plan/` | planning | planner |
|
|
634
|
+
| `plan/` | verification-planning | planner (evidence path before non-trivial changes) |
|
|
635
|
+
| `build/` | development | developer |
|
|
636
|
+
| `build/` | simplify | developer, qa (behavior-preserving simplification) |
|
|
637
|
+
| `build/` | vision-analysis | vision |
|
|
638
|
+
| `verify/` | quality-assurance | qa |
|
|
639
|
+
| `verify/` | app-verification | verifier |
|
|
640
|
+
| `verify/` | visual-critique, visual-quality-gate, visual-regression | visual-critic, verifier |
|
|
641
|
+
| `design/` | visual-direction | visual-director (always) |
|
|
642
|
+
| `design/` | design-grounding, web-design, app-design, game-design, motion-design, design-system | visual-director (domain-dependent; loads only when routed) |
|
|
643
|
+
| `review/` | security-review | security (CRUD/exposure/auth audit) |
|
|
644
|
+
| `ship/` | documentation | documenter |
|
|
645
|
+
| `meta/` | skill-discovery | orchestrator |
|
|
646
|
+
|
|
647
|
+
---
|
|
215
648
|
|
|
216
|
-
|
|
649
|
+
## Project Workspace
|
|
650
|
+
|
|
651
|
+
Every initialized project gets a persistent workspace at `.opencode/devloom/project/`.
|
|
652
|
+
|
|
653
|
+
- English-only artifacts for cross-agent consistency
|
|
654
|
+
- Minified JSON for AI-only state files
|
|
655
|
+
- Jira-style local board with stories, tasks, bugs, decisions, and reports
|
|
656
|
+
- Single active ticket by default; unfinished work is always persisted
|
|
657
|
+
- Optional GitHub Project mirror only when the user explicitly enables it
|
|
658
|
+
- Existing legacy project files are normalized in place on `init`, `run`, and `resume`
|
|
659
|
+
- Opening OpenCode in a DevLoom project also normalizes the workspace automatically
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## Architecture Reference
|
|
217
664
|
|
|
218
665
|
```
|
|
219
|
-
/
|
|
666
|
+
devloom/
|
|
667
|
+
+-- src/ # Plugin source (TypeScript)
|
|
668
|
+
+-- agents/ # 17 agents: 10 base + 7 tier variants
|
|
669
|
+
| +-- devloom-orchestrator.md
|
|
670
|
+
| +-- devloom-planner.md / -senior / -flash
|
|
671
|
+
| +-- devloom-developer.md / -senior / -flash
|
|
672
|
+
| +-- devloom-qa.md / -flash
|
|
673
|
+
| +-- devloom-verifier.md
|
|
674
|
+
| +-- devloom-security.md / -senior
|
|
675
|
+
| +-- devloom-documenter.md / -flash
|
|
676
|
+
| +-- devloom-vision.md
|
|
677
|
+
| +-- devloom-visual-director.md
|
|
678
|
+
| +-- devloom-visual-critic.md
|
|
679
|
+
+-- commands/ # 17 command files + profile.mjs
|
|
680
|
+
+-- skills/ # 21 skill files + 10 loop skills
|
|
681
|
+
| +-- plan/ planning, verification-planning
|
|
682
|
+
| +-- build/ development, simplify, vision-analysis, live-docs
|
|
683
|
+
| +-- verify/ quality-assurance, app-verification,
|
|
684
|
+
| | visual-critique, visual-quality-gate, visual-regression
|
|
685
|
+
| +-- design/ visual-direction, design-grounding, web-design,
|
|
686
|
+
| | app-design, game-design, motion-design, design-system
|
|
687
|
+
| +-- review/ security-review
|
|
688
|
+
| +-- ship/ documentation
|
|
689
|
+
| +-- meta/ skill-discovery
|
|
690
|
+
| +-- loop/ 10 loop engineering skills
|
|
691
|
+
+-- protocol/ # Shared protocols + rules.md
|
|
692
|
+
+-- .opencode/themes/ # DevLoom Night Owl theme
|
|
693
|
+
+-- __tests__/ # 228 Jest tests
|
|
694
|
+
+-- postinstall.mjs # Auto-installs 17 agents, 16 commands, 21 skills, theme
|
|
220
695
|
```
|
|
696
|
+
---
|
|
221
697
|
|
|
222
|
-
|
|
698
|
+
## Acknowledgements
|
|
223
699
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
# Open http://localhost:3000
|
|
229
|
-
```
|
|
700
|
+
DevLoom's skill structure and lifecycle-driven workflow drew inspiration from
|
|
701
|
+
[addyosmani/agent-skills](https://github.com/addyosmani/agent-skills) and the
|
|
702
|
+
broader pattern of packaging senior-engineering workflows as agent-readable
|
|
703
|
+
skills.
|
|
230
704
|
|
|
231
705
|
---
|
|
232
706
|
|