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
16 changes: 8 additions & 8 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
| `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 |
| `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 |
| `priority:p0` | 插队:可超 `batch`、破轮次立即派发;⛔ 不豁免同文件串行、深度等待与认领协议 |
| `area:*` | 功能轴:每卡恰一个;分诊首触打,与 `domain:*` 同笔;工具卡打它所护的轴;⛔ 不回填存量。四读者:维护者按轴看板;定级继承该轴清单项;父单分组;候选顺序,即「功能点位次」= 父单在「路上的功能点」上的次序;同轴至多一个在飞,除非文件面不相交 |
| open PR 引用该单 | 已实现,复核中 |
| merged PR 带 `Fixes #n` | 完成(GitHub 关单) |

Expand All @@ -133,7 +134,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- declared≠enforced 观察类 ⇒ 转 enforce-or-remove 通道;真 won't-fix 候选 ⇒ 逐卡进决策箱。
- 派发与折叠检查时读半状态巡查锚的 H17 触发文件索引,与本次派发文件面求交。
- 相交 ⇒ 按该 hold 评论的 rider/restart 条款处置:点名该单,顺手活列为申报过的增项。
- 关闭即在同一笔摘掉 `pm:*` 状态标;`domain:*` 与类型标签留下,归属不是状态。
- 关闭即在同一笔摘掉 `pm:*` 状态标;`domain:*`、`area:*` 与类型标签留下,归属不是状态。
- `state_reason` 与关闭理由一致:撤单/不做 ⇒ `not_planned`,重复 ⇒ `duplicate` + `duplicate_of`。
- `Blocked-by:` 行是机器可 grep 的反向索引,一遍读喂三个职责,⛔ 只做第一件。
- 三职责:上游关单放回解锁卡;按解锁扇出排序;在合并后的 ref 上重验回队卡文件面。
Expand Down Expand Up @@ -214,7 +215,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- transfer 不可用时重建:出处头 + 裸 `#N` 改全名 + 关源单为 moved。
- 缝卡收窄为真协调卡:留 objectstack 带 `repo:*`,正文点名读者(哪个座位、哪一步)。
- 决策收件箱按仓:平台在 objectstack / objectui,元数据项目在本仓;在飞卡 ⛔ 不中途转仓。
- 规则 2:跨仓 feature 或 objectui 消费的 `Seam:` 卡恒由分诊立父单 + 每仓一子单,spec/后端先行。
- 规则 2:跨层功能点或 objectui 消费的 `Seam:` 卡恒由分诊立父单 + 逐层子单,spec/后端先行。
- 下游带 `Blocked-by: <owner/repo>#<n>`;`Blocked-by` 未关闭/未合并的不派发,对 GitHub 现验。
- 被链接或同父的两单永不同批。
- pin 滞后是盲区:本仓 pin 是否已覆盖该 commit 是第二读数,派发前用 REST `compare` 核祖先。
Expand Down Expand Up @@ -242,7 +243,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
## 域车道

- 锚定规则:每个包恰属一个域;`domain:*` = 修复落地包的域;`Seam:` 卡归 spec 席,默认纵向派发。
- 唯一例外 `packages/lint` 等与 spec 相交的 devx 面:围着 spec 契约转的归 `domain:spec`,余留 devx
- `domain:*` 只决定文件归属:锚定、热文件串行、单认领路径;⛔ 不是队列或优先级单位
- `Seam:` 卡认领申报两端;验收 = 消费端读该键(活性账本行离开 `planned`)或键随账本行退役。
- 域由分诊读代码判定,⛔ 绝不从 issue 标题的词汇猜域;说不出修复碰哪个文件就还不可标。

Expand All @@ -258,7 +259,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
| (无固定归属,按落点分诊) | `packages/apps/*`、`packages/console`(dist 由脚本生成 ⛔ 不手改;UI 缺陷走 `repo:objectui`)、`examples/*`(归它演练的子系统)、`docs/audits/**` |

- 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 `domain:*` 必须同批改本表。
- 座位在编以 `label:pm:seat` 索引为准,每车道(`domain:*`/`repo:*`)一组座位贴、每席恰一张。
- `domain:*` 只由分诊席产出,例外仅在飞卡衍生 sub-issue 承父卡域;无标签的卡 ⛔ 不得认领。
- 跨域例外路径:拆不动的跨域单 PR 由分诊席指定一个车道 PM 认领,认领评论申报文件面。
- 派发前在飞检查:读本车道 `pm:dispatched` 卡认领评论申报的文件面,本地求交、不另发查询。
Expand Down Expand Up @@ -294,7 +294,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## Epic 子树车道

- 大开发(父单 + sub-issue 树)整体委托一个专职 PM 会话:`/pm-dispatch epic:#<n>`。
- 大开发与跨层功能点(spec/运行时/前端)整体委托一个专职 PM 会话:`/pm-dispatch epic:#<n>`。
- 委托信号成对落地:父单打 `pm:epic` + 正文写会话 ID 与声明的文件领地。
- epic 立卡挂父单、打 `pm:epic`,⛔ 永不 `pm:queue`;`label:pm:epic` 即父子保留全集,域座位不取。
- 队列 = 子树 open 未认领 sub-issue,每轮重读不缓存;其它 PM 候选获取跳过整棵子树。
Expand All @@ -310,7 +310,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## 分诊座位职责

- sweep 与首触定级只对多车道仓,单车道仓机械三务自理。
- 发版板(无板仓跳过)、查重/shadow 检查与代裁通道全仓照跑。
- fire 开局只按名加载互斥检查所需工具,`ToolSearch` 用 `select:`;判定本轮有活才加载其余。
- ⛔ 分诊 fresh session 开局不做泛关键词 ToolSearch;可验判据:空转轮 ~4 万 token 以内。
Expand Down Expand Up @@ -372,6 +371,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 产品仓 P0/P1 开着时,无解锁对象的 p2/p3 `tooling` 卡同样关。
- 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题;父单是协调节点,永不派发。
- 父单已有子结构的:父单队列标签即可,分诊逐个展开路由、补 `Blocked-by:` 排序。
- 跨层功能点(≥2 层)立父单带 `area:*`+`pm:epic`+清单项级,逐层子单按 `Blocked-by:` 排。
- 每张留一条英文审计评论(`Triage: lands in …; rationale: …`),可选带 `Size/model suggestion:` 行。
- 查重/shadow 检查先按文件/机制查本仓与姊妹仓 open 卡(含 `pm:dispatched`),再跟引用与关键词。
- 同文件同机制 = 同一发现,不分车道,首触定级即并:证据搬先卡,后卡关 `duplicate_of`。
Expand Down Expand Up @@ -470,9 +470,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 阻塞项在飞 ⇒ 等:`pm:blocking` 在其车道排最前、等待者写该卡;p0/p1 优先级沿链传递。
- 取卡前置 = `docs/NORTH-STAR.md`「优先级」第 3 条:产品仓开放 P0/P1 每次取卡现读。
- 取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 `references/lanes/spec.md`)> 标签序。
- 标签序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄
- 标签序:`priority:p0` > `pm:blocking` > 功能点位次 > `target:` 板上项 > p1 > p2 > p3 > 无级。
- `pm:blocking` 级内先按解锁扇出(从 `Blocked-by:` 反向索引现算,⛔ 扇出数不落标签)。
- 全序每级取既有信号现读/现算,零逐卡维护;优先非豁免;无级/缺 `Path:` 轮报记分诊缺口。
- 全序每级现读/现算,零逐卡维护;同级先 `Bug` 再卡龄;无级/缺 `Path:` 轮报记分诊缺口。
- 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。
- 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。

Expand Down
8 changes: 4 additions & 4 deletions .claude/skills/pm-dispatch/references/core-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@
- 多车道仓的域标签、type、定级与查重只由中央分诊生产,单车道仓自理三务不产域标签。
- 跨仓查重与 shadow 检查恒归中央 ⛔ 不下放;决策卡入本仓收件箱,在飞卡 ⛔ 不中途转仓。
- issue 住在修复落地的仓,抽掉 objectstack 仍成立的当场转仓;缝卡须带仓标签并点名读者。
- 跨仓 feature 或跨仓 `Seam:` 卡拆成父单加每仓子单,下游带 `Blocked-by:`,上游未关 ⛔ 不派发。
- 跨层功能点或跨仓 `Seam:` 卡拆成父单加逐层子单,下游带 `Blocked-by:`,上游未关 ⛔ 不派发。
- pin 消费的仓派发前核 pin 是否已覆盖那个提交,发布包消费的仓判据是消费方可安装。
- 上游未发版时转 hold ⛔ 不回队列;已验收产物流向另一仓由接受席立即立后续单。
- 跨座位请求即立卡进目标车道,自卡翻 `pm:blocked`;阻塞项无主由被挡席认领,在飞即等。
- 认领席跟到 MERGED,派发后的跨车道面不移卡、借隔离复核;新 spec 工作由 spec 席收口。
## 域车道
- 每个包恰好属于一个域,域标签 = 修复落地包的域;例外与 `Seam:` 卡见 SKILL.md 锚定规则
- 每个包恰好属于一个域,域标签 = 修复落地包的域,只决文件归属 ⛔ 非队列非优先级单位
- 域由分诊读代码判定,⛔ 绝不从 issue 标题的词汇猜域;说不出修复碰哪个文件就还不可标。
- 域到包家族的对照表住 SKILL.md,增删一个域标签必须同批改那张表
- 域到包家族的对照表住 SKILL.md,增删一个域标签同批改那张表;`area:*` 是功能轴,首触打
- 域标签只由分诊席产出,例外仅在飞卡衍生 sub-issue 承父卡域;无标签的卡 ⛔ 不得认领。
- 跨域单 PR 由分诊席指定一个车道 PM 认领并申报完整文件面,在飞检查同域跨域皆跑。
- 合并队列是共享串行资源,谁发现 flake 谁修或立单,⛔ 不绕行。
Expand Down Expand Up @@ -106,7 +106,7 @@
- 家族派发须过五门:同缺陷同修法、同包区域、成员皆已裁、逐成员可核、点名排除清单。
- 两张以上排队卡共享热文件时,必须以五门为判据显式回答折叠还是串行。
- 取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 `references/lanes/spec.md`)> 标签序。
- 标签序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄
- 标签序:`priority:p0` > `pm:blocking` > 功能点位次 > `target:` 板上项 > p1 > p2 > p3 > 无级。
- 认领原子对:一次标签写入完成认领与状态对调,随后留 `Claim:` 开头的评论并重读全线程。
- 更早的他会话认领即让行并交出已诊断的一切;认领人不可达即接管,⛔ 不判死活。
- dev 自死不等于维护者中止,需显式信号;接管一条评论四件齐,只救已 push 的分支。
Expand Down
Loading
Loading