@tudeorangbiasa/sdd-multiagent-opencode 0.1.3 → 0.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/.opencode/agents/sdd-explorer.md +1 -2
- package/.opencode/agents/sdd-implementer.md +4 -5
- package/.opencode/agents/sdd-orchestrator.md +17 -127
- package/.opencode/agents/sdd-planner.md +5 -6
- package/.opencode/agents/sdd-reviewer.md +0 -1
- package/.opencode/agents/sdd-verifier.md +3 -4
- package/.opencode/commands/sdd-apply.md +83 -0
- package/.opencode/commands/sdd-explore.md +63 -0
- package/.opencode/commands/sdd-propose.md +116 -0
- package/.opencode/commands/sdd-ship.md +71 -0
- package/.opencode/plugins/sdd-auto-reasoning.js +141 -0
- package/.opencode/plugins/sdd-register.js +22 -0
- package/.opencode/skills/sdd-audit/SKILL.md +5 -5
- package/.opencode/skills/sdd-implementation/SKILL.md +10 -12
- package/.opencode/skills/sdd-planning/SKILL.md +20 -29
- package/.opencode/skills/sdd-research/SKILL.md +5 -5
- package/.sdd/config.json +10 -10
- package/.sdd/templates/design-template.md +21 -0
- package/.sdd/templates/model-profile-template.json +35 -3
- package/.sdd/templates/progress-template.md +23 -0
- package/.sdd/templates/project-profile-template.json +2 -2
- package/.sdd/templates/proposal-template.md +22 -0
- package/.sdd/templates/reasoning-profile-template.json +21 -0
- package/.sdd/templates/spec-template.md +19 -0
- package/.sdd/templates/tasks-template.md +8 -0
- package/.sdd/templates/verification-template.md +17 -0
- package/GUIDE.md +128 -0
- package/README.md +185 -150
- package/bin/sdd-opencode.js +34 -7
- package/opencode.json +10 -14
- package/package.json +6 -4
- package/.opencode/commands/audit.md +0 -75
- package/.opencode/commands/brief.md +0 -190
- package/.opencode/commands/evolve.md +0 -87
- package/.opencode/commands/execute-parallel.md +0 -116
- package/.opencode/commands/execute-task.md +0 -81
- package/.opencode/commands/generate-prd.md +0 -82
- package/.opencode/commands/generate-rules.md +0 -67
- package/.opencode/commands/grill-me.md +0 -99
- package/.opencode/commands/implement.md +0 -149
- package/.opencode/commands/init-sdd.md +0 -141
- package/.opencode/commands/plan.md +0 -96
- package/.opencode/commands/refine.md +0 -115
- package/.opencode/commands/research.md +0 -194
- package/.opencode/commands/sdd-full-plan.md +0 -91
- package/.opencode/commands/specify.md +0 -124
- package/.opencode/commands/tasks.md +0 -110
- package/.opencode/commands/upgrade.md +0 -107
- package/.opencode/skills/sdd-evolve/SKILL.md +0 -95
- package/.sdd/templates/feature-brief-v2.md +0 -65
- package/.sdd/templates/plan-compact.md +0 -50
- package/.sdd/templates/research-compact.md +0 -114
- package/.sdd/templates/roadmap-template.json +0 -29
- package/.sdd/templates/roadmap-template.md +0 -66
- package/.sdd/templates/spec-compact.md +0 -71
- package/.sdd/templates/tasks-compact.md +0 -48
- package/.sdd/templates/todo-compact.md +0 -30
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
const pluginDir = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const LEVELS = new Set(["low", "medium", "high"]);
|
|
7
|
+
const pendingOverrides = new Map();
|
|
8
|
+
const recentCommands = new Map();
|
|
9
|
+
|
|
10
|
+
function readJson(filePath) {
|
|
11
|
+
if (!fs.existsSync(filePath)) return null;
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function readProfile() {
|
|
21
|
+
const candidates = [
|
|
22
|
+
path.join(process.cwd(), ".sdd", "reasoning-profile.json"),
|
|
23
|
+
path.join(pluginDir, "..", "..", ".sdd", "reasoning-profile.json"),
|
|
24
|
+
path.join(pluginDir, "..", ".sdd", "reasoning-profile.json"),
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
for (const candidate of candidates) {
|
|
28
|
+
const profile = readJson(candidate);
|
|
29
|
+
if (profile) return profile;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
default: "low",
|
|
34
|
+
applyProviderOptions: true,
|
|
35
|
+
resetToolOverrideAfterNextRequest: true,
|
|
36
|
+
agents: {},
|
|
37
|
+
commands: {},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function normalizeLevel(level, fallback = "low") {
|
|
42
|
+
return LEVELS.has(level) ? level : fallback;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function applyReasoningOptions(output, level) {
|
|
46
|
+
if (!output.options) output.options = {};
|
|
47
|
+
|
|
48
|
+
output.options.reasoningEffort = level;
|
|
49
|
+
output.options.reasoning_effort = level;
|
|
50
|
+
output.options.reasoning = {
|
|
51
|
+
...(output.options.reasoning ?? {}),
|
|
52
|
+
effort: level,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
output.options.providerOptions = {
|
|
56
|
+
...(output.options.providerOptions ?? {}),
|
|
57
|
+
openai: {
|
|
58
|
+
...(output.options.providerOptions?.openai ?? {}),
|
|
59
|
+
reasoningEffort: level,
|
|
60
|
+
reasoning: {
|
|
61
|
+
...(output.options.providerOptions?.openai?.reasoning ?? {}),
|
|
62
|
+
effort: level,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function resolveLevel(profile, input) {
|
|
69
|
+
const override = pendingOverrides.get(input.sessionID);
|
|
70
|
+
if (override) return override;
|
|
71
|
+
|
|
72
|
+
const command = recentCommands.get(input.sessionID);
|
|
73
|
+
if (command && profile.commands?.[command]) {
|
|
74
|
+
return normalizeLevel(profile.commands[command], profile.default);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (profile.agents?.[input.agent]) {
|
|
78
|
+
return normalizeLevel(profile.agents[input.agent], profile.default);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return normalizeLevel(profile.default, "low");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export default async () => {
|
|
85
|
+
let toolHooks = {};
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
const { tool } = await import("@opencode-ai/plugin");
|
|
89
|
+
toolHooks = {
|
|
90
|
+
tool: {
|
|
91
|
+
change_reasoning: tool({
|
|
92
|
+
description: "Set reasoning effort for the next model request in this session.",
|
|
93
|
+
args: {
|
|
94
|
+
level: tool.schema.enum(["low", "medium", "high"]).describe("Reasoning level to use: low, medium, or high."),
|
|
95
|
+
},
|
|
96
|
+
async execute(args, context) {
|
|
97
|
+
const level = normalizeLevel(args.level, "low");
|
|
98
|
+
pendingOverrides.set(context.sessionID, level);
|
|
99
|
+
context.metadata({ title: `Reasoning: ${level}`, metadata: { level } });
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
output: `Reasoning level set to ${level} for the next model request in this session.`,
|
|
103
|
+
metadata: { level },
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
}),
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
} catch {
|
|
110
|
+
toolHooks = {};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
...toolHooks,
|
|
115
|
+
|
|
116
|
+
"command.execute.before": async (input) => {
|
|
117
|
+
recentCommands.set(input.sessionID, input.command);
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
"chat.params": async (input, output) => {
|
|
121
|
+
const profile = readProfile();
|
|
122
|
+
const level = resolveLevel(profile, input);
|
|
123
|
+
|
|
124
|
+
if (profile.applyProviderOptions !== false) {
|
|
125
|
+
applyReasoningOptions(output, level);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
output.options.sddReasoningLevel = level;
|
|
129
|
+
|
|
130
|
+
if (profile.resetToolOverrideAfterNextRequest !== false) {
|
|
131
|
+
pendingOverrides.delete(input.sessionID);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
"experimental.chat.system.transform": async (_input, output) => {
|
|
136
|
+
output.system.push(
|
|
137
|
+
"SDD auto reasoning is enabled. Use change_reasoning sparingly when the current task needs a different reasoning level. Use low for simple edits, medium for implementation/review, and high for architecture, planning, multi-agent orchestration, and hard debugging."
|
|
138
|
+
);
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
const packageRoot = path.resolve(__dirname, "..");
|
|
8
|
+
|
|
9
|
+
export default (async ({ client, project, directory, $ }) => {
|
|
10
|
+
return {
|
|
11
|
+
config(cfg) {
|
|
12
|
+
const skillsDir = path.join(packageRoot, ".opencode", "skills");
|
|
13
|
+
if (fs.existsSync(skillsDir)) {
|
|
14
|
+
cfg.skills = cfg.skills || {};
|
|
15
|
+
cfg.skills.paths = cfg.skills.paths || [];
|
|
16
|
+
if (!cfg.skills.paths.includes(skillsDir)) {
|
|
17
|
+
cfg.skills.paths.push(skillsDir);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sdd-audit
|
|
3
|
-
description: Structured
|
|
3
|
+
description: Structured readiness checks for /sdd-ship. Use when comparing implementation against SDD artifacts before release.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## What I do
|
|
@@ -13,7 +13,7 @@ description: Structured compliance checks for SDD workflows. Activates when audi
|
|
|
13
13
|
## When to use me
|
|
14
14
|
|
|
15
15
|
Use this skill when:
|
|
16
|
-
- Running `/
|
|
16
|
+
- Running `/sdd-ship` command
|
|
17
17
|
- Need to verify implementation matches spec
|
|
18
18
|
- Pre-merge quality gate
|
|
19
19
|
- Investigating specific issues or bugs
|
|
@@ -22,13 +22,13 @@ Use this skill when:
|
|
|
22
22
|
|
|
23
23
|
### Phase 1: Load Specifications
|
|
24
24
|
1. Read `spec.md` for requirements
|
|
25
|
-
2. Read `
|
|
26
|
-
3. Read `tasks.md`
|
|
25
|
+
2. Read `design.md` for intended approach
|
|
26
|
+
3. Read `tasks.md` for completed work
|
|
27
27
|
|
|
28
28
|
### Phase 2: Analyze Implementation
|
|
29
29
|
1. Identify completed tasks
|
|
30
30
|
2. Read actual implementation files using `codebase-memory-mcp`
|
|
31
|
-
3. Compare code against spec/
|
|
31
|
+
3. Compare code against spec/design requirements
|
|
32
32
|
|
|
33
33
|
### Phase 3: Security Review Checklist
|
|
34
34
|
- [ ] Input validation on all user inputs
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sdd-implementation
|
|
3
|
-
description: Systematic
|
|
3
|
+
description: Systematic implementation patterns for /sdd-apply. Use when executing approved SDD tasks from specs/active/<change-id>/tasks.md.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## What I do
|
|
7
7
|
|
|
8
8
|
- Guide systematic execution of planned implementations
|
|
9
|
-
- Enforce
|
|
9
|
+
- Enforce `tasks.md` checklist discipline with progress tracking
|
|
10
10
|
- Ensure code follows existing patterns and conventions
|
|
11
11
|
- Handle blockers with structured escalation
|
|
12
12
|
- Coordinate with sdd-verifier for post-implementation validation
|
|
@@ -14,15 +14,15 @@ description: Systematic code implementation patterns for SDD workflows. Activate
|
|
|
14
14
|
## When to use me
|
|
15
15
|
|
|
16
16
|
Use this skill when:
|
|
17
|
-
- Running `/
|
|
18
|
-
- Executing tasks from
|
|
17
|
+
- Running `/sdd-apply` command
|
|
18
|
+
- Executing tasks from `specs/active/<change-id>/tasks.md`
|
|
19
19
|
- Need systematic progress tracking during implementation
|
|
20
20
|
- Building features according to specifications
|
|
21
21
|
|
|
22
22
|
## Implementation Protocol
|
|
23
23
|
|
|
24
24
|
### Before Starting
|
|
25
|
-
1. Read `
|
|
25
|
+
1. Read `proposal.md`, `spec.md`, `design.md`, and `tasks.md`
|
|
26
26
|
2. Understand the full scope before writing code
|
|
27
27
|
3. Identify potential blockers early
|
|
28
28
|
|
|
@@ -42,8 +42,8 @@ Use this skill when:
|
|
|
42
42
|
|
|
43
43
|
### After Completion
|
|
44
44
|
1. Spawn `sdd-verifier` to validate implementation
|
|
45
|
-
2. Update
|
|
46
|
-
3. Document discoveries
|
|
45
|
+
2. Update `tasks.md` with final status
|
|
46
|
+
3. Document discoveries in the relevant artifact and explain the deviation
|
|
47
47
|
|
|
48
48
|
## Code Quality Standards
|
|
49
49
|
|
|
@@ -53,11 +53,9 @@ Use this skill when:
|
|
|
53
53
|
- Write tests for new functionality
|
|
54
54
|
- No secrets or credentials in code
|
|
55
55
|
|
|
56
|
-
##
|
|
56
|
+
## Test-First Mode (When Requested)
|
|
57
57
|
|
|
58
|
-
When
|
|
59
|
-
|
|
60
|
-
### TDD Loop per Task
|
|
58
|
+
When the user explicitly asks for test-first implementation, follow this loop per task:
|
|
61
59
|
|
|
62
60
|
1. **Write failing test first**
|
|
63
61
|
- Create test file: `tests/[feature].test.ts`
|
|
@@ -77,7 +75,7 @@ When `--tdd` flag is specified, follow this protocol instead of the standard app
|
|
|
77
75
|
- Only after test passes
|
|
78
76
|
- Keep test passing during refactor
|
|
79
77
|
|
|
80
|
-
###
|
|
78
|
+
### Test-First Rules
|
|
81
79
|
- Never write implementation before failing test
|
|
82
80
|
- Test must fail BEFORE implementation starts
|
|
83
81
|
- Only implement enough to pass the test
|
|
@@ -1,45 +1,36 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sdd-planning
|
|
3
|
-
description:
|
|
3
|
+
description: Compact SDD planning for /sdd-propose. Use when generating proposal, spec, design, and tasks for one focused change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## What I do
|
|
7
7
|
|
|
8
|
-
- Transform
|
|
9
|
-
- Guide architecture
|
|
10
|
-
- Break down features into
|
|
11
|
-
- Create feature briefs for quick planning workflows
|
|
8
|
+
- Transform one focused change request into reviewable artifacts
|
|
9
|
+
- Guide compact architecture and implementation design
|
|
10
|
+
- Break down features into small ordered tasks
|
|
12
11
|
- Estimate effort and identify technical risks
|
|
13
12
|
|
|
14
13
|
## When to use me
|
|
15
14
|
|
|
16
15
|
Use this skill when:
|
|
17
|
-
- Running `/
|
|
18
|
-
- A
|
|
19
|
-
- Breaking down a
|
|
16
|
+
- Running `/sdd-propose` command
|
|
17
|
+
- A change needs technical architecture
|
|
18
|
+
- Breaking down a change into implementation tasks
|
|
20
19
|
- Need to estimate effort and identify risks
|
|
21
20
|
|
|
22
21
|
## Planning Protocol
|
|
23
22
|
|
|
24
|
-
###
|
|
25
|
-
1. Parse
|
|
26
|
-
2.
|
|
27
|
-
3. Ask clarifying questions if needed
|
|
28
|
-
4. Generate
|
|
29
|
-
|
|
30
|
-
### Full Planning (60 min)
|
|
31
|
-
1. Read spec.md thoroughly
|
|
32
|
-
2. Analyze codebase constraints via `codebase-memory-mcp`
|
|
33
|
-
3. Design architecture with Mermaid diagrams
|
|
34
|
-
4. Define components, APIs, data models
|
|
35
|
-
5. Assess risks and open questions
|
|
23
|
+
### Proposal Planning
|
|
24
|
+
1. Parse the request and derive a safe change id
|
|
25
|
+
2. Scan the codebase for existing patterns
|
|
26
|
+
3. Ask at most 3 clarifying questions if needed
|
|
27
|
+
4. Generate `proposal.md`, `spec.md`, `design.md`, and `tasks.md`
|
|
36
28
|
|
|
37
29
|
### Task Breakdown
|
|
38
|
-
1.
|
|
39
|
-
2.
|
|
40
|
-
3.
|
|
41
|
-
4.
|
|
42
|
-
5. Populate `sdd.touchedFiles` for parallel execution safety
|
|
30
|
+
1. Organize tasks in implementation order
|
|
31
|
+
2. Keep each task small and independently verifiable
|
|
32
|
+
3. Include verification steps for each phase
|
|
33
|
+
4. Call out dependencies and risky file overlaps
|
|
43
34
|
|
|
44
35
|
## Estimation Heuristics
|
|
45
36
|
|
|
@@ -53,7 +44,7 @@ Use this skill when:
|
|
|
53
44
|
## Output Templates
|
|
54
45
|
|
|
55
46
|
Use templates from `.sdd/templates/`:
|
|
56
|
-
- `
|
|
57
|
-
- `spec-
|
|
58
|
-
- `
|
|
59
|
-
- `tasks-
|
|
47
|
+
- `proposal-template.md`
|
|
48
|
+
- `spec-template.md`
|
|
49
|
+
- `design-template.md`
|
|
50
|
+
- `tasks-template.md`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sdd-research
|
|
3
|
-
description: Structured investigation patterns for
|
|
3
|
+
description: Structured investigation patterns for /sdd-explore. Use when researching existing code, external options, or technical tradeoffs before proposing a change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## What I do
|
|
@@ -13,7 +13,7 @@ description: Structured investigation patterns for SDD workflows. Activates when
|
|
|
13
13
|
## When to use me
|
|
14
14
|
|
|
15
15
|
Use this skill when:
|
|
16
|
-
- Running `/
|
|
16
|
+
- Running `/sdd-explore` command
|
|
17
17
|
- Technical approach is unclear and needs investigation
|
|
18
18
|
- Evaluating multiple technologies or approaches
|
|
19
19
|
- Need to understand existing codebase patterns before planning
|
|
@@ -26,7 +26,7 @@ Use this skill when:
|
|
|
26
26
|
3. **Comparison** — Create pros/cons matrix for top 3 options
|
|
27
27
|
4. **Recommendation** — Primary + alternative with rationale
|
|
28
28
|
|
|
29
|
-
###
|
|
29
|
+
### Deeper Research
|
|
30
30
|
1. **Pass 1 — Landscape:** `exa_web_search_exa` to identify top 3-5 candidates
|
|
31
31
|
2. **Pass 2 — Documentation:** `webfetch` official docs, API references, pricing
|
|
32
32
|
3. **Pass 3 — Validation:** Search for production reviews, benchmarks, comparisons
|
|
@@ -39,6 +39,6 @@ Use this skill when:
|
|
|
39
39
|
| Medium | Established blogs, Stack Overflow (high votes), GitHub issues (resolved) |
|
|
40
40
|
| Low | Personal blogs, forum posts, outdated articles |
|
|
41
41
|
|
|
42
|
-
## Output
|
|
42
|
+
## Output
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
Return findings, options, a recommendation, and the next `/sdd-propose` command. Do not implement code.
|
package/.sdd/config.json
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"autoNumberFeatures": true,
|
|
11
11
|
"requireReviews": true,
|
|
12
12
|
"collaborationMode": true,
|
|
13
|
-
"defaultWorkflow": "
|
|
13
|
+
"defaultWorkflow": "sdd-propose",
|
|
14
14
|
"planningTimeLimit": 30,
|
|
15
15
|
"maxParallelImplementers": 4,
|
|
16
16
|
"templates": {
|
|
17
|
-
"
|
|
18
|
-
"spec": ".sdd/templates/spec-
|
|
19
|
-
"
|
|
20
|
-
"tasks": ".sdd/templates/tasks-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
17
|
+
"proposal": ".sdd/templates/proposal-template.md",
|
|
18
|
+
"spec": ".sdd/templates/spec-template.md",
|
|
19
|
+
"design": ".sdd/templates/design-template.md",
|
|
20
|
+
"tasks": ".sdd/templates/tasks-template.md",
|
|
21
|
+
"progress": ".sdd/templates/progress-template.md",
|
|
22
|
+
"verification": ".sdd/templates/verification-template.md"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"directories": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"backlog": "specs/backlog"
|
|
30
30
|
},
|
|
31
31
|
"workflow": {
|
|
32
|
-
"phases": ["
|
|
33
|
-
"requiredFiles": ["spec.md", "
|
|
34
|
-
"optionalFiles": ["progress.md", "
|
|
32
|
+
"phases": ["explore", "propose", "apply", "ship"],
|
|
33
|
+
"requiredFiles": ["proposal.md", "spec.md", "design.md", "tasks.md"],
|
|
34
|
+
"optionalFiles": ["progress.md", "verification.md", "status.md", "notes.md"]
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Design: <Change Title>
|
|
2
|
+
|
|
3
|
+
## Existing Patterns
|
|
4
|
+
|
|
5
|
+
- `[path]`: [pattern to follow]
|
|
6
|
+
|
|
7
|
+
## Approach
|
|
8
|
+
|
|
9
|
+
[Technical approach in concise bullets or paragraphs.]
|
|
10
|
+
|
|
11
|
+
## Files Likely To Change
|
|
12
|
+
|
|
13
|
+
- `[path]`: [expected change]
|
|
14
|
+
|
|
15
|
+
## Risks
|
|
16
|
+
|
|
17
|
+
- [Risk]: [mitigation]
|
|
18
|
+
|
|
19
|
+
## Verification
|
|
20
|
+
|
|
21
|
+
- `[command]`: [what it proves]
|
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"_info": {
|
|
3
|
+
"description": "Model routing configuration. Edit this file to change which model each agent uses. Restart OpenCode after editing.",
|
|
4
|
+
"requirement": "SDD requires at least ONE paid/subscription model for orchestrator and planner. These roles need strong reasoning that free models cannot provide.",
|
|
5
|
+
"subscription_options": {
|
|
6
|
+
"opencode_go": "$10/month — includes GLM 5.1, Kimi K2.5, MiniMax M2.5/M2.7",
|
|
7
|
+
"kimi_moderato": "Kimi K2.6 with vision support",
|
|
8
|
+
"openai_plus": "GPT 5.5 with reasoning and multimodal",
|
|
9
|
+
"glm_lite": "GLM 5.1 with strong reasoning",
|
|
10
|
+
"openrouter": "Access to frontier reasoning models"
|
|
11
|
+
},
|
|
12
|
+
"paid_models": {
|
|
13
|
+
"opencode/gpt-5.5": "Best for orchestrator/planner — strongest reasoning + multimodal",
|
|
14
|
+
"opencode/claude-sonnet-4-5": "Excellent for planner — code understanding and reasoning",
|
|
15
|
+
"opencode/claude-opus-4-5": "Maximum capability for complex architecture planning",
|
|
16
|
+
"opencode/kimi-k2.6": "Strong reasoning + vision, good alternative for planner",
|
|
17
|
+
"opencode/glm-5.1": "Strong reasoning, good for orchestrator/planner"
|
|
18
|
+
},
|
|
19
|
+
"free_models": {
|
|
20
|
+
"opencode/qwen3.6-plus-free": "Multimodal — best for verifier (Chrome DevTools screenshots)",
|
|
21
|
+
"opencode/deepseek-v4-flash-free": "Fast code gen — best for explorer and implementer",
|
|
22
|
+
"opencode/minimax-m2.5-free": "Structured output — best for reviewer (code review)",
|
|
23
|
+
"opencode/nemotron-3-super-free": "1M context — good for exploration tasks"
|
|
24
|
+
},
|
|
25
|
+
"recommendations": {
|
|
26
|
+
"orchestrator": "PAID: GPT 5.5 or Claude Sonnet 4.5 — needs strong reasoning for DAG coordination",
|
|
27
|
+
"planner": "PAID: GPT 5.5 or Claude Opus 4.5 — needs maximum reasoning for architecture",
|
|
28
|
+
"explorer": "FREE: DeepSeek v4 Flash — fast readonly exploration, token-efficient",
|
|
29
|
+
"implementer": "FREE: DeepSeek v4 Flash — code generation, high token usage",
|
|
30
|
+
"verifier": "FREE: Qwen3.6 Plus — multimodal for Chrome DevTools screenshots",
|
|
31
|
+
"reviewer": "FREE: MiniMax M2.5 — structured code review output"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"defaultPrimary": "opencode/gpt-5.5",
|
|
3
35
|
"small": "opencode/deepseek-v4-flash-free",
|
|
4
36
|
"agents": {
|
|
5
|
-
"sdd-orchestrator": "opencode/
|
|
6
|
-
"sdd-planner": "opencode/
|
|
37
|
+
"sdd-orchestrator": "opencode/gpt-5.5",
|
|
38
|
+
"sdd-planner": "opencode/gpt-5.5",
|
|
7
39
|
"sdd-explorer": "opencode/deepseek-v4-flash-free",
|
|
8
40
|
"sdd-implementer": "opencode/deepseek-v4-flash-free",
|
|
9
41
|
"sdd-verifier": "opencode/qwen3.6-plus-free",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Progress: <Change Title>
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
- phase: propose|apply|ship
|
|
6
|
+
- ready_for_next_task: yes|no
|
|
7
|
+
- last_updated: <date>
|
|
8
|
+
|
|
9
|
+
## Completed
|
|
10
|
+
|
|
11
|
+
- [Task id or title]
|
|
12
|
+
|
|
13
|
+
## Blocked
|
|
14
|
+
|
|
15
|
+
- [Task id or title]: [reason]
|
|
16
|
+
|
|
17
|
+
## Decisions During Apply
|
|
18
|
+
|
|
19
|
+
- [Decision]: [reason]
|
|
20
|
+
|
|
21
|
+
## Next Safe Task
|
|
22
|
+
|
|
23
|
+
[The next task that can be resumed with minimal context.]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Proposal: <Change Title>
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
[What problem this change solves.]
|
|
6
|
+
|
|
7
|
+
## Goals
|
|
8
|
+
|
|
9
|
+
- [Goal 1]
|
|
10
|
+
- [Goal 2]
|
|
11
|
+
|
|
12
|
+
## Non-Goals
|
|
13
|
+
|
|
14
|
+
- [What is intentionally out of scope]
|
|
15
|
+
|
|
16
|
+
## User Impact
|
|
17
|
+
|
|
18
|
+
[Who is affected and how behavior changes.]
|
|
19
|
+
|
|
20
|
+
## Success Criteria
|
|
21
|
+
|
|
22
|
+
- [ ] [Observable success condition]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"default": "low",
|
|
3
|
+
"applyProviderOptions": true,
|
|
4
|
+
"resetToolOverrideAfterNextRequest": true,
|
|
5
|
+
"agents": {
|
|
6
|
+
"general": "medium",
|
|
7
|
+
"plan": "high",
|
|
8
|
+
"sdd-orchestrator": "high",
|
|
9
|
+
"sdd-planner": "high",
|
|
10
|
+
"sdd-explorer": "low",
|
|
11
|
+
"sdd-implementer": "medium",
|
|
12
|
+
"sdd-verifier": "medium",
|
|
13
|
+
"sdd-reviewer": "medium"
|
|
14
|
+
},
|
|
15
|
+
"commands": {
|
|
16
|
+
"sdd-explore": "medium",
|
|
17
|
+
"sdd-propose": "high",
|
|
18
|
+
"sdd-apply": "medium",
|
|
19
|
+
"sdd-ship": "medium"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Spec: <Change Title>
|
|
2
|
+
|
|
3
|
+
## Requirements
|
|
4
|
+
|
|
5
|
+
- [Requirement 1]
|
|
6
|
+
- [Requirement 2]
|
|
7
|
+
|
|
8
|
+
## Acceptance Criteria
|
|
9
|
+
|
|
10
|
+
- [ ] [Verifiable outcome]
|
|
11
|
+
- [ ] [Verifiable outcome]
|
|
12
|
+
|
|
13
|
+
## Edge Cases
|
|
14
|
+
|
|
15
|
+
- [Edge case and expected behavior]
|
|
16
|
+
|
|
17
|
+
## Out Of Scope
|
|
18
|
+
|
|
19
|
+
- [Excluded behavior]
|