Prhub

#6391 [misc] fix: use directory-symlink layout for shared skills

原始 PR 作者 tongyx361 合并时间 2026-05-18 18:29 文件变更 11 提交数 1 评论 3 代码增减 +9 / -5

执行摘要

将共享 agent skills 从文件符号链接改为目录符号链接

根据 PR 描述,此变更旨在将共享 agent skills 从文件符号链接转为目录符号链接,使得在技能旁边添加支持文件时能自动传递到每个框架,无需逐个文件配置。这是对 #5846(最初的 .agent/skills 引入)的后续改进,解决文件级符号链接需要手动更新每个框架的问题。

此 PR 解决了技能同步的痛点,设计决策值得关注:目录符号链接与文件符号链接的取舍。建议阅读 editing-agent-instructions.md 的更新以了解新约定,并在后续贡献中注意遵循。如果发现任何链接断裂,应及时修复。

讨论亮点

代码审查机器人 gemini-code-assist[bot] 提出了三个高优先级问题:

  • 链接断裂风险:移动文件到子目录会破坏 SKILL.md 中相对路径引用(例如 ../../../.github/...),需要更新引用路径。
  • 框架自定义受限:目录符号链接使得无法为特定框架添加自定义文件,与之前允许框架特定内容的原则相悖,建议改为目录中包含 symlinked SKILL.md 的方式。
  • 文档歧义:关于 Claude Code 对两种符号链接布局的支持描述不清晰,需要明言两者皆支持。
    以上问题均未在 PR 中得到回应或解决,但 PR 已合并。

实现拆解

  1. 移动规范技能文件:将 .agent/skills/issue.md 重命名为 .agent/skills/issue/SKILL.md,同理处理 pr.md。文件内容保持不变(100% 相似重命名),但位置变为子目录,形成技能包结构。
  2. 替换符号链接:删除 .claude/skills/issue.md.claude/skills/pr.md 文件级符号链接,并分别创建目录符号链接 .claude/skills/issue.claude/skills/pr,指向 ../../.agent/skills/issue../../.agent/skills/pr。对 .codex/skills/ 下的对应文件做相同处理。目录符号链接使得整个技能目录(包括未来可能新增的辅助文件)自动对每个框架可见。
  3. 更新贡献文档:在 docs/contributing/editing-agent-instructions.md 中新增技能布局约定,说明 canonical 技能应放在 .agent/skills/<skill>/SKILL.md,各框架的目录应使用目录符号链接。同时更新了 Last updated 日期。
文件 模块 状态 重要度
docs/contributing/editing-agent-instructions.md 贡献指南 modified 2.22
.agent/skills/issue/SKILL.md 核心技能 renamed 1.75
.claude/skills/issue Claude 集成 added 2.24
.claude/skills/issue.md Claude 集成 removed 1.62

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

移动文件破坏相对 Markdown 链接 正确性

gemini-code-assist[bot] 指出将 `SKILL.md` 移动到 `.agent/skills/<name>/` 子目录后,文件内已有的相对路径引用(如指向 `.github/ISSUE_TEMPLATE/`)会解析到错误位置,需要更新为正确的相对路径或绝对路径。

结论:PR 中未回复此评论,亦未发现相应链接更新。但 PR 已合并,存在潜在链接断裂风险。 · unresolved

目录符号链接限制框架自定义 设计

gemini-code-assist[bot] 指出新的目录符号链接要求与之前允许框架添加特定内容的通用原则相悖。因为整个目录被链接,无法单独为某个框架添加文件。建议改为在目录中包含 symlinked `SKILL.md` 的方式,以保留自定义能力。

结论:PR 中未回复,设计决策坚持使用目录符号链接,放弃了框架自定义的可能性。 · unresolved

文档中 Claude Code 支持描述模糊 documentation

gemini-code-assist[bot] 认为文档中 'Claude Code discovers the file-level symlink layout in current versions' 表述不清,难以判断 Claude Code 是否同时支持两种布局。建议修改为明确说明两者都支持。

结论:PR 中未采纳建议,文档保持原样。 · unresolved

风险与影响

  1. 链接断裂SKILL.md 中如果存在指向父目录的相对 Markdown 链接,例如链接到 .github/ISSUE_TEMPLATE/,由于文件位置从 .agent/skills/ 变更为 .agent/skills/issue/,路径将需要调整(可能需要从 ../../.github/... 变为 ../../../.github/...)。
  2. 框架自定义限制:未来如果某个框架需要为特定技能增加专属文件(如 Claude 专用的配置文件),目录符号链接会使得该文件也出现在其他框架的技能目录中,造成混乱。
  3. 文档表述模糊:更新后的文档描述可能导致贡献者混淆关于技能布局的正确做法。

用户影响:对消费代理运行时(如 Claude Code, Codex)无行为影响,它们仍能发现技能。系统影响:技能文件结构改变,但所有引用通过符号链接保持。团队影响:贡献者必须遵循新的目录包约定,在 .agent/skills/ 下以 <skill>/SKILL.md 方式组织技能,并且各框架的技能目录必须保持为目录符号链接。

broken-markdown-links customization-restriction doc-ambiguity

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论