## Before / After: skill inventory governance ### Before 用户说:`列一下我全局,和各个 BU 的 skill,哪些不该在全局就移到对应 BU,顺便告诉我 phone-use/use-my-phone 分别什么时候安装的。` agent 需要临时执行多轮目录扫描: | 问题 | 临时处理 | 风险 | | --- | --- | --- | | 全局有哪些 skill | `ls ~/.codex/skills` | 看不到来源、安装时间、迁移历史 | | BU 有哪些 skill | 逐个扫 `~/Documents/*-bu/.agents/skills` | 容易漏掉 workspace lock 或 symlink | | 是否可删除 | 靠人工判断名字和旧对话 | 可能删掉仍被某 BU 依赖的 skill | | 是否能触发 | 临时跑 `npx skills list` 或 `codex debug prompt-input` | 缺少固定验收口径 | | 外部依赖 | 读 `SKILL.md` 才发现 | Gstack/bun/helper 这类依赖容易后置暴露 | ### After 用户说同样的话时,先触发 `skill-inventory-governance`: ```bash python /Users/bytedance/.codex/skills/skill-inventory-governance/scripts/audit_skills.py --write --format md,json ``` 输出一张可审计表: | skill | scope | source | installed_at | deps | validation | recommended_action | | --- | --- | --- | --- | --- | --- | --- | | phone-use | global | local packaged skill | 2026-04-29 | `idevice_id`, `xcrun` | `codex debug prompt-input` | keep global | | office-hours | product-bu | `garrytan/gstack` | 2026-04-30 | `~/.claude/skills/gstack`, `bun optional` | `npx skills list` + helper check | keep product-bu only | | Alibaba Cloud GPU | source BU + learning-bu | existing skill copy | unknown until seeded | cloud CLI/API env | smoke command TBD | register + copy to learning-bu | | thinking skill | info-bu or global | local edit request | unknown until seeded | none | trigger phrase test | update trigger notes | agent 再给迁移计划: 1. `office-hours` 不迁入全局,只保持 `product-bu/.agents/skills/office-hours`,并记录 Gstack runtime 依赖。 2. `phone-use` 保持用户级,因为它是跨工作区设备自动化能力。 3. `thinking skill` 更新 `trigger_notes`:用户说“思考一下”时,不只深呼吸,而要抽象成“这个信息本质是什么经典问题的变体”。 4. 阿里云 GPU skill 复制到 `learning-bu/.agents/skills` 后,补一条 registry 记录和 smoke test 命令。 这样同类请求从“逐个目录问删改挪”升级为“先审计、再计划、后执行、可回滚”。