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
10 changes: 5 additions & 5 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报

## 入口与角色

`/pm-dispatch [args]`,自由组合,全部可选:
`/pm-dispatch [args]` 或项目指令行 `pm-dispatch <席位…>`,自由组合,全部可选:

| arg | 含义 | 默认 |
|---|---|---|
| `triage` | 以分诊座位身份运行(只扫/分类/路由,永不认领) | — |
| `<domain>`(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行;承办该车道的项目即「车道项目」 | — |
| `<domain>`(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行;承办它的是坐该席的车队项目 | — |
| `epic:#<n>` | 以父单 #n 的 epic PM 身份运行(见 `references/seat-lifecycle.md` 〈Epic 子树车道〉) | — |
| `director` | 以总监席身份运行(人工召唤;所在项目即「总监项目」;三职与章程见 `references/lanes/director.md`) | — |
| `director` | 以总监席身份运行(人工召唤,任一车队项目可召;三职与章程见 `references/lanes/director.md`) | — |
| `coordinator` | 以协调者身份运行(项目会话:开席位线程与卡线程、跨车道调度;接口见 `references/coordinator.md`) | — |
| `label:<name>` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` |
| `repo:<owner/name>` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` |
Expand All @@ -68,7 +68,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- fire = 一次唤醒;fire 到达时上一轮未清空的接续处理,⛔ 不重开、不重排。
- 批 = 一个上下文里读完的 ≤5 张同族卡,是质量单位,⛔ 不是预算。
- 班 = 一个会话的任期,只以交接或惰性回收结束。
- 席位两形:Routine 席与项目席(会话是车道项目的线程);细则见 `references/seat-lifecycle.md`。
- 席位两形:Routine 席与项目席(会话是车队项目的线程);细则见 `references/seat-lifecycle.md`。
- 项目席唤醒 = PR 订阅事件 + 每项目一个巡查 routine;⛔ 无自绑 cron、无 `send_later` 链。
- 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。
- 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。
Expand All @@ -80,6 +80,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
| 文件 | 谁在哪个 fire 读 | 承载的章节 |
|:--|:--|:--|
| `references/seat-lifecycle.md` | 每个座位每次 fire:开轮互斥读数前、收班前 | 开轮互斥 · 座位贴协议 · Epic 子树车道 · 轮次报告与节奏 · 停止条件与待命 · 断粮与跨墙恢复 |
| `references/project-forms.md` | 协调者每次开场;席位坐席、接管、移交、开信箱 PR 前 | 一种项目形态 · 指令行即召唤 · 席位是读出来的 · 接管 · 信箱 PR · 总表 |
| `references/reading-discipline.md` | 任一座位取读数、引读数或核验 main 的那一刻 | 平台读数纪律 |
| `references/cross-repo-coordination.md` | 分诊席路由与查重前;执行席跨仓认领、派发或转移时 | 多仓协调 |
| `references/triage-duties.md` | 分诊席每次 fire 开局 | 分诊座位职责 |
Expand All @@ -95,7 +96,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
- 席位及其子代理 ⛔ 永不打印环境变量的值;判存在只用不印值的形式 `[ -n "${X+x}" ]`。
- GitHub 上一切新内容用英文;中文只留四通道(维护者速读、轮报、裁决引文、四维分析)。
- 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。
- 一 PM 恰管一车道,一车道由一组座位管,一席一贴;PM Y 管什么恰一个答案。

## 状态模型

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/lanes/director.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 授权与形态

- 授权面 = 人工定期召唤,处理 contract-review 与需决裁项;⛔ 无 Routine、无 cron、无舰队位。
- 授权面 = 人工召唤,任一项目可召;处理 contract-review 与需决裁项;直连 ⛔ 无 Routine/cron。
- 只出裁决不持在飞状态:多场并行、无交班,新场不等不停不替,⛔ 无接管无在任者。
- 裁决只存在于本卡:聊天原话、台账行、他卡引述 ⛔ 都不是裁决;先记卡再动标签。
- 同卡同笔只一场写,线程即顺序、后记者胜,裁前先读线程。
Expand All @@ -13,7 +13,7 @@
- 裁决记录同笔写明所选字母的工作量,读数取自卡面工作量列。
- 划掉原 ⛔ 不派断言,走 `post-stamped --body --ack-through`;漏此笔 ⇒ 接卡者先读正文退决策箱。
- 入口:维护者说处理决裁或处理 contract-review,或 `/pm-dispatch director`。
- 未回字 = 不在 = 停,⛔ 无巡检、审计、快照、聊天、卡评论;⛔ 无任何例外。
- 未回字 = 不在 = 停,⛔ 无巡检、审计、快照、聊天、卡评论;例外 = `../project-forms.md` 例行。
- 回来后先补跑审计与重挂复位一次,再只发一行「批 #N 待字;箱内另有 K 张新到未呈」。
- 开场读一次服役档记入会话审计行,读法见 `../platform-readings.md`;⛔ 不因档位拒裁停三职。
- 双射 carve-out:一张 `pm:seat` 座位贴,四段照旧;状态块逐场一行,各记己锚,⛔ 无占席人。
Expand Down
54 changes: 54 additions & 0 deletions .claude/skills/pm-dispatch/references/project-forms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 车队项目(项目形态)

协调者每次开场读本文;坐席、接管、移交、开信箱 PR 前再读。本文是席位之上的项目层。

## 一种项目形态

- 车队项目 = 任一账号上、指令行指向 pm-dispatch 的 Claude Code 项目;⛔ 不分项目类型。
- 项目做什么只由它坐的席位决定;车道席、总监席、分诊席都是席位,由维护者召唤。
- 车道席:认领、派发、PR、跨账号复审;总监席:决策箱与决裁批、发版、日报、总表。
- 分诊席:只写标签与审计评论;分诊与总监可召进任一项目,⛔ 不绑定项目。
- 唯一不变量在账号不在项目:批准账号永不跑席位(SKILL.md 全体座位的不变量);本文不另加。
- 规则与指派只写角色词(总监账户、车道账户);登录名只在裁决记录里作既往事件的证据。

## 指令行即召唤

- 项目指令只有一行:`pm-dispatch <席位> [<席位>…]`,如 `pm-dispatch 总监`、`pm-dispatch ui skills`。
- 首词恒为技能目录名 `pm-dispatch`;⛔ 不用 `fleet`,它已是 bot 与中继的名字。
- 席位词 = 中文名或车道文件名:总监 = `lanes/director.md`,分诊 = `lanes/triage.md`。
- 其余席位词同 `lanes/<lane>.md` 文件名:ui、skills、devx、server、spec、hotcrm。
- 一车道多席:协调者取 🟢 行写本账号的那一席;无则取空席;再无则问维护者一次。
- 其余一切住本文:⛔ 不往项目里贴模板;⛔ 不在账号层复制技能。

## 席位是读出来的,不是配出来的

- 项目的席位 = 🟢 行写本账号的座位贴(车道、总监、分诊同此);派发前先读座位贴。
- 一张也没有 ⇒ 项目闲置;每席恰一条席位线程、恰一车道,一席一贴。
- 指令行就是指派:维护者在项目里写下或改写这一行,是唯一的指派动作。
- 项目聊天里的长句(「本账户坐 X;Y 的 PR 由本账户复审」)是等价写法。
- 协调者每次开场把指令行与座位贴对照:逐席按 `seat-post-protocol.md` 坐席或接管。
- 坐席即把本账号写进 🟢 行、每席开一条席位线程;⛔ 无花名册文件。
- 首次坐席建本项目的 routine:巡逻每 2–4 小时;总监席加每日摘要与每小时收件箱扫描。
- 分诊席加每小时裸卡轮;总监与分诊同在一个项目时两者可共用一个 routine。
- 并发上限是维护者在该项目定的姿态;⛔ 不是协议常量,本文不写数字。

## 接管不等撞墙账号

- 🟢 行写着别的账号 ⇒ 指令行即维护者强制接管令,含在飞卡。
- 撞墙账号写不出任何东西,接管永不等它的注记或简报。
- 跨账号 `Release:` 点名旧会话与出处三件;新 `Claim:` 带 `Resume-from: BRANCH@SHA`,新 dev 续旧分支。
- 四件形状见 `execution-duties.md` 认领节;台账 = 标签 + assignee + `Claim:` + `head:claude/` PR。
- 台账按 `assignee:<旧登录名>` 读;⛔ 项目记忆与共享目录永不是台账,只是本账号的缓存。

## 信箱 PR

- 绑 PR 的对话不需要新东西:卡线程订阅自己的 PR,评论即唤醒。
- 非 PR 对话:每项目至多一个 draft PR,标签 `pm:mailbox`,分支 `mailbox/<login>`,由常驻线程订阅。
- 永不合并,移交或换账号时关闭;正文首行 `To: <login>`。
- `pm:mailbox` PR 不欠 CI,一切落地与台账查询排除它。

## 总表

- objectstack 置顶 issue「车队总表」,一席一行;正文由总监席日报与坐席/接管/移交重生成。
- 行 = 仓 · 车道 · 席 · 账号 · 在飞 · 待裁 · 待落地 · 撞墙注记 · 最近动静 · 信箱 PR。
- 读自座位贴、标签、assignee 与 PR 查询;生成视图 ⛔ 不手改(`cross-repo-coordination.md` 规则 5)。
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/seat-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
- 存根外的姿态、台账与轮报住项目;标题、assignee、坐席审计评论与跨账号移交简报照旧。
- 正文只由在任座位 PM 编辑且为权威;标题与 assignee 是派生视图,三者同笔更新。
- 标题只放慢状态,快状态留在说明段。
- 维护者强制接管令取席位、队列、未起工卡与待落地 PR;⛔ 不取在飞卡,由原认领者跟完。
- 维护者强制接管令取席位、队列、在飞卡、未起工卡与待落地 PR;⛔ 不等原认领者注记。
- 子代理 dev 的返回消息、探活与续派只在派发会话;落地或 `Release:` 后归新席位。
- 范围与常设承诺是岗位说明不是状态,版本化在 `references/lanes/<lane>.md`。
- 贴内只放指向车道文件的指针,升级走技能 PR,⛔ 不手抄接力。
Expand Down Expand Up @@ -67,7 +67,7 @@
## 轮次报告与节奏

- 每轮向维护者打中文轮次报告(chat 通道):issue → 判决 → PR 链接 → 备注的表。
- 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监项目的每日摘要。
- 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监席的每日摘要。
- 报告加升级项、呈裁清单、awaiting a human merge 项、逐 PR 熔断命中项(无则 none)。
- 报告含 `UNRECOGNISED` 行:对本轮门禁日志 grep `UNRECOGNISED` 逐行照录,`NOT APPLICABLE` 行也在内。
- 健康指标五个:可派发库存(open `pm:queue` 未认领及趋势);决策箱(待维护者数)。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
- 状态词表:`🟢 <github-login>` 在任、`🟢 Routine`、`⏳ vacant`、`⏸️ paused`。
- assignee = 在任 PM 的 GitHub 账号,退场或回收时摘除;无 assignee = 空缺,与标题互为校验。
- 例外:Routine 座位的 bot 身份通常不可被 assign,以标题为准。
- 多场席(总监):`🟢` 后写召唤账号,状态块逐场一行(会话 ID + 锚);无在任者、无接管。
- 直连多场总监席:`🟢` 后写召唤账号,逐场一行;项目席 🟢 即指派,接管见 `project-forms.md`。
- 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。
- 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。
- 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。
Expand Down
7 changes: 7 additions & 0 deletions scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,12 @@ export const CEILINGS = new Map([
// CROSS_FILE_MOVES destination, so no `ruledRaises` record applies. Landed
// count, headroom 0, same convention.
['.claude/skills/pm-dispatch/references/filing-gate.md', 64],
// The project layer above the seats (maintainer's word: ONE project form, the
// instruction line 「pm-dispatch <席位…>」 is the summon, seats are read from the
// seat posts' 🟢 line, takeover never waits for a walled account, mailbox PRs,
// a generated roster board). A NEW file, so this is an added row that funds
// nothing; set at the landed line count, headroom 0, same convention as above.
['.claude/skills/pm-dispatch/references/project-forms.md', 54],
// The app-vs-platform boundary — the deciding question (could this be written
// from the metadata alone, with no knowledge of this company?), the publication
// test (one consumer is a use, two is a contract) and the two anti-patterns.
Expand Down Expand Up @@ -2133,6 +2139,7 @@ export const MAX_TABLE_ROW_BYTES = new Map([
['.claude/skills/pm-dispatch/references/triage-duties.md', 0],
['.claude/skills/pm-dispatch/references/execution-duties.md', 0],
['.claude/skills/pm-dispatch/references/filing-gate.md', 0],
['.claude/skills/pm-dispatch/references/project-forms.md', 0],
['.claude/skills/pm-dispatch/references/app-platform-boundary.md', 219],
['.claude/skills/pm-dispatch/references/lanes/server.md', 0],
['.claude/skills/pm-dispatch/references/lanes/devx.md', 0],
Expand Down
Loading