opencode-agile-agent 1.0.3 → 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 (49) hide show
  1. package/README.md +6 -5
  2. package/bin/cli.js +13 -241
  3. package/bin/sync-templates.js +1 -7
  4. package/bin/validate-templates.js +0 -2
  5. package/package.json +1 -1
  6. package/templates/.opencode/ARCHITECTURE.md +10 -4
  7. package/templates/.opencode/README.md +17 -7
  8. package/templates/.opencode/agents/api-designer.md +52 -43
  9. package/templates/.opencode/agents/backend-specialist.md +53 -44
  10. package/templates/.opencode/agents/code-archaeologist.md +52 -43
  11. package/templates/.opencode/agents/context-gatherer.md +19 -8
  12. package/templates/.opencode/agents/database-architect.md +52 -43
  13. package/templates/.opencode/agents/debugger.md +52 -43
  14. package/templates/.opencode/agents/developer.md +56 -43
  15. package/templates/.opencode/agents/devops-engineer.md +51 -43
  16. package/templates/.opencode/agents/documentation-writer.md +50 -43
  17. package/templates/.opencode/agents/explorer-agent.md +17 -11
  18. package/templates/.opencode/agents/feature-lead.md +42 -30
  19. package/templates/.opencode/agents/feature-loop.md +100 -0
  20. package/templates/.opencode/agents/frontend-specialist.md +52 -44
  21. package/templates/.opencode/agents/game-developer.md +51 -43
  22. package/templates/.opencode/agents/mobile-developer.md +52 -43
  23. package/templates/.opencode/agents/orchestrator.md +46 -34
  24. package/templates/.opencode/agents/penetration-tester.md +46 -39
  25. package/templates/.opencode/agents/performance-optimizer.md +52 -43
  26. package/templates/.opencode/agents/pr-reviewer.md +61 -43
  27. package/templates/.opencode/agents/product-manager.md +44 -35
  28. package/templates/.opencode/agents/project-planner.md +52 -43
  29. package/templates/.opencode/agents/qa-automation-engineer.md +44 -35
  30. package/templates/.opencode/agents/security-auditor.md +43 -36
  31. package/templates/.opencode/agents/seo-specialist.md +52 -43
  32. package/templates/.opencode/agents/system-analyst.md +46 -37
  33. package/templates/.opencode/agents/test-engineer.md +46 -39
  34. package/templates/.opencode/commands/brainstorm.md +1 -1
  35. package/templates/.opencode/commands/create.md +1 -1
  36. package/templates/.opencode/commands/debug.md +1 -1
  37. package/templates/.opencode/commands/plan.md +1 -1
  38. package/templates/.opencode/commands/progress.md +20 -0
  39. package/templates/.opencode/commands/reframe.md +17 -0
  40. package/templates/.opencode/commands/rubber-duck.md +14 -0
  41. package/templates/.opencode/config.template.json +61 -17
  42. package/templates/.opencode/package-lock.json +115 -0
  43. package/templates/.opencode/skills/plan-writing/SKILL.md +5 -5
  44. package/templates/.opencode/templates/brief.template.md +20 -0
  45. package/templates/.opencode/templates/notes.template.md +13 -0
  46. package/templates/.opencode/templates/spec.template.md +17 -0
  47. package/templates/.opencode/templates/status.template.yaml +14 -0
  48. package/templates/.opencode/templates/task.template.md +13 -0
  49. package/templates/AGENTS.template.md +0 -300
package/README.md CHANGED
@@ -18,15 +18,15 @@ Scaffold the OpenCode spec-driven agent kit into any project with one confirmati
18
18
  - The installer writes to the current working directory, not the package directory.
19
19
 
20
20
  ## What Gets Installed
21
- - 25 agents
21
+ - 26 agents
22
22
  - 14 skills
23
- - 7 commands
23
+ - 10 commands
24
24
  - Shared rules, docs, and project config
25
25
 
26
26
  ## Custom Commands
27
27
  - `.opencode/commands/*.md` holds the slash commands.
28
28
  - Each command uses Markdown frontmatter plus a prompt body, matching OpenCode's command format.
29
- - The command set is `brainstorm`, `create`, `debug`, `plan`, `review`, `status`, and `test`.
29
+ - The command set is `brainstorm`, `create`, `debug`, `plan`, `progress`, `reframe`, `review`, `rubber-duck`, `status`, and `test`.
30
30
 
31
31
  ## Design Notes
32
32
  - Skills are compact, philosophy-first, and loaded by intent.
@@ -34,14 +34,14 @@ Scaffold the OpenCode spec-driven agent kit into any project with one confirmati
34
34
  - `redteam-validation` simulates attacker behavior and proves exploitability.
35
35
  - `qa-automation-engineer` is support-only for harness and CI plumbing, not the default test path.
36
36
  - `orchestrator` is optional; default routing stays with `feature-lead` and the owning specialists.
37
- - The compact planning bundle is proposal.md, goal.md, spec.md, task.md, and important.md.
37
+ - The compact planning bundle is brief.md, spec.md, task.md, notes.md, and status.yaml.
38
38
  - `@feature-lead` is the primary entry point; the rest are subagents.
39
39
  - Completed feature bundles are archived in `.opencode/archive/<feature-slug>/`.
40
40
 
41
41
  ## Spec-Driven Flow
42
42
  - `@feature-lead` is the primary entry point.
43
43
  - `@context-gatherer` maps the current project before any planning or proof.
44
- - `@project-planner` and `@system-analyst` build `proposal.md`, `goal.md`, `spec.md`, `task.md`, and `important.md`.
44
+ - `@project-planner` and `@system-analyst` build `brief.md`, `spec.md`, `task.md`, `notes.md`, and `status.yaml`.
45
45
  - `@developer` implements the approved spec.
46
46
  - `@test-engineer`, `@security-auditor`, `@penetration-tester`, and `@pr-reviewer` close the loop.
47
47
  - `@feature-lead` archives the completed bundle in `.opencode/archive/<feature-slug>/`.
@@ -49,6 +49,7 @@ Scaffold the OpenCode spec-driven agent kit into any project with one confirmati
49
49
  ## Template Source Of Truth
50
50
  - `templates/.opencode` mirrors the project kit.
51
51
  - Use `node bin/sync-templates.js` after editing `.opencode`.
52
+ - `AGENTS.md` is generated per installed project and is not stored as a reusable template.
52
53
 
53
54
  ## Requirements
54
55
  - Node.js 16+
package/bin/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { fileURLToPath } from 'url';
4
4
  import { dirname, join, sep } from 'path';
5
- import { existsSync, mkdirSync, cpSync, writeFileSync, readFileSync, rmSync } from 'fs';
5
+ import { existsSync, mkdirSync, cpSync, rmSync } from 'fs';
6
6
  import { createInterface } from 'readline';
7
7
 
8
8
  const __filename = fileURLToPath(import.meta.url);
@@ -53,10 +53,9 @@ OpenCode Agile Agent Installer
53
53
  Usage:
54
54
  opencode-agile-agent
55
55
 
56
- What it does:
57
- - Asks one yes/no question.
58
- - Detects the project stack automatically.
59
- - Copies .opencode and generates AGENTS.md.
56
+ What it does:
57
+ - Asks one yes/no question.
58
+ - Copies .opencode into the current project.
60
59
 
61
60
  Commands:
62
61
  --help, -h Show this help message
@@ -69,230 +68,7 @@ function shouldCopyPath(path) {
69
68
  return !path.includes(`${sep}node_modules${sep}`) && !path.endsWith(`${sep}node_modules`);
70
69
  }
71
70
 
72
- function detectProjectContext() {
73
- const defaults = {
74
- projectName: 'My Project',
75
- framework: 'Generic',
76
- language: 'JavaScript',
77
- styling: 'Follow existing styles',
78
- stateManagement: 'None / follow existing patterns',
79
- testing: 'Follow existing tests',
80
- };
81
-
82
- const packageJsonPath = join(projectRoot, 'package.json');
83
-
84
- if (!existsSync(packageJsonPath)) {
85
- return defaults;
86
- }
87
-
88
- try {
89
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
90
- const deps = { ...(packageJson.dependencies ?? {}), ...(packageJson.devDependencies ?? {}) };
91
- const has = (name) => Boolean(deps[name]);
92
-
93
- const framework = has('next')
94
- ? 'Next.js'
95
- : has('nuxt')
96
- ? 'Nuxt.js'
97
- : has('@angular/core')
98
- ? 'Angular'
99
- : has('svelte')
100
- ? 'Svelte'
101
- : has('vue') || has('vue2') || has('vue3')
102
- ? 'Vue'
103
- : has('react-native') || has('expo')
104
- ? 'React Native'
105
- : has('react') || has('react-dom')
106
- ? 'React'
107
- : has('express')
108
- ? 'Express'
109
- : has('fastify')
110
- ? 'Fastify'
111
- : has('nestjs') || has('@nestjs/core')
112
- ? 'NestJS'
113
- : 'Generic';
114
-
115
- const language = has('typescript') || existsSync(join(rootDir, 'tsconfig.json'))
116
- ? 'TypeScript'
117
- : 'JavaScript';
118
-
119
- const styling = has('tailwindcss')
120
- ? 'Tailwind'
121
- : has('styled-components')
122
- ? 'Styled Components'
123
- : has('sass') || has('scss')
124
- ? 'SCSS'
125
- : has('css-modules')
126
- ? 'CSS Modules'
127
- : 'Follow existing styles';
128
-
129
- const stateManagement = has('pinia')
130
- ? 'Pinia'
131
- : has('zustand')
132
- ? 'Zustand'
133
- : has('redux') || has('@reduxjs/toolkit')
134
- ? 'Redux'
135
- : has('mobx')
136
- ? 'MobX'
137
- : 'None / follow existing patterns';
138
-
139
- const testing = has('vitest')
140
- ? 'Vitest'
141
- : has('jest')
142
- ? 'Jest'
143
- : has('playwright')
144
- ? 'Playwright'
145
- : has('cypress')
146
- ? 'Cypress'
147
- : 'Follow existing tests';
148
-
149
- return {
150
- ...defaults,
151
- projectName: packageJson.name || defaults.projectName,
152
- framework,
153
- language,
154
- styling,
155
- stateManagement,
156
- testing,
157
- };
158
- } catch {
159
- return defaults;
160
- }
161
- }
162
-
163
- function generateAgentsMd(context) {
164
- return `# AGENTS.md - ${context.projectName}
165
-
166
- > Instructions for AI agents working on this project.
167
- >
168
- > How to build lives here; what to build comes from feature specs.
169
-
170
- ---
171
-
172
- ## Project Stack
173
-
174
- - Framework: ${context.framework}
175
- - Language: ${context.language}
176
- - State Management: ${context.stateManagement}
177
- - Styling: ${context.styling}
178
- - Testing: ${context.testing}
179
-
180
- ---
181
-
182
- ## Core Documentation
183
-
184
- Review these before making architectural or styling decisions:
185
-
186
- | Document | Purpose | Location |
187
- |----------|---------|----------|
188
- | OpenCode README | Kit overview and flow | .opencode/README.md |
189
- | OpenCode Architecture | Agent lifecycle and gates | .opencode/ARCHITECTURE.md |
190
- | Agent prompts | Role-specific behavior | .opencode/agents/*.md |
191
- | Commands | Custom slash commands | .opencode/commands/*.md |
192
- | Rules | Shared coding standards | .opencode/rules/*.md |
193
-
194
- ---
195
-
196
- ## OpenCode Delivery Model
197
-
198
- - Primary agent: @feature-lead
199
- - First call: @context-gatherer maps the current project state before planning or proof.
200
- - Other agents are subagents and are called with @ awareness.
201
- - Security-sensitive work: @security-auditor first, then @penetration-tester for redteam validation when needed.
202
-
203
- ## Compact Context Bundle
204
-
205
- - proposal.md: why, value, scope
206
- - goal.md: target outcome, constraints, default choice
207
- - spec.md: contract, data flow, edge cases, risks
208
- - task.md: ordered checklist, dependencies, owners
209
- - important.md: facts, blockers, links, decisions
210
-
211
- ## Archive
212
-
213
- - Archive completed bundles in .opencode/archive/<feature-slug>/.
214
-
215
- ## Decision Style
216
-
217
- - Default first: choose a safe default when the downside is small.
218
- - Ask only when scope, security, or architecture changes materially.
219
- - Keep handoffs compact and explicit.
220
-
221
- ---
222
-
223
- ## Code Conventions
224
-
225
- ### File Naming
226
-
227
- | Type | Pattern | Example |
228
- |------|---------|---------|
229
- | Components | PascalCase.tsx | UserCard.tsx |
230
- | Pages | PascalCasePage.tsx | LoginPage.tsx |
231
- | Stores | camelCase.store.ts | auth.store.ts |
232
- | Hooks/Composables | useCamelCase.ts | useAuth.ts |
233
- | Types | camelCase.types.ts | user.types.ts |
234
- | Utils | camelCase.utils.ts | date.utils.ts |
235
- | API | camelCase.api.ts | auth.api.ts |
236
- | Tests | *.test.ts or *.spec.ts | auth.test.ts |
237
-
238
- ### Code Style
239
-
240
- - Indentation: 2 spaces
241
- - Quotes: single
242
- - Semicolons: required
243
- - Line Width: 100
244
- - Trailing Commas: es5
245
-
246
- ---
247
-
248
- ## Project-Specific Rules
249
-
250
- - Keep changes aligned to the compact spec bundle.
251
- - Prefer defaults when a tradeoff is low risk.
252
- - Surface options only when the decision changes scope, security, or architecture.
253
-
254
- ---
255
-
256
- ## Architecture Patterns
257
-
258
- ### State Management
259
-
260
- - Describe where state lives.
261
- - Keep async work inside the owning module.
262
- - Make loading and error states explicit.
263
-
264
- ### API Layer
265
-
266
- - Keep request and response shapes explicit.
267
- - Normalize errors near the boundary.
268
- - Version breaking contract changes.
269
-
270
- ### Component Structure
271
-
272
- - Keep presentation and side effects separated.
273
- - Put validation near the boundary.
274
- - Make loading and error states visible.
275
-
276
- ---
277
-
278
- ## Testing Standards
279
-
280
- - Unit tests: pure logic and helper functions.
281
- - Integration tests: API calls and service boundaries.
282
- - E2E tests: critical user journeys.
283
- - Quality gate: verify behavior before release.
284
-
285
- ---
286
-
287
- ## Quick Reference
288
-
289
- - Validate templates: node bin/validate-templates.js
290
- - Sync templates: node bin/sync-templates.js
291
- - Entry point: @feature-lead
292
- `;
293
- }
294
-
295
- async function install() {
71
+ async function install() {
296
72
  console.log(banner);
297
73
  log.title('OpenCode Agile Agent Installer');
298
74
 
@@ -303,9 +79,6 @@ async function install() {
303
79
  return;
304
80
  }
305
81
 
306
- const context = detectProjectContext();
307
- log.info(`Detected project: ${context.projectName} (${context.framework}, ${context.language})`);
308
-
309
82
  const source = join(templatesDir, '.opencode');
310
83
  const target = join(projectRoot, '.opencode');
311
84
 
@@ -324,15 +97,14 @@ async function install() {
324
97
  }
325
98
 
326
99
  cpSync(source, target, {
327
- recursive: true,
328
- overwrite: true,
329
- filter: shouldCopyPath,
330
- });
331
- writeFileSync(join(rootDir, 'AGENTS.md'), generateAgentsMd(context), 'utf-8');
332
-
333
- log.success('Installed .opencode and generated AGENTS.md.');
334
- log.title('Done');
335
- console.log('Start with @feature-lead and review .opencode/README.md for the flow.');
100
+ recursive: true,
101
+ overwrite: true,
102
+ filter: shouldCopyPath,
103
+ });
104
+
105
+ log.success('Installed .opencode.');
106
+ log.title('Done');
107
+ console.log('Start with @feature-lead and add or update AGENTS.md manually if your repo needs one.');
336
108
 
337
109
  rl.close();
338
110
  }
@@ -9,8 +9,6 @@ const __dirname = dirname(__filename);
9
9
  const rootDir = join(__dirname, '..');
10
10
  const sourceOpencode = join(rootDir, '.opencode');
11
11
  const targetTemplates = join(rootDir, 'templates');
12
- const sourceTemplate = join(rootDir, 'AGENTS.template.md');
13
- const targetTemplate = join(targetTemplates, 'AGENTS.template.md');
14
12
 
15
13
  function skipNodeModules(path) {
16
14
  return !path.includes(`${sep}node_modules${sep}`) && !path.endsWith(`${sep}node_modules`);
@@ -38,8 +36,4 @@ cpSync(sourceOpencode, join(targetTemplates, '.opencode'), {
38
36
  filter: skipNodeModules,
39
37
  });
40
38
 
41
- if (existsSync(sourceTemplate)) {
42
- cpSync(sourceTemplate, targetTemplate, { force: true });
43
- }
44
-
45
- console.log('Synced .opencode and AGENTS.template.md to templates/');
39
+ console.log('Synced .opencode to templates/');
@@ -10,13 +10,11 @@ const templatesDir = join(__dirname, '..', 'templates');
10
10
 
11
11
  // Required files for templates
12
12
  const requiredFiles = [
13
- 'AGENTS.template.md',
14
13
  '.opencode/README.md',
15
14
  '.opencode/ARCHITECTURE.md',
16
15
  '.opencode/archive/README.md',
17
16
  '.opencode/config.template.json',
18
17
  '.opencode/package.json',
19
- '.opencode/memory/project.md',
20
18
  '.opencode/agents/context-gatherer.md',
21
19
  '.opencode/agents/api-designer.md',
22
20
  '.opencode/agents/backend-specialist.md',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-agile-agent",
3
- "version": "1.0.3",
3
+ "version": "1.2.0",
4
4
  "description": "AI Agile Spec-Driven Development - Install .opencode agile agent system into any project",
5
5
  "keywords": [
6
6
  "ai",
@@ -23,16 +23,22 @@
23
23
 
24
24
  ## Context Bundle
25
25
 
26
- - proposal.md: why, value, scope
27
- - goal.md: target outcome, constraints, default choice
28
- - spec.md: contract, data flow, edge cases, risks
26
+ - brief.md: why, outcome, scope, constraints, default choice
27
+ - spec.md: contract, data flow, edge cases, risks, acceptance criteria
29
28
  - task.md: ordered checklist, dependencies, owners
30
- - important.md: facts, blockers, links, decisions
29
+ - notes.md: facts, decisions, blockers, links
30
+ - status.yaml: live execution state
31
+
32
+ - `status.yaml` is the live execution artifact; the markdown files stay as stable planning/reference context.
33
+ - `status.yaml.status` allowed values: `active`, `blocked`, `review`, `done`.
31
34
 
32
35
  ## Archive
33
36
 
34
37
  - Archive completed bundles in `.opencode/archive/<feature-slug>/`.
35
38
  - Keep archive entries compact and aligned with the approved bundle.
39
+ - Archive only when `status.yaml` is `done`.
40
+ - Archive the full bundle: `brief.md`, `spec.md`, `task.md`, `notes.md`, and final `status.yaml`.
41
+ - Finalize archive only from the main agent handling the request: `feature-lead` or `feature-loop`.
36
42
 
37
43
  ## Skill Design
38
44
 
@@ -8,7 +8,7 @@ Spec-driven multi-agent system for OpenCode.
8
8
 
9
9
  - 25 agents
10
10
  - 14 skills
11
- - 7 commands
11
+ - 10 commands
12
12
 
13
13
  ## Skill Design
14
14
 
@@ -28,29 +28,36 @@ Spec-driven multi-agent system for OpenCode.
28
28
 
29
29
  - Custom slash commands live in `.opencode/commands/`.
30
30
  - Each command file uses Markdown frontmatter plus a prompt body, matching OpenCode's command format.
31
- - The current command set is `brainstorm`, `create`, `debug`, `plan`, `review`, `status`, and `test`.
31
+ - The current command set is `brainstorm`, `create`, `debug`, `plan`, `progress`, `reframe`, `review`, `rubber-duck`, `status`, and `test`.
32
32
 
33
33
  ## Primary Flow
34
34
 
35
35
  1. @feature-lead receives the request.
36
36
  2. @context-gatherer maps the current project state.
37
- 3. @project-planner and @system-analyst create the compact bundle: proposal.md, goal.md, spec.md, task.md, and important.md.
37
+ 3. @project-planner and @system-analyst create the compact bundle: brief.md, spec.md, task.md, notes.md, and status.yaml.
38
38
  4. @developer implements the approved spec.
39
39
  5. @test-engineer, @security-auditor, @penetration-tester, and @pr-reviewer close the loop.
40
40
  6. @feature-lead archives the completed bundle.
41
41
 
42
42
  ## Context Bundle
43
43
 
44
- - proposal.md: why, value, scope
45
- - goal.md: target outcome, constraints, default choice
46
- - spec.md: contract, data flow, edge cases, risks
44
+ - Templates live in `.opencode/templates/` for quick bundle creation.
45
+ - brief.md: why, outcome, scope, constraints, default choice
46
+ - spec.md: contract, data flow, edge cases, risks, acceptance criteria
47
47
  - task.md: ordered checklist, dependencies, owners
48
- - important.md: facts, blockers, links, decisions
48
+ - notes.md: facts, decisions, blockers, links
49
+ - status.yaml: live execution state
50
+
51
+ - `status.yaml` is the live execution artifact; the markdown files stay as stable planning/reference context.
52
+ - `status.yaml.status` allowed values: `active`, `blocked`, `review`, `done`.
49
53
 
50
54
  ## Archive
51
55
 
52
56
  - Completed bundles live in `.opencode/archive/<feature-slug>/`.
53
57
  - Keep the archive copy approved, compact, and read-only in practice.
58
+ - Archive only when `status.yaml` is `done`.
59
+ - Archive the full bundle: `brief.md`, `spec.md`, `task.md`, `notes.md`, and final `status.yaml`.
60
+ - Only the main agent (`feature-lead` or `feature-loop`) should finalize the archive.
54
61
 
55
62
  ## Agent Groups
56
63
 
@@ -76,7 +83,10 @@ Spec-driven multi-agent system for OpenCode.
76
83
  | create | Build new features, components, or project slices with a spec-driven flow. |
77
84
  | debug | Diagnose and fix bugs using a root-cause approach. |
78
85
  | plan | Create structured task breakdowns and spec artifacts. |
86
+ | progress | Check current status, visible changes, remaining work, and the next best step. |
87
+ | reframe | Reset the framing when the output is off-target, unclear, or stuck repeating the same mistake. |
79
88
  | review | Review code against the spec, standards, and quality gates. |
89
+ | rubber-duck | Think out loud, challenge assumptions, and isolate the real problem before changing anything. |
80
90
  | status | Check project health, docs, and operating readiness. |
81
91
  | test | Run and generate tests for the codebase. |
82
92
 
@@ -1,45 +1,54 @@
1
- ---
2
- name: api-designer
3
- description: Subagent for contract-first API design and version-aware interfaces.
4
- mode: subagent
5
- tools:
6
- read: true
7
- grep: true
8
- glob: true
9
- bash: true
10
- write: true
11
- edit: true
12
- skills:
13
- - clean-code
14
- - api-patterns
15
- - plan-writing
16
- ---
17
-
18
- # API Designer
19
-
20
- ## Role
21
- - Define the API shape before code is written.
22
- - Keep request and response contracts stable.
23
-
24
- ## @ Awareness
25
- - Call @backend-specialist for implementation details.
26
- - Call @database-architect when payloads map closely to persistence shape.
27
- - Call @test-engineer for contract coverage.
28
-
1
+ ---
2
+ name: api-designer
3
+ description: Subagent for contract-first API design and version-aware interfaces.
4
+ mode: subagent
5
+ temperature: 0.2
6
+ top_p: 0.88
7
+ steps: 35
8
+ permission:
9
+ task:
10
+ "*": deny
11
+ "backend-specialist": allow
12
+ "test-engineer": allow
13
+ tools:
14
+ read: true
15
+ grep: true
16
+ glob: true
17
+ bash: true
18
+ write: true
19
+ edit: true
20
+ skills:
21
+ - clean-code
22
+ - api-patterns
23
+ - plan-writing
24
+ ---
25
+
26
+ # API Designer
27
+
28
+ ## Role
29
+ - Define the API shape before code is written.
30
+ - Keep request and response contracts stable.
31
+
32
+ ## @ Awareness
33
+ - Call @backend-specialist for implementation details.
34
+ - Call @database-architect when payloads map closely to persistence shape.
35
+ - Call @test-engineer for contract coverage.
36
+
29
37
  ## Context Bundle
30
- - proposal.md: why, value, scope
31
- - goal.md: target outcome, constraints, default choice
32
- - spec.md: contract, data flow, edge cases, risks
38
+ - brief.md: why, outcome, scope, constraints, default choice
39
+ - spec.md: contract, data flow, edge cases, risks, acceptance criteria
33
40
  - task.md: ordered checklist, dependencies, owners
34
- - important.md: facts, blockers, links, decisions
35
-
36
- ## Working Loop
37
- 1. Read the assigned context.
38
- 2. Solve the local problem in your domain.
39
- 3. Expose tradeoffs and the recommended default.
40
- 4. Hand off to the next owning agent.
41
- 5. Stop when the exit gate is satisfied.
42
-
43
- ## Guardrails
44
- - Do not write UI code.
45
- - Treat breaking changes as a deliberate decision.
41
+ - notes.md: facts, decisions, blockers, links
42
+ - status.yaml: live execution state
43
+
44
+ ## Working Loop
45
+ 1. Read the assigned context.
46
+ 2. Solve the local problem in your domain.
47
+ 3. Update `status.yaml` with `in_progress`, `remaining`, `summary`, and `updated_at` as the contract work moves.
48
+ 4. Expose tradeoffs and the recommended default.
49
+ 5. Hand off to the next owning agent.
50
+ 6. Stop when the exit gate is satisfied.
51
+
52
+ ## Guardrails
53
+ - Do not write UI code.
54
+ - Treat breaking changes as a deliberate decision.
@@ -1,46 +1,55 @@
1
- ---
2
- name: backend-specialist
3
- description: Subagent for APIs, services, business logic, and integration boundaries.
4
- mode: subagent
5
- tools:
6
- read: true
7
- grep: true
8
- glob: true
9
- bash: true
10
- write: true
11
- edit: true
12
- skills:
13
- - clean-code
14
- - api-patterns
15
- - code-philosophy
16
- - testing-patterns
17
- ---
18
-
19
- # Backend Specialist
20
-
21
- ## Role
22
- - Build explicit APIs and service logic.
23
- - Validate inputs and keep contracts predictable.
24
-
25
- ## @ Awareness
26
- - Call @database-architect for schema or migration changes.
27
- - Call @security-auditor for auth, permissions, or data exposure.
28
- - Call @test-engineer for contract and integration coverage.
29
-
1
+ ---
2
+ name: backend-specialist
3
+ description: Subagent for APIs, services, business logic, and integration boundaries.
4
+ mode: subagent
5
+ temperature: 0.25
6
+ top_p: 0.9
7
+ steps: 80
8
+ permission:
9
+ task:
10
+ "*": ask
11
+ "database-architect": allow
12
+ "security-auditor": ask
13
+ tools:
14
+ read: true
15
+ grep: true
16
+ glob: true
17
+ bash: true
18
+ write: true
19
+ edit: true
20
+ skills:
21
+ - clean-code
22
+ - api-patterns
23
+ - code-philosophy
24
+ - testing-patterns
25
+ ---
26
+
27
+ # Backend Specialist
28
+
29
+ ## Role
30
+ - Build explicit APIs and service logic.
31
+ - Validate inputs and keep contracts predictable.
32
+
33
+ ## @ Awareness
34
+ - Call @database-architect for schema or migration changes.
35
+ - Call @security-auditor for auth, permissions, or data exposure.
36
+ - Call @test-engineer for contract and integration coverage.
37
+
30
38
  ## Context Bundle
31
- - proposal.md: why, value, scope
32
- - goal.md: target outcome, constraints, default choice
33
- - spec.md: contract, data flow, edge cases, risks
39
+ - brief.md: why, outcome, scope, constraints, default choice
40
+ - spec.md: contract, data flow, edge cases, risks, acceptance criteria
34
41
  - task.md: ordered checklist, dependencies, owners
35
- - important.md: facts, blockers, links, decisions
36
-
37
- ## Working Loop
38
- 1. Read the assigned context.
39
- 2. Solve the local problem in your domain.
40
- 3. Expose tradeoffs and the recommended default.
41
- 4. Hand off to the next owning agent.
42
- 5. Stop when the exit gate is satisfied.
43
-
44
- ## Guardrails
45
- - Do not write UI code.
46
- - Keep error handling close to the boundary.
42
+ - notes.md: facts, decisions, blockers, links
43
+ - status.yaml: live execution state
44
+
45
+ ## Working Loop
46
+ 1. Read the assigned context.
47
+ 2. Solve the local problem in your domain.
48
+ 3. Update `status.yaml` with `in_progress`, `remaining`, `summary`, and `updated_at` as backend work changes.
49
+ 4. Expose tradeoffs and the recommended default.
50
+ 5. Hand off to the next owning agent.
51
+ 6. Stop when the exit gate is satisfied.
52
+
53
+ ## Guardrails
54
+ - Do not write UI code.
55
+ - Keep error handling close to the boundary.