跳到正文

headcount

一个按公司组织的 agent 组织——一位首席执行官之下是十六个可独立安装的部门和 172 个技能:每个技能是一个 Markdown 目录,请求与它的描述匹配时自己加载;同一棵树既能装进 Claude Code,也能装进 ChatGPT,因为两边只有清单不同;而那 184 份真正裁决问题、而不是给答案做装饰的外部权威——监管机构、标准组织、成文法——就放在它们所服务的技能旁边,每一条都标着 agent 拿它可以做什么。

Screenshot of headcount
编辑截图, 1 Oct 2026headcount ↗

这是什么

一个按公司的方式组织的技能库。一位首席执行官之下是十六个部门——安全、法务与风险、财务、人事、市场、IT 运维、项目管理办公室等等——每个部门都是一个可以单独安装的插件,于是一个项目只加载它需要的职能。部门里共有 172 个技能,以 department:skill 寻址,名字因此永不冲突;每个技能是一个目录,里面的 SKILL.md 在请求与它的描述匹配时加载。其中两个部门是评审类:安全和法务与风险审查其他部门做出来的东西,自己不持有任何写入面,向首席执行官汇报而不向它们所审查的职能汇报,而且它们提出的阻塞性发现不能被被审查的部门推翻。同一棵树既能通过插件市场装进 Claude Code,也能通过另一套清单装进 ChatGPT 与 Codex,因为技能文件完全一样,只有清单不同。凡是答案由外部权威裁决的地方,技能就在自己的 references/ 里带上要对照的来源——150 个技能共 184 条,每条都标着可以拿它做什么。MIT 许可,全部文字都是为这个仓库写的。

谁做的按账号资料,他是亚特兰大的一位 CIO,公司一栏写着 Drummond IT、Keel GRC 和 vibld;账号 2015 年注册,57 个公开仓库,62 个关注者。他是这个仓库唯一的人类作者:87 次提交里有 44 次出自他,分散在两个身份下——39 次用 cbrock84@gmail.com,5 次用 chris.brock@drummond.com,后者在 GitHub 上归属另一个账号 chris-brock;另有 42 次由 Claude 以 noreply@anthropic.com 署名提交。剩下的 1 次来自一位外部贡献者;36 次提交带共同作者尾注,其中 33 条写的是 Claude Opus 5。

它是怎么搭起来的

组成 · 6

把组织架构图表达成一棵文件树,分发单位是可安装的部门。每个部门是一个插件目录,里面为每种宿主工具各放一份清单,共用同一棵 skills 树;每个技能是一个目录而不是一个文件,这样它的支撑文档能跟着它一起走。因为读者能看到的东西——README、组织架构图、社交卡片、每个技能的来源清单、Codex 清单、描述这个仓库给 agent 看的那个文件——几乎都由树生成,并且带着一个「有漂移就让构建失败」的检查模式,所以技能之外几乎没有手工维护的正文,检查本身就是这个产品真正的界面。两条原则把它撑住。凡是治理 agent 的东西都经过机器校验:写入面地图、authority 列、章程花名册、来源许可词表和引用图,都是让 CI 失败,而不是靠自觉。而凡是两个部门之间必须划出的边界,都会写进那些本来会撞车的技能里——因为此前促成几次合并的重叠,正是那些没有被写下来的。

plugins/——十六个部门
产品本体。每个部门一份 351–527 字节的 .claude-plugin/plugin.json 和一份 692–978 字节的 .codex-plugin/plugin.json,压在共用的一棵 skills/ 树上。市场部最大,38 个文件 96 KB;其次是高管层 16 个文件 88 KB、技术部 32 个 77 KB、IT 运维 25 个 74 KB、财务 28 个 74 KB;客户体验与公司战略最小,分别 13 和 12 个文件。一个技能是一个目录,里面是 SKILL.md 加一个可选的 references/,生成的来源清单就落在那里。技能正文从 solution-exploration 的 1,915 字节到 chief-executive 的 8,921 字节。
.claude/agents/ 与 docs/AGENT-SURFACES.md
二十一份章程,每个已安装的花名册行一份。每份写明这个 agent 为什么存在、它的写入面(列出可写与可读路径,并注明它从不提交)、这块写入面意味着什么标准、能证明它的验证方式,以及一份六段的返回契约,最后一段是留给编排者的开放问题。它们挂靠的那张地图列出十九个 builder 和两个永久只读的 reviewer,连同类别、安装状态和 authority,再下面是每块写入面的 glob 区块,以及「新增一个部门必须在同一次改动里加上它的花名册行、写入面区块和章程」这条规则。
sources/
十个文件共 115 KB,按主题域各一个,每个文件是一串 TOML 条目,把一条外部权威映射到它所裁决答案的那些技能上,每条都带可达性核验日期和许可类别。sources/README.md 放着格式与封闭的许可词表。从这里生成到各技能的来源清单是生成物、不是维护对象,而这个生成器是唯一会往部门 references/ 目录里写东西的角色。
scripts/,以及住在技能里的那个守卫
十三个文件、131 KB。六个生成器:组织架构图 33 KB、行业包发射器 22 KB、README 18 KB、来源目录 11 KB、Codex 移植 9.8 KB、社交卡片 9.2 KB;另有七个检查:那个零依赖、17 KB 的 Node 写入面守卫(作为 agent-hierarchy 的一部分放在高管层技能里),加上美式英语拼写、Never 区块一致性、来源出处、技能引用、来源目录和技能 frontmatter。check-all.sh 像 CI 那样把十四个检查一起跑一遍,而 CI 调用的就是同一个脚本。
docs/ 与 docs/assets/
八个文档 310 KB,领头的是 82 KB、39 条编号决策的决策日志和 48 KB 的来源目录,然后是跨部门的实战情境、上手指南、agent 写入面地图,以及一份生成的 Markdown 组织架构图,旁边还有 151 KB 的交互式架构图和 GitHub Pages 入口页。资源目录占 3.5 MB:明暗两版架构图、一张社交预览图,以及三个终端风格的演示短片(22 秒、26 秒、26 秒),每个都标着「示意性演示」,免得有人把它当成真实会话的录屏。
verticals/ 与 .github/workflows/
两个行业包——工业和基础教育——每个是一份 vertical.toml 加行业专属技能,以及会被拼接进核心技能 ## Never 区块之前的上下文片段。它们向被 gitignore 的 dist/ 发射独立仓库。两个工作流分别是 607 和 744 字节:一个在每次推送和 pull request 上以只读权限跑完整检查脚本,另一个按每周定时抓取目录里每一条链接,并且刻意独立于逐次推送的那个工作流。

取舍,以及它替代了什么

  • 以部门作为可安装单位 替代 一个扁平的技能目录

    所有技能描述都会占上下文,所以在技能过百之后,选择其实是「只帮人整理仓库的目录结构」和「会改变加载内容的目录结构」之间的选择。把部门做成独立插件,一个项目就只取它用得到的职能;而后来的一个限制让这种切分从「更整洁」变成「必须」:某个宿主给技能描述的总预算是约八千字符,而整个目录约五万,把全部一次装进去在那一边不只是更吵,而是根本不行。

  • 把搬进来的每个技能都重写一遍 替代 把上游声明保留在 licenses 目录里

    要拿来安装的插件市场就是分发,所以那份声明要求会跟着每一个被复制的技能走。77 个 vendored 技能连同数据集和字体二进制一起被删掉、能力重新撰写;12 个来自共享文件夹、完全没有许可的技能得到同样处理——没有条款比宽松许可更弱,而不是更强。代价被记下来而不是藏起来:一个打包进来的样式与配色数据库无法重新撰写,于是设计类技能改为教方法、不再附数据集,日志把这称作一次真实的能力削减,且是明知故犯。而这件事第一次执行得很糟,由此留下一条常设规则:在替换品与原件比对过之前,绝不删除原件。

  • 按独占写入面切分 agent,并在旁边加一列 authority 替代 按主题切分,并把「能不能落地」留给当时驱动的人

    按主题切分没有可校验的边界——一个管 SEO、一个管 UI,最后都落进同一个文件,而且谁都没错——而一串独占的 glob 可以被一个在 CI 里跑的脚本证明互不重叠。authority 这一列是后来加的,因为那张地图回答了 agent 能在哪里写,却从没回答这次写能不能不经决定就落地,实践里那件事一直是每次派活时凭记忆定的。它刻意以同一个取值居多:把每一行都设成需要放行,那只是装点门面;被设成需要放行的两行,是那种一旦出错会溢出自己目录的角色。

  • 一份带封闭许可词表的引用目录 替代 把公有领域的材料 vendored 进来,好让技能离线可用

    实时数据的快照在拍下第二天就已经错了,而一个指针在法规变更的那一刻就是最新的。真正承重的是许可类别而不是链接:一位专业人士必须引用的东西大多并不开放,所以词表有十个取值,其中三个专门用来标记那些常被当作可自由使用的来源——可免费阅读、需账号、需购买。把一个条目错判成开放,等于邀请 agent 复制它本来只被允许引用的原文,所以两种类别之间拿不准时,规则是取更严格的那个。

  • 在同一棵树上再放一套清单 替代 为另一种宿主工具发射一个独立仓库

    两种宿主读的是同一种技能格式——frontmatter、正文、可选的 scripts、references 与 assets——所以根本没有内容需要移植,只有清单放在不同的位置。发射第二个仓库被明确写文否掉:行业包发射的是另一套目录,而这个做法会把同样的 172 个技能发两遍,让同一份内容有两个安装源,并且任何一处修复都得先重新发射,才能到达一半用户。别人贡献的一份树副本也因同一个理由被拒,而它在被评审时已经落后一个月。

依据docs/DECISION-LOG.md(81,522 字符、39 条编号决策,每条都有字母选项与记录在案的结论)、docs/AGENT-SURFACES.md、docs/SOURCES.md(184 条来源、覆盖 150 个技能,含许可分布)、sources/README.md、sources/security.toml、docs/GETTING-STARTED.md、README.md 与 AGENTS.md、security 在两种宿主下的插件清单、.claude-plugin/marketplace.json、plugins/executive/skills/agent-hierarchy/SKILL.md、scripts/check-all.sh、repo-meta/sources/verticals 三份章程、两个工作流文件,以及完整的 446 个文件树及其体积。

制作过程

6 个阶段
  1. 01

    技能库先于仓库存在,而它的大部分必须重写

    仓库建于 2026-08-28,而它最早的几次提交搬进来的是已经存在的东西:在作者自己名下的仓库里找到五个 MIT 许可的技能合集,共 106 个技能,取用其中 84 个——其余 22 个作为重复、被取代的版本或带作者个人色彩的内容跳过——另有 12 个来自一个共享 Drive 文件夹,既没有许可证也没有任何条款说明。这两批后来都得处理掉。这个仓库是要被安装的插件市场,安装就是分发,所以受影响的技能全部重写,原件、它们的 references、打包进来的数据集、字体二进制和许可证文件一并删除——77 个 vendored 技能,然后是那 12 个 Drive 技能,再然后是第一轮重写取代掉的那些。代价被写下来而不是含糊过去:被删掉的一部分是数据而不是文字,包括一个样式与配色数据库和一批授权字体;它们无法重新撰写,于是替代的设计类技能改为教方法、不再附带数据集,日志把这称为「a real capability reduction, accepted knowingly」。同一次事故还留下一条常设规则:在替换品与原件比对过之前,绝不删除原件——第一次执行时是先删原件、再照着一份名称与描述清单写替代品,覆盖度从未与真实内容核对。后来那 100 个被取代的技能从 git 历史里恢复出来逐个与后继者比对,六个丢了实际内容被补回,还有一个无处安放的能力单独成了一个技能。仓库现在有 1,745 个星、263 个 fork、11 个 watcher 和 3 个未关闭条目。

  2. 02

    十六个部门,以及把每一对之间的边界写进技能里

    形状很早就定了,之后又被自己质疑了三周。所有技能描述都会加载进上下文,所以在技能数过百之后,作者选了把部门做成各自独立的插件,而不是一个扁平的技能目录,随后又把它扩展成一套 C 级高管层级。接下来的过程就是一部「线画在哪里」的记录。安全独立成部、拥有自己的 CISO 章程,而不是作为一组技能挂在技术部下,理由是:把 CISO 建模在 CTO 之下,恰好复刻了这个角色本来要防止的冲突。一个空壳的行政部被拆进法务与风险和首席执行官办公室,然后被删掉,而不是留作占位。没人主动要求的三个部门——客户体验、数据与分析、公司战略——在一次覆盖度检查指出「支持」是目录里最显眼的缺失之后,一起以各五个技能建成。项目管理从运营部里拿出来,变成向首席运营官汇报的项目管理办公室,因为仓库的立身规则是按独占写入面切分,而项目管理是一个横跨全部十六个部门的主题。公司 IT 从产品工程里拆出来,而促成这次提问的四处重叠被写进了技能本身:访问策略归谁、入职转岗离职流程的执行归谁、恢复目标归谁、技术性恢复归谁。覆盖度随后不再靠人看,而是拿 BLS 标准职业分类对照,查出八处缺口——其中六项是分类法点名而目录里确实没有的职能,包括税务与采购。

  3. 03

    按写入面切分 agent,以及在第一条轴不够用之后加上的第二条

    executive:agent-hierarchy 就是这套方法:它取自一个约二十四个 agent、跨 1,500 个文件的 monorepo 实现,在这里以一个技能的形式发布,带一份 415 行的 playbook、三份起始花名册、一段填空式引导提示词,以及一个可执行的守卫。它的立身规则是按独占写入面切分,而不是按主题切分——按主题切分没有可校验的边界:一个管 SEO、一个管 UI,最后两个都改同一个 token 文件,而且谁都没错。两个类别是:builder,只在自己那一块写入面里编辑、永不提交;reviewer,永久只读、可以始终并行。编排者两者都不是,它是唯一的提交者。这张地图放在一个文件里,即 docs/AGENT-SURFACES.md:每个 agent 一行,每块写入面一段 glob,每条路径只有一个主人;agent-guard.mjs check 会在一条路径被认领两次或无人认领时让 CI 失败。.claude/agents/ 下有二十一份章程,每个已安装的行一份;有行无章程、或有章程无行,同样会让这个检查失败。第二条轴之所以存在,是因为第一条只回答了 agent 可以在哪里写,从来没回答这次写能不能不经决定就落地——而在实践里,那件事一直是每次派活时凭记忆决定的。authority 有三个取值:派出去直接收结果,落地前先把 diff 摆出来,或者根本不要主动派。二十一行里有十九行取第一个值,作者为此辩护而不是拿它装点门面,因为一个部门只会在自己的插件目录里写东西;两个例外,一个是掌握检查脚本与生成器的 agent,一个是掌握行业包的 agent——后者的产出会发到别人的仓库里。

  4. 04

    一份引用目录,以及一个决定 agent 能做什么的许可类别

    目录里的每条外部权威都是一个条目:id、标题、发布者、https 链接、许可类别、司法辖区、一句说明它裁决的是什么问题、它服务哪些技能、可选的机器可读形式,以及链接最后一次核验的日期。sources/security.toml 的第一条是 NIST SP 800-53 Rev. 5——美国联邦系统据以评估的控制目录,也是 FedRAMP 和许多私有框架继承的词汇表——按美国政府作品归为公有领域,于是 agent 可以引用它,条目旁边还记着 OSCAL 内容仓库,一条来源同时服务三个安全技能。同一个文件里,ISO/IEC 27001 被标成需要购买,后面跟着由此而来的指令:只引条款号,绝不引原文。这个区分就是整个功能的意义。允许的许可类别有十种,检查器强制这份清单;其中三种——可免费阅读、需账号登录、需购买——存在的唯一目的,就是标记那些最常被误以为可以自由使用的来源,而两种类别之间拿不准时的取舍规则是取更严格的那个。184 条来源里,125 条可引用,其余只能读和标注。收录标准比听起来更严:一条来源只有在它能裁决两位有能力的从业者之间的分歧时才算数,于是相当多的技能刻意不带任何来源——因为「怎么写出好文案」「怎么做一次发现访谈」并没有谁在裁决。带来源的技能必须带 ## Sources 小节,带这个小节的技能必须有来源,双向都会检查;链接按自己的排期每周抓取一次,而不是每次推送都抓——发布方短暂宕机,不该成为让一个不相干的 pull request 失败的理由。目录同样对「没有技能可服务」的来源关闭:一个 issue 里存着以 HIPAA 隐私规则为首的医疗行业候选权威,等着一个还不存在的技能。

  5. 05

    四十二次由模型署名的提交,以及一次改动一个 pull request

    仓库的 87 次提交里,42 次由 Claude 署名——用的是 Anthropic 的邮箱,归属一个名为 claude 的 GitHub 账号;作者自己的 44 次分散在两个身份下,而每一次合并提交都由他署名。内容提交的分支名直接说明自己在做什么——claude/source-curation、claude/c-level-depth、claude/never-and-tools、claude/demo-videos——而其中一个长命分支名 claude/import-agents-drive-gmci3h 被八次合并复用,作者在一条 pull request 正文里解释了原因:那一次会话的分支策略只允许一条开发分支,于是两次本可分开评审的提交走同一条分支,而不是去推第二条。记录的单位是 pull request 而不是提交,它们的正文读起来像工程报告——按文件说明改了什么、验证了什么、留下什么没做,以及这项工作引出了哪一条编号决策。最清楚的例子来自外部:一位读完全部 172 个技能的贡献者按行号、对着一个指名提交报出九处缺陷,作者逐条对着树核实后给出处置——两处作为机械修复合并,其余用一个新的检查来回答:凡是 ## Never 区块内的多条规则在句末标点上不一致,就让构建失败;此前他否掉了别人建议的检查方式,因为那会在当前树上报出 59 处命中,而其中几乎全是刻意的行文风格。第二个外部 pull request 是把一位独立的安全评审员装进可安装的安全部门,自 2026-09-21 起一直开着,其作者在 2026-09-28 留言请求评审。第三个用 358 个文件把目录打包给另一种 agent 工具、还配了图形安装器,换来的是一份详细回复,逐条列出落地前必须改掉的东西。

  6. 06

    既没有 release 也没有 tag:版本号住在十六份清单里

    这个仓库没有 release、没有 tag,也没有 changelog。分发方式是让插件市场指向 main,而树里仅有的版本号是按部门给的:十六个插件在 Claude Code 与 Codex 两份清单里都写着 1.0.0,市场自己也是 1.0.0。在整份记录里,唯一一次版本变动是别人提出来的——那个外部安全评审 pull request 把这个部门从 1.0.0 提到 1.1.0,并重新生成旁边的 Codex 清单。日志里还留着早期那种「到底验证了什么」的诚实:2026-08-29 把仓库公开,补上的是「文档里写的安装命令除了作者本人谁都装不上」这个缺口;同一条记录也写明,那次会话里没有任何办法对一台干净客户端跑一遍市场安装,所以清单只验证到「能解析、且引用的每条路径都存在」为止。之后的节奏是一波冲刺加一段停顿。87 次提交集中在二十一天里——8 月 36 次、9 月 51 次,最新一次在 2026-09-17——然后 main 安静了两周,那个外部 pull request 一直等着。仓库没有归档,队列在提交停下之后仍在动,所以本记录把项目定成 active 而不是 maintained。唯一还在动的那部分机器,是它自己分发的形状:工业和基础教育两个行业包,从一份配置加核心生成独立仓库,当一个行业包要求带来一个新部门时连部门一起生成;而且这套输出的验证方式,是写进一个临时目录、再跑生成出来的那个仓库自己的检查,而不是把产物提交进仓库。

相关档案

全部档案 →