@martinffx/atelier 3.6.0 → 3.8.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atelier",
3
- "version": "1.2.2",
3
+ "version": "3.8.0",
4
4
  "description": "Personal development toolkit - spec-driven development, code quality, deep thinking, and ecosystem patterns",
5
5
  "author": {
6
6
  "name": "Martin Richards"
@@ -22,6 +22,8 @@
22
22
  "shortDescription": "Personal development toolkit - spec-driven development, code quality, deep thinking, and ecosystem patterns",
23
23
  "developerName": "Martin Richards",
24
24
  "category": "Developer Tools",
25
- "capabilities": ["Read"]
25
+ "capabilities": [
26
+ "Read"
27
+ ]
26
28
  }
27
29
  }
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@
4
4
 
5
5
  - **breaking:** rename the `recon` agent to `sentinel`. Existing Atelier configuration is migrated automatically and legacy generated files are removed during the next command.
6
6
 
7
+ ## [3.8.0](https://github.com/martinffx/atelier/compare/v3.7.0...v3.8.0) (2026-11-13)
8
+
9
+
10
+ ### Features
11
+
12
+ * **claude:** keep opusplan as a selectable session model ([#95](https://github.com/martinffx/atelier/issues/95)) ([052e3c0](https://github.com/martinffx/atelier/commit/052e3c0e4d5c84af71d71abc60bd9e1f48cade35))
13
+ * **config:** use one session model with plan effort and remove cursor ([3177f6f](https://github.com/martinffx/atelier/commit/3177f6f8ff2eba63822aae478d7b8d6c40df413a))
14
+ * **skills:** add code-retro skill for branch retrospectives ([#93](https://github.com/martinffx/atelier/issues/93)) ([193f54f](https://github.com/martinffx/atelier/commit/193f54f97547bd0b424fd6e0c54d23ab78e753c3))
15
+ * **skills:** point setup at subagent delegation and spec-loop resume ([#94](https://github.com/martinffx/atelier/issues/94)) ([0576072](https://github.com/martinffx/atelier/commit/05760722eec57aa66a2f97bb1852e86ef14b0249))
16
+
17
+ ## [3.7.0](https://github.com/martinffx/atelier/compare/v3.6.0...v3.7.0) (2026-11-07)
18
+
19
+
20
+ ### Features
21
+
22
+ * **agents:** make keymaker the implementer of settled designs ([6c7fb33](https://github.com/martinffx/atelier/commit/6c7fb33463006d64f68f6bb2d7056347b3eb7bbf))
23
+ * **claude:** set a 190k auto-compact window under opusplan ([a9f1ed1](https://github.com/martinffx/atelier/commit/a9f1ed156f10fbde547dcffe9b31b33409a204f3))
24
+ * **opencode:** refresh model catalogs and add openrouter and google providers ([#90](https://github.com/martinffx/atelier/issues/90)) ([85ed86b](https://github.com/martinffx/atelier/commit/85ed86b5a070f08624c8f4dab2445ebeb8b73db3))
25
+
7
26
  ## [3.6.0](https://github.com/martinffx/atelier/compare/v3.5.0...v3.6.0) (2026-10-25)
8
27
 
9
28
 
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  Atelier gives coding agents a disciplined way to move from an idea to reviewed, verified code without taking control away from the developer.
8
8
 
9
9
  ```bash
10
- npx @martinffx/atelier@latest init --harness <claude|opencode|codex|cursor>
10
+ npx @martinffx/atelier@latest init --harness <claude|opencode|codex>
11
11
  ```
12
12
 
13
13
  Install the skills separately:
@@ -105,47 +105,51 @@ Atelier installs a focused set of skills for the full development loop:
105
105
  |------|--------------|
106
106
  | Spec workflow | Discovery, research, planning, implementation, validation, and finishing |
107
107
  | Thinking | Root-cause debugging, decision grilling, domain modelling, and codebase design |
108
- | Delivery | Multi-agent review, subagent coordination, commits, handoffs, and pull requests |
108
+ | Delivery | Multi-agent review, subagent coordination, commits, handoffs, pull requests, and branch retros |
109
109
 
110
- The CLI also configures four specialist agents for Claude Code, OpenCode, Codex, or Cursor:
110
+ The CLI also configures four specialist agents for Claude Code, OpenCode, or Codex:
111
111
 
112
112
  | Agent | Role |
113
113
  |-------|------|
114
114
  | **Sentinel** | Read-only codebase reconnaissance and review triage |
115
115
  | **Oracle** | Requirements, trade-offs, and critical analysis of changes |
116
116
  | **Architect** | Domain modelling, system design, and architecture review |
117
- | **Keymaker** | Fast scaffolding of files and boilerplate from templates and existing patterns |
117
+ | **Keymaker** | Implements settled designs: code, business logic and tests, so the main conversation stays small |
118
118
 
119
- Each subagent launch explicitly selects one of these four by matching the task to its description; the harness default is never used. Keymaker is the only agent with write access in Codex, and it uses Sentinel's model and thinking defaults in every configuration.
119
+ Each subagent launch explicitly selects one of these four by matching the task to its description; the harness default is never used. Keymaker is the only agent with write access in Codex. It runs on each harness's build-tier model (Sonnet on Claude Code), not the cheap Sentinel model.
120
120
 
121
121
  Run `npx @martinffx/atelier@latest --help` for CLI commands and options. Each skill contains its own operating instructions and loads when its context applies.
122
122
 
123
123
  ## Models and thinking
124
124
 
125
- New configurations use the following defaults (September 2026). Each entry is **model / thinking**.
125
+ New configurations use the following defaults (November 2026). Each entry is **model / thinking**.
126
126
 
127
- | Configuration | Sentinel | Oracle | Architect | Plan | Build |
128
- |---|---|---|---|---|---|
129
- | Claude Code | Haiku 5.5 / default | Opus 5.5 / xhigh | Opus 5.5 / high | Opus 5.5 / high | Sonnet 5 / high |
130
- | Codex | Luna 6 / low | Astra 6 / high | Astra 6 / xhigh | Sol 6 / xhigh | Sol 6 / high |
131
- | OpenCode / OpenAI | Luna 6 / low | Astra 6 / high | Astra 6 / xhigh | Astra 6 / xhigh | Sol 6 / high |
132
- | OpenCode / Bedrock | Haiku 4.5 / default | Fable 5.1 / high | Opus 5.5 / high | Opus 5.5 / high | Sonnet 5 / high |
133
- | OpenCode / Zen | GLM 5.3 Flash / low | Kimi K3 / high | GLM 5.3 / high | GLM 5.3 / high | DeepSeek V4.1 Flash / high |
134
- | OpenCode / Go | GLM 5.3 Flash / low | MiMo V2.6 Pro / on | GLM 5.3 / high | GLM 5.3 / high | DeepSeek V4.1 Flash / high |
127
+ | Configuration | Sentinel | Oracle | Architect | Keymaker | Session / Build | Plan |
128
+ |---|---|---|---|---|---|---|
129
+ | Claude Code | Haiku 5.5 / low | Opus 5.5 / xhigh | Opus 5.5 / high | Sonnet 5 / default | Opus 5.5 / medium | Opus 5.5 / medium (one session level) |
130
+ | Codex | Luna 6 / low | Astra 6 / xhigh | Astra 6 / high | Sol 6 / medium | Astra 6 / high | Astra 6 / high |
131
+ | OpenCode / OpenAI | Luna 6 / low | Astra 6 / xhigh | Astra 6 / high | Sol 6 / medium | Astra 6 / high | Astra 6 / high |
132
+ | OpenCode / Bedrock | Haiku 5.5 / low | Fable 5.1 / xhigh | Opus 5.5 / high | Sonnet 5 / default | Opus 5.5 / medium | Opus 5.5 / high |
133
+ | OpenCode / Zen | GLM 5.3 Flash / low | Kimi K3 / high | GLM 5.3 / high | DeepSeek V4.1 Flash / high | Kimi K3 / low | Kimi K3 / high |
134
+ | OpenCode / Go | GLM 5.3 Flash / low | MiMo V2.6 Pro / on | GLM 5.3 / high | DeepSeek V4.1 Flash / high | Kimi K3.1 Pro / low | Kimi K3.1 Pro / high |
135
+ | OpenCode / OpenRouter | GLM 5.3 Flash / low | Kimi K3.1 Pro / high | GLM 5.3 / high | DeepSeek V4.1 Flash (1017) / high | Kimi K3.1 Pro / low | Kimi K3.1 Pro / high |
136
+ | OpenCode / Google | Gemini 3.5 Flash Lite / low | Gemini 4 Argon / high | Gemini 4 Argon / high | Gemini 3.8 Flash / high | Gemini 4 Argon / medium | Gemini 4 Argon / high |
135
137
 
136
- Sentinel favors inexpensive reconnaissance. Oracle needs requirements synthesis and judgment; Architect and Plan need technical depth and completeness. Build balances capability and execution cost. These are starting configurations, informed by [Artificial Analysis](https://artificialanalysis.ai/models), rather than measured winners for Atelier's specific roles. Benchmark effort levels and provider speeds may differ from these defaults.
138
+ Sentinel favors inexpensive reconnaissance. Oracle needs requirements synthesis and judgment; Architect needs technical depth and completeness. Keymaker balances capability and execution cost. The session model drives the main conversation. These are starting configurations, informed by [Artificial Analysis](https://artificialanalysis.ai/models), rather than measured winners for Atelier's specific roles. Benchmark effort levels and provider speeds may differ from these defaults.
137
139
 
138
140
  Kimi's long-context results motivate its Oracle assignment on Zen. MiMo Pro's general capability and measured value motivate its Go assignment; Pro is available in [Go](https://opencode.ai/docs/go/) but absent from the researched [Zen catalog](https://opencode.ai/docs/zen/). GLM offers a credible engineering baseline; DeepSeek Flash favors execution throughput. Qwen, MiniMax, and other available candidates remain selectable. Qwen's hosted Max endpoint should not be assumed to be an equivalent open-weight model.
139
141
 
140
- Run `atelier update --harness <claude|codex|opencode>` to choose models and thinking settings. Saved models, including custom and older IDs, remain selectable; updates do not replace them with new defaults. Switching OpenCode providers starts from that provider's defaults. Cursor's configuration is unchanged.
142
+ Run `atelier update --harness <claude|codex|opencode>` to choose models and thinking settings. Saved models, including custom and older IDs, remain selectable; updates do not replace them with new defaults. Switching OpenCode providers starts from that provider's defaults. Each slot asks for its model and then its thinking level, and the model picker marks the role's default `(recommended)` without moving off a saved model. When you change a slot's model, the picker preselects that model family's recommended level and marks recommended levels `(recommended)`; every supported level stays selectable.
141
143
 
142
- Thinking is stored as `agents[].thinking`, `build_thinking`, and `plan_thinking` in `~/.atelier/config.json`. Values are model-specific: `default`, `off`, `on`, `low`, `medium`, `high`, `xhigh`, or `max`. The picker offers only verified capabilities. Custom models and catalog models whose controls have not been verified offer `default` only. Missing fields preserve legacy behavior; **Keep existing behavior** preserves that omission when editing. In particular, old Codex configurations retain medium agent/Build effort and high Plan effort. An explicit `default` omits Atelier's native effort override; other harness settings can still apply.
144
+ Build (session) thinking is stored as `build_thinking`, plan thinking as `plan_thinking` (Codex and OpenCode only), and each agent's as `agents[].thinking`, all in `~/.atelier/config.json`. Values are model-specific: `default`, `off`, `on`, `low`, `medium`, `high`, `xhigh`, or `max`. The picker offers only verified capabilities. Custom models and catalog models whose controls have not been verified offer `default` only. Missing fields preserve legacy behavior; **Keep existing behavior** preserves that omission when editing. In particular, old Codex configurations retain medium agent/Build effort. An explicit `default` omits Atelier's native effort override; other harness settings can still apply. Old plan settings from earlier versions are migrated or cleaned up automatically.
143
145
 
144
- - **Claude Code:** `opusplan` switches Opus/Sonnet by mode. Other session models share one thinking setting across modes. Atelier writes canonical `modelSettings.<model>.effortLevel` entries and subagent `effort`. Session `max` cannot be persisted, though supported subagents can use it. Use Claude Code **2.1.280 or later** for Opus 5.5 and the current aliases. Atelier also sets `disableClaudeAiConnectors: true`, `syncClaudeAiSkills: false` and `syncClaudeAiPlugins: false` in `~/.claude/settings.json`, so nothing from claude.ai is synced into Claude Code; `atelier remove` clears them unless you changed them. It also disables the Claude Code built-ins that clash with Atelier skills (`disableBundledSkills`, `enableArtifact: false`, `disableWorkflows`, deny rules for `Artifact`, `ArtifactComments`, `ArtifactData`, `Workflow` and `DesignSync`, and `skillOverrides` turning off the `/security-review` and `/ultrareview` commands). Interactive `init` also offers a checklist of optional built-ins to disable, none selected by default: `cron` (`/loop` and the Cron tools), `chrome` (the claude-in-chrome MCP server) and `remote-trigger` (`RemoteTrigger`). `atelier remove` and unticking an option undo these the same way. [Claude configuration](https://code.claude.com/docs/en/model-config)
145
- - **Codex:** Plan and Build share the selected session model, with separate reasoning settings. Oracle and Architect use independent Astra configurations. `off` maps to native `none`, available on Sol/Luna but not Astra. [Codex configuration](https://developers.openai.com/codex/config-reference/)
146
- - **OpenCode:** all five assignments are independent. Use **1.18.30 or later** for GPT-6 integration. Atelier sends explicit provider options rather than relying on automatically discovered reasoning variants: `reasoningEffort` for OpenAI-compatible routes, `effort` for Anthropic, and `reasoningConfig` for Bedrock. GLM 5.3 supports low/high/max; it does not support medium. Bedrock defaults use US inference profiles with `us-east-1`. [OpenCode agents](https://opencode.ai/docs/agents/)
146
+ - **Claude Code:** there is one session effort and no separate plan setting, because Claude Code sets effort per model or per session and has no plan mode effort. The session model defaults to `opus`; `opusplan` can be selected as the session model (not for subagents): it plans on Opus and builds on Sonnet, and the one session effort is written for both. Atelier writes canonical `modelSettings.<model>.effortLevel` entries for the session model and subagent `effort`. Session `max` cannot be persisted, though supported subagents can use it. Atelier no longer writes `autoCompactWindow`; `atelier update` and `atelier remove` clear a `190000` value it wrote earlier, and any value other than exactly `190000` is kept. Use Claude Code **2.1.280 or later** for Opus 5.5 and the current aliases. Atelier also sets `disableClaudeAiConnectors: true`, `syncClaudeAiSkills: false` and `syncClaudeAiPlugins: false` in `~/.claude/settings.json`, so nothing from claude.ai is synced into Claude Code; `atelier remove` clears them unless you changed them. It also disables the Claude Code built-ins that clash with Atelier skills (`disableBundledSkills`, `enableArtifact: false`, `disableWorkflows`, deny rules for `Artifact`, `ArtifactComments`, `ArtifactData`, `Workflow` and `DesignSync`, and `skillOverrides` turning off the `/security-review` and `/ultrareview` commands). Interactive `init` also offers a checklist of optional built-ins to disable, none selected by default: `cron` (`/loop` and the Cron tools), `chrome` (the claude-in-chrome MCP server) and `remote-trigger` (`RemoteTrigger`). `atelier remove` and unticking an option undo these the same way. [Claude configuration](https://code.claude.com/docs/en/model-config)
147
+ - **Codex:** the session model defaults to `gpt-6-astra`; Build uses `model_reasoning_effort` and Plan uses its own effort on the same model. There is no separate plan model. Plan effort is `plan_thinking`, written to `plan_mode_reasoning_effort` in `.codex/config.toml`; `default` removes the key, and an unset value leaves any existing key alone. Oracle and Architect use independent Astra configurations. `off` maps to native `none`, available on Sol/Luna but not Astra. [Codex configuration](https://developers.openai.com/codex/config-reference/)
148
+ - **OpenCode:** the session model is `default_model` (migrated from `build_model`), defaulting to Kimi K3.1 Pro on opencode-go and openrouter, kimi-k3 on opencode-zen, claude-opus-5-5 on amazon-bedrock, gpt-6-astra on openai and gemini-4-argon on google. Atelier writes the session model to the top-level `model` (replacing any value already there, so every agent without its own model shares it) and to `agent.build` (which also carries the session thinking). Plan uses the same model with its own effort in `agent.plan` (`mode: primary`); an existing `agent.plan` without `mode: primary` belongs to you and is left untouched. `atelier remove` clears both entries and clears `model` only while it still matches. All five assignments are independent. Use **1.18.30 or later** for GPT-6 integration. Atelier sends explicit provider options rather than relying on automatically discovered reasoning variants: `reasoningEffort` for OpenAI-compatible routes, `effort` for Anthropic, and `reasoningConfig` for Bedrock, `reasoning.effort` for OpenRouter and `thinkingConfig.thinkingLevel` for Google. GLM 5.3 supports low/high/max; it does not support medium. Bedrock defaults use US inference profiles with `us-east-1`. Go's Muse Spark 1.3 Contributor only works if the workspace allows paid endpoints that train on request data. OpenRouter session warming is opt-in and off by default: when enabled, Atelier writes `providers.openrouter.settings.cache.warming: true`, so OpenCode sends keep-alive requests every 4 minutes for up to 30 minutes to keep an idle session cache warm. It only applies to root sessions (subagents are not warmed), whether it saves money depends on the model and host, and it requires OpenCode 2.2.6 or later. Turning it off, switching provider or `atelier remove` clears the key only if it is exactly `true`; a custom object value is left alone. [OpenCode agents](https://opencode.ai/docs/agents/)
147
149
  - **MiMo:** `on`/`off` maps to `thinking.type: enabled`/`disabled`. There are no graded effort tiers. OpenCode agent files omit the old fixed temperature override so provider defaults apply. [MiMo API](https://mimo.mi.com/docs/en-US/api/chat/openai-api)
148
150
 
151
+ **Upgrading:** the config migration is one-way. After `atelier update` (or any command that rewrites the config) saves a migrated `~/.atelier/config.json`, an older CLI cannot read it, because its schema requires `build_model` and `plan_model` for OpenCode. To roll back, install the older version, then either hand-edit `~/.atelier/config.json` (restore `build_model` and `plan_model` in the `opencode` section) or delete the file and run `init` again.
152
+
149
153
  Atelier does not upgrade installed harness CLIs. Request-option serialization was checked against OpenCode's provider SDK versions with intercepted requests; this verifies parameter encoding, not upstream availability, quota, or role quality.
150
154
 
151
155
  ## Ecosystem
@@ -181,6 +185,7 @@ Some Atelier skills have more direct lineage:
181
185
  | [`spec-finish`](skills/spec-finish/SKILL.md) | Superpowers [`finishing-a-development-branch`](https://github.com/obra/superpowers/tree/main/skills/finishing-a-development-branch) and [`verification-before-completion`](https://github.com/obra/superpowers/tree/main/skills/verification-before-completion) | Inspired by its validation and completion workflow. |
182
186
  | [`code-subagents`](skills/code-subagents/SKILL.md) | Superpowers [`subagent-driven-development`](https://github.com/obra/superpowers/tree/main/skills/subagent-driven-development) and [`dispatching-parallel-agents`](https://github.com/obra/superpowers/tree/main/skills/dispatching-parallel-agents) | Inspired by fresh subagents, parallel dispatch, and batch review. |
183
187
  | [`code-handoff`](skills/code-handoff/SKILL.md) | Matt Pocock's [`handoff`](https://github.com/mattpocock/skills/tree/main/skills/productivity/handoff) | Adapted from its context-preserving handoff format. |
188
+ | [`code-retro`](skills/code-retro/SKILL.md) | Matt Pocock's [`retro`](https://github.com/mattpocock/skills/tree/main/skills/engineering/retro) | Adapted from its session-evidence, ranked-candidates, write-nothing approach. Extended to a whole branch, centred on Corrections and Nudges. Its session extractor needs Python 3.9+. |
184
189
  | [`oracle-grill-me`](skills/oracle-grill-me/SKILL.md) | Matt Pocock's [`grilling`](https://github.com/mattpocock/skills/tree/main/skills/productivity/grilling) and [`grill-with-docs`](https://github.com/mattpocock/skills/tree/main/skills/engineering/grill-with-docs) | Adapted from its rigorous interview loop and integration with living domain documentation. |
185
190
  | [`oracle-domain-modelling`](skills/oracle-domain-modelling/SKILL.md) | Matt Pocock's [`domain-modeling`](https://github.com/mattpocock/skills/tree/main/skills/engineering/domain-modeling) | Adapted from its active domain-modelling discipline, `CONTEXT.md`, and lightweight ADRs. |
186
191
  | [`oracle-codebase-design`](skills/oracle-codebase-design/SKILL.md) | Matt Pocock's [`codebase-design`](https://github.com/mattpocock/skills/tree/main/skills/engineering/codebase-design) and John Ousterhout's *A Philosophy of Software Design* | Adapted from its deep-module vocabulary, deletion test, and design-it-twice. Extended with Ousterhout's principles and red flags, plus Alexis King's "parse, don't validate", Yaron Minsky's "make illegal states unrepresentable", and Gary Bernhardt's "functional core, imperative shell". |
@@ -1,36 +1,44 @@
1
1
  ---
2
2
  name: keymaker
3
- description: Fast scaffolder. Use proactively to create files, directories and boilerplate from templates or existing project patterns, or to make simple pattern-following edits; reports exactly what changed. Does not design, review or implement business logic.
3
+ description: Implementer. MUST BE USED for every code change once the design or plan is settled, including new files, features, business logic, refactors, test writing, bug fixes with a known cause, and multi-file edits. Delegate implementation to Keymaker instead of editing in the main conversation, so the main conversation's context stays small. Give it the design excerpt, owned files and validation command. It writes tests first, implements, runs validation and reports files changed and test results. It makes no design decisions; it stops and asks.
4
4
  ---
5
5
 
6
- You are the **Keymaker**, a fast scaffolding agent. Your job is to create the files and directories others need, by copying existing project patterns or applying templates exactly. You work quickly, follow the pattern you are given, and never improvise design.
6
+ You are the **Keymaker**, the implementer. The design is settled and someone has handed you one task to build. You write the code and tests, run the validation, and report back, so the main conversation never has to carry the implementation.
7
+
8
+ Delegating to you is the default path for writing code. The main conversation edits directly only for trivial one-line changes and stateful debugging.
7
9
 
8
10
  ## Role
9
11
 
10
- - Create files and directory structures from templates or existing project patterns
11
- - Apply variable substitutions consistently across everything you create
12
- - Make simple, mechanical, pattern-following edits (renames, boilerplate, wiring)
13
- - Report exactly what was created or changed
12
+ - Implement one task from the design excerpt you are given: files, business logic, wiring, and tests
13
+ - Follow existing project patterns and conventions rather than inventing new ones
14
+ - Write the test first when behaviour changes (stub → test → fix), then make it pass
15
+ - Run the task's validation command and fix what fails, within the files you own
16
+ - Report exactly what changed, and what the validation showed
14
17
 
15
18
  ## Skills
16
19
 
17
- Before beginning work, scan your environment for relevant skills and load any that apply to the task at hand. Use them to follow the project's conventions for structure and naming.
20
+ Before beginning work, scan your environment for relevant skills and load any that apply to the task at hand. Use them to follow the project's conventions for structure, naming and testing.
21
+
22
+ ## Inputs
23
+
24
+ You should be given: the task and its requirements, the design excerpt it implements, the files you own, and the validation command. If any of these is missing or ambiguous, stop and ask. Do not guess your way around a gap in the design.
18
25
 
19
26
  ## Checklist
20
27
 
21
28
  Before finishing, confirm you have:
22
29
 
23
- - [ ] Verified each target file does not already exist before creating it
24
- - [ ] Created parent directories as needed
25
- - [ ] Applied all relevant variable substitutions when using templates
26
- - [ ] Matched the pattern you were pointed at (naming, structure, imports)
27
- - [ ] Reported every file created or modified
30
+ - [ ] Stayed inside the files you were told you own
31
+ - [ ] Matched the pattern you were pointed at (naming, structure, imports, test style)
32
+ - [ ] Written or updated tests for any changed behaviour
33
+ - [ ] Run the validation command and read its output
34
+ - [ ] Reported every file created or modified, plus the validation result (pass or the failing output)
28
35
 
29
36
  ## Boundaries
30
37
 
31
- - DO create files and directories as requested
32
- - DO follow the pattern you are given rather than inventing one
38
+ - DO implement the task, including business logic, within your owned files
39
+ - DO write and update tests
40
+ - DO stop and ask when the design is unclear, contradicts the code, or a change would reach outside your owned files
33
41
  - DON'T make design or architectural decisions (that's `architect`)
34
- - DON'T implement business logic or review code
35
- - DON'T conduct requirements discovery (that's `oracle`)
36
- - NEVER overwrite existing files unless explicitly told to
42
+ - DON'T conduct requirements discovery or challenge scope (that's `oracle`)
43
+ - DON'T review code beyond checking your own work
44
+ - NEVER overwrite files outside your owned list, and never silently work around a failing test by weakening it