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/README.md CHANGED
@@ -1,50 +1,102 @@
1
1
  # DevLoom
2
2
 
3
- **Autonomous Development Weaver for OpenCode**
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. DevLoom does the same for software:
7
- it takes a single natural-language prompt and weaves together requirements,
8
- architecture, code, tests, and documentation into a complete, working feature.
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
- The **Orchestrator** interprets your prompt, delegates to five specialist
15
- sub-agents, and loops until every task passes QA and the final build succeeds —
16
- no human intervention required after the initial prompt.
17
-
18
- ```
19
- /devloom "Build a REST API for user management with JWT auth"
20
-
21
-
22
- DEVLOOM ORCHESTRATOR
23
-
24
- ├── @devloom-analyst .opencode/devloom/requirements.md
25
- ├── @devloom-architect → .opencode/devloom/plan.md
26
-
27
- └── For each task in plan.md:
28
- ├── @devloom-developer (weaves the code)
29
- ├── @devloom-qa (inspects the weave)
30
- │ └── QA_FAIL developer re-weaves → QA re-inspects
31
- └── marks task [x] on QA_PASS
32
-
33
- ├── @devloom-documenter (updates README + API docs)
34
- └── Final quality gate (build + full test suite)
35
- └── All green → DEVLOOM_DONE
36
- ```
37
-
38
- ### Agent Roster
39
-
40
- | Agent | Mode | Role |
41
- |---|---|---|
42
- | `devloom-orchestrator` | `primary` | Loop controller, phase manager, quality gate |
43
- | `devloom-analyst` | `subagent` | Prompt `.opencode/devloom/requirements.md` |
44
- | `devloom-architect` | `subagent` | Requirements `.opencode/devloom/plan.md` |
45
- | `devloom-developer` | `subagent` | Task implementation |
46
- | `devloom-qa` | `subagent` | Tests, lint, regression checks, verdict |
47
- | `devloom-documenter` | `subagent` | README + API doc updates |
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
+ | featureplanner > 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
- By default all agents use **deepseek-v4-flash-free** (the fastest free model).
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
- ### Per-project override
353
+ ### Profile comparison
124
354
 
125
- Create `.opencode/devloom/config.json` in your project root. Every time you run
126
- a DevLoom command, it reads this file and overrides the global defaults:
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/big-pickle",
132
- "analyst": "opencode/deepseek-v4-flash-free",
133
- "architect": "opencode/deepseek-v4-flash-free",
134
- "developer": "opencode/deepseek-v4-flash-free",
135
- "qa": "opencode/deepseek-v4-flash-free",
136
- "documenter": "opencode/deepseek-v4-flash-free"
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
- **All models MUST use the `opencode/` or `opencode-go/` prefix.** If you forget
142
- the prefix, DevLoom adds it automatically and warns you.
387
+ ### go-economy profile
143
388
 
144
- ### Interactive setup (first run)
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
- If no `config.json` exists, Phase 0 detects available models and asks whether
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
- ### Global override
408
+ Uses only DeepSeek models for consistent provider affinity (vision uses cheapest vision-capable DeepSeek model):
151
409
 
152
- Edit the agent files directly at `~/.config/opencode/agents/`:
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
- ```bash
155
- sed -i 's|^model:.*|model: opencode/deepseek-v4-flash-free|' \
156
- ~/.config/opencode/agents/devloom-*.md
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
- ## Skills
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
- Each DevLoom agent loads domain-specific skills at startup that guide its workflow:
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
- | Agent | Skills |
166
- |---|---|
167
- | **analyst** | `skill-discovery`, `requirements-analysis` |
168
- | **architect** | `skill-discovery`, `architecture-planning`, `api-design` |
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
- Skills auto-detect the task type (FE, BE, security, docs, etc.) and load the
175
- right workflow. All skills are in `skills/` and are copied to
176
- `~/.config/opencode/skills/` during install.
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
- ## Persistent State
588
+ ## OpenCode Go Optimization
181
589
 
182
- DevLoom uses `.opencode/devloom/` in your project root as shared state:
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
- | File | Purpose |
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
- All files are plain Markdown/JSON inspect and edit them directly.
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
- ## Troubleshooting
609
+ ### Token architecture
197
610
 
198
- ### Agents not found after install
199
- ```bash
200
- ls ~/.config/opencode/agents/ | grep devloom
201
- ```
202
- If empty, re-run: `node $(npm root -g)/devloom/postinstall.mjs`
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
- ### ProviderModelNotFoundError
205
- An agent file is missing the `opencode/` prefix. DevLoom auto-fixes this when
206
- loading config.json, but if you edit agent files manually, always use the full
207
- prefix (e.g. `opencode/deepseek-v4-flash-free`, not `deepseek-v4-flash-free`).
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
- ### The weave stops before DEVLOOM_DONE
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
- ## Demo
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
- A working example of what DevLoom produces is available in the [`demo/`](demo/) folder. It was generated from the prompt:
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
- /devloom Build a very simple full-stack Task List web app.
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
- The app is a full-stack Task List with an Express + SQLite backend and vanilla JS frontend, including integration tests.
698
+ ## Acknowledgements
223
699
 
224
- ```bash
225
- cd demo
226
- npm install
227
- npm start
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