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
24 changes: 12 additions & 12 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 所有状态在 GitHub:只经 issue 标签、assignee、正文行与 `pm:seat` 座位贴读写。
- 循环必须能从全新会话恢复。
- PM 不写文件、不写代码;唯一例外及其全部条件见红线。
- GitHub 上一切新内容用英文。
- 中文只留三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。
- GitHub 上一切新内容用英文;中文只留四通道,含 `## 维护者速读`(受管 PR 与决策卡)
- 另三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。
- 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。
- 先认领后动工;assignee 不是你 ⇒ 已被认领,永不碰。
- 一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案。
Expand Down Expand Up @@ -351,11 +351,12 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- `pm:queue` 也收恢复不变量的 finding 与 test-only pin。
- `needs-user-decision` = 设计卡、feature/契约形状提案、需要 appetite 的多周程序。
- 碰存量数据迁移形状或删除已发布能力的卡也进决策箱。
- 决策卡落卡必带四棱卡面块,⛔ 不留待有人接手再补。
- 决策卡落卡必带四棱卡面块与其上的「维护者速读」,⛔ 不留待有人接手再补。
- 决策卡的速读同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
- `finding` = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
- 决策箱勤务:落卡入箱时校验/补全标准四棱卡面块;存量卡低频子轮回填,语言按不变量。
- 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。
- 原生 issue 类型 Bug/Feature/Task 是分诊的固定产出。
- 分诊席是 `type` 字段的唯一权威生产者;立单者可预填,分诊校正。
- 判据:违背已声明契约 ⇒ `Bug`,扩大接受集/公开面 ⇒ `Feature`,其余 ⇒ `Task`。
Expand Down Expand Up @@ -592,13 +593,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- PR 形态与范围:draft、目标 `main`、`Fixes`/`Part of` 首行判据,翻 ready 前亲核。
- `Part of` 卡 MERGED 时点收口;changed files 范围与 changeset/`skip-changeset` 分流;测试证据。
- 报告在草稿 PR 时点到达,CI 收敛读数只属于复核侧:gate `in_progress` 是诚实读数。
- 放行前亲核判据;收敛期补丁轮与本单等 CI 例外见 checklist。
- 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。
- 证伪是好运行:`premise_still_valid: false` 是再分诊输入;dev 纠正 PM 当众认。
- 判据被测量推翻照 ACCEPT,证据要件在 checklist。
- 删除与二进制:死代码删除亲核引用面;`+0/-0` 先疑 NUL;sweep 范围外产出成组列出。
- 触 `skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 的座位上读。
- ⛔ 不从功能作者的座位读价值密度。
- 触 `skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 座位读,⛔ 不从作者座位读。
- 超派发预算或小功能大扩写 ⇒ REWORK,⛔ 不因已经写好了放行。
- 判决 ACCEPT:issue 英文短评论,核对清单结论 + 抽查读数 + 偏差,链接 PR,⛔ 不复述其叙事。
- 判决 REWORK:逐项反馈,同认领重派;补丁轮优先 SendMessage 续派原 dev;最多 2 轮,第三次升级。
Expand All @@ -607,18 +605,21 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 路径面用 `get_files` 取,⛔ 不看报告自述;动手之前先分,不是事后对照。
- governed 面统一定义:`docs/adr/**` + `.claude/**`(全量,含 agents/hooks/settings)+ `skills/**`。
- governed 面同含 `AGENTS.md` + `CLAUDE.md`;agent 指令文件跨仓同判,仓集读 `GOVERNED_REPOS`,此处不列。
- 路径面一条命中 ⇒ ACCEPT 换终局四件套。
- 路径面一条命中 ⇒ ACCEPT 换终局四件套,混合 diff ⛔ 不按比例判;要拆让 dev 单独开 PR
- ① 复核结论照常写在 issue 上;技能面 PR 的复核席须跑在契约复审档位。
- ② PR 留给维护者看得见地悬着;终局两条:人工直合即审核记录;授权批准 ⇒ 队列放行。
- 看得见 = ACCEPT 同笔挂 `needs-user-decision` + 贴终稿「维护者速读」评论;①仍是审核记录。
- 速读五段固定:改了什么/为什么改/风险与代价(含回滚)/席位意见/你要做的(一个动作)。
- 草稿归 dev:受管面 PR 正文带 `## 维护者速读(草稿)`,中文、业务角度,席位意见留空。
- 终稿 = 席位对照自己读的 diff 校正草稿、填席位意见后贴评论;维护者只读评论。
- PR 上的标签 = 待维护者审阅,不入六态;与请审同为等人合清单,随合并或撤回判决离开。
- 批准判定单源 = 队列守卫常量 `GOVERNED_APPROVERS`:授权账户 APPROVED 即算,⛔ 不卡 `commit_id`。
- 批准后再推提交也不过期;无批准 ⛔ 不翻 ready、不入队、不挂 auto-merge。
- ③ 在 draft PR 上向两个授权批准账户 `os-zhuang` 与 `hotlong` 都 request review,主动推。
- 等人合清单从此活在 GitHub 的 Review-requested 队列,合并自动消项。
- PR 作者身份即两账户之一的席位时,对该账户请审必失败(author-identity 422)。
- 该账户改为把 PR assign 给它替代通知,另一账户照常请审;轮次报告点名说明走了兜底。
- 请审走免碰 draft 位的专用 REST 端点,MCP 兜底显式带 `draft: true`;端点事实住 platform-readings。
- ④ 轮次报告单列 awaiting a human merge。
- 混合 diff 一条命中就分叉,⛔ 不按比例判;要拆就让 dev 单独开 PR。
- 已入队才读到本条 ⇒ 转 draft 与 disable 都做;出队以阳性探针答,ref 缺席只旁证。
- skills 车道自有 PR 再按 diff 内容分流:diff 含任一 `.md` 文件 ⇒ 终局四件套照旧。
- 纯代码面(`scripts/pm/` 工具、`.claude/` hooks/workflows/settings、非 md 产物)⇒ skills 席自审。
Expand Down Expand Up @@ -755,7 +756,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 长远合理性权重恒 ≥50%:推荐以长远的读数领起,四轴冲突时其余各轴合起来投不翻它。
- 权重按缩小而非扩大特例与契约增生读,⛔ 不据它为投机扩张背书。
- 权重是推荐规则不是授权规则:50% 不把人工地板的事变成可派发的事。
- 标准四棱卡面块是落卡与升级的必备件,每张 `needs-user-decision` 卡落卡即带。
- 收件箱由维护者定期消化,⛔ 不 assign 推送。
- 四维分析从业务的角度写;写法六项与四棱块固定形状见 `references/decision-analysis.md`。
- 推荐是输入,永不是放行,人工地板不变。
Expand Down
3 changes: 2 additions & 1 deletion scripts/pm/ensure-pm-labels.sh
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ gh() {
for R in objectstack-ai/objectstack objectstack-ai/objectui objectstack-ai/cloud objectstack-ai/objectos objectstack-ai/hotcrm; do
gh label create pm:queue -R "$R" -c 0e8a16 -d "Ready for the PM dispatch loop" 2>/dev/null || true
gh label create pm:dispatched -R "$R" -c 1d76db -d "Dispatched to a dev agent by /pm-dispatch" 2>/dev/null || true
gh label create needs-user-decision -R "$R" -c d93f0b -d "Blocked on a maintainer decision — do not dispatch" 2>/dev/null || true
# needs-user-decision on a PR means awaiting the maintainer's review (SKILL.md 复核, 终局四件套); on a card it is the ruling inbox.
gh label create needs-user-decision -R "$R" -c d93f0b -d "Blocked on a maintainer decision — do not dispatch; on a PR: awaiting the maintainer's review" 2>/dev/null || true
gh label create pm:on-hold -R "$R" -c e4e669 -d "Decision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment" 2>/dev/null || true
gh label create pm:blocked -R "$R" -c b60205 -d "Blocked by another issue/PR — body carries Blocked-by: #N" 2>/dev/null || true
# pm:awaiting-maintainer — the state for a card whose remaining work is a
Expand Down
Loading