Show HN:Ordewell——将一个目标转化为有序的编码 Agent 任务计划
英文标题:🔶 Show HN: Ordewell – turn one goal into an ordered plan of coding-agent tasks
Ordewell 是一款面向编码 Agent 的开源编排工具,可将自然语言目标拆解为带依赖关系的有序任务计划,并为每个任务指定 runner、模型、推理强度和执行模式。其规划器以只读方式研究代码库、提出澄清问题,最终将对话结果固化为可编辑计划;实际写入操作始终交由 Claude Code、Codex、OpenCode 或自定义 runner 执行。工具通过任务专属完成标记而非模型自评或单纯退出码判定任务是否完成,并支持 TUI、CLI、VS Code 扩展及本地 HTTP/WebSocket API。Ordewell 支持无需额外 API Key 地复用现有编码 Agent 订阅,也兼容包括 OpenAI、Anthropic、OpenRouter 在内的 25 家 API 提供商,对需要混合模型、多 Agent 协作和可审计执行流程的开发者具有实用价值。
37.4 KB
31.7 KB
1.9 MB
699.0 KB
417.6 KB
中文

将一个目标转化为有序的编码 Agent 任务计划——每个任务都拥有自己的 runner、模型和模式——然后执行并验证它。
- 在消耗任何 token 前即可重写的计划。 计划是有类型的产物,而非 Agent 的内部状态:每个任务都携带 runner、模型、推理强度和模式。你可以修改其中任意项,添加或删除任务,并重新连接依赖关系——无需丢失已完成的工作,也无需反复与 AI 往返沟通。
- 按任务匹配合适的模型,并公开展示选择。 规划器针对整个计划作出一次模型组合决策——安全重构和 README 更新不应使用同一种模型——并在任何任务运行前展示每项分配(为何需要独立规划器?)。
- 基于证据而非意见的判定。 只有当 runner 输出中出现任务专属的完成标记时,任务才会完成;退出码会保留为诊断证据。模型绝不会成为最终裁决者。卡住的任务可通过 标记为完成 推进;误标为已完成的任务则可通过 标记为未完成 回退。
- 能够与你对话的规划器。 规划过程是一段连续对话:它以只读方式研究你的代码库,在目标模糊时提出问题,其最终消息 就是 计划(ADR-0002)。读取操作并行执行;任何超出工作区范围的操作只会询问一次;可能写入的命令会被直接拒绝(ADR-0008)。
- 无需额外 API Key。 Claude Code、Codex 或 OpenCode 都可以 充当 规划器,且严格处于只读模式,使用你已经为 runner 持有的订阅(ADR-0009)。
- 原生多 runner 设计。 启用多个 runner 后,规划器会为每项任务分配一个。内置支持 Claude Code、Codex 和 OpenCode;其他工具——如 Aider 或你自己的 CLI——只需通过插件清单接入,无需修改代码。
macOS、Linux 或 Windows 上的 Node.js ≥ 20。TUI 还需要 tmux——请参阅下方的平台支持说明。
npm install -g ordewell
ordewell # TUI——左侧聊天,右侧计划
就是这样。首次运行会要求选择规划器和 runner,可在内部通过 /planner、/runners、/key 设置——无需重启,初始也不需要 API Key。
无需全局安装,npx ordewell 的效果相同;该软件包也以 @ordewell/cli 为作用域发布。
若使用 VS Code,请安装扩展——扩展自带核心组件,因此无需从 npm 安装任何内容:
code --install-extension ordewell.ordewell
或者在扩展视图中搜索 Ordewell。
从源代码构建:git clone https://github.com/ordewell/ordewell.git && cd ordewell && npm install && npm run build && npm link -w packages/cli——参阅 CONTRIBUTING.md。
每个斜杠命令也都是一个子命令——可通过环境变量设置规划器和 runner,从而完全跳过 TUI。
已经在运行 Claude Code、Codex 或 OpenCode? 无需单独的 API Key——它会使用你已经持有的订阅:
export AI_PROVIDER="claude-code" # 或 codex、opencode
ordewell plan --goal "Add rate limiting to the public API" && ordewell run
变更操作始终由 runner 执行;规划 Agent 只负责探索和推理。相同的开关也可在 UI 中使用:/planner、/model、/planner-effort,或 VS Code 中的规划器栏。
更倾向于使用 API Key? 可通过各自的 *_API_KEY 识别 25 家提供商:OpenRouter、Anthropic、OpenAI、Gemini、xAI、Groq、DeepSeek、Mistral、Together、Fireworks、Perplexity、Cerebras、DeepInfra、Cohere、Novita、Kimi、Zhipu、Qwen、Doubao、Hunyuan、Baichuan、MiniMax、Yi、StepFun 和 SiliconFlow。运行 ordewell key 查看变量名称,或者将 OPENAI_COMPATIBLE_BASE_URL 指向任何其他服务,包括本地模型服务器。
export OPENROUTER_API_KEY="sk-or-..."
ordewell plan --goal "Add rate limiting to the public API" && ordewell run
一个流式时间线:实时展示推理过程、每一步研究及其结果,以及可展开查看 runner 自身输出的任务卡。重新指定任务的 runner 后,其模型和模式会原地重新推导。完整循环见下方的 VS Code 端到端工作流。
扩展所能做的一切都支持通过 SSH 完成。tab 可切换聊天与计划面板;单键即可驱动计划操作(f 开始、E 运行全部、m 切换完成状态、R runner、o 模型)。/help 可列出其余命令。
$ ordewell plan --goal "Add rate limiting to the public API"
Generating plan for: "Add rate limiting to the public API"...
✓ list_dir src → D middleware F router.ts F auth.ts
✓ grep X-RateLimit → no matches in 6 files
Question: should limits apply per API key, or per client IP?
My recommendation: per key — auth() already threads the key through req.ctx.
> per key, with an IP fallback for anonymous routes
Plan: 4 tasks (3 AI, 1 Manual) — claude-code, opencode
Session: session-1751600000000
1. [ AI] Add a token-bucket limiter in src/middleware/rateLimit.ts (Claude Sonnet 4.5 · Claude Code)
2. [ AI] Wire the limiter into route registration (Claude Haiku 4.5 · Claude Code)
3. [ AI] Return RFC 6585 429s with Retry-After (DeepSeek V4 Flash · Opencode)
4. [MAN] Document the limit headers in the OpenAPI spec
[MAN] = manual step — run `ordewell tui` to work through it
Run 'ordewell run' to execute, 'ordewell status' to inspect, or 'ordewell tui' for the full UI.
$ ordewell run
Executing plan...
✓ #a1b2 completed — PASS: Verified: completion marker detected in agent output. Task c
⟳ #c3d4 in_progress
[2/Wire the limiter into route registration] Started: claude-code / claude-haiku-4-5
Done. 4 completed, 0 failed, 0 blocked.
每个斜杠命令也都是一个 ordewell 子命令,因此没有任何功能仅限 UI 使用;无头自动化可以触达人类用户可用的全部能力。
- 用自然语言描述一个目标。
- 规划器研究你的工作区,保持只读,并在一段持久对话中将提问与研究交织进行(ADR-0008)。
- 计划出现——带有顺序的任务,每项任务均包含 runner、模型、推理强度和模式。可内联编辑任何内容,或通过重新提示词重塑整个计划,而不会丢失已完成的工作。
- 执行会为每个 AI 任务启动真实的编码 Agent 会话,遵循依赖图,并将每项任务前置任务的结果交给它。手动任务则会变成检查清单。
- VerdictEngine 仅在检测到任务标记后才将任务判定为完成;若退出时没有该标记,失败将被明确显示。会话会自动保存到
.ordewell/sessions/。
使用示例——规划、编辑、多 runner、插件
规划、编辑、执行
# 规划器会研究代码库;若目标描述不充分,则会进行对话
ordewell plan --goal "Migrate the config loader from JSON to TOML"
# 在运行前重新分配——先设置 runner,因为它会重新推导模型、推理强度和模式
ordewell task-runner 2 opencode
ordewell task-deps 3 1,2
# 执行;独立任务会并行运行(默认:3 个并发会话)
ordewell run
# 此后随时检查任何会话
ordewell status --session-id session-1751600000000
这些交互界面的差异只在于如何指定目标:TUI 会打开选择器,CLI 接收参数;而省略参数时,CLI 会打印与选择器相同的选项。
ordewell task-model 3 # 列出该任务 runner 可启动的模型
ordewell task-model 3 sonnet # 选择一个模型
无需编辑器即可配置
ordewell planner claude-code # 使用编码 Agent 订阅进行规划——无需 API Key
ordewell model set sonnet # 限定在该 Agent 自身的模型目录内
ordewell planner-effort high # 所选模型的一个变体
ordewell key set openrouter sk-… # 存储在 .env 中,绝不会回显
ordewell runners codex off
每项设置都会在写入 .env 之前 推送至正在运行的服务器,因此改动无需重启便会在下一次规划中生效——如果连接被拒绝,文件也不会留下守护进程从未接收到的设置。
结合 PRD 进行深度访谈式规划
ordewell grilling on # 规划器会在概述前就目标对你进行追问(至少 3 个探究性问题)
ordewell prd on # 规划器先预览,再将完整 PRD 写入 .scratch/<slug>/PRD.md
ordewell tdd on # 任务会附加红-绿-重构指令
ordewell plan --goal "Real-time collaborative editing"
# → 规划器会在聊天中追问你,起草 PRD,等待你的确认,
# 然后将计划作为最终消息提交
多 runner 计划与自定义 runner
# 重复传入 --runner 以构建 runner 集合;规划器会为每项任务分配一个
ordewell plan --goal "Refactor auth module" --runner claude-code --runner opencode
# 通过插件清单接入你自己的 CLI Agent
ordewell plugins create my-runner # 创建 manifest.json 脚手架
ordewell plugins install github:user/repo
ordewell plugins list
远程插件安装支持 GitHub、GitLab、Bitbucket 和 Codeberg 上的 https:// 仓库;其他来源必须由你自行克隆后从本地目录安装。
另外两种前端
ordewell # 全屏终端 UI——等同于 `ordewell tui`
ordewell web --daemon # 在后台运行的本地 API 服务器
ordewell web 会在 127.0.0.1:3742 启动供 CLI 和 TUI 使用的 HTTP + WebSocket API;所有其他命令会按需为你启动它。它提供 JSON,而不是网页;目前尚无浏览器仪表盘。
对于 VS Code,请安装扩展并打开 Ordewell 面板——参阅快速开始。
| 区域 | 命令 |
|---|---|
| 规划 | 输入一个目标、/approve、/run、/stop |
| 任务 | /add-task、/remove-task、/complete、/uncomplete、/skip、/retry、/cancel、/force-start |
| 技能 | /grilling、/tdd、/prd、/verify |
| 模型 | /model、/key、/allowlist、/runners、/auto、/refresh |
| 会话 | /sessions、/new、/save、/load、/delete——已加载的会话会被服务器接管,因此其计划仍可执行 |
| 系统 | /help、/mouse、/quit |
通过 /key 输入的 API Key 会在屏幕上被掩码显示,并写入你的 .env。
鼠标滚轮会滚动指针所在窗格——对话记录或计划——而不受哪个窗格拥有键盘焦点影响;pgup/pgdn 则滚动当前聚焦的窗格。为滚轮捕获鼠标会禁用终端自身的拖拽选择,因此当你需要复制文本时,使用 /mouse off 可将控制权交还终端(该设置通过 .env 中的 ORDEWELL_TUI_MOUSE 保存,而环境变量 ORDEWELL_TUI_MOUSE=false 会在所有位置关闭它)。
任务自身的终端是一个 tmux 窗口,在其中 tmux 确实会捕获鼠标,以便滚轮滚动其回滚缓冲区。在那里选择文本仍会复制到系统剪贴板:拖拽选择后释放即可复制,或双击/三击选择一个单词或一整行。若 Linux 系统中没有这些工具,请安装 wl-copy、xclip 或 xsel——若一个也没有,复制会回退到某些终端会忽略的 OSC 52 转义序列。
VS Code 端到端工作流——研究、提问、计划、执行、判定
平台支持——包括 Windows 注意事项
| 界面 | Linux | macOS | Windows |
|---|---|---|---|
| VS Code 扩展 | ✅ | ✅ | ✅ |
| API 服务器 | ✅ | ✅ | ✅ |
| CLI | ✅ | ✅ | ✅ |
| TUI | ✅ 需要 tmux | ✅ 需要 tmux | 需要 tmux——运行 i |
English / 原文

Turn one goal into an ordered plan of coding-agent tasks — each with its own runner, model and mode — then execute and verify it.
- A plan you can rewrite before a token is spent. The plan is a typed artifact, not an agent's internal state: every task carries a runner, model, thinking effort and mode, and you can change any of them, add and remove tasks, and rewire dependencies — without losing completed work or round-tripping the AI.
- The right model per task, chosen in the open. The planner makes one portfolio decision across the whole plan — a security refactor and a README update do not deserve the same model — and shows you every assignment before anything runs (why a separate planner?).
- Verdicts from evidence, not opinion. A task completes only when its unique completion marker appears in the runner's output; exit code is retained as diagnostic evidence. The model is never the tie-breaker. Stuck tasks can be advanced with Mark complete , and a task marked done by mistake goes back with Mark not done.
- A planner that talks back. Planning is one continuous chat: it researches your repo read-only, asks when your goal is vague, and its final message is the plan (ADR-0002). Reads run in parallel; anything reaching outside the workspace asks once; commands that would write are refused outright (ADR-0008).
- No extra API key required. Claude Code, Codex, or OpenCode can be the planner, strictly read-only, on the subscription you already hold for the runners (ADR-0009).
- Multi-runner by design. Enable several and the planner assigns one per task. Claude Code, Codex and OpenCode ship built-in; anything else — Aider, your own CLI — is a plugin manifest, not a code change.
Node.js ≥ 20 on macOS, Linux or Windows. The TUI also needs tmux — see Platform support below.
npm install -g ordewell
ordewell # the TUI — chat on the left, plan on the right
That's it. First run asks for a planner and a runner, set from inside (/planner, /runners, /key) — no restart, no API key required up front.
npx ordewell works the same without a global install; the package also ships scoped as @ordewell/cli.
For VS Code instead, install the extension — it carries its own core, so there is nothing to install from npm:
code --install-extension ordewell.ordewell
Or search Ordewell in the Extensions view.
Building from source: git clone https://github.com/ordewell/ordewell.git && cd ordewell && npm install && npm run build && npm link -w packages/cli — see CONTRIBUTING.md.
Every slash command is also a subcommand — set the planner and runner by env var to skip the TUI entirely.
Already run Claude Code, Codex, or OpenCode? No separate API key — it runs on the subscription you already hold:
export AI_PROVIDER="claude-code" # or codex, opencode
ordewell plan --goal "Add rate limiting to the public API" && ordewell run
Mutation always stays with the runners; the planner agent only explores and reasons. Same toggles apply from a UI: /planner, /model, /planner-effort, or the planner bar in VS Code.
Prefer an API key? Twenty-five providers are recognised via their own *_API_KEY — OpenRouter, Anthropic, OpenAI, Gemini, xAI, Groq, DeepSeek, Mistral, Together, Fireworks, Perplexity, Cerebras, DeepInfra, Cohere, Novita, Kimi, Zhipu, Qwen, Doubao, Hunyuan, Baichuan, MiniMax, Yi, StepFun and SiliconFlow. Run ordewell key for variable names, or point OPENAI_COMPATIBLE_BASE_URL at anything else, including a local model server.
export OPENROUTER_API_KEY="sk-or-..."
ordewell plan --goal "Add rate limiting to the public API" && ordewell run
A streaming timeline: live thinking, each research step with its outcome, and task cards you expand for the runner's own output. Retarget a task's runner and its model and mode re-derive in place. The whole loop is below, under The VS Code loop, end to end.
Everything the extension does, over SSH. tab swaps chat and plan pane; single keys drive the plan (f start, E run all, m toggle done, R runner, o model). /help lists the rest.
$ ordewell plan --goal "Add rate limiting to the public API"
Generating plan for: "Add rate limiting to the public API"...
✓ list_dir src → D middleware F router.ts F auth.ts
✓ grep X-RateLimit → no matches in 6 files
Question: should limits apply per API key, or per client IP?
My recommendation: per key — auth() already threads the key through req.ctx.
> per key, with an IP fallback for anonymous routes
Plan: 4 tasks (3 AI, 1 Manual) — claude-code, opencode
Session: session-1751600000000
1. [ AI] Add a token-bucket limiter in src/middleware/rateLimit.ts (Claude Sonnet 4.5 · Claude Code)
2. [ AI] Wire the limiter into route registration (Claude Haiku 4.5 · Claude Code)
3. [ AI] Return RFC 6585 429s with Retry-After (DeepSeek V4 Flash · Opencode)
4. [MAN] Document the limit headers in the OpenAPI spec
[MAN] = manual step — run `ordewell tui` to work through it
Run 'ordewell run' to execute, 'ordewell status' to inspect, or 'ordewell tui' for the full UI.
$ ordewell run
Executing plan...
✓ #a1b2 completed — PASS: Verified: completion marker detected in agent output. Task c
⟳ #c3d4 in_progress
[2/Wire the limiter into route registration] Started: claude-code / claude-haiku-4-5
Done. 4 completed, 0 failed, 0 blocked.
Every slash command is also an ordewell subcommand, so nothing is UI-only and headless automation reaches everything a human can.
- Describe a goal in plain prose.
- The planner researches your workspace read-only and interleaves questions with research in one persistent conversation (ADR-0008).
- A plan appears — ordered tasks, each with a runner, model, thinking effort and mode. Edit anything inline, or reprompt to reshape the whole plan without losing completed work.
- Execution spawns a real coding-agent session per AI task, respecting the dependency graph and handing each task its predecessors' results. Manual tasks become checklists.
- The VerdictEngine completes a task only once its marker appears; an exit without one fails visibly. Sessions auto-save to
.ordewell/sessions/.
Usage examples — planning, editing, multi-runner, plugins
Plan, edit, execute
# The planner researches the repo and converses if the goal is underspecified
ordewell plan --goal "Migrate the config loader from JSON to TOML"
# Reassign before running — runner first, since it re-derives model, effort and mode
ordewell task-runner 2 opencode
ordewell task-deps 3 1,2
# Execute; independent tasks run in parallel (default: 3 concurrent sessions)
ordewell run
# Inspect any session later
ordewell status --session-id session-1751600000000
The surfaces differ only in how you name a target: the TUI opens a picker, the CLI takes an argument — and omitting the argument prints the same options the picker would have shown.
ordewell task-model 3 # lists the models that task's runner can spawn
ordewell task-model 3 sonnet # picks one
Configure without an editor
ordewell planner claude-code # plan on a coding agent's subscription — no API key
ordewell model set sonnet # scoped to that agent's own catalog
ordewell planner-effort high # a variant of the selected model
ordewell key set openrouter sk-… # stored in .env, never echoed back
ordewell runners codex off
Each pushes to the running server before writing .env, so the change lands on the next plan with no restart — and a refused connection cannot leave the file holding a setting the daemon never saw.
Deep-interview planning with a PRD
ordewell grilling on # planner interrogates your goal before outlining (min. 3 probing questions)
ordewell prd on # planner previews, then writes a full PRD to .scratch/<slug>/PRD.md
ordewell tdd on # tasks are augmented with red-green-refactor instructions
ordewell plan --goal "Real-time collaborative editing"
# → the planner grills you in chat, drafts the PRD, waits for your OK,
# then commits the plan as its final message
Multi-runner plans and custom runners
# Pass --runner repeatedly to build a runner set; the planner assigns one per task
ordewell plan --goal "Refactor auth module" --runner claude-code --runner opencode
# Bring your own CLI agent via a plugin manifest
ordewell plugins create my-runner # scaffolds manifest.json
ordewell plugins install github:user/repo
ordewell plugins list
Remote plugin installs accept https:// repositories on GitHub, GitLab, Bitbucket and Codeberg; anything else must be cloned yourself and installed from its local directory.
The other two front ends
ordewell # full-screen terminal UI — same as `ordewell tui`
ordewell web --daemon # the local API server, in the background
ordewell web starts the HTTP + WebSocket API on 127.0.0.1:3742 that the CLI and TUI are clients of — every other command starts it for you on demand. It serves JSON, not a web page; there is no browser dashboard yet.
For VS Code, install the extension and open the Ordewell panel — see Quick Start.
| Area | Commands |
|---|---|
| Planning | type a goal, /approve, /run, /stop |
| Tasks | /add-task, /remove-task, /complete, /uncomplete, /skip, /retry, /cancel, /force-start |
| Skills | /grilling, /tdd, /prd, /verify |
| Models | /model, /key, /allowlist, /runners, /auto, /refresh |
| Sessions | /sessions, /new, /save, /load, /delete — a loaded session is adopted by the server, so its plan stays executable |
| System | /help, /mouse, /quit |
API keys typed into /key are masked on screen and written to your .env.
The mouse wheel scrolls whichever pane the pointer is over — transcript or plan — regardless of which one has keyboard focus, and pgup/pgdn scroll the focused one. Capturing the mouse for the wheel is what disables the terminal's own drag-to-select, so /mouse off hands it back when you need to copy text out (remembered via ORDEWELL_TUI_MOUSE in your .env, and ORDEWELL_TUI_MOUSE=false in the environment turns it off everywhere).
A task's own terminal is a tmux window, where tmux does hold the mouse so the wheel scrolls its scrollback. Selecting there still copies to your system clipboard: drag to select and release to copy, or double/triple-click for a word or a line. Install wl-copy, xclip or xsel on Linux if you have none of them — without one, copying falls back to an OSC 52 escape that some terminals ignore.
The TUI requires tmux on every platform , not only Windows — it is what backs each task's live terminal. Install it from your package manager (apt install tmux, brew install tmux) before running ordewell. Everything else runs natively on Windows: the planner (including harness planners), task execution, model discovery, and the read-only exploration envelope all work there.
Two notes for Windows. Install the agent CLIs with their native installers where one exists — an npm-installed claude/codex/opencode is a .cmd shim, which has to start through cmd.exe and inherits its 8191-character command-line limit; that is fine for task prompts but not for the harness planner's larger system prompt, and Ordewell will tell you so by name rather than silently truncating it. And keep Git for Windows installed: its POSIX shell is what the planner runs research commands in, so ls, cat, grep and friends behave the same as they do everywhere else. See ADR-0010.
Any install route is found, on PATH or not: the PowerShell one-liner installers (irm https://claude.ai/install.ps1 | iex, OpenCode's equivalent), npm, pnpm, Yarn, bun, Scoop, Chocolatey, WinGet, and Volta. If a runner is greyed out in the picker right after you installed it, restart the VS Code window — a GUI-launched extension host holds the PATH it started with.
| Configuration — the four settings that matter Option | Default | What it does |
|---|---|---|
One provider key (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, …) |
— | The one required setting. Twenty-five providers are recognised, each from its own variable — ordewell key lists them — plus any OpenAI-compatible endpoint via OPENAI_COMPATIBLE_BASE_URL. The provider is auto-detected from whichever key is set (force with AI_PROVIDER). Not needed when AI_PROVIDER is claude-code, codex, or opencode — those plan with the CLI's own subscription. |
ORCHESTRATOR_MODEL |
deepseek/deepseek-v4-flash |
The planner model — a budget model by default; it plans and researches but never writes code. Change via ordewell model set <id> or /model, which scope the choice to the planner backend's own catalog. With a coding-agent planner, it must be one of that agent's own model ids. |
ORDEWELL_PLANNER_EFFORT |
— | Thinking effort for a coding-agent planner, from the selected model's own variants (low, high, adaptive, …). Ignored by vendor planners, whose effort is baked into the model id. Change via ordewell planner-effort <level> or /planner-effort. |
ORDEWELL_MAX_PARALLEL |
3 |
Max concurrent AI task sessions (1–5). Independent tasks run in parallel; the dependency graph is always respected. |
Run ordewell --help for the full list of environment variables, or ordewell setup for the interactive wizard. VS Code users: everything is mirrored under ordewell.* settings.
Architecture
packages/
├── core/ Pure TypeScript, zero UI deps — Session, PlanStore, Planner,
│ TaskOrchestrator, VerdictEngine, ModelResolver, ModeResolver,
│ RunnerRegistry + manifest template engine
├── cli/ ordewell: tui, plan, run, status, stop, web, models, setup,
│ plugins, grilling, prd, tdd — plus tui/, a pure state +
│ renderer core behind a thin raw-mode terminal driver
├── vscode/ Extension + webview: streaming planner timeline, task cards,
│ TTY capture via script(1)
└── web/ Hono HTTP + WebSocket server — the local daemon the CLI and
TUI drive over 127.0.0.1 (session pool, headless execution)
The TUI's core is pure — a reducer returning { state, effects } and a renderer returning one string per terminal row (ADR-0006).
Tasks default to each runner's autonomous mode (toggle with /auto), and the plan is the source of truth for what runs — modes are never silently rewritten at spawn (ADR-0001).
Every surface consumes one event union (SessionMessage) over one broadcast seam — the domain vocabulary lives in CONTEXT.md and design decisions in docs/adr/.
Acknowledgements
The deep-interview planning workflows — grilling, PRD drafting, and TDD task augmentation — are adapted from Matt Pocock's skills (MIT), rebuilt as prompt blocks inside Ordewell's planner and runner prompts. If you want those workflows in a plain coding-agent session rather than an orchestrated plan, his repo is the place to start.
Bug reports, feature requests and pull requests are welcome — start with CONTRIBUTING.md for the build order and the layout of the tree. Security issues go to SECURITY.md, not the public tracker.
New to the codebase? CONTEXT.md is the domain glossary and docs/adr/ records why things are the way they are.
Licensed under the Apache License 2.0. The Ordewell name and logos are not covered by that licence — see NOTICE.

