在 AI 辅助编程工具日益普及的今天,如何让 AI 真正理解你的工程上下文、如何将个人积累的工程经验转化为可复用的技能资产,成为提升开发效率的关键。Matt Pocock 在其开源项目 mattpocock/skills 中公开了自己日常使用的完整 .claude 目录结构,为工程知识库的可移植化管理提供了一个值得深入研究的范本。本文以此为切入点,结合 Superpowers 等同类框架的设计思路,系统探讨如何构建、组织并分发可复用的 Agentic Skills。
从个人目录到可移植技能资产
传统上,开发者对 AI 的指导往往停留在会话层面 —— 每次启动新会话都需要重新解释项目背景、编码规范和设计决策。这种方式不仅效率低下,更难以积累工程经验。.claude 目录的出现改变了这一局面:它以文件系统结构化地存放提示词、规则、技能定义和项目上下文,使 AI 在每次会话启动时都能自动获得统一的引导。
但仅有项目级别的目录还不够。当你在多个项目间切换时,相同类型的工程实践(如 TDD 循环、代码审查流程、调试方法论)需要重复定义。Matt Pocock 的解决方案是将这些可复用的技能抽取为独立的包,通过 skills.sh 安装器实现跨项目分发。这意味着你可以在个人 ~/.claude 目录下维护一套核心技能库,每个新项目按需选择性地引入。
这种设计的核心价值在于可移植性与组合性。可移植性保证了技能可以在不同模型、不同编码代理(如 Claude Code、Codex CLI、Cursor)间通用;组合性则允许你根据项目需求挑选和搭配技能,而非接受一个封闭的方法论框架。正如 Matt 在项目说明中强调的,这些技能被设计为 “小型、易适配且可组合”,它们基于数十年的工程实践经验,而非特定模型的专有优化。
.claude 目录的层级架构
理解 .claude 目录的组织逻辑是构建可复用技能的基础。从功能边界上看,该目录呈现为三层嵌套结构:全局层、用户层与项目层。
全局层位于 ~/.claude,存放适用于所有项目的通用配置、技能和命令。这一层定义了开发者的个人工作风格 —— 偏好的代码组织方式、常用的工作流模板、全局性的工程原则。当你在任何目录下启动 AI 助手时,全局层的配置都会作为基准上下文被加载。
用户层通过 CLAUDE.local.md 实现个人覆盖。团队共享的 CLAUDE.md 定义了统一的工程规范,而个人可以在 CLAUDE.local.md 中加入自己偏好的快捷方式、调试习惯或个性化注释规则。当两层规则冲突时,个人覆盖层优先,这保证了团队协作与个人效率的平衡。
项目层位于 ./.claude,存放特定于当前代码库的上下文、规则和技能。这一层的内容通常会被提交到版本控制系统,成为团队共享的工程知识。例如,在项目根目录下创建 CLAUDE.md 描述系统架构、模块划分和设计决策,AI 在进入该项目时会自动加载这些信息。
这种分层设计的实际意义在于它实现了关注点分离:全局层处理通用技能、项目层处理领域特定知识、个人层处理偏好差异。当你要在新项目中复用积累时,只需将对应的全局技能导入新项目的 .claude/skills 目录下即可。
技能的文件系统组织方式
Agentic Skills 的物理形态是一个文件夹,其中至少包含一个 SKILL.md 文件作为技能定义的主文档。以 Matt Pocock 的技能库为例,每个技能目录下都遵循统一的文件组织规范:
skills/engineering/tdd/
├── SKILL.md # 技能定义(必需)
├── tests/
│ ├── example.test.ts
│ └── patterns.md # 辅助参考资源
└── scripts/
└── validate.sh # 可选的支持脚本
SKILL.md 的内部结构同样经过精心设计。文件头部包含 YAML frontmatter,声明技能的基本元数据:名称、描述、允许使用的工具列表、适用的上下文条件、推荐模型和触发方式。正文部分则采用渐进式披露结构 —— 先用一段简洁的执行指令让 AI 快速上手,再在需要时展开详细的参考资料和最佳实践。
这种设计反映了认知负荷管理的工程思维:技能的 immediate 使用路径应该是清晰无歧义的,而完整的上下文信息则作为深层资源按需获取。对于技能的调用方而言,不需要完整阅读每个技能的完整文档,只需在特定场景下触发即可获得对应引导。
在技能类型划分上,Matt Pocock 的技能库采用了 Engineering、Productivity 和 Misc 三大分类。Engineering 类技能专注于代码工作,包括 TDD 循环、调试诊断、代码审查、架构改进等核心工程实践。Productivity 类技能处理通用工作流,如协作交接、会议压缩、技能编写等。Misc 类则是偶尔使用的工具集,如 Git 防护钩子或代码迁移脚本。这种分类方式的优势在于它以使用频率为导向组织技能 —— 高频技能直接可见,低频技能按需探索。
核心技能的工程方法论解析
理解单个技能的设计哲学比罗列技能清单更有价值。Matt Pocock 在其技能库中埋入了几条清晰的工程方法论线索。
首先是对齐优先原则。在 /grill-me 和 /grill-with-docs 这两个最受欢迎的技能中,一个核心设计意图是在开始编码之前确保开发者与 AI 对齐真正要解决的问题。传统的 AI 辅助编程常见失败模式是:开发者以为 AI 理解了自己的意图,但 AI 给出的实现却完全不同。通过 “拷问会话”—— 让 AI 不断提问直到所有分支决策树都被解析 —— 可以在真正开始编码前消除这种对齐偏差。
其次是共享语言机制。在 /grill-with-docs 中,除了对齐功能外,还包含一个自动构建共享术语表的工作流。项目中常用的缩写、业务概念和技术术语被提取到一个 CONTEXT.md 文档中,后续所有交互都使用这些统一术语。这意味着 AI 不再需要猜测某个缩写词的含义,而是能够精确解码项目特有的领域语言。这种机制对 token 消耗也有直接影响 —— 使用领域特定术语替换冗长描述可以将一次会话的 token 消耗降低约 75%(参见 /caveman 技能的数据)。
第三是反馈循环论。在 /tdd 和 /diagnose 技能中,一个共同的设计模式是强制执行特定的反馈循环。TDD 技能要求 AI 必须先写失败的测试用例,再编写最小化代码使测试通过,最后才进行重构。诊断技能则遵循 “复现→最小化→假设→验证→修复→回归测试” 的六阶段循环。这些技能的本质是将成熟的工程实践编码为可执行的流程约束,让 AI 在缺乏直觉的情况下仍能遵循工程纪律。
第四是架构守护意识。/improve-codebase-architecture 技能的出现反映了 Matt 对 AI 加速软件熵增的警觉:AI 可以大幅提升编码速度,但同时也会加速代码库的腐化。该技能定期扫描代码库,识别可以加深模块化的机会,帮助开发者在日常迭代中持续维护架构健康。这是一种将 Kent Beck "每天投资系统设计" 理念自动化的尝试。
技能的版本管理与分发机制
技能库的生命周期管理是另一个实践层面的关键问题。Matt Pocock 通过 npx skills@latest add mattpocock/skills 这一简洁的入口实现了技能的版本化管理。该命令调用 skills.sh 安装器,交互式地引导用户选择要引入的技能以及目标编码代理。
这种分发机制的设计选择值得注意。首先,它基于 npm registry 进行版本发布,这意味着技能的版本控制遵循标准的语义化版本规则,可以方便地追踪变更历史和回滚。其次,它支持为不同的编码代理安装不同的技能子集 —— 某些技能可能是 Claude Code 特有的,某些则与模型无关,这种选择性安装避免了功能冗余。
安装完成后,/setup-matt-pocock-skills 技能负责初始化项目级别的配置工作。它会询问你的问题追踪系统偏好(GitHub Issues、Linear 或本地文件)、分类标签定义以及文档存储位置,然后生成对应的配置文件。这些配置作为其他技能的运行时依赖被引用,确保技能链的一致性。
对于技能开发者而言,编写新技能应遵循特定的模板规范。Matt Pocock 在 /write-a-skill 技能中详细描述了技能编写的方法论,包括如何设计 frontmatter、如何组织渐进式披露结构、如何包含测试用例以验证技能的有效性。这种规范化的技能创作流程保证了技能库的质量一致性。
实践建议:从零构建你的技能资产库
基于上述分析,可以提炼出一套从零开始构建个人技能资产库的实践路径。
第一步是从项目 CLAUDE.md 开始。无论你计划构建多复杂的技能体系,都应该先用一份简洁的文档描述你当前项目的架构、模块划分和核心设计决策。这份文档是后续所有技能的基础上下文,也是你与 AI 对齐的第一步。将这份文档放在项目根目录,确保每次会话都能自动加载。
第二步是识别高价值重复模式。回顾你日常工作中的重复性工程任务 —— 是否每次调试都要重复类似的思考流程?是否每次开始新功能都要重新解释项目的术语体系?这些重复模式是技能抽象的最佳候选。优先处理频率最高的模式,逐步积累技能资产。
第三步是采用统一的技能结构模板。每个技能至少包含 SKILL.md 主文件,采用一致的 frontmatter 字段命名和章节结构。这不仅降低了后续维护成本,也使得技能之间可以相互引用和组合。在技能的正文部分,设计清晰的 immediate 指令(可直接执行)和 optional 的深层资源(按需探索)。
第四步是通过版本控制管理团队级技能。将你团队共享的 CLAUDE.md、规则集和核心技能目录提交到代码仓库的 .claude/ 目录下。这些内容应该对团队可见并可审计。个人偏好则通过 CLAUDE.local.md 隔离,不进入版本控制。
第五步是定期回顾和精简。技能的寿命并非无限 —— 随着项目演进,某些技能可能不再适用,某些技能可能需要拆分或合并。每隔几周运行一次 /improve-codebase-architecture 不仅对代码库有益,对技能库同样适用。删除过时的技能与添加新技能同样重要。
技术参数速查
在具体实施时,以下参数和阈值可作为初始参考。技能的 immediate 指令段落建议控制在 150 词以内,确保 AI 在第一屏就能获得执行路径。参考资源文档可以更长,但应使用折叠或渐进式结构避免信息过载。共享术语表(CONTEXT.md)建议按字母顺序组织关键词,每条术语定义不超过两句话。TDD 技能的循环建议以 2-5 分钟的任务粒度为标准,避免单次任务耗时过长导致反馈延迟。
在目录深度控制上,建议技能相关的辅助文件嵌套不超过两层,以 skills/[category]/[skill-name]/ 为标准结构。版本发布的更新节奏建议跟随项目实际需求,但 major 版本变更应包含 changelog 说明兼容性影响。
资料来源
本文分析基于 Matt Pocock 的开源技能库 github.com/mattpocock/skills 及 Jesse Vincent 的 Agentic Skills 框架 github.com/obra/superpowers。目录结构的层级定义参考了 Claude Code 官方文档关于 .claude 配置目录的说明。
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。