Agents md maintenance
徐望瀚日常工作中使用和维护的可复用 agent skills。
npx -y skills add black-yt/skills --skill agents-md-maintenanceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
当需要创建、整理、拆分或维护仓库中的 AGENTS.md、CLAUDE.md 或同类默认加载 agent 操作指南时使用;覆盖常驻上下文边界、*.local/ 按需拆分、公开/私有跟踪策略、同步校验和安全编辑。
SKILL.md
19.3 KB, as published. Nobody here has run it
AGENTS.md 维护
核心原则
AGENTS.md是 agent 每次进入仓库时都会读取的操作指南,不是历史记录仓库。- 目标是提供足够共享上下文,让 agent 在不浪费上下文窗口的情况下,知道“动手前必须知道什么”。
- 长流程、历史经验、大命令块、环境细节和低频说明放入
AGENTS.local/或其他 topic docs。 - 公开仓库中不要写入 secrets、真实凭据、私有路径、内部主机、私有服务地址或个人本地状态。
- 编辑时保留已有硬规则;如果规则过时,要明确迁移或替换,不要静默删除。
- 每个对话都应该默认知道的项目背景、总览、硬规则和安全边界必须直接写在
AGENTS.md,不要拆成AGENTS.local/中的单独 overview 文件。 - 主
AGENTS.md必须提供整个项目或工作空间的全局描述,让 agent 能从整体角度理解这个仓库是做什么的、核心目标是什么、主要结构如何组织、关键产物和维护边界是什么。
适用范围
- 这个 skill 主要面向 Codex 这类会自动加载
AGENTS.md的智能体操作指南。 - 其他智能体可能使用不同入口文件名,例如 Claude Code 常用
CLAUDE.md;文件名不同,但维护逻辑相同。 - 维护非
AGENTS.md入口时,把规则中的AGENTS.md/AGENTS.local/等价替换为对应文件和目录,例如CLAUDE.md/CLAUDE.local/。 - 核心目标不是固定文件名,而是在默认加载的入口文件中提供足够全局上下文和硬规则,同时把低频细节拆到 local 目录按需读取,避免默认加载文档浪费上下文窗口。
- 如果采用
CLAUDE.md、CLAUDE.local/或其他同类命名,也要同步维护.gitignore、canonical copy、导航表和文件路径引用。
推荐结构
优先采用两层结构,但 AGENTS.local/ 下的文件不要写死。拆分应由项目实际内容决定,不要套固定模板。
AGENTS.md
AGENTS.local/
01_<detailed-topic>.md
02_<detailed-topic>.md
...
如果入口文件不是 AGENTS.md,保持同样结构语义,只替换文件名:
CLAUDE.md
CLAUDE.local/
01_<detailed-topic>.md
02_<detailed-topic>.md
...
AGENTS.md:中等长度入口,放必须常驻的规则和索引。AGENTS.local/:详细规则、长工作流、历史教训、命令示例和项目维护笔记。AGENTS.local/应该是一组平行的细节章节,不应该包含“总览”“项目概览”这类默认上下文文件。- 示例中的
...表示按项目实际内容增减文件;不要让模型误以为只能按示例数量或示例命名拆分。 - 复制示例到真实
AGENTS.md时,必须把...替换成真实文件行或删除,不要把省略行当成实际导航项。 AGENTS.local/的拆分目标是把语义相同或相近的章节放在一起,并降低常驻上下文压力;不是为了追求固定文件数或固定命名。- 不要拆得很碎。只有当内容明显属于不同任务场景、单文件过长、或会导致模型上下文压力时,才拆成多个文件。
- 同一项目可以只有 1-3 个
AGENTS.local/文件;复杂项目可以更多,但每个文件都应有清晰语义边界。 AGENTS.local/的文件导航必须写在AGENTS.md里,不要依赖AGENTS.local/README.md;因为AGENTS.md会被自动加载,agent 应该一开始就知道什么时候读哪个详细文件。AGENTS.md中导航AGENTS.local/文件时必须使用表格,列为:序号 / 文件内容概览 / 关键词 / 触发时机 / 文件路径,其中文件路径放在最后一列。文件内容概览、关键词和触发时机都必须非常具体。目标是让 agent 不打开文件也能判断“是否必须读这个文件”,避免靠猜测、反复ls或反复打开文件寻找。文件内容概览必须写清实际覆盖的模块、文件名、命令、边界和排除项;不要只写“项目概览”“工作流”“命令示例”这类粗略标签。关键词和触发时机要覆盖足够多的真实检索词和任务场景;过少会导致模型查阅低效。- 如果仓库已经有等价目录命名,优先沿用现有约定,不强行重命名。
文件导航表写法
AGENTS.md 中的 AGENTS.local/ 导航表必须让 agent 一眼知道“该读哪个文件、为什么读、何时必须读”,不能让 agent 靠猜测、反复 ls、反复打开文件来定位信息。
表头固定为:
| 序号 | 文件内容概览 | 关键词 | 触发时机 | 文件路径 |
| --- | --- | --- | --- | --- |
各列写法:
- 序号。 使用稳定整数,按推荐阅读顺序排列;不要用字母、emoji 或会频繁变化的优先级标签。表格序号要和文件名前缀一致,例如表格写
01,文件名也用01_...。 - 文件内容概览。 写 1-2 个具体短句,说明这个文件实际包含什么、解决什么边界问题、涉及哪些关键文件/命令/系统,以及不覆盖什么;不要只写“项目概览”“工作流”“详细说明”。
- 关键词。 写足够多的检索词,通常至少 6-12 项;包含同义词、命令名、文件名、目录名、库名、错误类型、任务阶段和风险词。关键词用逗号分隔,不要替代内容概览。
- 触发时机。 写多个具体条件,通常至少 3 个;优先使用“修改 X 前必须读取”“运行 Y 前必须读取”“排查 Z 时必须读取”“同步 A 到 B 前必须读取”;用分号分隔,避免只写“需要时读取”“默认读取”或过宽泛的描述。
- 文件路径。 使用相对路径,放最后一列,并用反引号包住;移动、重命名或拆分文件后必须同步更新路径。
最小示例。这个示例只展示表格写法,不要求所有项目都使用这些文件名:
| 序号 | 文件内容概览 | 关键词 | 触发时机 | 文件路径 |
| --- | --- | --- | --- | --- |
| 01 | 解释仓库源码、生成物、配置、数据、文档和静态资源目录的职责边界,并标明哪些路径可以改、哪些路径只能读、哪些路径由工具生成不能手写。 | layout、ownership、generated files、do-not-edit、config、data、docs、assets、scripts、build output、resource path、path safety | 新增/移动/删除目录前;修改资源路径前;编辑生成物前;调整构建产物位置前;不确定某个路径是否可改时必须读取 | `AGENTS.local/01_repository_layout_and_boundaries.md` |
| 02 | 记录开发、测试、构建、发布、回滚和排错的项目级流程,包含常用命令、执行顺序、前置条件、失败处理和哪些命令不能直接运行。 | workflows、commands、test、lint、build、release、rollback、CI、debug、dry-run、pitfalls、failure handling | 执行多步维护前;运行复杂命令前;发布/回滚前;修 CI 或测试失败前;排查环境、依赖、权限或构建异常前必须读取 | `AGENTS.local/02_workflows_validation_and_release.md` |
| ... | 按项目实际语义继续增减,不要为了凑固定数量而拆分。 | ... | ... | `AGENTS.local/...` |
AGENTS.md 应该包含
- 项目或工作空间的整体描述:这个仓库做什么、服务谁、核心目标是什么、主要产物是什么。
- 主要结构的全局说明:核心目录、关键文件、展示层、生成物、配置和外部资源各自承担什么职责。
- 主要目录、服务、子系统及职责边界。
- 高优先级安全规则和数据完整性规则。
- 不能误改的文件、目录、生成物或外部资源。
- Git、commit、push、release 规则。
- 测试、构建、lint、验证期望。
- 子系统边界和交互限制。
- 以表格写清楚什么时候读取
AGENTS.local/中的每个详细文件。 - 指向详细文档的短链接,而不是复制完整内容。
推荐长度:约 80-200 行。太短容易漏规则,太长会挤占任务上下文。
AGENTS.md 不应该包含
- 长历史 incident log。
- 大段命令块和完整迁移流程。
- 一次性 debug 记录。
- 低频 API 细节。
- benchmark、模型、部署的完整配置。
- README 内容的重复副本。
- secrets、key、token、credential。
- 本机端口、私有 endpoint、真实运行 key 名称组合、临时模型服务状态等低频本地配置。
- 临时本地文件、个人机器状态或未确认可公开的信息。
这些内容应迁移到 AGENTS.local/ 的 topic 文件,或放入私有 context 文档。
AGENTS.local/ 应该包含
- 完整开发工作流。
- import/export、部署、release、CI 等细节流程。
- 大命令示例和可复制脚本片段。
- 数据格式文档。
- 常见坑、排错历史和长期维护笔记。
- 只在特定任务中需要读取的环境说明。
判断规则:如果一条说明不是每个会话都必须知道,就优先放到 AGENTS.local/。
反向判断:如果一条说明是 agent 每次进入仓库都应该默认知道的背景、硬规则、安全边界或总览,就必须留在 AGENTS.md,即使它会让 AGENTS.md 略微变长。
拆分规则:
- 按语义合并。 目录职责和生成物边界通常可以放一起;开发流程和验证命令通常可以放一起;风险、排错和历史教训通常可以放一起。
- 按触发场景拆分。 如果两个章节总是被同一类任务同时读取,就不要拆成两个文件。
- 按上下文压力拆分。 只有当文件过长、模板太多、命令块太大或任务场景明显不同,才拆出新文件。
- 避免碎片化。 不要为了对应固定编号创建很多几十行的小文件;每个文件都应该值得被单独读取。
- 禁止二级总览。 不要创建
overview.md、project_overview.md、scope.md这类只是承载默认背景的 local 文件;这些内容应在AGENTS.md中默认加载。
Git 跟踪策略
- 公开仓库。 通常建议
.gitignore中忽略AGENTS.md和AGENTS.local/,并在私有 context 仓库、内部文档或安全知识库中维护 canonical copy。 - 私有仓库。 默认跟踪
AGENTS.md和AGENTS.local/,这样团队 agent 能共享同一套维护规则。 - 例外情况。 如果用户明确要求忽略,或
AGENTS.local/含私有机器路径、内部命令、部署细节、凭据、token、临时本地状态等不应入库内容,再把对应文件或目录加入.gitignore。 - 如果项目仓库中的 agent 指南被忽略,必须有别处作为 source of truth,不能只存在某个开发者本地工作树。
Canonical Copy 同步
- 如果
AGENTS.md或AGENTS.local/被主仓库 ignore,修改完成后只能报告需要同步 canonical copy。 - 除非用户明确要求“同步 canonical copy / commit / push”,否则不要自动写入、提交或推送 canonical 仓库。
- 同步前必须先确认目标路径、列出将写入的文件,并用
diff、rsync --dry-run或等价检查确认写入范围正确。 - 同步前必须确认不会把
AGENTS.local/文件误写到上级目录、错误仓库或错误分支。
rsync 适合把 ignored 的 AGENTS.md 和 AGENTS.local/ 增量同步到 canonical copy,但必须先 dry-run。源路径末尾斜杠含义不同:
AGENTS.local:复制整个目录本身,目标下会出现AGENTS.local/。AGENTS.local/:复制目录里面的内容,适合同步到已存在的DEST/AGENTS.local/。
推荐流程:
# 同步单个入口文件
rsync -a --dry-run AGENTS.md [CANONICAL_ROOT]/[REPO_NAME]/AGENTS.md
rsync -a AGENTS.md [CANONICAL_ROOT]/[REPO_NAME]/AGENTS.md
# 同步 AGENTS.local 目录内容,先预演再执行
rsync -a --delete --dry-run AGENTS.local/ [CANONICAL_ROOT]/[REPO_NAME]/AGENTS.local/
rsync -a --delete AGENTS.local/ [CANONICAL_ROOT]/[REPO_NAME]/AGENTS.local/
安全规则:
- 使用
--delete前必须先跑--dry-run。 - 先确认
[CANONICAL_ROOT]、[REPO_NAME]和目标目录都正确,再去掉--dry-run。 - 需要显示过程时加
-v;大目录可加-P;需要排除缓存时用--exclude '__pycache__/' --exclude '*.pyc'。 - 不要把
AGENTS.local/同步到 canonical 根目录本身,除非目标就是专门为该仓库准备的目录。
编辑工作流
- 先读现有
AGENTS.md、.gitignore和已存在的AGENTS.local/topic 文件。 - 判断改动属于常驻规则还是低频细节。
- 常驻规则写入
AGENTS.md,保持短句和稳定标题。 - 长解释、命令、历史记录写入
AGENTS.local/对应 topic。 - 如果规则改名或迁移,更新所有旧引用。
- 检查没有 secrets、真实凭据和不应公开的本地环境信息。
- 运行
git diff --check,并按仓库规则做必要测试。 - 如果指南是 ignored 文件,只报告 canonical copy 需要同步;同步、commit 或 push 必须等用户明确授权。
拆分过大的 AGENTS.md
当 AGENTS.md 过长、难导航或包含大量低频细节时:
- 创建
AGENTS.local/。 - 按项目实际语义拆出少量 Markdown 文件,把相近章节放在一起。
- 用中等长度入口替换原
AGENTS.md。 - 确保原有信息没有丢失,只是迁移。
- 在
AGENTS.md中添加完整索引和每个详细文件的读取时机;导航表列为序号 / 文件内容概览 / 关键词 / 触发时机 / 文件路径,且后三列必须足够具体,不能让 agent 靠猜。 - 按公开/私有策略更新
.gitignore。
拆分后必须做结构审计:
AGENTS.local/文件是否从01_开始编号,且表格序号与文件名前缀一致。- 是否没有
00_、overview、project_overview、scope、README.md这类二级总览文件。 - 导航表列是否为
序号 / 文件内容概览 / 关键词 / 触发时机 / 文件路径。 文件内容概览是否具体说明文件里的真实内容、关键文件/命令/边界和不覆盖项。关键词是否包含足够多的同义词、命令名、目录名、错误类型和任务场景,而不是 2-3 个泛词。触发时机是否写成多个“修改/运行/排查/同步 X 前必须读取”这类可执行条件。AGENTS.md行数是否大致在80-200行;超出时要判断是否仍然属于常驻上下文。git diff --check是否通过。
AGENTS.md 模板
# [REPOSITORY_NAME] 的 AGENTS.md 指南
## 项目概览
- [用一段话说明这个项目或工作空间做什么、服务谁、核心目标是什么。]
- [说明主要产物、运行方式、部署目标、数据/模型/文档等关键对象。]
- [说明主要目录和子系统如何组织,以及 agent 最需要保护或避免破坏的东西。]
## 仓库结构
- `[path]/`:[职责和所有权边界。]
- `[path]/`:[职责和所有权边界。]
- `[path]/`:[生成物、禁止编辑范围或安全编辑规则。]
## 安全规则
- 不要提交 secrets、tokens、credentials、私有服务 URL 或本地机器路径。
- 不要覆盖用户改动或生成产物,除非任务明确要求。
- 未经明确同意,不要修改共享环境、生产配置或长期运行服务。
- [项目特定硬规则。]
## 编辑规则
- 优先做小而聚焦的改动。
- 除非有明确理由,否则保留已有约定。
- 保持生成文件、源码和文档的边界清晰。
- 如果规则变化,更新所有引用旧规则的位置。
## 构建与测试
- [主要测试命令。]
- [lint、typecheck 或 build 命令。]
- [测试昂贵时的 smoke test。]
- [测试无法运行时的处理方式。]
## Git 规则
- 编辑前和最终回复前检查 `git status --short`。
- 不要回滚无关的用户改动。
- 只有用户明确要求时才 commit 或 push。
- commit 或 push 前运行 `git diff --check`。
## 深入指南
| 序号 | 文件内容概览 | 关键词 | 触发时机 | 文件路径 |
| --- | --- | --- | --- | --- |
| 01 | 解释仓库源码、生成物、配置、数据、文档和静态资源目录的职责边界,并标明哪些路径可以改、哪些路径只能读、哪些路径由工具生成不能手写。 | layout、ownership、generated files、do-not-edit、config、data、docs、assets、scripts、build output、resource path、path safety | 新增/移动/删除目录前;修改资源路径前;编辑生成物前;调整构建产物位置前;不确定某个路径是否可改时必须读取 | `AGENTS.local/01_repository_layout_and_boundaries.md` |
| 02 | 记录开发、测试、构建、发布、回滚和排错的项目级流程,包含常用命令、执行顺序、前置条件、失败处理和哪些命令不能直接运行。 | workflows、commands、test、lint、build、release、rollback、CI、debug、dry-run、pitfalls、failure handling | 执行多步维护前;运行复杂命令前;发布/回滚前;修 CI 或测试失败前;排查环境、依赖、权限或构建异常前必须读取 | `AGENTS.local/02_workflows_validation_and_release.md` |
| ... | 按项目实际语义继续增减,不要为了凑固定数量而拆分。 | ... | ... | `AGENTS.local/...` |
如果某个文件不存在,不要假设其内容;按当前任务需要创建或更新,并保持 `AGENTS.md` 中的索引同步。
## 指令优先级
1. 安全和数据完整性规则。
2. 仓库特定约束。
3. 构建、测试和验证要求。
4. 工作流偏好。
5. 历史 notes。
拆分校验
拆分大文件时,先确认内容是迁移而不是删除。可用下面脚本检查拆分后的文件集合是否稳定。files 列表必须按当前项目实际拆分结果填写,不要照抄示例文件名:
python3 - <<'PY'
from pathlib import Path
import hashlib
files = [
"01_repository_layout_and_boundaries.md",
"02_workflows_validation_and_release.md",
# ...
]
text = "".join((Path("AGENTS.local") / f).read_text(encoding="utf-8") for f in files)
print("lines:", len(text.splitlines()))
print("sha256:", hashlib.sha256(text.encode("utf-8")).hexdigest())
PY
这个脚本不能替代人工检查语义、标题和引用,只用于确认拆分文件集合没有意外变化。
优先级规则
AGENTS.md 中应明确 instruction priority:
- 安全和数据完整性。
- 仓库特定约束。
- 构建、测试、验证要求。
- 工作流偏好。
- 历史 notes。
agent 遇到冲突时,应优先遵守高优先级规则。
Review 清单
AGENTS.md回答了“动手前必须知道什么”。AGENTS.md提供了项目或工作空间的全局描述,能让 agent 理解项目目标、主要结构、关键产物和维护边界。AGENTS.local/回答了“做某类任务前还应读什么”。- 导航表的
文件内容概览 / 关键词 / 触发时机足够具体,模型不需要靠猜测或反复打开文件定位信息。 - 没有把低频细节塞进常驻上下文。
- 没有丢失已有硬规则或历史教训。
- 没有 secrets、真实凭据、私有路径或未确认可公开的信息。
- 公开/私有仓库的 Git 跟踪策略明确。
- ignored 指南有 canonical copy 和同步说明。
- ignored 指南没有在用户授权前被自动同步、commit 或 push。
- 标题稳定、层级不深、规则可扫描。
git diff --check通过。