Skip to content

Commit 5b1462b

Browse files
committed
docs(pm-dispatch): issue/PR 书写语言切英文(维护者指令)+ 座位贴登记 GitHub 账号三元
- 新增语言政策:凡写到 GitHub 的 issue/PR 标题、正文、评论一律英文;例外两个 通道 —— step 9 轮次报告(chat,对维护者,保持中文)与中文裁决引文(照抄不 译)。存量不追溯。认领模板、分诊审计、ACCEPT 评论、[决策]→[Decision]、让行 措辞随之翻英;派发令新增 dev 立单英文条款。 - 座位贴「当前 PM」段固定登记三元:GitHub 账号(get_me 自查)+ 会话/Routine ID + 上任时刻;并写明审计评论作者字段是平台盖章的硬读数,接管仲裁优先用它。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GcjbQLUQKysMU9uXB34iyv
1 parent 7151948 commit 5b1462b

1 file changed

Lines changed: 38 additions & 17 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ write state only through these signals:
9191
发现它的动作。notes 12 的「读取端截断」是本条的读侧对偶:写侧同样不能拿
9292
「API 返回 200」当「落地内容正确」。
9393

94+
**GitHub 书写语言 —— issue/PR 上的一切新内容用英文(维护者 2026-08-06 指令)。**
95+
凡写到 GitHub 上的:issue 标题与正文、issue/PR 评论(认领、分诊审计、裁决、
96+
hold/blocked 注记、让行、座位贴登记与审计)、PR 标题与正文 —— 一律**英文**。
97+
issue 是仓库的公开持久记录,语言随仓库;中文保留给两个通道:**step 9 的轮次
98+
报告**(chat,对维护者)与派发令里需要原样传达的中文裁决引文(引文照抄,不翻
99+
译 —— 改写引文就是改写裁决)。存量中文内容 ⛔ 不追溯改写。
100+
94101
**One-time setup** (idempotent, run at the start of the first round):
95102

96103
```bash
@@ -449,10 +456,16 @@ issues that collide on shared files — and「谁来分诊」原本是每个 PM
449456
**每个座位一张登记贴**:
450457

451458
- **贴 = 座位**(分诊、队列管家、各 `domain:*`、姊妹仓整仓),打标签 **`pm:seat`**,
452-
正文三段:**范围 | 当前 PM(会话或 Routine ID) | 说明**。`label:pm:seat`
459+
正文三段:**范围 | 当前 PM | 说明**。`label:pm:seat`
453460
即全量索引(与 `pm:epic` 同构);#4604 只作**指针页**(座位 → 贴的静态索引,
454461
仅拆域加座位时更新)。**单写手**:贴正文只由**在任座位 PM** 编辑,互吞类
455462
问题机制性消失,而不是纪律性缓解。
463+
- **「当前 PM」段固定登记三元(维护者 2026-08-06 要求可辨识 GitHub 用户)**:
464+
**GitHub 账号**(会话启动时 `GET /user` / `get_me` 自查 login —— 舰队实际在用
465+
多个账号,`os-zhuang`/`qq9340100`/`hotlong`/`baozhoutao` 已各自在岗,「共享单一
466+
身份」的旧假设不再全真)+ **会话 ID 或 Routine ID** + **上任时刻**。正文自述
467+
之外还有一条**平台盖章的硬读数**:该座位审计/认领评论的**作者字段**就是该
468+
会话的 GitHub 用户,不可自述错 —— 接管仲裁与活性判定优先用它对账正文。
456469
- **接管 / 移交 = 改该座位贴正文 + 在该贴留一条审计评论**;**评论只作交接审计,
457470
不承载状态** —— 不要靠读评论流对账现状(实测教训:#4604 曾三天累积 79 条登记
458471
评论,「现状」与「历史」挤在同一通道,对账成本随评论数线性涨)。
@@ -819,8 +832,9 @@ routing isn't already decided:
819832
itself is a coordination node — **never dispatched to a dev**; it stays
820833
open as the progress view and the PM closes it with a summary comment when
821834
the last sub-issue closes.
822-
- **Leave a one-comment audit trail** on the issue (Chinese), so the
823-
maintainer can veto cheaply: 「分诊:落地 objectui;理由:…」.
835+
- **Leave a one-comment audit trail** on the issue (English, per the
836+
language policy), so the maintainer can veto cheaply:
837+
"Triage: lands in objectui; rationale: …".
824838
- Routing is a **technical judgment — never escalate "which repo?" to the
825839
maintainer.** If after reading the code you genuinely cannot tell where a
826840
change lands, the issue is underspecified: escalate the *underlying
@@ -916,20 +930,21 @@ execute as **one atomic pair**, in order:
916930

917931
1. **Assign** to yourself (`@me`) and add `pm:dispatched`. Skip — and drop
918932
from the batch — any issue that acquired an assignee since step 1.
919-
2. **Claim comment** (Chinese), fixed shape — the branch name is the key,
933+
2. **Claim comment** (English, per the language policy), fixed shape — the
934+
branch name is the key,
920935
every later artifact (worktree, push, PR) hangs off it. The session ID is
921936
NOT optional: under the shared identity it is the only line that lets a
922937
later reader — including your own future self after a context reset —
923938
answer "is this claim mine?". A claim without it caused the #4555/#4559
924939
duplicate (#4588): the second session saw its own shared name as assignee
925940
and could not tell the claim was someone else's.
926-
> 认领:PM 循环第 N 轮
927-
> 会话:`session_<id>`
928-
> 分支:`claude/issue-<n>-<slug>`
929-
> Worktree:`<repo>-issue-<n>`
930-
> 域:`domain:<x>`
931-
> 文件面:`<预计触碰的目录列表>`(越界即停,报告说明)
932-
> 串行约束已清:`<点名同文件/同包的前序 PR 与在飞单;无则写「无」>`
941+
> Claim: PM loop round N
942+
> Session: `session_<id>`
943+
> Branch: `claude/issue-<n>-<slug>`
944+
> Worktree: `<repo>-issue-<n>`
945+
> Domain: `domain:<x>`
946+
> File surface: `<directories you expect to touch>` (stop on breach; explain in the report)
947+
> Serial constraints cleared: `<name the same-file/same-package predecessor PRs and in-flight claims; "none" if none>`
933948
934949
最后一行是 services 车道一班 28 PR 零合并冲突的机制(#5885):把「查过串行
935950
约束」从内心活动变成落在评论里的读数,竞态复读与串行判断都成了 30 秒的事 ——
@@ -954,7 +969,7 @@ execute as **one atomic pair**, in order:
954969
the claim comments' **timestamps are the only tiebreaker**, whatever the
955970
assignee field seems to say. An earlier claim comment with a *different*
956971
session ID or branch means you lost: touch nothing of theirs, reply
957-
「已有认领,让行」, and pick another issue. First comment wins. #5032 is
972+
"already claimed — yielding", and pick another issue. First comment wins. #5032 is
958973
the 20-second version: claims at 00:39:44 and 00:40:04, the later one
959974
composed **without re-reading the thread** — and both aimed at
960975
`pnpm-lock.yaml`, where two parallel re-resolutions produce mutually
@@ -1042,6 +1057,9 @@ Follow your operating procedure (you are the os-dev agent). Non-negotiables:
10421057
- If your change touches `packages/spec`: spec build(`gen:schema`)会**重写锚点**
10431058
`authorable-surface.base.json` —— 那是预期产物,⛔ 不要 revert、不要手改;
10441059
何时写/往哪写见 #5358/#5370,字节门见 #4650。
1060+
- Everything you post to GitHub — the PR title and body, and any issues you
1061+
file for out-of-scope findings — is written in ENGLISH (maintainer policy,
1062+
2026-08-06). Quote existing Chinese rulings verbatim without translating.
10451063
Return ONLY the JSON report defined in your agent definition.
10461064
```
10471065

@@ -1453,7 +1471,7 @@ against the report's own claims:
14531471

14541472
Verdict per issue:
14551473

1456-
- **ACCEPT** — comment on the issue (Chinese) linking the PR and summarizing
1474+
- **ACCEPT** — comment on the issue (English) linking the PR and summarizing
14571475
what shipped. Then drive it to landing (maintainer policy: review passed +
14581476
CI green ⇒ merge): once every check on the PR is green, mark it ready for
14591477
review and **add it to the merge queue** — the queue rebuilds the PR
@@ -1683,12 +1701,14 @@ is too vague to dispatch, or rework has failed twice:
16831701
the maintainer's inbox (filter `label:needs-user-decision` shows
16841702
everything awaiting them); when they answer, the label comes off and the
16851703
issue re-enters the queue. No bookkeeping issues accumulate. File a
1686-
separate issue (titled `[决策] <一句话说清要拍板什么>`, same label) ONLY
1704+
separate issue (titled `[Decision] <one sentence naming what must be
1705+
decided>`, same label; legacy `[决策]` titles stay as-is) ONLY
16871706
when the decision has no natural anchor — it spans several issues (file
16881707
one, link it from each rather than duplicating the analysis) or arose
16891708
with no issue of its own.
1690-
2. The analysis, wherever it lands (Chinese): 背景、具体问题、可选方案、
1691-
你的建议、关联的 issue / PR / 分支。**每个方案必须沿三条固定评估轴
1709+
2. The analysis, wherever it lands (English, per the language policy):
1710+
background / the concrete question / options / your recommendation /
1711+
related issues, PRs, branches。**每个方案必须沿三条固定评估轴
16921712
分析,这是决策分析的核心原则,不是可选项:**
16931713
- **实际业务需求** — 每个方案先问:它服务的是**真实存在的业务场景**,
16941714
还是投机性的能力面?判据来源要求**实测**——谁在写这个键、谁在读这个
@@ -1718,7 +1738,8 @@ is too vague to dispatch, or rework has failed twice:
17181738

17191739
### 9. Round report, then next round
17201740

1721-
Print a round report to the maintainer **in Chinese**: a table of
1741+
Print a round report to the maintainer **in Chinese**(chat 通道,语言政策的
1742+
显式例外 —— 报告不落 GitHub): a table of
17221743
issue → verdict → PR link → notes, plus anything escalated. Then start the
17231744
next round at step 1 (rework re-dispatches count against the next round's
17241745
`batch` budget).

0 commit comments

Comments
 (0)