内容
路线范围、管理和编排 AI 编程会话(在任何仓库中)
`roadmap` 是一个命令行工具、 服务器和 Claude Code 插件。它将两个 YAML 文件转换为仓库的记录计划 —— 一个**分层、依赖感知路线图**和一个**优先事项待办事项**,用于处理不规律的工作 —— 然后**将该计划扩展为并行的编码会话**,每个会话都限定在一个单独的工作单元中,并拥有自己的 Git 工作树。
在 Codex 环境中,主要界面是命令行工具、MCP 服务器和仓库级别AGENTS.md`](AGENTS.md)。Claude 插件资产包含在内,供使用它们的团队使用。
- **单一真实来源(每个)**。`docs/roadmap/roadmap.yaml` 包含 PIs、冲刺、依赖项、优先级、文件所有权、会话估计、门控、提示和启动简介。`docs/roadmap/backlog.yaml` 包含不规律的工作:后续工作、杂项任务、紧急事项。
- **生成的视图/SLICES.md` 和 `docs/BACKLOG.md` 由 YAML **渲染**;请勿手动编辑它们。
- **派生,从不存储**。每个 PI 执行计划行(`(S0 ∥ S1)→S2→S3`)、跨 PI 的“就绪现在”波图、“剩余会话”汇总和优先级排序都是从 `deps` + `touches` + `status` + `priority` 计算得出的。
- **具有可行性预检查的确定性扩展**。调度器决定哪些切片可以在上限下并行运行,上限由五个实际上限推荐 —— CPU、RAM、独立工作、人工审查和**工作树磁盘空间** —— 然后在每个切片中启动其自己的工作树和 Claude Code 会话。如果即使一个工作树也无法在磁盘上容纳,则在创建任何内容之前拒绝启动。
- **零提示拾取**。在切片本身拾取指令(`prompt:`);`/slice <key>` 或 `roadmap grab <id>` 然后是会话所需的全部内容。
- **与仓库无关**。器读取每个冲控中的构建/测试运行命令(不是其语言)来确定会话大小。它/TS、Python、Java/Kotlin、C/C++、Go、Rust 和 Ruby 的常见运行程序,`meta` 教会它任何定制内容。没有任何内容硬编码为一个栈。
---
## 概念
`road具有小型、词汇:
| 术语 | 它是什么 |
|---|---|
| **路线图 整个图:map.yaml` 中的每个 PI 和冲刺。*所有*工作的地图。 |
PI** *(计划增量)* | 顶级史诗。分组相关冲刺;带有状态、依赖项和退出条件。 **冲刺** 中的一个工作单元(`s1`、`s)。带有依赖它所**触及**的文件、会话估计、验证**门控**和。 |
| ** | 冲刺所采取的行动*,通过其稳定的 `invoke` 键(例如 `auth-sessions`)寻显示我一个切片扩展这个切片。” 切片是可**启动原子单位。 |
| **波** | 可以**当前并发运行**的切片集:相互依赖免费、共享文件、在上限下。 在一个波中,声明的 `priority` 决定谁上限槽。 |
| **扩展** | 启动每个切片一个和 Claude Code 会话,加上一个可选的**引导**会话,审查和合并生成的 PR。 |
|事项** |图旁边的跟踪不规律的工作** —— 后续工作、错误、杂项任务、紧急事项,可以直接启动(`roadmap grab <id>`)或提升到路线图冲`roadmap promote <id> --pi <pi>`),双向交叉 |
| **优先级 tier: P0–P3, weight: 0–100, reason }` 在任何冲刺或待办事项上。排序顺序是派生的(优先级,然后权重),从不存储 —— 重新排序只是编辑字段。 |
> **路线图 = 计划的功能/价值工作。待办事项 = 不规律 = 任意一个的可启动部分> 您编辑 **YAML**;您启动 **按 `invoke` 键)和 **待**(按 ID)。`SLICES.md` /LOG.md` 是读渲染,从不手动编辑。
---
## 快速```bash
# 1) 一次性:安装依赖项 + 将 `roadmap` 命令行工具放入 PATH
git clone https://github.com/ConnorBritain/roadmap.git
cd roadmap && npm install && npm link
# 2) 在任何仓库中,编写 docs/roadmap/roadmap.yaml(参见“roadmap.yaml 模型”)
# 3) 从该仓库中的任意位置(根目录或子目录;会自动发现路线图):
# 交互:选择终端 / 波 / 上限,然后启动
roadmap plan # 文本计划:推荐上限 + 可运行的内容(无roadmap next # 路线图 + 待办事项中优先级最高的准备就绪事项
roadmap render # 重新生成 docs/SLICES.md(+ACKLOG.md 如果存在待办事项)
road # 结构 + 循环检查
road -w 1 # 启动波 1(引导 + 切片会话);添加 -d 进行预览
不规律的工作循环:
roadmap backlog add "适配器混淆引号" -k bug --tier P0 --why "破坏每次扩展"
grab b1 # 在其自己的工作树 + 会话中启动该事项
roadmap promote b2 --pi auth # 或将较大的事项折叠到路线图作为冲刺
```
这就是整个循环cd` 进入仓库,键入 `roadmap ...`,它找到路线图并启动。
### 在 Codex 中使用它
- Codex 自动从该ENTS.mdENTS.md),因此现在位于那里。
可以使用共享终端驱动所有内容,运行 `npm run plan`、`npm run validate`、`npm run render` 或 `node scripts/cli.mjs ...`。
- `npm run mcp` 启动 Claude 插件使用的相同 MCP 服务器。
- 扩展启动器今天仍然会打开 `claude` 工作会话;仓库的其他部分可以直接从 Codex 使用。
---
个界面
(`roadmap 加上大脑图)通过三种方式驱动。
### 1 · `roadmap` 命令行工具(从您的 shell从仓库中的任意位置运行。`docs/roadmap.yaml` 通过从当前工作目录向上搜索找到,并且每个子命令都在该仓库根目录下运行。两种驱动方式:
- **交互式控制台。** 在终端中roadmap` 会引导式选择器:终端,然后是最大并发波,然后是引导?,然后是启动/保存。用箭头键遍历提示并按 Enter 键。最适合您想要**看到**可运行的内容并进行选择时。(管道或非交互裸 `roadmap` 打印文本计划,因此 CI 不受影响roadmap go` 强制使用控制台。)
标志驱动。**选择都作为标志roadmap fan -1 -c 2 -t wt`。无需提示,获得相同的结果,用于肌肉记忆、别名。
| 命令执行的操作 |
|| `roadmap` / `roadmap go **交互式控制台上文)。热仓库的路线图您启动。工作不会在这里询问; `meta.worker_mode |
| `roadmap plan [-c N] [--review-ceiling Nuse-free-ramj]` | **推荐上限**(及其约束 / RAM / 工作 / 审查 / **波**(按优先级排序)和每个节点的启动命令。什么也不生成。`-j/--json` 发出计划以供工具使用。 |
| `roadmap next` | **优先级最高的准备就绪事项**,跨路线图和待办事项,附带其取货简介。路线图优先。只读| `roadmap show <name>` | 一个切片的详细信息:什么 / 优先级 / 暂存的提示 / 读取顺序 / 下一步 / 门控 / 分支。 |
| `roadmap set <name> f=v [...]` | 从 shell 编辑切片的字段:YAML 标量值(`priority='{tier: P1, weight: 60}'`),`f=@file` 用于多行(提示/简介),`f=null` 删除。 与 MCP 工具相同的允许列表 + 预写门控。 |
| `roadmap render [-c N] [-s]` | 从 YAML 重新生成 `docs/SLICES.md `docs/B` 如果存在事项)(`-s/--stdout` 打印 SLICES 而不是写入| `roadmap | 结构、循环检查。错误状态非零。 `roadmap backlog [list\|add\| | 不规律的工作:`add " [-k kind]] [--weight N] [--why reason] [--slice invoke]`(会创建 `back`),`set> f=v ...`,裸 = 优先级排序的开放事项。 |
| `roadmap grab <id> [-t term] [--dry]` | 在其自己的工作树(`<root>/backlog-<id>`,分支 `backlog/<id>`)中启动**一个待办事项**,并附带综合的启动简介(嵌入式 `prompt`)。将其标记为 `in_progress`。 |
| `roadmap promote <id> --pi> [--N]` | 将事项提升为路线图**冲刺**(事项 ID 成为调用键;标题/估计/门控/触及/提示/优先级携带;`promoted_to` 反向链接)。在写入任一 YAML 之前验证两个 YAML。 |
| `roadmap linear status\|auth\|setup\|provision\|sync\|post-update` | 可选的 **Linear** 集成(参见 [Linear](#linear-optional--project-manage-from-linear-while-agents-execute)):`status [--probe]` 状态检查,`auth` 环境变量指令,`setup --team KEY` 引导配置,`provision`(标签 + 视图 + 指导文本),`sync [--dry] [--push-only] [--pull-only]`,`post-update --pi <id> --body <text>`(摘要 → 项目更新)。 |
| `roadmap review [--since <rev\|date>] [-j]` | **日期锚定审查摘要**:自 `meta.last_review`(git 快照以来,已发货 vs 捕获 vs 老化 vs 新 PI vs 繁荣。`/debrief` 和 `/retro` 引擎;适用于零 Linear。 |
| `roadmap dispatch <key> [--to claude]` | 通过其 Linear 问题(v0.5 接缝,待实时验证)将一个切片/待办事项发送到**云代理**。`roadmap fan --cloud` 执行整个波 —— 无工作树,无磁盘上限。 |
| `roadmap fan [-t wt\|warp\|tmux\|print\|background] [-c N] [-w N] [--track A] [--lead-claude] [-d] [-o file] [--workerm>] [--autyes-spawn-autonomous]` | 启动一个一个引导窗格卡,加上每个切片一个,分别在其自己的,并附带综合的启动简介。启动**;`-d/--dry` 或/--out。 `--track 仅扩展中的切片。和** 引导 `meta.worker `--permission-mode退到 ` `--worker运行覆盖。终端(win32`,tmux`)。 `roadmap cleanup [-f 修剪已合并到基准分支并清理树。****;`---remove` 执行;`-f/--force包括未合并/脏。仅触及工作树根目录下的工作| `roadmap mcp` | MCP 服务器(stdio JSON-RPC),用于调试或非插件注册为您启动它。 |
| `roadmap watch` | 监视图的扩展 PR 并在每个 PR 准备/冲突/合并时打印一行。插件作为监视器运行;这是手动窗格版本。 |
| `roadmap sync` / `roadmap init` | 在 CLI 上保留。协调和引导程序作为 `/sync` 和 `/init` **插件技能**(界面 2)。 |
短标志(`-w -c -t -d -o -j -r -f -lc -wm`)扩展为其长形式;位置不修改bash
# 查看 上限原因(约束):
roadmap plan
# 上限:5(推荐)
# 受:review(PR 审查/合并瓶软上限)
# 机器: 个核心,6GB 总计 /.6GB 空闲
# 上限:12 [CPU] · 13 [RAM] · 23 [工作] · 5] · 41]
# 1,并发 5:[P0] auth-sessions, billing-invoices, search-indexroadmap fan -w 1 #引导 + 每个切片一个监视会话roadmap fan 1 - 预览启动脚本,不生成
roadmap fan -w 1 -o wave1.sh # 将脚本写入文件以检查/自行运行
roadmap fan -c # 上限
roadmapautonomous --awn-autonomous # 无人工干预/推送/PR(双重确认)
安全。** `fan` 默认启动,但启动仅打开可监视的窗格(您在键盘上)。通过 `-d` 或` 无人工干预。仅 **无预模式**(无人工干预的 -p` 提交/推送/PR),yes-spawn-autonomous`。**从会话:打开 PR 并引导(或您)合并。如果 `tm在 PATH例如在 PowerShell`fan` 打印脚本以及如何在 W运行它,而不是失败。
### 2 · 插件(在会话内)
将其作为(参见 [安装](#install)),路线图成为**会话内**界面:斜杠命令 **技能**、**代理** 和启动 **钩子**。
- **技能** (`skills/*/SKILL.md`)
- `/slice <key>`:定位一个只读切片(什么,优先级,暂提示,读取顺序,下一步门控,分支)。如果有暂存的提示,这就是货:斜杠命令加切片名称,仅此而已。
- `/:协调已合并的 PR 与跟踪器和切片的提交状态,收获的“剩余事项”到建议办事项捕获,然后重新渲染 `.md`。
- `/init`:PM 风格的访谈,roadmap.yaml` 的启动(从现有文档或冷启动开始)。
- `/fanout`:计算波浪并启动(包装与 CLI 相同的调度器器)。
- `/backlog`:捕获 + 分类不规律的工作 ——转储规范化为优先事项,然后为每个事项提供 `grab`promote`。
- `/imagine`:在实时路线图上战略访谈 —— 愿景,赌注,风险/削 其**在图中**(北极指针,新的 PI,薄调度的切片)。`/init` 引导`/imagine` 重新规划 - `/prioritize`:切片和开放待办事项的分类,强制每个位置的理由(“这 2 个1 — 哪个先发货,为什么?”);源感知(来自公共入团队的事项具有已知权重);写入单个原子 `bulk_set`。
debrief`:原子回顾 —— 日期锚定摘要,在严格的高信号规则下,船长日志条目在 `docs/roadmap/REVIEWS,锚点更新。修改。
- `/retro`:完整的回顾和重定向仪式 —— 反思的回顾 + 按押注/杀推迟每个押注的决定应用于图表 + 可选的 `/im 移交。
- **钩子** (`hooks/hooks.json`):`SessionStart` 钩子注入了一览即当前的就绪波和待办数,因此新会话立即知道有什么是可运行的(并且在第一次yaml` 依赖项)。
- **代理** (`agents/*.md`):四个专门的 Claude 调用代理,跨越路线图、扩展和审查生命周期。
| 代理 | 角色 | 读取/写入 | 建议模型 |
|---|---|---|---|
| **roadmap-bootstrapper** | 冷/热启动:读取仓库现有的路线图文档、跟踪器、冲刺目录和 `git log并**起草 `roadmap.yaml`**。由 `/init` 使用以在交互式确认前预填充。 | 读取仓库,建议 YAML | sonnet |
| **slice-scoper** | 采用一个薄的 `scheduled` 切片并**填充它**:通过 grep `touches`/`owns`,起草 `read_order`、`est_sessions` 和门控,并刺规范,将其变成一个 `ready 切片。 | 读取代码 | sonnet/opus |
| **roadmap-auditor** | 只读**漂移和差距查找器**:审核 `roadmap.yaml` 与现实(合并的 PR、策略文档、冲刺目录)并报告过时的状态和未出现的工作。 | 只读报告 | sonnet |
| **wave-shepherd** | **引导面板大脑**:在一个扩展波产生 PR 后,审查每个切片与其门控和范围,并建议一个安全的**合并顺序**(尊重依赖项,标记冲突)。审查;绝不合并。 | 只读审查 | opus |
CLI 和插件共享CLI 是您的 *shell口,插件是 *会话内* 入口。交互式 PM 保留为 **技能**(不是因为分支代理无法与您回对话。
### 3 · MCP(可调用代理)
插件随 服务器 —— 在 `.m` 中命名为 **`graph在安装时自动启动(插件 读取 `mcp__pluginmap_graph__*`)——通过键入工具而不是 shell路线图:
- **读取 `plan`, `ready_waveshow`, `validate`, `back` 返回结构化 JSON。
变异(路线图):**_pi`, `add_sprintset_status`, `set_fields`,_set` (原子多切片编辑验证,一次写入,一次渲染 —— 全部或无),` 编辑 `roadmap.yaml` 通过 YAML 文档 API(保留注释),可能破坏图表的编辑(调用键,未解决的依赖,糟糕的优先级/执行并在同一步骤中重新渲染ICES.md`。
- **变异(待办事项):** `_add` (创建 `back` 时),`backlog 和 `backlog_promote`两个文件:两个都在写入)。
- **Linear:**_status` (零网络状态检查linear_sync { dry, push }` —— 始终注册,如果 `meta.linear` 存在,则礼貌地出错并提供设置指导。
- **云调度:** `dispatch { key }` 启动一个云会话;`fan_cloud { wave, cap, confirm }` 指挥整个波 —— **默认预览,仅在 `confirm: true` 时启动**,返回会话 URL。这是一种导体模式:本地会话计划波,在其自己的计划上启动云工作者(无工作树/磁盘),并通过 `/sync` 协调其 PR。
启动的工作会话被告知在打开 PR 之前归档剩余事项 —— 如果 MCP 可用,则使用 `backlog_add`;如果 CLI 已链接,则使用 `roadmap backlog add`;否则,在 PR 正文中使用 **剩余事项** 部分,`/sync` 将其收获。
变异器是消费仓库中的 `.claude/settings.json` 中的自然 `ask` 列表条目(读取可以被 `allow` 列出)。另外,启动的扩展会话继承已经连接的任何其他 MCP工作者可以驱动问题跟踪数据库,同时处理其切片。
---
## roadmap.yaml 模型
```yaml
meta:
schema_version: 1
program: Q3-平台
default_gate: | # 被 sprint 的 gate 为 'default'/'{{default}}' 继承
npm test
base_branch: main # 工作树基准 + PR 基准(默认为 main)
remote: origin # git 远程(默认为 origin)
terminal: tmux # 默认扇出适配器:tmux|warp|wt|background|print
worker_mode: plan # 启动会话的 --permission-mode:plan|auto|acceptEdits|bypassPermissions
agent_cmd: "claude --permission-mode {mode} {prompt}" # 可选:启动不同的代理
default_concurrency: 3
# 可选:教资源分类器一个定制运行器 / 覆盖每个类别的成本
weight_patterns: { heavy: ["my-e2e-suite"], medium: ["my-bundler"] }
weight_cost: { heavy: { ram: 5, cores: 3 } }
# 可选:渲染器在 SLICES.md 中交叉链接这些(省略任何你没有的)
links: { narrative: ROADMAP.md, status: ../STATUS.md, tracker: roadmap/TRACKER.md }
pis:
- id: auth # 稳定;== 分支 slug
title: 身份验证
status: active # active|next|scheduled|complete|blocked|paused|gated|optionality
initiative: 启动准备 # 可选;将此 PI 的 Linear 项目分组在一个名为 Initiative 的项目下
priority: { tier: P1 } # 可选;STRATEGIC → Linear 项目优先级(不是 slice-derived)
target_date: 2026-09-01 # 可选;YYYY-MM-DD → Linear 项目目标日期
sprints:
- id: s1
title: 登录流程
status: complete
invoke: auth-login # slice 键,稳定,整个文件唯一
prs: ["#42"]
- id: s2
title: 会话令牌
status: active
invoke: auth-sessions
deps: [s1] # 兄弟 sprint id | pi-id/sprint-id | 整个 PI id
est_sessions: 3 # 剩余专注会话(驱动汇总 + 调度)
touches: [src/session.ts] # 编写的 文件;用于双波冲突检测
gate: |
{{default}}
加上会话集成测试
read_order: ["docs/auth.md (设计)"]
resume_action: 颁发 JWT + 刷新;贯穿中间件。
priority: # 可选;排序是派生的(tier asc,weight desc),永远不会存储
tier: P1
weight: 60
reason: pilot 的启动阻塞器
prompt: | # 可选作者存储的拾取指令 — 嵌入 VERBATIM
从 tests/session.e2e.ts 中的失败 e2e 测试开始。 # 在启动简介中显示
不要触摸中间件管道。 # 通过 /slice 和 roadmap show
track: A # 可选通道标签(与三通道分区向前兼容)
execution: # 可选每个 slice 的人员配备策略提示(见下文)
mode: agent-team
concurrency: 5
min_concurrency: 4
team:
- role: verifier
- role: implementer
count: 3
- role: reviewer
rationale: "16 个不相交的故障类文件; verifier-first;一个 reviewer 调和。"
```
- **`invoke`** 是启动时使用的 slice 键。稳定且在整个文件中唯一,因此重命名标题不会破坏引用。
- **`deps`** 是 DAG 边;执行计划行和波图是从它们派生的。
- **`touches`/`owns`** 实现了双波模式:两个准备好的 slice 编写相同的文件永远不会共享一个波;一个收敛 sprint 只依赖于发散的那些。
- **`gated_on: <name>`** 标记一个人工控制的 slice。它永远不会自动调度;在“被人工阻塞”下显示。
- **`worker_mode`** 设置启动会话启动的 `--permission-mode`;**`weight`**(`heavy|medium|light`)可选地覆盖 sprint 的推断资源类别。
- **`agent_cmd`** 模板化每个交互式工作器/领导启动(`{mode}` + `{prompt}` 令牌),以便 fanout 可以生成 codex 或任何其他 CLI 代理;默认情况下会重现今天的 claude 命令字节。
- **`priority`**(`{ tier: P0–P3, weight: 0–100, reason }`,均为可选)决定在波内谁获得稀缺的 cap 槽,标记渲染(`[P0]`),并驱动 `roadmap next`。两个未优先排序的 slice 订单完全相同 — 现有路线图调度和渲染相同。
- **`prompt`** 是存储的初始化提示:`/slice <key>` 将其转发,合成的启动简介将其嵌入原样(`## 0.5 作者说明`),并且在新信息通过 `roadmap set <key> prompt=@notes.md` 或 `set_fields`/`bulk_set` 工具传入时可更新。
- **`execution`** 声明如何为 slice 配备人员(参见[执行策略提示](#execution-strategy-hints));**`track`** 将 slice 的通道标记为 `--track`。
### 执行策略提示
代理严重 **under-parallelize** — 一个孤独的子代理一个团队合适的地方,2–3 个工作器可以取得成效,而 5+ 个工作器很少达到 Agent Teams。每个 slice 的可选 `execution:` 块让作者 *声明* 人员配备,以便启动会话在预期的拓扑结构中工作,而不是凭直觉选择。**每个字段都是可选的,向后兼容:省略该块的 slice 行为与以前完全相同,而现有的 `roadmap.yaml` 验证并渲染不变。**
```yaml
execution:
mode: agent-team # solo | subagents | dynamic-workflow | agent-team
concurrency: 5 # 建议的实时工作器数量
min_concurrency: 4 # 底线 — /sync 如果在不相交的文件上使用较少的文件发出警告
team: # 组成(省略 solo);角色:verifier|implementer|reviewer|researcher|integrator
- role: verifier
- role: implementer
count: 3
- role: reviewer
rationale: "16 个不相交的故障类文件; verifier-first;一个 reviewer 调和。"
```
**模式**(拓扑结构):
| `mode` | 何时 | 该指令告诉会话的内容 |
|---|---|---|
| `solo` | 原子、探索性或分支顺序工作。 | 单代理,无扇出。 |
| `subagents` | 有范围的 sprint:lead-merges + 不相交文件工作器(当前默认值)。 | 按照 CLAUDE.md § Subagent 手动处理生成 N 个后台子代理。 |
| `dynamic-workflow` | slice 内的管道,其步骤相互依赖。 | 运行步骤门控管道;不要将其折叠为一次通过。 |
| `agent-team` | 许多真正独立的文件集群需要同行协调。 | 立即调用 Agent Teams(设置 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1),使用命名计数 + 组成。 |
该块在 slice 的读出中呈现为一个**命令式指令** — 在 `SLICES.md` 中,在 `roadmap show` / `/slice` 中,以及在启动会话的启动简介中原样呈现:
```
▶ EXECUTION: agent-team — 5 个工作器(1 verifier · 3 implementers · 1 reviewer)。
触摸的文件是不相交的。不要单独运行或少于 4 个。立即调用 Agent Teams(设置 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)。
理由:16 个不相交的故障类文件; verifier-first;一个 reviewer 调和。
```
**验证**(`roadmap validate`)检查枚举(`mode`,`role`),整数边界(`concurrency`/`min_concurrency`/`count` ≥ 1),`min_concurrency ≤ concurrency`,并且声明的 `team` 人员计数与 `concurrency` 存在时一致。当 `execution` 缺失或 `concurrency` 未设置时,从 slice 的 `touches`(不同顶级目录集群计数,最高可达 6)计算出一个*建议的*底线,并作为提示显示 — 永远不是一个硬默认值。波浪结束后,`/sync` 标志任何声明 `min_concurrency` 底线的文件夹,不相交目录,运行工作器数量较少(*“slice X 运行 2 个工作器; min_concurrency 4 — 并行度不足”*)。
**`--track`** 允许一个人仅限于他们的通道:`roadmap fan --wave 1 --track A` 仅保留波浪的 slice 标记为 `track: A`(与三通道分区向前兼容)。
---
## 待办事项(backlog.yaml)
路线图工作是计划的,以功能驱动,价值驱动。但还有另一种工作 — 跟进,必要的零工,琐碎的修复,紧急/关键项目 — **不规律地出现**,需要一个跟踪器,而不是计划。 那就是 `docs/roadmap/backlog.yaml`,渲染到 `docs/BACKLOG.md`(优先级层级部分,未分类最后,已进行/升级/最近关闭的表格)。 `SLICES.md` 带有开放数量的单行指针。
```yaml
meta:
schema_version: 1
items:
- id: fix-wt-quoting # 稳定 slug;自动 b1..bN(省略时)
title: wt 适配器混淆包含引号的提示
kind: bug # bug | chore | followup | urgent | idea
status: open # open | in_progress | promoted | done | dropped
priority: { tier: P1, weight: 70, reason: 破坏每个 Windows 扇出 }
source: { slice: fanout-adapters, date: 2026-07-06 } # 它出现的地方
refs: [fanout-adapters] # 相关的路线图 slices
touches: [scripts/fanout.mjs]
est_sessions: 0.5
gate: default # 继承路线图的 meta.default_gate
prompt: | # 嵌入在 grab 启动简介中原样
重现:roadmap fan -t wt with a prompt containing '"'.
修复 wtSafe 转义;添加 run.mjs 测试用例。
```
**捕获** 任何地方出现的工作:`/backlog`(会话转储 → 规范化项目),`roadmap backlog add`(shell),`backlog_add`(代理),或在 slice 结束时自动 — 每个启动简介告诉工作器在打开 PR 之前归档剩余的事项,而 `/sync` 收集任何作为 PR 正文“剩余事项”部分落户的事项。
**按大小消费**:
- **小 / 自成体系** → `roadmap grab <id>`:它自己的工作树(`<root>/backlog-<id>`,分支 `backlog/<id>`)和会话,从项目(嵌入提示)合成的启动简介,项目标记 `in_progress`。
- **更大 / 属于计划** → `roadmap promote <id> --pi <pi>`:成为一个 `scheduled` sprint(项目 id 成为调用键;标题/估计/门/触摸/提示/优先级延续)与一个 `promoted_to` 链接到项目上。两个 YAML 文件在写入前均有效。
- **不知道接下来是什么?** → `roadmap next` 选择两个跟踪器中优先级最高的准备事项(路线图赢得平局)并打印其拾取简介。
## 线性(可选)- 在 Linear 中进行项目管理,同时代理执行
添加 `meta.linear` 并将项目本身放入 Linear:**YAML 保持规范;Linear 是一个投影加上提议收件箱。** 人类在看板上看到并引导计划;代理从图中继续执行;没有任何内容被写入两次。
```yaml
meta:
linear:
team: ENG # 推送目标(团队密钥)。身份验证 = LINEAR_API_KEY 环境变量,绝不能是文件。
granularity: slices # pis(仅项目)| slices | slices+backlog — 哪些内容泄漏到 Linear
horizon: all # all | near — near 将已安排/可选的切片保持在看板上,直到被推广
verbosity: brief # title | brief | full — 问题描述的详细程度
cycles: off # off | on — on 镜像团队的活跃周期,从切片状态(活跃+下一个 = 本周的批次)
history: off # off | window | full — 已完成的切片是否作为已完成的问题投影(进度 % 成为现实)
stale_days: 3 # 可选 — 标记已提交的工作(活跃/下一个)而没有日志记录在 N 天内('stale' 标签 + 视图)
pull: propose # off | propose (遍历收件箱 /sync)| auto
status_map: { blocked: "Blocked" } # 可选的确切名称重写;默认按状态类型映射
watch: # 入站源 — 例如公共的“提交问题”团队
- { team: PUB, project: "提交问题", kind: bug, priority: { tier: P3 } }
```
**映射。** PI ↔ Linear **项目**(在设置 `pi.initiative` 时分组在一个 **Initiative** 下)· 切片/待办事项 ↔ **问题** · `priority.tier` P0–P3 ↔ 紧急/高/中/低 · `status` ↔ 工作流状态按类型(`active`→ 进行中;`next`/held→ 待办;`scheduled`/`optionality`→ 待办事项;`complete`→ 已完成;`status_map` 按名称重写)· `est_sessions` → 问题的原生 **预估**(四舍五入为整数,限制在 `estimate_max` 内)— 一个可排序的看板列,不是文本。问题 ID 被写回 YAML(`linear: ABC-123`)— 映射的真实来源在任何机器上都保持不变。
**项目丰富。** 一个 PI 的项目带有丰富的 `content` 正文(完整的主题 + 退出条件 + 依赖项 — 无上限的项目文档,因此没有任何内容被截断)和一个简洁的 `description` 子标题(退出条件的第一个句子)。可选 `pi.priority`(一个 **战略** 级别,*不是* 从切片热度派生 — 一个紧急切片不应该劫持 PI 的排名)→ 项目的 Linear 优先级;可选 `pi.target_date`(`YYYY-MM-DD`)→ 其目标日期。每个项目还获得 **由计划分组的颜色 + 图标** (相同的计划 → 相同的色调 + 字形),因此看板读取为分组的车道,而不是 Linear 的随机项目分配。 在 `meta.initiatives` 中声明有意义的样式(`{ <name>: { icon, color } }`,例如 `Lumen: { icon: WritingAI }`,`Trust surface: { icon: Shield }`),因此分组是 *信号* 而不是巧合的首次看到顺序 — 声明的计划也获得其 **头部** 样式以匹配。 未声明的计划保持 Linear 的默认头部,其项目使用确定性的备用调色板。图标名称是一组固定的 Linear 集推送的最佳努力 — 未识别的名称会降级为“无图标”(颜色仍然分组)而不是失败同步。 `validate` 在 `meta.initiatives` 条目命名 PI 未引用的计划时发出警告(键入错误,或部分应用的重命名)。
**预估和分而治之规则。** `est_sessions` 依赖问题的原生预估字段,因此会话成本在看板上排序和汇总。 将您的 Linear 团队设置为 **Linear 规模**(`1..5`)以实现直接的 1 点 = 1 会话读取(Fibonacci/T恤会扭曲它),并将 `meta.linear.estimate_max` 保留在其默认的 `5`。 当切片的预估超过最大值时,`validate` 发出警告 — 刻意发出信号以 **分割** 过大的切片,而不是扩展规模:大于一个代理会话的切片不是切片。 (将 `estimate_max` 提高到 `7` 仅当您真正扩展团队的规模。)
**里程碑 — 项目内的阶段。** 切片可以带有 `milestone: "<stage>"`(例如 `harness` / `hardening` / `ship`);同步在 PI 的 Linear 项目上创建不同的里程碑,并附加每个问题,将项目的扁平问题列表转换为看板/时间线视图上的可读阶段。 里程碑是 **项目范围** 的(两个 PI 下的相同名称是两个里程碑),并且完全是可选的 — 任何地方都没有 `milestone` 字段 → 里程碑同步是一个空操作。 幂等(跳过按名称现有的里程碑,仅当阶段漂移时重新附加问题),并且尽力而为(`projectMilestone` API 拒绝是一个跳过,而不是失败)。
**板块 — Linear 的“My Issues”作为您主动工作的缓存。** 将 *所有* 问题分配给自己没有信号;相反,`meta.plate` 是一个精选的切片/待办事项密钥列表,同步分配给 **您**(Linear 的内置 My Issues 选项卡 = `assignee: you`)。 因此,计划/项目/视图回答“整个努力怎么样”在其层级,而 My Issues 回答“现在我的工作是什么”。 实时板块是 `meta.plate` **∪ 您正在积极工作的任何内容**(活跃的切片,`in_progress` 项目)— 因此开始工作总是会使其浮现。 使用 `roadmap plate add|rm|set|clear`(或规划技能)进行策划,完成的切片 **自动排空** 在下一次同步(被阻止的切片将保留为提醒)。 每个分配的问题都带有 `plate` 标签,因此您直接在 Linear 中进行的任务分配永远不会被干扰。 `meta.linear.plate_max`(默认为 7)保持显式列表的信号丰富;如果不存在 `meta.plate`,则该功能完全关闭。
**日志 — 每个问题的进度轨迹,以便在会话死亡时存活。** 板块使工作在 My Issues 上 *可见*;日志使其 *可恢复*。 当代理执行切片时,它会在映射的问题的评论流中发布注释 — `roadmap linear note <key> "…" [--kind progress|blocker|done]`(或 `issue_note` MCP 工具)— 在检查点(清除门槛,遇到阻止器,会话结束)。 在拾取时,代理首先读取流(`roadmap linear notes <key>` / `issue_notes`),因此在会话中途死亡的会话从停止的地方继续,而不是从零开始 — 启动简报和调度指导都指示此循环。 **会话结束 `Stop` 钩子** 还会在当前分支干净地映射到具有实际工作的映射切片时自动发布 **git 派生的快照**(分支 · 最近的提交 · 未提交的路径)— 尽力而为且受到严格保护(不是 roadmap 仓库 / 没有密钥 / 不是切片分支 / 没有内容可报告 → 无声空操作),因此它永远不会阻塞或减慢会话。 PI 级的汇总转到项目更新(`roadmap linear post-update` / `project_update`)。 所有内容都写入跟踪器中立,因此未来的 `jira.mjs` 镜像它。
**推送**(`roadmap linear sync`,或在授权时在 `/sync` 内自动进行):基于差异且幂等 — 不变的路线图发送零操作。 描述遵循 `verbosity` 杠杆,绝不复制读取顺序/提示,并且始终以机器脚注结尾(`roadmap: slice=<invoke> · pick up: /slice <invoke>` + SLICES.md 链接)— 因此从 Linear 调度的代理(通过 Linear 的代理委托或托管 MCP)自我定位于一个命令中。 设置 `branch_convention: "{pi}/{linear}-{sprint}"` 和 Linear 自动链接每个扇出 PR 到其问题。
**拉取。** `watch` 源中的新问题成为 **提议的待办事项**,带有 `source.linear: {team, project, issue}` — 因此 `/prioritize` 可以按工作来源(公共导入团队 ≠ 维护人员捕获)权衡工作,并使用 `watch` 的默认 `priority` 作为隐含的权重。 对映射的问题(在 Linear 中进行状态/优先级更改)的编辑成为提议的增量。 使用 `pull: propose`(推荐),`/sync` 与您一起遍历收件箱 — 按项目保留/编辑/跳过;没有任何内容在未经确认的情况下进入图表。 同步光标是每个机器的(`.roadmap-linear-state.json`,git-ignored),并且仅在收件箱被处理时才推进,因此未处理的问题提案重新出现而不是消失。
**检测是宽容的。** 没有 `meta.linear` → 所有的 Linear 行为都关闭,工具在字节上与以前相同。 配置但没有 `LINEAR_API_KEY` → 一个咨询行,其他一切都有效。 会话启动钩子在没有网络的情况下报告状态;`roadmap linear status --probe` 是唯一的联网检查。 引导:`roadmap linear auth`(密钥说明)→ `roadmap linear setup --team <KEY>` → `roadmap linear sync --dry`。
**每个 PI 的重写。** PI 可以设置自己的 `linear.granularity`(例如,将内部 PI 的切片保持在共享看板之外)或 `linear.verbosity`(将一个嘈杂的 PI 的问题描述静音为 `title`,或将一个活跃的 PI 丰富为 `full`)。 创建一个与全局冲突的项目需要一个明确的 `yes_linear_override: true` 确认 — 否则修改被拒绝,并带有说明,且没有任何内容被写入;`roadmap validate` 在存储的冲突上发出警告。
### 拓扑:Linear 作为看板
代理规模下的推荐工作区形状:**每个活跃管理的仓库一个团队**(调度路由是确定性的,工作流状态和 `status_map` 1:1 组成,问题标识符告诉您仓库),**PI = 项目,切片/项目 = 问题,原生优先级 = 层级**,加上 **一个共享的导入团队**(一个公共的“提交问题”看板)作为 `watch` 源。 不在代理管理下的仓库没有团队。
`roadmap linear provision` 以幂等方式塑造工作区:创建图表已知的标签(每个同步问题的 `roadmap` 标记,`kind:*` 用于待办事项,`track:*` 用于存在的车道,`status:*` 用于阻塞的工作),标准视图(**Ready wave · In flight · Held on human · Backlog triage · Recently shipped** 加上每个车道的 **Track X** 视图;视图 API 拒绝降级为手动检查清单),并打印两个指导文本 — 工作区代理指导和 `CLAUDE.md`/`AGENTS.md` 的 **仓库调度合同**。 项目带有 PI 主题 + 退出条件作为描述。
**一个干净的看板,而不是一堵墙。** 投影是诚实和可导航的,而不是 1:1 的转储:
- **空项目被跳过。** 一个 PI 的所有切片都已发货,不会创建一个空问题项目(已映射的项目保持同步)。
- **项目名称是 PI 的标题。** 由 `Headline — subhead` 授权的标题项目为 **Headline**;子标题移动到描述中。 没有丢失上下文,没有俗气的名称。
- **只有 `active` 显示进行中。** 阻塞/暂停/门控工作映射到待办事项,并带有 `status:<held>` 标签,因此看板的进行中计数意味着真正的工作,“Held on human”视图过滤其余部分。 (拉取收件箱还抑制往返回声,因此阻塞的切片不会在每次同步时生成错误的状态提案。)
### 云调度
`roadmap dispatch <key>` 将一个切片/待办事项发送到 **Claude Code 云会话** — 默认的 `claude-cloud` 传输直接触发 Routines API(**不需要 Linear 计划,不需要工作树,不需要磁盘上限**;仅限于触发帐户的 Claude 计划)。 多帐户工作站自动切换:例行程序凭证存储在 `~/.claude-routines.json` 中,按帐户电子邮件键入,调度触发 **当前 `claude /login` 的帐户**(参见 [DEPLOYMENT.md § 云调度](docs/DEPLOYMENT.md))。 当切片也映射到 Linear 时,会话 URL 会被注释到问题上 — 看板链接到实时会话。 ⚠ Routines 触发是一个测试版 API。
`roadmap fan --cloud` 为整个波浪执行此操作;上限默认为审查上限(机器上限消失,但人类仍然合并)。 替代的 `--to claude|codex|oz` 传输在 Linear 问题上发布一个 @-mention 胶囊评论 — 在工作区安装了该代理的集成时很有用(Linear 的原生编码会话是付费计划门控的)。
---
## 估计和时间线(可选)— 与 [agent-time](https://github.com/ConnorBritain/agent-time) 配对
`target_date` 是通常是猜测的唯一路线图日期。 [**agent-time**](https://github.com/ConnorBritain/agent-time) — 一个本地优先的估计技能 — 以校准的 *代理轮次 → 挂钟分钟*(绝不是人类小时)定价任务,并从记录的结果中自我纠正。 将它连接起来,路线图将这些持续时间转换为 **预测时间线**:
- **`roadmap estimate <slice|--all>`** 为每个分类的切片(`shape` + 可选 `risks`)标记一个缓存的 `estimate`(低/预期/高分钟 + 置信度)。 幂等; `--force` 刷新。 未分类的切片被跳过,而不是被猜测。
- **`roadmap estimate timeline`** 将这些持续时间汇总到 **相同的波浪 / 依赖关系 / 并发调度** 实际运行的调度中 — 一个波浪被视为其最慢的切片,波浪累积 — 进入每个 PI 的 `projected_target_date`。 只要您没有设置明确的承诺,Linear 的 `targetDate` 就会填充(**明确的 `target_date` 始终获胜**)。 诚实是在日期处强制执行的,而不是仅仅在报告中:**未定价** 的切片 *抑制* 其 PI 的日期(仅当剩余的切片都已估计时,才会记录 PI),而 **阻塞/门控** 切片被排除为标记的乐观前沿 — 两者都会被浮现,而不是被沉默地折叠成数字。
- **`roadmap estimate log <slice> --status pass|fail|partial|abandoned`** 关闭 **校准环路** — 它将切片的结果记录到 agent-time,以便下一次估计自我纠正。 幂等每估计(安全地重新运行)。 停止钩子在映射的切片完成时自动触发它。 实际轮次/分钟仅在 agent-time 的轮次计数器(`PostToolUse`)钩子在该会话中运行时自动填充 — 否则传递 `--actual-rounds N`(agent-time 拒绝没有实际值的结果)。 在 agent-time 的 `hooks/README.md` 中为每个仓库启用该钩子,以实现自动校准。
`estimate`、`timeline` 和 `estimate_log` 也是 **MCP 工具**,因此拾取或完成切片的会话可以通过它们进行带内驱动。
配置存在于 `meta.estimation`(引擎路径,`hours_per_day` 吞吐量,`expected|high` 点)。 **agent-time 本身不受影响** — 路线图只是其 `estimate --json` CLI 的另一个调用者。 安装 [`agent-time-estimator`](https://github.com/ConnorBritain/agent-time) 技能(或设置 `meta.estimation.engine`),默认解析找到它。 这两个是协同工作的:相同的校准数字大小一个任务计划整个程序。
---
## 乘风而行:纪律 + 审查仪式
两个代理规模工作的二阶效应,都被编码:
**抑制蔓延(建议,不会阻塞)。** 有帮助的代理喜欢提交后续范围;如果不加以控制,每个冲刺都会产生两个待办事项和一个子冲刺。 启动简报现在严格禁止工作会话添加冲刺/PI(剩余部分仅进入 **待办事项**;“YAGNI 也适用于捕获”),`add_sprint`/`add_pi` 工具描述带有相同的范围纪律提示,并且 `/sync` + 审查摘要显示 **蔓延警告**:捕获比率((捕获的项目 + 添加的冲刺)/ 完成的切片,阈值 `meta.discipline.capture_ratio`,默认为 2)以及任何自上次审查以来出现的 PI 的无条件标志。
**一致性波浪打包。** 在上限下,调度器现在更喜欢 **完成已启动的 PI 而不是开启新的 PI** — 严格 **低于** 声明的优先级,因此 P0 在新 PI 中仍然获胜。相同 PI 的兄弟姐妹填充上限,`roadmap plan` 在完成 PI 时打印 `(closes auth)`,摘要报告 **进行中的 PI**(碎片计数)。如果需要,可以使用 `meta.discipline.coherence: false` 退出。
**审查仪式 — 三种模式。** 这是人类在洪流中保持控制的方法:
- **`/debrief`** — 原子回顾,**不会修改图表**:`roadmap review` 将图表与日期锚定的快照(`meta.last_review.commit`,通过 `git show`)进行比较,技能在严格的样式规则下呈现它(≤15 行;建议采用“X 而不是 Y”的形式,与北极星绑定;代理生成的范围被命名;不带欢呼),然后将 ≤10 行的手写条目记录到 `docs/roadmap/REVIEWS.md` 并重新锚定。
- **`/imagine` + `/prioritize`** — 前向原子(战略采访;层级分类,强制原因):
- **`/retro`** — 复合:回顾总结,然后每个 **双倍/杀死/延迟**(每个杀死命名它释放的会话;每个蔓延标记的支线任务都有一个明确的保留或丢弃);决策通过变异工具应用,可选的 `/imagine` 转移和关闭涵盖决策。当 Linear 连接时,摘要作为项目更新发布(`roadmap linear post-update`)。
`roadmap review [--since <rev|date>] [--json]` 是引擎:从 git 历史记录中计算,支持零 Linear。
---
## 可行性预检查(磁盘上限)
输出大量工作树会带来实际的磁盘成本。 `roadmap plan` / `fan` / `grab` 估算每个工作树的成本(跟踪树的大小 × 1.3,或当您的门安装 `node_modules`/构建工件时 `meta.worktree_gb` — 那是校准旋钮),并将其与 `meta.worktree_root` 持有者的可用空间进行比较。 磁盘加入 CPU / RAM / 工作 / 审查作为 **第五上限**:推荐的上限自动下降,计划报告 `bound by: disk (need ~X GB/worktree, Y GB free)`。 当甚至 **一个** 工作树都无法容纳时,`fan` 和 `grab` 在创建任何内容之前拒绝启动。 如果无法探测环境(没有 git HEAD,不支持 statfs),上限会默默地消失 — 永远不会因为探测失败而阻塞计划。
安装
完整部署指南**涵盖所有界面(CLIaude Code 插件、独立Claude Desktop、Codex详细说明配置与密钥的位置、每个环境的 Linear 设置以及 Jira 结构: **[DEPLOYMENT.md](docsLOYMENT.md)**。以下是版本。
### `roadmap
```bash
git clone https://github.com/ConnorBritain/roadmap.git
cd roadmap && npm npm link
```
`npm link` 将 `roadmap` 添加到您 shell 中的 PATH。在,它会写入 `roadmap.cmd`/`roadmap.ps1补丁(PowerShell)以及 unix bin(WSL/bash;请在您使用的每个 Node 环境中运行一次 `npm link`)。`npm unlink -g roadmap` 可以删除它。
### 在 Codex 中
无需安装插件。 在 Codex 中打开仓库,使用上述命令,并依赖 [`AGENTS.md`](.md) 获取仓库本地指南。
要在代理环境中使用 MCP:
```bash
mcp
```
已检查`.mcp.json`](.mcp.json) 仍然是 Claude 插件的入口点( `graph`)。
名备用方案(无 npm):** 替代方法是在文件中添加一个补丁。
```powershell
# PowerShell,
function roadmap { node "$HOME\Code\roadmap\.mjs" @args }
```
```bash
# bash/zsh,~/.bashrc /shrc
roadmap() { node "$HOME/Code/roadmap/scripts/cli.mjs" "$@"; }
```
### 作为 Claude 插件
该仓库是其自己的市场(`.claude-plugin/marketplace)。添加它,然后安装:bash
# 从 GitHub 克隆:
claude plugin marketplace add ConnorBritain/roadmap
# 或从本地检出:
claude plugin marketplace add //roadmap
claude plugin install roadmap@roadmap # 用户范围;--scope project 以固定每个仓库
```
这技能、代理、Session钩子、PR 监和 MCP 服务器连接起来(它们;`/m 重新连接当前会话)。 `.mcp.json` 将捆绑为`,因此不要再运行 `claude mcp add`的第二个副本。
### 从 `slice-roadmap`(≤ 0.1.x)升级
插件、市场条目和 npm 包在 0.2.0 中已更名 **`slice-roadmap` → `roadmap`** (以及捆绑的 MCP 服务器 `roadmap` → `graph`)。旧安装不会自动更新 — 迁移一次:
- ** `npm unlink -g slice-roadmap`,然后(每个 Node 环境) `npm link`roadmap` 二进制不变。
- ** `claude plugin uninstallmap`,重新添加市场aude plugin install roadmap@road。
- **⚠ 列表:** 任何mcp__plugin_slice-roadmap_roadmap__*`的 `settings.json` 条默停止匹配**写为 `mcp__plugin_roadmap_graph__*` **技能:** `/slice` 保持不变;`/slice → `/sync`,`/slice-init` → `/init`slice-fanout`fanout` (以及新的log`)。
- **** API 车道变量现在ROADMAP_API_KEY`为 `SLICE_ROAD_KEY`)。
- **:** 升级后,首次运行 `roadmap render` 将使用新的技能名称重写 SL 样板 — 一次性### 在消费仓库中将特定于设备的别到仓库中。在 onboarding例如 CONTRIBUTING 注)此处指向此工具: *" shell 驱动路线图。克隆 `roadmap`, && npm link`该仓库的任何位置运行 `roadmap`。"* 消费其自己的 `docsmap/roadmap.yaml`backlog.yaml` (SLICES.md` /LOG.md`)。
已构建
- **图脑** (`graph.mjs`)解析(兄弟 / / 整个 PI 依赖检测、波浪调度,带有双波文件冲突 + 的容量打包、剩余会话和执行计划派生。
-** (`lib/priority.mjs`):共享的层/原因模型 — 验证比较器、层。
- **待办事项** (`lib/backlog-core + `backlog`,`grab.mjs`promote.mjs`,`next.mjs`稳定工作跟踪器 — 分类/启动/推广.md` 渲染→节点适配器,重用简报机制,以及跨跟踪器选取下一个。
- **渲染 (`render.mjs`):分层 `SLICES.md每个 PI 部分、嵌套冲刺表、优先级徽章生执行计划行、跨 PI 波浪图、人工阻塞事项指针)+ `BACKLOG.md`。
-器** (`scheduler.mjs`):推荐容量评估(CPU / RAM / 独立工作 / 审查 / **磁盘**上限,报告哪些绑定)加上波浪。
- **扇出** (`fanout.mjs`):`tmux`、`wt`、`warp`、`print`、`background`适配器;每个切片的工作树加上合成启动简报(嵌入式 `,剩余捕获指令);阻塞;交互式`wizard.mjs`防护的启动(`/`--out`预览双确认);`cleanup`工作树修剪。
- **共享突变存储**/store.mjs`):在变表面(MCP、`set`、`backlog`ote`)下,从 突变 → 验证 → 重新渲染的路径,包括验证两次写入任一文件文件推广。
- ****:五个技能(`slice`、`sync`、`initfanout`、`back),四个代理,和一个Start` 钩子绪波 + 对齐 + 待办事项计数)。
CP 服务器** (`.mjs`,服务器 `:一个捆手工制作的 JSONio 服务器,带有(计划 / 就绪波 / 验证 / 待办)和注释保留、模式突变工具(添加 PI / 添加冲刺 / 设置字段 / 批量设置剪枝 / 待办 / 待办事项设置 / 待办事项推广),在重新渲染生成的视图 **PR 监视 (`watch-prs.mjs` + `lib/pr-watch-core + `monitors.json`):轮询` 获取扇出分支 PR 阶段转换时。
- **测试**npm test` 在纯脑(图、推荐器 + 磁盘上限、优先级、待报、计划、验证、CLI 导核心、M核心、PR 监上运行零依赖。
资源分类器/测试,而不是语言。它提供了常见运行器的模式(`npm`/`yarnpnpm`、`jest`、`vitest`、`tsc`、`、`tox`、Maven、Gradle、`make`、CMake/CTest、`go`、`cargo`等),按常见程度排序,`meta.weight_patterns` 教授它任何定制运行器。
## 需求与许可
Node 18.15+(用于 `fs.statfsSync`,磁盘预检查)和一次性 `npm install`(用于 `yaml` 解析器 许可。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器