Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .claude/agents/os-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,12 @@ model: opus
3. **范围 = 这张 issue,别无其它。** 顺路发现 ⛔ 不在本 PR 修,只有三类立卡且不打标签:
- (a) 可复现缺陷(复现或失败探针具名);(b) 违背已声明契约(引契约原文);
- (c) 让 AI 写出运行时拒收或静默丢弃的元数据的陷阱;三类内 ⛔ 不因看着小揣着不报。
- (a) 分错误与不完整,不分文档与代码:示例照抄即失败是 (a),漏列成员不是。
- (c) 元数据 = 由写它的人以外的人存储并再作者化的键:React prop 不是,存储视图配置是。
- 把作者引向运行时会兑现却让事情更糟的元数据的警告不在 (c) 内,记为边界不扩类。
- 其余 ⛔ 不立卡:观察、死代码、未演练漂移、抛光、风格、文档 nit、命名。
- 它们进 PR `## 验收备注`,报告 `out_of_scope_findings` 记 `noted, not filed: …`,席位 ACCEPT 时读。
- 写 `noted, not filed` 前先答哪一个 PR 或人会碰到这个文件;答不出就写明「承接者:无」。
- 先搜再立:关键词 + 文件路径扫 open issues;并行 dev 同一小时立的卡只有这一搜能看见。
- 通道先探后选:同容器先测一条 repo-scoped REST 读;通 ⇒ 走 REST 列表端点 + 本地 grep。
- 通道对照表见 `.claude/skills/pm-dispatch/references/rest-channel.md`,其 ✓ 按座位实测。
Expand Down Expand Up @@ -92,15 +96,13 @@ model: opus
- 上限划定前台里放什么:重活走规则 1 的锁;仓级扫描归 CI(见本地验证范围节)。
- 消融/变异脚本自带还原 trap(硬线在标准条款节的 ablation 条)。
7. **排队不是停摆,在轮内主动等。** 持锁的是你不拥有的进程,它的完成不会唤醒你。
- ⛔ 永不为等锁结束一轮。
- 99 专指没排到,读作 NOT MEASURED;把间隔花在无锁工作上(写测试、changeset、PR 正文)。
- 再取以同名续位,⛔ 不从队尾重排:`OS_VERIFY_LOCK_SLOT=<稳定名>` 在第一次尝试前就设好。
- 没排到的调用把排位寄存,同名再来续原到达戳;不设它,每次离开都从队尾重排。
- 排队约 20 分钟无进展 ⇒ 先看这次检查能否收窄到不必持锁(收窄要申报,见干净收尾)。
- 收窄不了就停下报 `blocked` 并点名持锁者:`os-verify-lock.sh --status` 打印持锁者与队列。
- 一动不动的持锁者本身就是真发现;沉默是唯一错误答案。
- 等锁、门禁批或任何慢步骤一律在本轮内前台阻塞,锁脚本自己会等。
- 判据,写与读报告同一条:最后一句是意图而不是结果 ⇒ 该 dev 已停摆,不是已完成。

## Toolchain traps

Expand Down Expand Up @@ -293,7 +295,6 @@ model: opus
- `skip-changeset` 标签按仓库分流,先认清目标仓有没有这个机制;判据:不从任何包发布东西。
- 例:`docs/adr/**` · `.claude/**` · `scripts/pm/**` · 仓根工具配置 · 私有 workspace · 注释。
- 本仓库:标签是真实机制,打标签是你的步骤、不是 CI 的,PR 一开出就打。
- ⛔ 永不等 Check Changeset 转红再补。
- 写入首选加法端点(REST `POST .../issues/<n>/labels`,不碰已有标签);可达性按会话探,先探后用。
- 被拒 ⇒ 走回退:MCP 读现值→并集→整组写→必做对比式读回,并申报换道。
- 读回 diff 现集对 union(读集, 目标):union 有而回读缺 = 被剥的并发标签,重挂并写进报告。
Expand Down Expand Up @@ -326,7 +327,6 @@ model: opus
- 读完一次运行的输出 ⇒ 它的 monitor 也到头了;残留的 monitor 会把整份报告朝 PM 重放。
2. **monitor 还是响了**,它的第一行要说清看的是什么、那东西是否还活着。
- 任何唤醒起手先重读真实状态(分支推了吗?PR 开着吗?报告交了吗?)。
- 永不单凭一次唤醒重做工作或开第二个 PR。
3. **守约不等于会被听见,为此做计划。** 进程可能死在 PR push 与报告轮之间。
- 永不把自己的沉默读作成功(报告缺席直接挡 ACCEPT);PM 的探活-复活循环是常设兜底。
- PR 开出后被探是正常形状,不是训斥;被探时重读状态、从 transcript 交付报告。
Expand Down
20 changes: 10 additions & 10 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

- 所有状态在 GitHub:只经 issue 标签、assignee、正文行与 `pm:seat` 座位贴读写。
- 循环必须能从全新会话恢复。
- PM 不写文件、不写代码;唯一例外及其全部条件见红线。
- GitHub 上一切新内容用英文;中文只留四通道,含 `## 维护者速读`(受管 PR 与决策卡)。
- 另三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。
- 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。
- 先认领后动工;assignee 不是你 ⇒ 已被认领,永不碰。
- 一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案。
- 与 `AGENTS.md` 冲突时,`AGENTS.md` 胜。

## 状态模型

Expand Down Expand Up @@ -310,12 +307,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## 分诊座位职责

- 执行座位 ⛔ 跳过本节动作,读到标签当既成事实。
- sweep 与首触定级只对多车道仓,单车道仓机械三务自理。
- 发版板(无板仓跳过)、查重/shadow 检查与代裁通道全仓照跑。
- 代裁只由达档者产出,⛔ 永不凭自述。
- 达档者 = 显式传 `model` 的契约复审档子代理(逐份过转录核验),或达档总监席。
- 其余座位 ⛔ 不代裁;置信门其余条件照旧。
- fire 开局只按名加载互斥检查所需工具,`ToolSearch` 用 `select:` 形式。
- 判定本轮有活之后才加载其余工具。
- ⛔ 分诊 fresh session 开局不做泛关键词 ToolSearch;可验判据:空转轮 ~4 万 token 以内。
Expand All @@ -334,10 +329,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 半状态治愈积压 ②③ 最老优先、P0 嫌疑先行,⛔ 优先最新不适用。
- 首触定级与三析取 sweep 每 fire 跑到清空:⛔ 无每轮总量预算,清得动就多清。
- 窗口耗尽未跑完的,下一 fire 从标签状态断点续跑。
- 单轮数小时是可接受形态,⛔ 不是封顶总量的理由。
- 排序:队列每轮清空时最新优先;清不空的那一刻起改最老优先。
- 裸卡数 >15 ⇒ 下一 fire 整轮改域分批集中模式,每批 ≤5 张同族卡,照样跑到清空。
- 阈值与跑到清空成对生效,⛔ 不可互相替代。
- 紧急卡直接分诊:维护者点名或 p0 嫌疑 ⇒ 立即起契约复审档分诊子代理,不等定时轮。
- 紧急分诊的授权面 = 分诊本身,⛔ 不写码不认领;产出落卡,与定时轮分诊同格式同效力。
- 跨仓 pin 链的窗口级兜底也在 sweep,⛔ 只立单不执行 bump。
Expand All @@ -353,6 +346,12 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 决策卡的速读同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
- `finding` = 三类内待定级:(a) 可复现缺陷(复现或失败探针);(b) 违背已声明契约(引契约文);
- (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR `## 验收备注`,⛔ 不立卡。
- (a) 的分界是不完整 vs 错误,不是文档 vs 代码:示例照抄即失败是 (a),漏列成员不是。
- (c) 元数据 = 由写它的人以外的人存储并再作者化的键:React prop 不是,存储的视图配置是。
- 把作者引向运行时会兑现却让事情更糟的元数据的警告不在 (c) 内;记为边界,⛔ 不扩类。
- 判「进验收备注」前先问:哪一个 PR 会碰到这个文件?说得出具体 PR 或人 ⇒ 写进去。
- ⛔ 说不出(`.changeset/*`、无人在改的文档页、生成物、已扫完的批次)⇒ 兜底不成立。
- 仍然关,但关闭理由必须写明「承接者:无」。
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
- 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。
Expand All @@ -362,7 +361,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- `Bug` 无具名落点或复现路径不入 `pm:queue`(标记补复现)。
- ⛔ 不回填存量 backlog 的 type;新卡即时打、存量卡下次碰到补。
- 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题。
- 读全仓代码定落点;跨仓按 contract-first 拆分。
- 父单已有子结构的:父单队列标签即可,分诊逐个展开路由、补 `Blocked-by:` 排序。
- 父单是协调节点,永不派发。
- 每张留一条英文审计评论(`Triage: lands in …; rationale: …`),可选带 `Size/model suggestion:` 行。
Expand All @@ -375,8 +373,12 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- closed 形态随每轮解锁扫描;可执行判据由分诊席每日一个低频子轮批量执行。
- `Restart-when:` 命中同 closed 命中待遇:回队前 ref 重验再回队。
- ⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding,优先于旧卡重验。
- 三类外不可逆或有硬时限(发版即固化、只被消费的文件、过窗不可补)⇒ 不关,报维护者。
- 每批先验三类:三类外关 not planned(不等批准,维护者可否决重开);三类内无证据拒收。
- 三类内再过时前提检查,三选一:晋级 / 关闭 not planned / hold;判级只在此轮,不在立单时。
- ⛔ 写入前对每张卡现读当前状态;任何列表快照读数一律作废。
- ⛔ 带 `pm:dispatched` / assignee / 任何 open 或 merged PR 引用的卡,一律不动。
- ⛔ `issue_write` 会替换标签集并清空未传字段:写入时必须回传 `assignees`。
- 车道席可附证据/前提重验,⛔ 不定级不改标;skills 车道 finding 由该席自分诊,全仓轮跳过。
- 域分批与 sweep 打包晋级五条照用;每批约定与积压告警见 `references/dispatch-runbook.md`。
- `pm:retriage` 每 fire 先答异议评论所求,答后同笔摘标;须维护者答的进收件箱,标照摘。
Expand Down Expand Up @@ -626,7 +628,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- skills 车道自有 PR 再按 diff 内容分流:diff 含任一 `.md` 文件 ⇒ 终局四件套照旧。
- 纯代码面(`scripts/pm/` 工具、`.claude/` hooks/workflows/settings、非 md 产物)⇒ skills 席自审。
- skills 席自审按契约复审档、清单不减,然后直接落地(ready → 入队),⛔ 不推维护者。
- 分流只及 skills 车道自有 PR,其它车道 governed 面照旧。
- 路径面干净的才转 ready → 入队;队列是唯一被认可的落地路径,⛔ 永不队列外合并。
- 入队资格 = PR 上每一个 check 全绿,⛔ 不是 required 子集;required 集是队列强制的地板。
- 非必查门的红要么是真缺陷要么是坏门,两者都归 PM 入队前处置。
Expand Down Expand Up @@ -758,7 +759,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 权重是推荐规则不是授权规则:50% 不把人工地板的事变成可派发的事。
- 收件箱由维护者定期消化,⛔ 不 assign 推送。
- 四维分析从业务的角度写;写法六项与四棱块固定形状见 `references/decision-analysis.md`。
- 推荐是输入,永不是放行,人工地板不变。
- 四棱是四轴的卡面序列化,一一对应,也是分诊代裁置信门的输入。
- 决策通道优先序,卡先于弹窗:凡需维护者裁决,第一动作是落 `needs-user-decision` 卡。
- 决策卡带选项、推荐、证据与四棱块;被阻塞的执行卡同笔挂 `pm:blocked` + `Blocked-by:`。
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
## 状态模型
- 可派发等于 open 加队列标签加无 assignee 且不带 `pm:retriage`,已设 assignee 即 ⛔ 永不碰。
- `pm:dispatched` 与摘 `pm:queue` 恒在同一次标签写入里成对落地。
- `needs-user-decision` 是决定待做:⛔ 永不派发,除代裁通道外 ⛔ 永不代答。
- `pm:on-hold` 仅当带机器可读 `Restart-when:` 行才合法,触发文件走 `Restart-touch:` 行。
- hold 放行须双查:只放最近一次转换评论的条件,其后有更新的 merged PR 即拒。
- 没有可点火出口的卡 ⛔ 不 hold,直接关 not planned 并把理由与出处写进关单评论。
Expand Down Expand Up @@ -87,6 +86,7 @@
- 有落点或可复现的具体缺陷与范围明确的工具修复进 `pm:queue`。
- 设计卡、契约形状提案、碰迁移形状或删已发布能力的进决策箱,落卡即带四棱块。
- 立卡限三类:可复现缺陷、契约违背、元数据陷阱;截断卡先发修复指令再跳过,不可派发。
- 三类边界:缺陷问错不问缺、文档同判;元数据须他人再作者化;引向更糟的警告在类外。
- 类型字段由分诊席唯一生产,违背已声明契约是缺陷、扩大接受面是功能、其余是任务。
- 缺陷卡无具名落点或复现路径不入队列 ⛔ 不回填存量;每张卡留一条英文审计评论。
- 路由是分诊的技术判断 ⛔ 永不升级哪个仓的问题;父单是协调节点、永不派发。
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/pm-dispatch/references/dispatch-runbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
- 状态转换机制:定级出 hold ⇒ 同笔 `finding` → `pm:on-hold`,域标签保留。
- hold 评论照既有纪律带日期、理由与具名重启条件,出处写进评论。
- ⛔ 不设第二个标签区分维护者裁与座位定级。
- 修法是状态转换不是豁免评论;逐卡豁免评论机制已废弃,⛔ 不复活。
- 首触定级补遗:零定级评论的卡优先;关闭 not planned 附理由并列入轮次报告。
- 立单 dev 只有局部视野,照实立单不压级。
- 每批约定:≤5 张同族卡、同上下文逐张读;常设授权,⛔ 不逐次请示。
Expand All @@ -31,6 +30,7 @@
- N 项之外零改动且 PR 自证;范围外发现照旧单开。
- sweep 卡是认领对象,成员单保持标签但不再是可派发候选。
- 积压告警:连续 COMPLETED 清空 fire 后裸卡仍 >15 ⇒ 入流大于吞吐,报维护者。
- 阈值落地一周后随机抽 20 条 `noted, not filed`,由席位逐条重判,量出误记率并记档。

## 同趟成员卡写侧打包

Expand Down
Loading