opencode-sdlc-plugin 0.3.2 → 1.0.0-alpha.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/README.md +90 -17
- package/config/presets/copilot-only.json +12 -5
- package/config/presets/enterprise.json +7 -7
- package/config/presets/event-modeling.json +6 -6
- package/config/presets/minimal.json +2 -2
- package/config/presets/solo-quick.json +2 -2
- package/config/presets/standard.json +6 -6
- package/config/presets/strict-tdd.json +7 -7
- package/config/schemas/athena.schema.json +4 -4
- package/config/schemas/sdlc.schema.json +101 -5
- package/dist/cli/index.js +781 -279
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +427 -65
- package/dist/index.js +5239 -1924
- package/dist/index.js.map +1 -1
- package/dist/plugin/index.js +5206 -1930
- package/dist/plugin/index.js.map +1 -1
- package/package.json +1 -1
- package/prompts/agents/adr.md +234 -0
- package/prompts/agents/architect.md +204 -0
- package/prompts/agents/design-facilitator.md +237 -0
- package/prompts/agents/discovery.md +260 -0
- package/prompts/agents/domain.md +148 -34
- package/prompts/agents/file-updater.md +132 -0
- package/prompts/agents/green.md +119 -40
- package/prompts/agents/gwt.md +352 -0
- package/prompts/agents/model-checker.md +332 -0
- package/prompts/agents/red.md +112 -21
- package/prompts/agents/story.md +196 -0
- package/prompts/agents/ux.md +239 -0
- package/prompts/agents/workflow-designer.md +386 -0
- package/prompts/modes/architect.md +219 -0
- package/prompts/modes/build.md +150 -0
- package/prompts/modes/model.md +211 -0
- package/prompts/modes/plan.md +186 -0
- package/prompts/modes/pm.md +269 -0
- package/prompts/modes/prd.md +238 -0
- package/commands/sdlc-adr.md +0 -265
- package/commands/sdlc-debug.md +0 -376
- package/commands/sdlc-design.md +0 -246
- package/commands/sdlc-dev.md +0 -544
- package/commands/sdlc-info.md +0 -325
- package/commands/sdlc-parallel.md +0 -283
- package/commands/sdlc-recall.md +0 -213
- package/commands/sdlc-remember.md +0 -136
- package/commands/sdlc-research.md +0 -343
- package/commands/sdlc-review.md +0 -265
- package/commands/sdlc-status.md +0 -297
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ The interactive installer will:
|
|
|
35
35
|
1. Ask about your LLM subscriptions (Claude, OpenAI, Google, GitHub Copilot)
|
|
36
36
|
2. Configure agent models for TDD roles
|
|
37
37
|
3. Set up GitHub integration
|
|
38
|
-
4.
|
|
38
|
+
4. Configure Marvin modes
|
|
39
39
|
|
|
40
40
|
## Requirements
|
|
41
41
|
|
|
@@ -48,9 +48,51 @@ The interactive installer will:
|
|
|
48
48
|
- Google/Gemini
|
|
49
49
|
- GitHub Copilot
|
|
50
50
|
|
|
51
|
+
## Marvin: The Orchestrator
|
|
52
|
+
|
|
53
|
+
Marvin is the unified orchestrator that coordinates all development work. Instead of separate commands, Marvin operates in different **modes** that you switch between using the **Tab key** in OpenCode.
|
|
54
|
+
|
|
55
|
+
### Available Modes
|
|
56
|
+
|
|
57
|
+
| Mode | Purpose | Key Activities |
|
|
58
|
+
|------|---------|----------------|
|
|
59
|
+
| **Build** | Implementation | TDD cycle, code changes via subagents |
|
|
60
|
+
| **Discover** | Exploration | Problem understanding, user journeys, assumptions |
|
|
61
|
+
| **Model** | Event Modeling | Event discovery, workflow design, GWT specs |
|
|
62
|
+
| **Architect** | Design Decisions | ADRs, technology evaluation, tradeoffs |
|
|
63
|
+
| **PRD** | Specifications | User stories, acceptance criteria, requirements |
|
|
64
|
+
| **PM** | Project Management | Issues, branches, PRs, board management |
|
|
65
|
+
|
|
66
|
+
### Mode Switching
|
|
67
|
+
|
|
68
|
+
Press **Tab** in OpenCode to switch modes. Marvin will:
|
|
69
|
+
- Suggest the appropriate mode for your request
|
|
70
|
+
- Carry context between modes when relevant
|
|
71
|
+
- Enforce mode-specific constraints (e.g., Build mode cannot skip TDD)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
User: I need to add user authentication
|
|
75
|
+
|
|
76
|
+
Marvin (Discover): Let me understand the requirements first...
|
|
77
|
+
- Who are the users?
|
|
78
|
+
- What authentication methods needed?
|
|
79
|
+
|
|
80
|
+
[Tab → Model mode]
|
|
81
|
+
|
|
82
|
+
Marvin (Model): Let me design the events...
|
|
83
|
+
- UserRegistered, UserLoggedIn, TokenRefreshed
|
|
84
|
+
|
|
85
|
+
[Tab → Build mode]
|
|
86
|
+
|
|
87
|
+
Marvin (Build): Starting TDD cycle for AC1...
|
|
88
|
+
- RED: Writing failing test for registration
|
|
89
|
+
- DOMAIN: Creating Email, Password types
|
|
90
|
+
- GREEN: Implementing registration service
|
|
91
|
+
```
|
|
92
|
+
|
|
51
93
|
## TDD Cycle Enforcement
|
|
52
94
|
|
|
53
|
-
The plugin enforces a strict 4-phase TDD cycle:
|
|
95
|
+
The plugin enforces a strict 4-phase TDD cycle in Build mode:
|
|
54
96
|
|
|
55
97
|
```
|
|
56
98
|
RED → DOMAIN → GREEN → DOMAIN → [repeat or refactor]
|
|
@@ -60,10 +102,10 @@ RED → DOMAIN → GREEN → DOMAIN → [repeat or refactor]
|
|
|
60
102
|
|
|
61
103
|
| Phase | Agent | Purpose | Can Edit |
|
|
62
104
|
|-------|-------|---------|----------|
|
|
63
|
-
| **RED** |
|
|
64
|
-
| **DOMAIN** (after RED) |
|
|
65
|
-
| **GREEN** |
|
|
66
|
-
| **DOMAIN** (after GREEN) |
|
|
105
|
+
| **RED** | Red Agent | Write ONE failing test | Test files only |
|
|
106
|
+
| **DOMAIN** (after RED) | Domain Agent | Review test, create types | Type definitions |
|
|
107
|
+
| **GREEN** | Green Agent | Make test pass | Source files only |
|
|
108
|
+
| **DOMAIN** (after GREEN) | Domain Agent | Verify domain integrity | Type definitions |
|
|
67
109
|
|
|
68
110
|
### Domain Agent Veto Power
|
|
69
111
|
|
|
@@ -73,18 +115,15 @@ The domain agent can block workflow for:
|
|
|
73
115
|
- **Invalid states representable** - Using boolean flags instead of enum variants
|
|
74
116
|
- **Parse-don't-validate violations** - Checking email in business logic instead of at boundary
|
|
75
117
|
|
|
76
|
-
|
|
118
|
+
### File Ownership
|
|
77
119
|
|
|
78
|
-
|
|
120
|
+
In Build mode, the orchestrator cannot directly edit files. All changes go through specialized subagents:
|
|
79
121
|
|
|
80
|
-
|
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
| `/sdlc-research` | Research with Librarian + MCPs |
|
|
86
|
-
| `/sdlc-status` | View/update issue status |
|
|
87
|
-
| `/sdlc-info` | Show toolkit configuration |
|
|
122
|
+
| Agent | Can Edit | Cannot Edit |
|
|
123
|
+
|-------|----------|-------------|
|
|
124
|
+
| Red Agent | `*.test.*`, `*.spec.*` | Source files |
|
|
125
|
+
| Green Agent | Source files | Test files |
|
|
126
|
+
| Domain Agent | Type definitions | Tests, implementation |
|
|
88
127
|
|
|
89
128
|
## GitHub Issues Integration
|
|
90
129
|
|
|
@@ -102,6 +141,8 @@ Work items are tracked via GitHub Issues instead of local files:
|
|
|
102
141
|
[#42ΔAC2] Add rate limiting
|
|
103
142
|
```
|
|
104
143
|
|
|
144
|
+
Todos automatically sync with issue body checkboxes when marked complete.
|
|
145
|
+
|
|
105
146
|
## Configuration
|
|
106
147
|
|
|
107
148
|
Configuration files are stored in `~/.config/opencode/`:
|
|
@@ -123,6 +164,18 @@ npx opencode-sdlc install --preset event-modeling # Standard + event modeling
|
|
|
123
164
|
|
|
124
165
|
Create `.opencode/sdlc.json` in your project root to override global settings.
|
|
125
166
|
|
|
167
|
+
## CLI Commands
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npx opencode-sdlc install # Install or reconfigure
|
|
171
|
+
npx opencode-sdlc upgrade # Upgrade to latest version
|
|
172
|
+
npx opencode-sdlc upgrade --check # Check for updates without installing
|
|
173
|
+
npx opencode-sdlc doctor # Diagnose issues
|
|
174
|
+
npx opencode-sdlc doctor --fix # Auto-fix common problems
|
|
175
|
+
npx opencode-sdlc info # Show current configuration
|
|
176
|
+
npx opencode-sdlc uninstall # Remove SDLC plugin
|
|
177
|
+
```
|
|
178
|
+
|
|
126
179
|
## Troubleshooting
|
|
127
180
|
|
|
128
181
|
```bash
|
|
@@ -130,12 +183,32 @@ npx opencode-sdlc doctor # Diagnose issues
|
|
|
130
183
|
npx opencode-sdlc doctor --fix # Auto-fix common problems
|
|
131
184
|
```
|
|
132
185
|
|
|
186
|
+
Common issues:
|
|
187
|
+
- **"No LLM provider configured"** - Run installer and enable at least one subscription
|
|
188
|
+
- **"GitHub CLI not authenticated"** - Run `gh auth login`
|
|
189
|
+
- **"oh-my-opencode not installed"** - Run `npx opencode-sdlc doctor --fix`
|
|
190
|
+
|
|
133
191
|
## Development Status
|
|
134
192
|
|
|
135
|
-
This project is
|
|
193
|
+
This project is in active development for v1.0.0. See [AGENTS.md](AGENTS.md) for architecture details.
|
|
136
194
|
|
|
137
195
|
**Project Board:** https://github.com/users/jwilger/projects/27
|
|
138
196
|
|
|
197
|
+
## Migration from v0.x
|
|
198
|
+
|
|
199
|
+
If you're upgrading from v0.x (which used bridge commands like `/sdlc-dev`), see [MIGRATING-TO-V1.md](MIGRATING-TO-V1.md) for migration instructions.
|
|
200
|
+
|
|
201
|
+
### Quick Migration Reference
|
|
202
|
+
|
|
203
|
+
| Old Command | New Approach |
|
|
204
|
+
|-------------|--------------|
|
|
205
|
+
| `/sdlc-dev` | Build mode (Tab) |
|
|
206
|
+
| `/sdlc-debug` | Build mode + invoke Oracle |
|
|
207
|
+
| `/sdlc-research` | Discover mode |
|
|
208
|
+
| `/sdlc-design` | Model or Architect mode |
|
|
209
|
+
| `/sdlc-info` | `npx opencode-sdlc info` |
|
|
210
|
+
| `/sdlc-status` | PM mode |
|
|
211
|
+
|
|
139
212
|
## Credits
|
|
140
213
|
|
|
141
214
|
Built on top of:
|
|
@@ -9,13 +9,20 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": true, "plan": "business" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
13
|
-
"oracle": "github-copilot/gpt-5.
|
|
12
|
+
"marvin": "github-copilot/gpt-5.2-codex",
|
|
13
|
+
"oracle": "github-copilot/gpt-5.2",
|
|
14
14
|
"librarian": "github-copilot/claude-haiku-4.5",
|
|
15
15
|
"frontend": "github-copilot/claude-sonnet-4.5",
|
|
16
|
-
"documentWriter": "github-copilot/gemini-
|
|
17
|
-
"multimodalLooker": "github-copilot/gemini-
|
|
18
|
-
"explore": "github-copilot/
|
|
16
|
+
"documentWriter": "github-copilot/gemini-3-pro",
|
|
17
|
+
"multimodalLooker": "github-copilot/gemini-3-flash",
|
|
18
|
+
"explore": "github-copilot/gemini-3-flash",
|
|
19
|
+
"settings": {
|
|
20
|
+
"marvin": { "temperature": 0.2 },
|
|
21
|
+
"oracle": { "temperature": 0.1 },
|
|
22
|
+
"documentWriter": { "temperature": 0.4 },
|
|
23
|
+
"multimodalLooker": { "temperature": 0.2 },
|
|
24
|
+
"explore": { "temperature": 0.2 }
|
|
25
|
+
}
|
|
19
26
|
},
|
|
20
27
|
"tdd": {
|
|
21
28
|
"enabled": true,
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
13
|
-
"oracle": "openai/gpt-5.
|
|
12
|
+
"marvin": "anthropic/claude-opus-4-5-thinking",
|
|
13
|
+
"oracle": "openai/gpt-5.2",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5-thinking",
|
|
15
|
-
"frontend": "google/gemini-
|
|
15
|
+
"frontend": "google/gemini-3-pro-preview",
|
|
16
16
|
"documentWriter": "anthropic/claude-opus-4-5",
|
|
17
|
-
"multimodalLooker": "google/gemini-
|
|
18
|
-
"explore": "google/gemini-
|
|
17
|
+
"multimodalLooker": "google/gemini-3-flash-preview",
|
|
18
|
+
"explore": "google/gemini-3-flash-preview",
|
|
19
19
|
"settings": {
|
|
20
|
-
"
|
|
20
|
+
"marvin": { "thinkingLevel": "high" },
|
|
21
21
|
"oracle": { "thinkingLevel": "high" },
|
|
22
22
|
"librarian": { "thinkingLevel": "medium" },
|
|
23
23
|
"frontend": { "temperature": 0.5 },
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
},
|
|
69
69
|
"agentOverrides": {
|
|
70
70
|
"oracle": { "requiresThinking": true },
|
|
71
|
-
"
|
|
71
|
+
"marvin": { "requiresThinking": true }
|
|
72
72
|
},
|
|
73
73
|
"fallbackBehavior": {
|
|
74
74
|
"autoFallback": true,
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
13
|
-
"oracle": "openai/gpt-5.
|
|
12
|
+
"marvin": "openai/gpt-5.2-codex",
|
|
13
|
+
"oracle": "openai/gpt-5.2",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
15
|
"frontend": "anthropic/claude-sonnet-4-5",
|
|
16
|
-
"documentWriter": "google/gemini-
|
|
17
|
-
"multimodalLooker": "google/gemini-
|
|
18
|
-
"explore": "google/gemini-
|
|
16
|
+
"documentWriter": "google/gemini-3-pro-preview",
|
|
17
|
+
"multimodalLooker": "google/gemini-3-flash-preview",
|
|
18
|
+
"explore": "google/gemini-3-flash-preview",
|
|
19
19
|
"settings": {
|
|
20
|
-
"
|
|
20
|
+
"marvin": { "thinkingLevel": "medium" },
|
|
21
21
|
"oracle": { "thinkingLevel": "high" },
|
|
22
22
|
"librarian": { "thinkingLevel": "low" },
|
|
23
23
|
"frontend": { "temperature": 0.5 },
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
12
|
+
"marvin": "anthropic/claude-sonnet-4-5",
|
|
13
13
|
"oracle": "anthropic/claude-sonnet-4-5-thinking",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
15
|
"explore": "anthropic/claude-sonnet-4-5",
|
|
16
16
|
"settings": {
|
|
17
|
-
"
|
|
17
|
+
"marvin": { "temperature": 0.2 },
|
|
18
18
|
"oracle": { "thinkingLevel": "medium" },
|
|
19
19
|
"librarian": { "temperature": 0.3 },
|
|
20
20
|
"explore": { "temperature": 0.2 }
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
12
|
+
"marvin": "anthropic/claude-sonnet-4-5-thinking",
|
|
13
13
|
"oracle": "anthropic/claude-sonnet-4-5-thinking",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
15
|
"explore": "anthropic/claude-sonnet-4-5",
|
|
16
16
|
"settings": {
|
|
17
|
-
"
|
|
17
|
+
"marvin": { "thinkingLevel": "medium" },
|
|
18
18
|
"oracle": { "thinkingLevel": "high" },
|
|
19
19
|
"librarian": { "temperature": 0.3 },
|
|
20
20
|
"explore": { "temperature": 0.2 }
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
13
|
-
"oracle": "openai/gpt-5.
|
|
12
|
+
"marvin": "openai/gpt-5.2-codex",
|
|
13
|
+
"oracle": "openai/gpt-5.2",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
15
|
"frontend": "anthropic/claude-sonnet-4-5",
|
|
16
|
-
"documentWriter": "google/gemini-
|
|
17
|
-
"multimodalLooker": "google/gemini-
|
|
18
|
-
"explore": "google/gemini-
|
|
16
|
+
"documentWriter": "google/gemini-3-pro-preview",
|
|
17
|
+
"multimodalLooker": "google/gemini-3-flash-preview",
|
|
18
|
+
"explore": "google/gemini-3-flash-preview",
|
|
19
19
|
"settings": {
|
|
20
|
-
"
|
|
20
|
+
"marvin": { "thinkingLevel": "medium" },
|
|
21
21
|
"oracle": { "thinkingLevel": "high" },
|
|
22
22
|
"librarian": { "thinkingLevel": "low" },
|
|
23
23
|
"frontend": { "temperature": 0.5 },
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"githubCopilot": { "enabled": false, "plan": "none" }
|
|
10
10
|
},
|
|
11
11
|
"models": {
|
|
12
|
-
"
|
|
13
|
-
"oracle": "openai/gpt-5.
|
|
12
|
+
"marvin": "anthropic/claude-sonnet-4-5-thinking",
|
|
13
|
+
"oracle": "openai/gpt-5.2",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
15
|
"frontend": "anthropic/claude-sonnet-4-5",
|
|
16
|
-
"documentWriter": "google/gemini-
|
|
17
|
-
"multimodalLooker": "google/gemini-
|
|
18
|
-
"explore": "google/gemini-
|
|
16
|
+
"documentWriter": "google/gemini-3-pro-preview",
|
|
17
|
+
"multimodalLooker": "google/gemini-3-flash-preview",
|
|
18
|
+
"explore": "google/gemini-3-flash-preview",
|
|
19
19
|
"settings": {
|
|
20
|
-
"
|
|
20
|
+
"marvin": { "thinkingLevel": "high" },
|
|
21
21
|
"oracle": { "thinkingLevel": "high" },
|
|
22
22
|
"librarian": { "thinkingLevel": "medium" },
|
|
23
23
|
"frontend": { "temperature": 0.3 },
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
},
|
|
69
69
|
"agentOverrides": {
|
|
70
70
|
"oracle": { "requiresThinking": true },
|
|
71
|
-
"
|
|
71
|
+
"marvin": { "requiresThinking": true }
|
|
72
72
|
},
|
|
73
73
|
"fallbackBehavior": {
|
|
74
74
|
"autoFallback": false,
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"type": "object",
|
|
69
69
|
"description": "Agent model assignments",
|
|
70
70
|
"properties": {
|
|
71
|
-
"
|
|
71
|
+
"marvin": {
|
|
72
72
|
"type": "string",
|
|
73
73
|
"description": "Model for main orchestrator agent"
|
|
74
74
|
},
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"type": "object",
|
|
101
101
|
"description": "Optional agent-specific settings for temperature and thinking level",
|
|
102
102
|
"properties": {
|
|
103
|
-
"
|
|
103
|
+
"marvin": { "$ref": "#/definitions/agentSettings" },
|
|
104
104
|
"oracle": { "$ref": "#/definitions/agentSettings" },
|
|
105
105
|
"librarian": { "$ref": "#/definitions/agentSettings" },
|
|
106
106
|
"frontend": { "$ref": "#/definitions/agentSettings" },
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"items": { "$ref": "#/definitions/customModel" }
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
|
-
"required": ["
|
|
123
|
+
"required": ["marvin", "oracle", "librarian"]
|
|
124
124
|
},
|
|
125
125
|
"bmad": {
|
|
126
126
|
"type": "object",
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"type": "object",
|
|
233
233
|
"description": "Per-agent routing overrides",
|
|
234
234
|
"properties": {
|
|
235
|
-
"
|
|
235
|
+
"marvin": { "$ref": "#/definitions/agentRouting" },
|
|
236
236
|
"oracle": { "$ref": "#/definitions/agentRouting" },
|
|
237
237
|
"librarian": { "$ref": "#/definitions/agentRouting" },
|
|
238
238
|
"frontend": { "$ref": "#/definitions/agentRouting" },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"title": "OpenCode SDLC Configuration",
|
|
4
|
-
"description": "Configuration schema for OpenCode SDLC Plugin - Strict TDD with domain modeling and event sourcing",
|
|
4
|
+
"description": "Configuration schema for OpenCode SDLC Plugin v1.0 - Strict TDD with domain modeling and event sourcing",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
7
7
|
"$schema": {
|
|
@@ -12,6 +12,50 @@
|
|
|
12
12
|
"type": "string",
|
|
13
13
|
"description": "OpenCode SDLC Plugin version"
|
|
14
14
|
},
|
|
15
|
+
"modes": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"description": "Mode configuration (v1.0.0+)",
|
|
18
|
+
"properties": {
|
|
19
|
+
"default": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": ["discover", "model", "architect", "pm", "build"],
|
|
22
|
+
"default": "build",
|
|
23
|
+
"description": "Default mode on startup"
|
|
24
|
+
},
|
|
25
|
+
"eventModeling": {
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"default": true,
|
|
28
|
+
"description": "true=Model mode (Event Modeling), false=PRD mode"
|
|
29
|
+
},
|
|
30
|
+
"enabled": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"items": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["discover", "model", "architect", "pm", "build"]
|
|
35
|
+
},
|
|
36
|
+
"default": ["discover", "model", "architect", "pm", "build"],
|
|
37
|
+
"description": "Array of enabled modes"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"memory": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"description": "Memory configuration (v1.0.0+)",
|
|
44
|
+
"properties": {
|
|
45
|
+
"backend": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"enum": ["memento", "stateless"],
|
|
48
|
+
"default": "stateless",
|
|
49
|
+
"description": "Memory backend type"
|
|
50
|
+
},
|
|
51
|
+
"checkpointTtl": {
|
|
52
|
+
"type": "number",
|
|
53
|
+
"minimum": 1,
|
|
54
|
+
"default": 86400,
|
|
55
|
+
"description": "How long to keep checkpoints in seconds"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
15
59
|
"subscriptions": {
|
|
16
60
|
"type": "object",
|
|
17
61
|
"description": "LLM subscription configuration",
|
|
@@ -68,7 +112,7 @@
|
|
|
68
112
|
"type": "object",
|
|
69
113
|
"description": "Agent model assignments",
|
|
70
114
|
"properties": {
|
|
71
|
-
"
|
|
115
|
+
"marvin": {
|
|
72
116
|
"type": "string",
|
|
73
117
|
"description": "Model for main orchestrator agent"
|
|
74
118
|
},
|
|
@@ -96,11 +140,25 @@
|
|
|
96
140
|
"type": "string",
|
|
97
141
|
"description": "Model for fast codebase exploration agent"
|
|
98
142
|
},
|
|
143
|
+
"subagents": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"description": "Per-subagent model overrides (v1.0.0+)",
|
|
146
|
+
"properties": {
|
|
147
|
+
"red": { "$ref": "#/definitions/subagentModel" },
|
|
148
|
+
"green": { "$ref": "#/definitions/subagentModel" },
|
|
149
|
+
"domain": { "$ref": "#/definitions/subagentModel" },
|
|
150
|
+
"refactor": { "$ref": "#/definitions/subagentModel" },
|
|
151
|
+
"architect": { "$ref": "#/definitions/subagentModel" },
|
|
152
|
+
"pm": { "$ref": "#/definitions/subagentModel" },
|
|
153
|
+
"analyst": { "$ref": "#/definitions/subagentModel" },
|
|
154
|
+
"reviewer": { "$ref": "#/definitions/subagentModel" }
|
|
155
|
+
}
|
|
156
|
+
},
|
|
99
157
|
"settings": {
|
|
100
158
|
"type": "object",
|
|
101
159
|
"description": "Optional agent-specific settings for temperature and thinking level",
|
|
102
160
|
"properties": {
|
|
103
|
-
"
|
|
161
|
+
"marvin": { "$ref": "#/definitions/agentSettings" },
|
|
104
162
|
"oracle": { "$ref": "#/definitions/agentSettings" },
|
|
105
163
|
"librarian": { "$ref": "#/definitions/agentSettings" },
|
|
106
164
|
"frontend": { "$ref": "#/definitions/agentSettings" },
|
|
@@ -120,7 +178,7 @@
|
|
|
120
178
|
"items": { "$ref": "#/definitions/customModel" }
|
|
121
179
|
}
|
|
122
180
|
},
|
|
123
|
-
"required": ["
|
|
181
|
+
"required": ["marvin", "oracle", "librarian"]
|
|
124
182
|
},
|
|
125
183
|
"github": {
|
|
126
184
|
"type": "object",
|
|
@@ -188,6 +246,23 @@
|
|
|
188
246
|
"description": "Minimum mutation score required (0-100)"
|
|
189
247
|
}
|
|
190
248
|
}
|
|
249
|
+
},
|
|
250
|
+
"domainVetoEnabled": {
|
|
251
|
+
"type": "boolean",
|
|
252
|
+
"default": true,
|
|
253
|
+
"description": "Enable domain agent veto power over type changes (v1.0.0+)"
|
|
254
|
+
},
|
|
255
|
+
"debateRounds": {
|
|
256
|
+
"type": "number",
|
|
257
|
+
"minimum": 1,
|
|
258
|
+
"maximum": 5,
|
|
259
|
+
"default": 2,
|
|
260
|
+
"description": "Max debate rounds before escalation to user (v1.0.0+)"
|
|
261
|
+
},
|
|
262
|
+
"requireVerification": {
|
|
263
|
+
"type": "boolean",
|
|
264
|
+
"default": true,
|
|
265
|
+
"description": "Require test output evidence before phase transitions (v1.0.0+)"
|
|
191
266
|
}
|
|
192
267
|
}
|
|
193
268
|
},
|
|
@@ -358,7 +433,7 @@
|
|
|
358
433
|
"type": "object",
|
|
359
434
|
"description": "Per-agent routing overrides",
|
|
360
435
|
"properties": {
|
|
361
|
-
"
|
|
436
|
+
"marvin": { "$ref": "#/definitions/agentRouting" },
|
|
362
437
|
"oracle": { "$ref": "#/definitions/agentRouting" },
|
|
363
438
|
"librarian": { "$ref": "#/definitions/agentRouting" },
|
|
364
439
|
"frontend": { "$ref": "#/definitions/agentRouting" },
|
|
@@ -388,6 +463,11 @@
|
|
|
388
463
|
}
|
|
389
464
|
},
|
|
390
465
|
"required": ["autoFallback", "retryPeriodMs", "notifyOnRateLimit"]
|
|
466
|
+
},
|
|
467
|
+
"classifierModel": {
|
|
468
|
+
"type": "string",
|
|
469
|
+
"default": "anthropic/claude-haiku",
|
|
470
|
+
"description": "Model for sdlc_classify_request tool (v1.0.0+)"
|
|
391
471
|
}
|
|
392
472
|
},
|
|
393
473
|
"required": ["providerPriority", "modelFamilyPriority", "agentOverrides", "fallbackBehavior"]
|
|
@@ -459,6 +539,22 @@
|
|
|
459
539
|
"description": "Preferred provider for this agent"
|
|
460
540
|
}
|
|
461
541
|
}
|
|
542
|
+
},
|
|
543
|
+
"subagentModel": {
|
|
544
|
+
"oneOf": [
|
|
545
|
+
{
|
|
546
|
+
"type": "string",
|
|
547
|
+
"const": "inherit",
|
|
548
|
+
"description": "Inherit model from marvin"
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"type": "string",
|
|
552
|
+
"pattern": "^[a-z-]+/[a-z0-9-]+",
|
|
553
|
+
"description": "Full model identifier (e.g., 'anthropic/claude-sonnet-4-20250514')"
|
|
554
|
+
}
|
|
555
|
+
],
|
|
556
|
+
"default": "inherit",
|
|
557
|
+
"description": "Subagent model value - either a model string or 'inherit' to use marvin model"
|
|
462
558
|
}
|
|
463
559
|
}
|
|
464
560
|
}
|