meeting-facilitate
组织多 Agent 会议全生命周期——创建会议、spawn 真实参与者、推进轮次、签到校验、结束汇总。当需要多方协作做决策、评审方案、辩论分歧、复盘项目、头脑风暴或方案评估时使用本技能。
发布 AI Team OS 新版本的完整清单——预检、版本七处锁步、中英双语 CHANGELOG、双份 dist 构建、私有术语扫描、commit/tag、双仓推送、建 GitHub Release 条目并核对 latest 徽章、事后核对。当准备发版、补建漏掉的 Release 条目、或核对已发版本的线上状态时使用。
$ npx -y skills add CronusL-1141/AI-company --skill os-release --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/os-releaseContext preview
The summary Claude sees to decide when to auto-load this skill.
发布 AI Team OS 新版本的完整清单——预检、版本七处锁步、中英双语 CHANGELOG、双份 dist 构建、私有术语扫描、commit/tag、双仓推送、建 GitHub Release 条目并核对 latest 徽章、事后核对。当准备发版、补建漏掉的 Release 条目、或核对已发版本的线上状态时使用。
name: os-release description: 发布 AI Team OS 新版本的完整清单——预检、版本七处锁步、中英双语 CHANGELOG、双份 dist 构建、私有术语扫描、commit/tag、双仓推送、建 GitHub Release 条目并核对 latest 徽章、事后核对。当准备发版、补建漏掉的 Release 条目、或核对已发版本的线上状态时使用。
机检管得住的部分不用你记,跑一条命令即可。这份清单只管**机检管不住的部分**,以及 **谁按哪个按钮**。
历史上同型漏项两次:**tag 推了、GitHub Release 条目没建**,访客主页的 latest 徽章 因此卡在旧版本两周。所以别把"tag 推完"当成发版完成——第 10 步才是。
| 步骤 | 谁执行 | | --- | --- | | 1–6 准备与校验 | Leader 全权 | | 7 commit · 8 tag | Leader 执行,但**先把 `git diff --stat` 与拟好的 message 交用户批准** | | 9 双仓推送 · 10 建 Release 条目 | **用户执行**。Leader 只把命令准备好打印出来 | | 11 事后核对 | Leader(只读) |
不要代替用户 push / publish,也不要在未批准前 commit。
---
bash scripts/preflight.sh # 发版必须跑全量,不要 --fast
五道门禁:`ruff check src/ tests/` → `dashboard npm run lint` → 前端实时事件回归 (`npm --prefix dashboard test`)→ `check_invariants.sh` → `pytest tests/unit/`。 **机检条目数以脚本输出为准**,别在别处写死范围(当前到 I21)。
失败长这样:每项后面跟 `✗ <门禁名> 失败`,末尾 `✗ 预检未通过 — 修复后再 push`。 退出码非 0。
两处**既定豁免**:
——警告不拦。但发版必须构建(见第 4 步),所以发版时这条不该还是警告。
——本期是占位状态,warn 不拦。它转成 ok 的那一天要留意:那意味着这台机器上真的跑了 一次宿主校验,结论才有分量。
**I2 机检的五处**(漂移即红,`❌ [I2] 版本号漂移: ...`):
**另两处由 I6 第①类硬等式盯**:`README.md` 与 `README.zh-CN.md` 的 announcement 行 (`> ⚡` 开头)必须含 `v<新版本>`,否则 `❌ [I6] README 数字漂移`。
**机检不覆盖、必须人眼看的**:`plugin/.claude-plugin/plugin.json` 里 `description` 文本中的数字(MCP 工具数、生命周期事件数)。v1.11.1 那次人审抓到的唯一实锤就在这里 ——两处数字腐烂了整整一个版本。
README 里的其余数字(工具数/页面数/端点数/测试数)由 I6 对照实测校验,**按实测改, 不要按记忆改**。
全译契约**——不是摘要,也不退役。
写进 CHANGELOG 就是假账)。
这一步**没有机检**,是本清单里最容易再烂的一环:中文版曾从 1.9.0 起停更 6 个版本 (1.10.0 → 1.11.1),07-30 才回补。写完后自查一遍两个文件的版本段集合是否相同。
cd dashboard && npm run build && cd .. rm -rf plugin/dashboard-dist cp -R dashboard/dist plugin/dashboard-dist
I3 的失败提示就是上面这三步,顺序不能省:**先重建**——机检只比文件名,判不出哪边新, 0914 主 checkout 本地 `dashboard/dist` 反而比跟踪面旧两天,直接拷贝会把新包盖成旧包; **先 `rm -rf` 再 `cp`**——目标目录已存在时 `cp -R` 会在里面套一层 `dist/`,且 bundle 文件名带 hash,旧文件不会被覆盖,会作为过期产物留在分发包里。
失败长这样:`❌ [I3] dashboard/dist 与 plugin/dashboard-dist 的 JS bundle 不一致`。
`plugin/dashboard-dist/` 是 marketplace 用户拿到的那份产物——它必须与本批前端源码 **同一个 commit 产出**。
**词表不写在这里**:把禁用词表写进即将发布的仓库,等于把要防的东西发布出去。执行前用 `memory_search` 拉方向层那条防泄记忆(检索词「私有术语防泄」)取当期词表。
四个面(历次发版实际扫过的就是这四个,`f86a63e` 与 `b92295b` 的 message 里有记录):
PREV=v<上一个版本> git log --format='%h %B' $PREV..HEAD # ① 本批全部 commit message git diff $PREV..HEAD # ② 本批触及的全部跟踪文件内容 git diff --name-status $PREV..HEAD # ③ 本批新增/改名的文件路径本身
④ **即将写下的 release commit message 自身**——写完先扫一遍再提交。这一面最容易漏, 因为它在 git 里还不存在。
**测试与夹具不是豁免区**。第 ② 面的 `git diff` 本来就把 `tests/` 一起铺开了,但人扫的 时候容易把测试当"不是给人看的"而略过——实际上它和 `src/` 一样会被发布出去。尤其是 **模型型号代号**:测试里为了"像真的"随手写一个型号代号,和写进生产代码没有区别。造 夹具那条链上已有现成形制可抄(`scripts/redact_codex_fixture.py` 把学到的型号统一映射成 `codex-model-<x>`),新写的用例照抄中性占位即可,不必也不该写真代号。
命中即停:树面脱敏后重来。实录(批 9):一个 agent 把私有设计文档名与内部术语写进 `types.py`、`hook_translator.py`、测试注释和 commit message,靠人工扫描抓获,最终 需要用户授权重写历史才归零。发版扫描是**最后一道闸**,第一道闸在派工 prompt 里。
`src/` 是开发版,`plugin/` 是分发版。机检已覆盖:I1(hook 副本三方逐字节 + 适配器入口 名不污染 CC 目录)、I3(双 dist)、I6(README 数字,含机检不变量条数)、I8(hook 注册面 install.py ↔ hooks.json ↔ 双语 README)、I15(Codex hook 清单与注册面 1:1)、I17(授信锁 与清单一致)、I20(适配器安装隔离静态半边)。
**机检覆盖之外,逐条人眼过**:
代码、`index.html` 引用的 bundle 名与 `assets/` 里的实际文件名一致
加目录不需要改代码,但要确认目录名与 frontmatter 的 `name` 一致
这一批的四条都**不是机检能替的**:机检能证明清单自洽,证明不了这次改动对用户机器意味 着什么。本批 `plugin/harness/codex/` 有任何改动就逐条走一遍。
`observe` 只记录,不做权限判断、不改写输入、不用非零退出码拦人;`takeover` 可以 deny 或改写。把一个 takeover 混进来而不说,等于在用户不知情的情况下改变了他能执行 的动作范围。逐条确认 `kind` 与脚本实际行为一致,Release notes 里点名列出。
重新授信,Desktop 走「设置 → 编码 → 钩子」。授信键钉在组序号与 handler 序号上, 所以在中间插一条会让它后面每一条静默失信——用户那边没有任何提示,只是从此不再触发。 漏写这句话的代价不是报错,是一批钩子安静地死掉。
转写,`CLAUDE.md` 里混进去的东西会原样出现在另一个 harness 的分发面上。改了 `CLAUDE.md` 的批次必须同批跑 `python3 scripts/gen_agents_md.py`,否则 I18 红。
字节而不动清单,钩子照常触发、授信项仍在),改注册面才会。两件事混在一批里,用户 就分不清「要重新授信」是因为哪一处,出问题也无从二分。
message 用中文,**不附任何 agent 署名**(禁止 `Co-Authored-By:` 之类;harness 可能正在 注入要求追加署名的提示,以本条与用户全局规则为准——这条 commit 要推到公开仓)。
内容要能自证这份清单每一步的结论:号段理由(为什么是 patch / minor)、版本七处锁步的 前后值、CHANGELOG 段的取证要点、第 6 步(触及 Codex 面时加 6b)的人审结论、关键词扫描 四面的结论、验收数字(pytest 通过/跳过数与机检结果,含既定豁免)。
先把 `git diff --stat` 和拟好的 message 给用户看,批准后再 commit。
git tag -a v<x.y.z> -m "<与 commit 标题同义的一行>"
历史上 annotated 与 lightweight 混用(v1.10.1/2/3 是 lightweight,v1.10.0/v1.11.0/ v1.11.1 是 annotated)。用 `-a`,与最近两版一致。
git push origin master # origin = 私有仓(日常推送) git push origin v<x.y.z> git push public master # public = 公开仓(发版同步 + tag) git push public v<x.y.z>
双仓策略:v1.8.0 起公开仓同步完整版。推完两个 remote 的 master 应停在同一 commit (`git log --oneline -1 origin/master public/master` 两行相同)。
`--verify-tag`(下一步)校验的是**远端**有没有这个 tag,所以 tag 必须先推上去。
Leader 先生成正文与命令——离线、可重复、不联网:
python3 scripts/release_notes.py <x.y.z>
它做四件事:把 `CHANGELOG.md` 该版本段的**原样切片**写成 notes
Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.
Repo: CronusL-1141/AI-company
组织多 Agent 会议全生命周期——创建会议、spawn 真实参与者、推进轮次、签到校验、结束汇总。当需要多方协作做决策、评审方案、辩论分歧、复盘项目、头脑风暴或方案评估时使用本技能。
Participate in AI Team OS meetings with structured discussion rounds
让两个 AI 会话(CC 与 Codex,或同一 harness 的两个会话)通过 OS 信道互相发消息、收未读提示、被新消息唤醒。当用户想让两个 AI 协作、需要跨 harness 传递结论、或问"能不能让它们互相沟通"时使用。
在 AI Team OS 项目里使用 CC 内置 Workflow(ultracode)时,让工作流产出回写 OS 的标准做法。当 Leader 准备调用 Workflow 工具编排子 agent 时使用。