opencode-sdlc-plugin 0.2.1 → 0.3.2

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 (72) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +127 -38
  3. package/commands/sdlc-adr.md +245 -17
  4. package/commands/sdlc-debug.md +376 -0
  5. package/commands/sdlc-design.md +205 -47
  6. package/commands/sdlc-dev.md +544 -0
  7. package/commands/sdlc-info.md +325 -0
  8. package/commands/sdlc-parallel.md +283 -0
  9. package/commands/sdlc-recall.md +203 -8
  10. package/commands/sdlc-remember.md +126 -9
  11. package/commands/sdlc-research.md +343 -0
  12. package/commands/sdlc-review.md +201 -128
  13. package/commands/sdlc-status.md +297 -0
  14. package/config/presets/copilot-only.json +69 -0
  15. package/config/presets/enterprise.json +79 -0
  16. package/config/presets/event-modeling.json +74 -8
  17. package/config/presets/minimal.json +70 -0
  18. package/config/presets/solo-quick.json +70 -0
  19. package/config/presets/standard.json +78 -0
  20. package/config/presets/strict-tdd.json +79 -0
  21. package/config/schemas/athena.schema.json +338 -0
  22. package/config/schemas/sdlc.schema.json +442 -26
  23. package/dist/cli/index.d.ts +2 -1
  24. package/dist/cli/index.js +4285 -562
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/index.d.ts +1781 -1
  27. package/dist/index.js +7759 -395
  28. package/dist/index.js.map +1 -1
  29. package/dist/plugin/index.d.ts +17 -2
  30. package/dist/plugin/index.js +7730 -397
  31. package/dist/plugin/index.js.map +1 -1
  32. package/package.json +68 -33
  33. package/prompts/agents/code-reviewer.md +229 -0
  34. package/prompts/agents/domain.md +210 -0
  35. package/prompts/agents/green.md +148 -0
  36. package/prompts/agents/mutation.md +278 -0
  37. package/prompts/agents/red.md +112 -0
  38. package/prompts/event-modeling/discovery.md +176 -0
  39. package/prompts/event-modeling/gwt-generation.md +479 -0
  40. package/prompts/event-modeling/workflow-design.md +318 -0
  41. package/prompts/personas/amelia-developer.md +43 -0
  42. package/prompts/personas/bob-sm.md +43 -0
  43. package/prompts/personas/john-pm.md +43 -0
  44. package/prompts/personas/mary-analyst.md +43 -0
  45. package/prompts/personas/murat-tester.md +43 -0
  46. package/prompts/personas/paige-techwriter.md +43 -0
  47. package/prompts/personas/sally-ux.md +43 -0
  48. package/prompts/personas/winston-architect.md +43 -0
  49. package/agents/design-facilitator.md +0 -8
  50. package/agents/domain.md +0 -9
  51. package/agents/exploration.md +0 -8
  52. package/agents/green.md +0 -9
  53. package/agents/marvin.md +0 -15
  54. package/agents/model-checker.md +0 -9
  55. package/agents/red.md +0 -9
  56. package/commands/sdlc-domain-audit.md +0 -32
  57. package/commands/sdlc-plan.md +0 -63
  58. package/commands/sdlc-pr.md +0 -43
  59. package/commands/sdlc-setup.md +0 -50
  60. package/commands/sdlc-start.md +0 -34
  61. package/commands/sdlc-work.md +0 -118
  62. package/config/presets/traditional.json +0 -12
  63. package/skills/adr-policy.md +0 -21
  64. package/skills/atomic-design.md +0 -39
  65. package/skills/debugging-protocol.md +0 -47
  66. package/skills/event-modeling.md +0 -40
  67. package/skills/git-spice.md +0 -44
  68. package/skills/github-issues.md +0 -44
  69. package/skills/memory-protocol.md +0 -41
  70. package/skills/orchestration.md +0 -118
  71. package/skills/skill-enforcement.md +0 -56
  72. package/skills/tdd-constraints.md +0 -63
@@ -1,46 +1,462 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "title": "SDLC Config",
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "OpenCode SDLC Configuration",
4
+ "description": "Configuration schema for OpenCode SDLC Plugin - Strict TDD with domain modeling and event sourcing",
4
5
  "type": "object",
5
- "required": ["version", "mode", "git", "features", "github", "languages"],
6
6
  "properties": {
7
- "version": { "type": "string" },
8
- "mode": { "type": "string", "enum": ["event-modeling", "traditional"] },
7
+ "$schema": {
8
+ "type": "string",
9
+ "description": "JSON Schema reference"
10
+ },
11
+ "version": {
12
+ "type": "string",
13
+ "description": "OpenCode SDLC Plugin version"
14
+ },
15
+ "subscriptions": {
16
+ "type": "object",
17
+ "description": "LLM subscription configuration",
18
+ "properties": {
19
+ "claude": {
20
+ "type": "object",
21
+ "properties": {
22
+ "enabled": { "type": "boolean" },
23
+ "tier": {
24
+ "type": "string",
25
+ "enum": ["none", "pro", "max5x", "max20x"]
26
+ }
27
+ },
28
+ "required": ["enabled", "tier"]
29
+ },
30
+ "openai": {
31
+ "type": "object",
32
+ "properties": {
33
+ "enabled": { "type": "boolean" }
34
+ },
35
+ "required": ["enabled"]
36
+ },
37
+ "google": {
38
+ "type": "object",
39
+ "properties": {
40
+ "enabled": { "type": "boolean" },
41
+ "authMethod": {
42
+ "type": "string",
43
+ "enum": ["none", "antigravity", "personal", "api"]
44
+ }
45
+ },
46
+ "required": ["enabled", "authMethod"]
47
+ },
48
+ "githubCopilot": {
49
+ "type": "object",
50
+ "properties": {
51
+ "enabled": { "type": "boolean" },
52
+ "plan": {
53
+ "type": "string",
54
+ "enum": ["none", "free", "pro", "pro-plus", "business", "enterprise"]
55
+ },
56
+ "enabledModels": {
57
+ "type": "array",
58
+ "items": { "type": "string" },
59
+ "description": "Optional: specific models enabled by organization admin"
60
+ }
61
+ },
62
+ "required": ["enabled", "plan"]
63
+ }
64
+ },
65
+ "required": ["claude", "openai", "google", "githubCopilot"]
66
+ },
67
+ "models": {
68
+ "type": "object",
69
+ "description": "Agent model assignments",
70
+ "properties": {
71
+ "sisyphus": {
72
+ "type": "string",
73
+ "description": "Model for main orchestrator agent"
74
+ },
75
+ "oracle": {
76
+ "type": "string",
77
+ "description": "Model for debugging/reasoning agent"
78
+ },
79
+ "librarian": {
80
+ "type": "string",
81
+ "description": "Model for research/documentation agent"
82
+ },
83
+ "frontend": {
84
+ "type": "string",
85
+ "description": "Model for UI/UX agent"
86
+ },
87
+ "documentWriter": {
88
+ "type": "string",
89
+ "description": "Model for documentation generation agent"
90
+ },
91
+ "multimodalLooker": {
92
+ "type": "string",
93
+ "description": "Model for image analysis agent"
94
+ },
95
+ "explore": {
96
+ "type": "string",
97
+ "description": "Model for fast codebase exploration agent"
98
+ },
99
+ "settings": {
100
+ "type": "object",
101
+ "description": "Optional agent-specific settings for temperature and thinking level",
102
+ "properties": {
103
+ "sisyphus": { "$ref": "#/definitions/agentSettings" },
104
+ "oracle": { "$ref": "#/definitions/agentSettings" },
105
+ "librarian": { "$ref": "#/definitions/agentSettings" },
106
+ "frontend": { "$ref": "#/definitions/agentSettings" },
107
+ "documentWriter": { "$ref": "#/definitions/agentSettings" },
108
+ "multimodalLooker": { "$ref": "#/definitions/agentSettings" },
109
+ "explore": { "$ref": "#/definitions/agentSettings" },
110
+ "overrides": {
111
+ "type": "object",
112
+ "description": "Per-model overrides (key: model ID, value: settings)",
113
+ "additionalProperties": { "$ref": "#/definitions/agentSettings" }
114
+ }
115
+ }
116
+ },
117
+ "custom": {
118
+ "type": "array",
119
+ "description": "User-defined custom models",
120
+ "items": { "$ref": "#/definitions/customModel" }
121
+ }
122
+ },
123
+ "required": ["sisyphus", "oracle", "librarian"]
124
+ },
125
+ "github": {
126
+ "type": "object",
127
+ "description": "GitHub Issues integration (v0.3.0+)",
128
+ "properties": {
129
+ "owner": {
130
+ "type": "string",
131
+ "description": "GitHub repository owner (user or org)"
132
+ },
133
+ "repo": {
134
+ "type": "string",
135
+ "description": "GitHub repository name"
136
+ },
137
+ "project": {
138
+ "type": "number",
139
+ "description": "GitHub Project number for board tracking"
140
+ },
141
+ "statuses": {
142
+ "type": "array",
143
+ "items": {
144
+ "type": "string",
145
+ "enum": ["Backlog", "Ready", "In progress", "In review", "Done"]
146
+ },
147
+ "default": ["Backlog", "Ready", "In progress", "In review", "Done"],
148
+ "description": "Project board column names"
149
+ }
150
+ },
151
+ "required": ["owner", "repo"]
152
+ },
153
+ "tdd": {
154
+ "type": "object",
155
+ "description": "TDD cycle enforcement configuration (v0.3.0+)",
156
+ "properties": {
157
+ "enabled": {
158
+ "type": "boolean",
159
+ "default": true,
160
+ "description": "Enable TDD cycle enforcement"
161
+ },
162
+ "verbosity": {
163
+ "type": "string",
164
+ "enum": ["silent", "brief", "explain"],
165
+ "default": "brief",
166
+ "description": "How verbose TDD feedback should be"
167
+ },
168
+ "bypassPatterns": {
169
+ "type": "array",
170
+ "items": { "type": "string" },
171
+ "default": ["*.config.*", "*.json", "*.md", "*.yaml", "*.yml"],
172
+ "description": "File patterns that bypass TDD checks"
173
+ },
174
+ "mutationTesting": {
175
+ "type": "object",
176
+ "description": "Mutation testing configuration",
177
+ "properties": {
178
+ "enabled": {
179
+ "type": "boolean",
180
+ "default": false,
181
+ "description": "Enable mutation testing for coverage verification"
182
+ },
183
+ "requiredScore": {
184
+ "type": "number",
185
+ "minimum": 0,
186
+ "maximum": 100,
187
+ "default": 80,
188
+ "description": "Minimum mutation score required (0-100)"
189
+ }
190
+ }
191
+ }
192
+ }
193
+ },
194
+ "eventModeling": {
195
+ "type": "object",
196
+ "description": "Event Modeling integration (v0.3.0+)",
197
+ "properties": {
198
+ "enabled": {
199
+ "type": "boolean",
200
+ "default": false,
201
+ "description": "Enable Event Modeling workflow"
202
+ },
203
+ "outputPath": {
204
+ "type": "string",
205
+ "default": "docs/event-model",
206
+ "description": "Path to event model output files"
207
+ }
208
+ }
209
+ },
9
210
  "git": {
10
211
  "type": "object",
11
- "required": ["workflow", "worktrees", "requireClean"],
212
+ "description": "Git workflow configuration (v0.3.0+)",
213
+ "properties": {
214
+ "workflow": {
215
+ "type": "string",
216
+ "enum": ["standard", "git-spice"],
217
+ "default": "standard",
218
+ "description": "Git workflow style"
219
+ },
220
+ "requireClean": {
221
+ "type": "boolean",
222
+ "default": true,
223
+ "description": "Require clean working directory before operations"
224
+ },
225
+ "worktrees": {
226
+ "type": "boolean",
227
+ "default": false,
228
+ "description": "Enable git worktrees for parallel work"
229
+ }
230
+ }
231
+ },
232
+ "bmad": {
233
+ "type": "object",
234
+ "description": "DEPRECATED: Legacy BMAD METHOD integration (use github instead)",
235
+ "deprecated": true,
12
236
  "properties": {
13
- "workflow": { "type": "string", "enum": ["git-spice", "standard"] },
14
- "worktrees": { "type": "boolean" },
15
- "requireClean": { "type": "boolean" }
237
+ "defaultTrack": {
238
+ "type": "string",
239
+ "enum": ["quick-flow", "bmad-method", "enterprise"],
240
+ "default": "bmad-method"
241
+ },
242
+ "autoStatusUpdate": {
243
+ "type": "boolean",
244
+ "default": true
245
+ },
246
+ "parallelStoryLimit": {
247
+ "type": "number",
248
+ "default": 3,
249
+ "minimum": 0,
250
+ "maximum": 10
251
+ },
252
+ "paths": {
253
+ "type": "object",
254
+ "properties": {
255
+ "stories": { "type": ["string", "null"], "default": null },
256
+ "sprintStatus": { "type": ["string", "null"], "default": null },
257
+ "prd": { "type": ["string", "null"], "default": null },
258
+ "architecture": { "type": ["string", "null"], "default": null },
259
+ "epics": { "type": ["string", "null"], "default": null },
260
+ "outputFolder": { "type": ["string", "null"], "default": null }
261
+ }
262
+ }
16
263
  }
17
264
  },
18
265
  "features": {
19
266
  "type": "object",
20
- "required": ["atomicDesign", "gitSpice"],
267
+ "description": "Feature toggles",
268
+ "oneOf": [
269
+ {
270
+ "description": "New v0.3.0+ features",
271
+ "properties": {
272
+ "orchestratorOnly": {
273
+ "type": "boolean",
274
+ "default": false,
275
+ "description": "Main conversation delegates all file writes to agents"
276
+ },
277
+ "todoSync": {
278
+ "type": "boolean",
279
+ "default": true,
280
+ "description": "Auto-sync todos with GitHub issue checkboxes"
281
+ },
282
+ "partyReview": {
283
+ "type": "boolean",
284
+ "default": true,
285
+ "description": "Enable party review for architecture decisions"
286
+ },
287
+ "debuggingProtocol": {
288
+ "type": "boolean",
289
+ "default": true,
290
+ "description": "Enable debugging protocol with Oracle"
291
+ },
292
+ "memento": {
293
+ "type": "boolean",
294
+ "default": false,
295
+ "description": "Enable Memento MCP for persistent memory"
296
+ },
297
+ "notifications": {
298
+ "type": "boolean",
299
+ "default": true,
300
+ "description": "Show in-TUI notifications"
301
+ },
302
+ "lspTools": {
303
+ "type": "boolean",
304
+ "default": true,
305
+ "description": "Enable LSP tools for code intelligence"
306
+ }
307
+ },
308
+ "required": ["orchestratorOnly", "todoSync", "partyReview", "debuggingProtocol", "memento", "notifications", "lspTools"]
309
+ },
310
+ {
311
+ "description": "Legacy features (deprecated)",
312
+ "properties": {
313
+ "bmadBridge": { "type": "boolean", "default": true },
314
+ "autoStatus": { "type": "boolean", "default": true },
315
+ "parallelExecution": { "type": "boolean", "default": true },
316
+ "notifications": { "type": "boolean", "default": true },
317
+ "contextMonitor": { "type": "boolean", "default": true },
318
+ "commentChecker": { "type": "boolean", "default": true },
319
+ "lspTools": { "type": "boolean", "default": true },
320
+ "autoGitOperations": { "type": "boolean", "default": false },
321
+ "todoSync": { "type": "boolean", "default": true }
322
+ }
323
+ }
324
+ ]
325
+ },
326
+ "mcps": {
327
+ "type": "object",
328
+ "description": "MCP server toggles",
21
329
  "properties": {
22
- "atomicDesign": { "type": "boolean" },
23
- "gitSpice": { "type": "boolean" }
330
+ "context7": { "type": "boolean", "default": true, "description": "Context7 for library documentation" },
331
+ "exa": { "type": "boolean", "default": true, "description": "Exa for web search" },
332
+ "grepApp": { "type": "boolean", "default": true, "description": "grep.app for code search" },
333
+ "memento": { "type": "boolean", "default": false, "description": "Memento for persistent memory" }
24
334
  }
25
335
  },
26
- "github": {
336
+ "routing": {
27
337
  "type": "object",
338
+ "description": "Provider routing and fallback configuration",
28
339
  "properties": {
29
- "owner": { "type": "string" },
30
- "project": { "type": "number" }
340
+ "providerPriority": {
341
+ "type": "array",
342
+ "description": "Global provider priority order",
343
+ "items": {
344
+ "type": "string",
345
+ "enum": ["anthropic", "openai", "google", "github-copilot"]
346
+ }
347
+ },
348
+ "modelFamilyPriority": {
349
+ "type": "object",
350
+ "description": "Per-model-family provider priority",
351
+ "properties": {
352
+ "claude": { "type": "array", "items": { "type": "string" } },
353
+ "gpt": { "type": "array", "items": { "type": "string" } },
354
+ "gemini": { "type": "array", "items": { "type": "string" } }
355
+ }
356
+ },
357
+ "agentOverrides": {
358
+ "type": "object",
359
+ "description": "Per-agent routing overrides",
360
+ "properties": {
361
+ "sisyphus": { "$ref": "#/definitions/agentRouting" },
362
+ "oracle": { "$ref": "#/definitions/agentRouting" },
363
+ "librarian": { "$ref": "#/definitions/agentRouting" },
364
+ "frontend": { "$ref": "#/definitions/agentRouting" },
365
+ "documentWriter": { "$ref": "#/definitions/agentRouting" },
366
+ "multimodalLooker": { "$ref": "#/definitions/agentRouting" }
367
+ }
368
+ },
369
+ "fallbackBehavior": {
370
+ "type": "object",
371
+ "description": "Rate limit handling configuration",
372
+ "properties": {
373
+ "autoFallback": {
374
+ "type": "boolean",
375
+ "description": "Automatically fallback to next provider on rate limit",
376
+ "default": false
377
+ },
378
+ "retryPeriodMs": {
379
+ "type": "number",
380
+ "description": "How long to wait before retrying original provider (milliseconds)",
381
+ "default": 300000,
382
+ "minimum": 0
383
+ },
384
+ "notifyOnRateLimit": {
385
+ "type": "boolean",
386
+ "description": "Show notification when rate limit is hit",
387
+ "default": true
388
+ }
389
+ },
390
+ "required": ["autoFallback", "retryPeriodMs", "notifyOnRateLimit"]
391
+ }
392
+ },
393
+ "required": ["providerPriority", "modelFamilyPriority", "agentOverrides", "fallbackBehavior"]
394
+ }
395
+ },
396
+ "required": ["version", "subscriptions", "models", "features", "mcps", "routing"],
397
+ "definitions": {
398
+ "agentSettings": {
399
+ "type": "object",
400
+ "description": "Settings for an agent (temperature and thinking level)",
401
+ "properties": {
402
+ "temperature": {
403
+ "type": "number",
404
+ "minimum": 0,
405
+ "maximum": 1,
406
+ "description": "Model temperature (0.0-1.0) - controls randomness/creativity"
407
+ },
408
+ "thinkingLevel": {
409
+ "type": "string",
410
+ "enum": ["off", "low", "medium", "high"],
411
+ "description": "Reasoning depth - maps to reasoning_effort (OpenAI), token budget (Anthropic), thinking_level (Google)"
412
+ }
31
413
  }
32
414
  },
33
- "languages": {
34
- "type": "array",
35
- "minItems": 1,
36
- "items": {
37
- "type": "object",
38
- "required": ["name", "testPatterns", "productionPatterns", "typePatterns"],
39
- "properties": {
40
- "name": { "type": "string" },
41
- "testPatterns": { "type": "array", "items": { "type": "string" } },
42
- "productionPatterns": { "type": "array", "items": { "type": "string" } },
43
- "typePatterns": { "type": "array", "items": { "type": "string" } }
415
+ "customModel": {
416
+ "type": "object",
417
+ "description": "Custom model definition",
418
+ "properties": {
419
+ "id": {
420
+ "type": "string",
421
+ "description": "Model identifier (e.g., 'anthropic/claude-next-gen')"
422
+ },
423
+ "name": {
424
+ "type": "string",
425
+ "description": "Display name"
426
+ },
427
+ "provider": {
428
+ "type": "string",
429
+ "enum": ["anthropic", "openai", "google", "github-copilot"],
430
+ "description": "Provider name"
431
+ },
432
+ "description": {
433
+ "type": "string",
434
+ "description": "Optional description"
435
+ },
436
+ "capabilities": {
437
+ "type": "object",
438
+ "description": "Model capabilities",
439
+ "properties": {
440
+ "thinking": { "type": "boolean" },
441
+ "contextWindow": { "type": "number" },
442
+ "supportsTemperature": { "type": "boolean" }
443
+ }
444
+ }
445
+ },
446
+ "required": ["id", "name", "provider"]
447
+ },
448
+ "agentRouting": {
449
+ "type": "object",
450
+ "description": "Routing configuration for an agent",
451
+ "properties": {
452
+ "requiresThinking": {
453
+ "type": "boolean",
454
+ "description": "Filter to thinking-capable providers"
455
+ },
456
+ "preferProvider": {
457
+ "type": "string",
458
+ "enum": ["anthropic", "openai", "google", "github-copilot"],
459
+ "description": "Preferred provider for this agent"
44
460
  }
45
461
  }
46
462
  }
@@ -1 +1,2 @@
1
- #!/usr/bin/env node
1
+
2
+ export { }