@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.
- package/.codex-plugin/plugin.json +4 -2
- package/CHANGELOG.md +19 -0
- package/README.md +25 -20
- package/agents/keymaker.md +25 -17
- package/dist/atelier.js +1626 -940
- package/package.json +10 -11
- package/skills/atelier-orchestrator/SKILL.md +19 -2
- package/skills/atelier-setup/SKILL.md +10 -1
- package/skills/atelier-setup/references/issue-tracker.md +1 -1
- package/skills/code-retro/SKILL.md +146 -0
- package/skills/code-retro/agents/openai.yaml +5 -0
- package/skills/code-retro/references/report.md +35 -0
- package/skills/code-retro/references/transcripts.md +122 -0
- package/skills/code-retro/scripts/extract_sessions.py +800 -0
- package/skills/code-retro/scripts/test_extract_sessions.py +919 -0
- package/skills/code-subagents/SKILL.md +7 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atelier",
|
|
3
|
-
"version": "
|
|
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": [
|
|
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
|
|
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,
|
|
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,
|
|
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** |
|
|
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
|
|
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 (
|
|
125
|
+
New configurations use the following defaults (November 2026). Each entry is **model / thinking**.
|
|
126
126
|
|
|
127
|
-
| Configuration | Sentinel | Oracle | Architect |
|
|
128
|
-
|
|
129
|
-
| Claude Code | Haiku 5.5 /
|
|
130
|
-
| Codex | Luna 6 / low | Astra 6 /
|
|
131
|
-
| OpenCode / OpenAI | Luna 6 / low | Astra 6 /
|
|
132
|
-
| OpenCode / Bedrock | Haiku
|
|
133
|
-
| OpenCode / Zen | GLM 5.3 Flash / low | Kimi K3 / high | GLM 5.3 / high |
|
|
134
|
-
| OpenCode / Go | GLM 5.3 Flash / low | MiMo V2.6 Pro / on | GLM 5.3 / 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
|
|
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.
|
|
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
|
-
|
|
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`
|
|
145
|
-
- **Codex:**
|
|
146
|
-
- **OpenCode:**
|
|
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". |
|
package/agents/keymaker.md
CHANGED
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: keymaker
|
|
3
|
-
description:
|
|
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**,
|
|
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
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
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
|
|
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
|
-
- [ ]
|
|
24
|
-
- [ ]
|
|
25
|
-
- [ ]
|
|
26
|
-
- [ ]
|
|
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
|
|
32
|
-
- DO
|
|
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
|
|
35
|
-
- DON'T
|
|
36
|
-
- NEVER overwrite
|
|
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
|