1. 项目概述:一个为AI编码助手量身打造的本地技能库
如果你和我一样,日常开发已经离不开像Cursor、Claude Code、Codex这类AI编码助手,那你肯定也遇到过类似的困扰:每次开启一个新项目,都得重新“教”AI助手一遍这个项目需要哪些特定技能——比如怎么配置React开发环境、怎么跑E2E测试、怎么进行系统化调试。这个过程不仅重复低效,而且不同项目之间AI助手的“知识”和“能力”还会互相干扰,导致它给出的建议越来越“泛”,越来越不精准。
maxpetrusenko/skills这个项目,就是为了解决这个痛点而生的。它本质上是一个精心整理的、本地的AI助手技能注册表,或者说是一个“技能超市”。这个仓库里打包了超过1300个可复用的技能,覆盖了从前端开发、后端API、测试调试到安全部署、产品文档等几乎全栈开发的方方面面。但它的核心设计理念,也是我认为最值得称道的一点,是**“按需加载,项目隔离”**。
它不像一些全局的AI助手插件,一股脑把所有能力都塞给你。相反,它通过一个清单文件(manifest)来声明当前项目具体需要哪些技能,然后通过脚本将这些技能精准地安装到你的项目目录下(比如.cursor/skills或.agents/skills里)。这样一来,你的AI助手在这个项目中就只“掌握”与该项目相关的技能,回答和建议会变得极其聚焦和准确。同时,由于技能是安装在项目本地的,彻底避免了不同项目间技能配置的“漂移”和污染。
这个项目非常适合那些已经在深度使用AI编码助手、希望将其能力与具体项目工作流深度绑定的开发者。无论你是想为你的React项目定制一套前端开发技能包,还是为你的微服务项目配置一套完整的API测试和部署技能,这个技能库都能提供一套标准化、可复现的解决方案。接下来,我将带你深入拆解它的设计思路、核心用法,并分享我在实际集成过程中踩过的坑和总结的经验。
2. 核心设计思路与架构解析
2.1 为什么是“本地技能注册表”?
在深入代码之前,我们得先理解这个项目要解决的根本问题。当前主流的AI编码助手,其“智能”很大程度上依赖于我们提供给它的上下文(Context)。我们通过聊天、上传文件、提供文档来“教育”它。但这种方式是临时的、非结构化的。skills项目的设计者洞察到了一个关键点:将AI助手的能力“技能化”和“模块化”。
每个技能(Skill)都是一个独立的、自包含的模块,有明确的输入、输出、使用方法和最佳实践。例如,一个名为react-dev的技能,里面可能包含了如何搭建React项目、常用的组件模式、状态管理库的选择与配置、性能优化技巧等结构化知识。通过将这些知识打包成技能,我们就能像管理代码依赖一样,管理AI助手的能力依赖。
项目隔离与可复现性是另一个核心考量。想象一下,你在项目A中教会了AI助手如何使用GraphQL,在项目B(一个传统的REST API项目)中,它可能还会时不时地冒出一些GraphQL的建议,这反而成了干扰。skills通过将技能安装到项目特定的隐藏目录(如.cursor/skills),确保了每个项目的AI助手上下文都是纯净的、专属的。结合清单文件(manifest)和锁文件(lockfile),你可以像package.json和package-lock.json一样,精确地记录和复现一个项目所需的AI技能栈,这对于团队协作和CI/CD环境尤为重要。
2.2 技能的组织结构与元数据
理解技能是如何被组织的,是有效使用这个仓库的关键。仓库的根目录下有一个skills/文件夹,所有1300多个技能都按名称归类在这里。
skills/ └── react-dev/ # 技能名称 ├── SKILL.md # **核心元数据文件** ├── README.md # 详细说明文档 ├── references/ # 外部参考链接、官方文档摘要 ├── scripts/ # 可执行的安装、验证脚本 ├── templates/ # 代码模板、片段 └── assets/ # 图片、示意图等静态资源其中,SKILL.md文件是每个技能的“身份证”和“说明书”。它通常采用一种结构化的格式(比如YAML frontmatter)来定义技能的元数据。虽然项目文档里没有给出标准模板,但根据其设计理念,一个典型的SKILL.md很可能包含以下信息:
- 技能ID与名称:唯一标识符和人类可读名称。
- 描述与目标:这个技能是干什么的?能解决什么问题?
- 适用领域:例如
@domains: frontend, react。这是后面按领域加载技能的关键。 - 目标AI平台:这个技能主要优化给 Codex、Claude Code 还是 Cursor 使用?因为不同AI助手的上下文窗口、提示工程最佳实践可能略有不同。
- 依赖技能:这个技能是否依赖其他基础技能?(例如,一个
nextjs-optimization技能可能依赖react-dev)。 - 核心提示词:提供给AI助手的核心指令和上下文。
- 使用示例:展示如何向AI助手提问以触发此技能。
- 版本与兼容性:技能的版本号,以及与其兼容的AI助手版本范围。
这种结构化的组织方式,使得技能的发现、筛选和管理变得非常高效。你可以通过脚本快速搜索所有包含“testing”领域的技能,或者找出所有适用于“cursor”平台的技能。
2.3 多目标AI平台的支持策略
这个仓库支持将技能部署到四种主流的环境:codex、claude、cursor和通用的agents。这体现了设计者的务实态度,承认了当前生态的碎片化。
实现机制:加载脚本load-skills.sh会根据--targets参数,将技能文件复制到项目目录下对应的子目录中:
codex-><project>/.codex/skills/claude-><project>/.claude/skills/cursor-><project>/.cursor/skills/agents-><project>/.agents/skills/
这里有一个非常重要的细节:不同的AI助手读取这些技能的方式可能不同。有些可能是直接读取目录下的Markdown文件作为上下文,有些可能需要一个索引文件(比如一个index.md列出所有技能链接)。原仓库的脚本很可能处理了这种差异,它可能为每个目标平台生成特定格式的入口文件。在实际使用中,你需要查阅目标AI助手的文档,了解它如何加载本地自定义上下文或知识库,以确保skills仓库生成的目录结构能被正确识别。
实操心得:平台适配的坑我最初在Cursor里使用时就遇到了问题。Cursor对于
.cursor目录下的内容有特定的加载逻辑。直接复制SKILL.md过去可能不生效。后来我发现,需要确保技能文件以.md结尾,并且内容格式是Cursor偏好的一种“提示词片段”风格。有时,你可能需要轻微调整skills/目录下源文件的格式,或者修改load-skills.sh脚本,在复制过程中做一个简单的格式转换。这是一个需要根据你主要使用的AI助手进行微调的地方。
3. 核心工作流详解:从清单到加载
3.1 创建任务清单:声明你的技能需求
使用这个技能库的第一步,也是最重要的一步,就是创建“任务清单”(Manifest)。这就像是你项目的package.json,它明确声明了本项目需要AI助手具备哪些能力。
清单文件通常放在项目根目录的.agents/文件夹下(你也可以放在其他地方,但需要与加载脚本的参数对应)。推荐使用三种清单,对应不同的优先级:
skills.must.txt:必须技能。没有这些技能,项目核心功能就无法完成。加载脚本在--strict-manifest模式下会强制检查这些技能是否全部可用。skills.good.txt:推荐技能。有了这些技能,开发体验会更好,但不是强制的。skills.task.txt:任务特定技能。针对当前正在进行的特定任务(比如“重构用户认证模块”)临时需要的技能。
一个清单文件的内容非常简单,就是纯文本列表:
# 示例:一个全栈项目的技能清单 (skills.task.txt) @domains: frontend, backend, testing, security react-dev nextjs-framework tailwind-integration nodejs-api-express rest-api-design postgresql-orm jest-unit-testing playwright-e2e security-basics dependency-audit第一行@domains: ...是领域标签。这是一个非常巧妙的设计。它允许你以领域为维度来批量选择技能。当你在清单中写上@domains: frontend,加载脚本可以自动去技能库中寻找所有标记了frontend领域的技能,并将其加入加载队列。这在你还不熟悉具体技能名称,但知道项目方向时特别有用。
注意事项:清单的维护清单文件应该纳入版本控制(如Git)。这确保了团队每个成员、以及CI/CD环境都能获得完全一致的AI助手能力配置。随着项目阶段变化,你应该像更新依赖一样更新清单文件。例如,在开发初期你可能需要很多“脚手架”和“设计”类技能,而在维护期则可能需要更多“调试”和“重构”类技能。
3.2 执行技能加载:load-skills.sh脚本深度剖析
有了清单,下一步就是调用核心脚本./scripts/load-skills.sh来执行加载。这个脚本的参数很多,理解每个参数的作用对于灵活使用至关重要。
./scripts/load-skills.sh \ --project /path/to/your-project \ # 目标项目绝对路径 --skills-repo /path/to/skills-repo \ # 技能仓库克隆的绝对路径 --codex-home /path/to/your-project/.codex \ # Codex主目录(某些平台需要) --targets cursor,agents \ # 要安装到的目标平台 --manifest /path/to/your-project/.agents/skills.task.txt \ # 清单文件路径 --lockfile /path/to/your-project/.agents/skills.lock.json \ # 锁文件路径(用于记录精确版本) --strict-manifest \ # 严格模式:清单中所有技能必须找到 --require-lock \ # 要求存在锁文件,否则报错(用于生产环境) --require-domain-coverage \ # 要求清单中声明的每个领域至少有一个技能被加载 --ensure-gitignore \ # 自动确保技能目录被添加到.gitignore --force # 强制覆盖已存在的技能文件我们来拆解几个关键参数和其背后的逻辑:
--lockfile与依赖锁定:这是实现可复现性的关键。当脚本成功加载技能后,它会生成或更新一个锁文件(如skills.lock.json)。这个文件记录了本次加载的精确映射:清单中的每个技能条目,最终对应到了技能仓库里的哪个具体目录、该目录当前的Git Commit SHA是多少。这样,即使技能仓库后续更新了,你仍然可以通过锁文件恢复到这次加载的确切状态,完美避免了“在我机器上是好的”这类问题。--strict-manifest与--require-domain-coverage:这两个是质量保证开关。--strict-manifest确保你的清单里写的每一个技能名都能在仓库里找到,如果找不到就报错,防止你误以为加载了某个技能但实际上没有。--require-domain-coverage则检查领域标签,确保@domains: frontend, testing中的frontend和testing至少各有一个技能被成功加载。这能有效防止因拼写错误或领域标签过时而导致的技能加载不全。--ensure-gitignore:一个贴心的安全选项。技能文件是从外部仓库复制过来的,通常不应该提交到你项目的代码库中(以免造成冗余和混淆)。这个参数会自动在项目的.gitignore文件中添加类似.cursor/skills/、.agents/skills/的条目,防止误提交。
脚本内部工作流程推测:
- 解析参数与清单:读取命令行参数,定位清单文件,解析出技能名列表和领域标签。
- 技能解析与匹配:遍历
skills-repo下的skills/目录。对于清单中的每个技能名,寻找同名文件夹。对于每个领域标签,寻找所有SKILL.md中包含该领域标签的技能文件夹。 - 依赖与冲突检查:(可能)检查技能之间的依赖关系,并解决同名冲突。
- 锁文件处理:如果提供了
--lockfile,读取现有锁文件,进行差异对比。如果使用了--require-lock但锁文件不存在,则报错。 - 文件复制:将匹配到的技能文件夹(或其中的必要文件,如
SKILL.md,templates/)复制到目标项目下各个--targets指定的平台目录中。 - 生成入口文件:(可能)在每个目标平台目录下生成一个
index.md或类似文件,以该平台AI助手能理解的方式,索引所有已安装的技能,方便AI助手读取。 - 更新锁文件:将本次加载的技能名到源目录Commit SHA的映射写入锁文件。
- 清理与后置:可能清理旧的、不在本次清单中的技能文件,并按照
--ensure-gitignore更新.gitignore。
3.3 技能清理与更新:clear-skills.sh脚本
当你的任务发生变化,或者清单文件被修改后,你可能需要清理掉之前安装的旧技能,以便AI助手从一个干净的状态开始。这就是clear-skills.sh脚本的用途。
./scripts/clear-skills.sh \ --project /path/to/your-project \ --codex-home /path/to/your-project/.codex \ --targets cursor,agents \ --all \ # 清理所有技能 --yes # 跳过确认提示,直接执行这个脚本的逻辑相对简单:它会删除目标项目目录下,指定--targets平台对应的技能文件夹(如./your-project/.cursor/skills)。--all参数表示清理全部,未来或许会有更精细的控制,比如只清理某个特定领域的技能。
一个典型的工作流循环是:
- 编辑
.agents/skills.task.txt,更新技能清单。 - 运行
clear-skills.sh --all --yes清理旧技能。 - 运行
load-skills.sh加载新技能。 - 重启你的AI编码助手(如Cursor的AI会话),让它重新读取本地技能目录。
4. 高级用法与集成实践
4.1 将技能库集成到你的开发工作流
仅仅会手动运行脚本还不够,真正的威力在于将其自动化,嵌入到你日常的开发流程中。
方案一:项目初始化脚本在你的项目模板或Makefile、justfile中,加入初始化步骤。例如,创建一个init-project.sh:
#!/bin/bash PROJECT_ROOT=$(pwd) SKILLS_REPO="/Users/yourname/Developer/skills" # 假设技能库克隆在这里 # 创建基础的技能清单 mkdir -p .agents cat > .agents/skills.task.txt << 'EOF' @domains: foundational, debugging project-scaffolding systematic-debugging git-workflow-basics EOF # 加载基础技能 "$SKILLS_REPO/scripts/load-skills.sh" \ --project "$PROJECT_ROOT" \ --skills-repo "$SKILLS_REPO" \ --targets cursor \ --manifest .agents/skills.task.txt \ --lockfile .agents/skills.lock.json \ --ensure-gitignore echo "项目AI技能初始化完成。请重启Cursor会话。"这样,每次创建新项目,一键就能获得一套基础AI助手能力。
方案二:与任务运行器结合如果你使用npm scripts或Taskfile,可以定义不同的任务对应不同的技能集。
// package.json { "scripts": { "skills:dev": "bash -c 'echo \"@domains: frontend, dev\nreact-dev\ntailwind-integration\nhot-reload-config\" > .agents/skills.task.txt && ./load-dev-skills.sh'", "skills:test": "bash -c 'echo \"@domains: testing\njest-unit\ne2e-playwright\ncoverage-report\" > .agents/skills.task.txt && ./load-dev-skills.sh'", "skills:deploy": "bash -c 'echo \"@domains: deployment, cicd\ndockerize-app\nci-github-actions\ncloud-deploy-aws\" > .agents/skills.task.txt && ./load-dev-skills.sh'" } }然后,在开始写功能前运行npm run skills:dev,在写测试前切到npm run skills:test,让AI助手始终处于最相关的“模式”。
方案三:IDE/编辑器插件理论上,可以为你使用的编辑器(VSCode, Cursor, IntelliJ)开发一个小插件。这个插件监听项目根目录下.agents/skills.task.txt文件的变化。当文件被修改并保存时,插件自动在后台调用clear-skills.sh和load-skills.sh,并通知AI助手插件刷新上下文。这样就实现了技能清单的“热重载”。
4.2 技能的自定义与贡献
1300多个技能可能覆盖了大部分场景,但你肯定有自己独特的工具链、内部框架或最佳实践。这时,自定义技能就非常有必要了。
创建自定义技能在你的技能仓库副本中(强烈建议Fork原仓库或建立自己的内部仓库),在skills/目录下创建一个新文件夹,例如my-company-auth/。
skills/my-company-auth/ ├── SKILL.md ├── README.md ├── templates/ │ ├── auth-context.tsx │ └── useAuth.hook.ts └── references/ └── internal-auth-spec.md你的SKILL.md可以这样写:
--- id: my-company-auth name: MyCompany 认证套件 domains: [frontend, auth, internal] targets: [cursor, claude] description: 适用于 MyCompany 内部 React 项目的统一认证模式与组件。 dependencies: [react-dev] --- ## 核心模式 我司所有前端项目使用基于 Context 的认证状态管理,配合自定义的 `useAuth` Hook。 ## 关键文件模板 1. `auth-context.tsx`: 提供 `AuthProvider` 和 `useAuth`。 2. `useAuth.hook.ts`: 封装登录、注销、令牌刷新逻辑。 ## 如何与AI助手协作 当您需要实现登录页面或受保护路由时,请直接要求:“使用我司的认证套件模式”。 AI助手将引导您创建上述模板文件,并注入与后端 `auth-api` 服务对接的标准逻辑。然后,你就可以在你的项目清单中加入my-company-auth了。这相当于为你团队的AI助手注入了专属的“公司知识”。
重要警告:供应链安全原仓库的
SUPPLY CHAIN NOTES部分特别强调了安全。如果你从外部来源获取技能(比如别人的仓库),务必:
- 优先使用允许列表内的源:只从可信的、审查过的仓库加载技能。
- 审查代码:在加载任何外部技能的
scripts/目录下的脚本前,必须人工审查其内容,防止恶意代码。- 锁定版本:务必使用
--lockfile参数,将外部技能的版本锁定在特定的Git Commit SHA,避免后续更新引入未知变更。- 项目隔离:坚持项目本地安装,防止一个项目的技能(尤其是来自外部的)意外影响到其他项目。
4.3 性能考量与技能优化
随着加载的技能越来越多,你可能会担心这会不会拖慢AI助手的启动速度或影响其响应性能。这里有几个优化思路:
- 技能的精简:
SKILL.md文件应尽可能简洁,只包含最核心的提示词和知识。将详细的示例、长篇文档放在README.md或references/中,AI助手在需要时可以通过检索来获取,而不是一次性全部加载到上下文中。 - 按需加载的极致:不要在一个清单里堆砌几十个技能。根据当前开发任务,动态切换清单文件。
skills.task.txt就是为此设计的,它应该只包含当前任务(比如“实现用户设置页面”)最直接相关的3-5个技能。 - 技能的“编译”:可以考虑一个预处理步骤。在
load-skills.sh执行时,不仅复制文件,还将多个相关的SKILL.md合并、去重、压缩,生成一个针对当前项目优化的、更紧凑的“超级提示词”文件,再提供给AI助手。这需要更复杂的脚本,但能有效减少上下文长度。 - 利用AI助手的长期记忆:一些高级的AI助手(或配合向量数据库的插件)支持“长期记忆”。你可以将技能库中的核心知识转化为嵌入向量存储起来。当AI助手需要时,通过语义检索动态获取相关片段,而不是静态加载全部文本。这可能是未来的演进方向。
5. 常见问题与故障排查实录
在实际集成和使用过程中,我遇到了一些典型问题,这里汇总一下排查思路和解决方案。
5.1 技能加载后AI助手无反应
现象:运行load-skills.sh脚本成功,没有报错,技能文件也复制到了目标目录(如.cursor/skills),但重启Cursor后,AI助手似乎完全不知道这些新技能的存在。
排查步骤:
- 检查目标目录是否正确:首先确认
--targets参数与你实际使用的AI助手匹配。如果你主要用Cursor,却只配置了--targets codex,那技能当然不会被加载到Cursor的目录。 - 检查AI助手的技能加载机制:这是最常见的原因。不同的AI工具加载本地技能的方式不同。你需要查阅官方文档。
- 对于Cursor:它可能不是简单读取
.cursor/skills/下的所有.md文件。它可能需要一个特定的文件名(如_cursor_skills.md)或特定的格式(比如用特定的注释标记章节)。尝试在.cursor/目录下寻找已有的配置文件,模仿其格式。或者,在Cursor的社区或设置中查找“自定义上下文”或“知识库”的配置方法。 - 对于Claude Code:它可能通过VS Code插件的设置来指定一个知识库文件夹。
- 对于Cursor:它可能不是简单读取
- 验证技能文件内容:手动打开复制过去的技能文件(如
.cursor/skills/react-dev/SKILL.md),看看内容是否完整,格式是否为纯文本或Markdown。有时文件权限或编码问题可能导致内容无法被读取。 - 查看AI助手日志:如果AI助手有开发者模式或日志输出,打开它,重启会话,观察在初始化时是否尝试读取了你指定的技能目录,是否有任何错误信息。
解决方案:根据排查结果,你可能需要:
- 调整
load-skills.sh脚本,使其生成符合目标AI助手要求的文件结构和格式。 - 在AI助手的设置中,手动指定技能目录的路径。
- 为不同的AI助手创建不同的技能清单和加载配置。
5.2 清单中的技能找不到或领域未覆盖
现象:运行load-skills.sh时,脚本报错Error: Skill 'some-advanced-skill' not found或Error: Domain 'blockchain' has no coverage。
排查步骤:
- 检查技能名称拼写:这是最低级的错误。确保清单中的技能名与
skills/目录下的文件夹名称完全一致,包括大小写和连字符。 - 浏览技能仓库:直接到克隆的
skills/目录下,用ls或文件管理器查看是否存在你想要的技能。技能库可能没有你想象的那么全。 - 检查领域标签:查看目标技能的
SKILL.md文件,确认其domains字段是否包含你在清单中声明的领域。领域标签是大小写敏感的。 - 更新技能仓库:技能库可能更新了,你本地的克隆版本太旧。尝试
git pull更新你的技能仓库副本。
解决方案:
- 对于拼写错误,直接修改清单文件。
- 对于不存在的技能,你有两个选择:一是在技能库中寻找功能相似的替代技能;二是自己创建这个技能(参见上一节)。
- 对于领域未覆盖,检查是否领域标签拼写错误。如果没有,说明该领域下确实没有技能,你需要移除该领域标签,或者手动添加属于该领域的技能到清单中。
5.3 锁文件冲突或技能版本不一致
现象:在团队协作中,同事更新了技能清单并提交了新的skills.lock.json,你拉取代码后运行加载脚本,可能会因为本地技能仓库版本不同而导致哈希校验失败。
排查步骤:
- 对比锁文件:比较你本地的
skills.lock.json和远程仓库中的版本,看哪些技能的commit_sha发生了变化。 - 同步技能仓库:确保所有团队成员使用的技能仓库副本都指向同一个远程仓库,并且定期执行
git pull更新。最好能统一版本,比如大家都锁定到某个发布标签(Tag)上。 - 检查清单变更:锁文件变更通常源于清单文件(
.txt)的变更。查看Git历史,了解同事添加、移除了哪些技能。
解决方案:
- 推荐方案:将技能仓库本身作为项目的子模块(Git Submodule)或使用专门的依赖管理工具来固定其版本。这样就能保证所有人使用的技能库源码完全一致。
- 临时方案:当你拉取到新的锁文件后,直接使用
--force参数重新运行load-skills.sh。脚本会根据新的锁文件记录,从技能仓库中拉取对应版本的技能文件,覆盖本地。这要求你的本地技能仓库必须包含锁文件中指定的那个提交(Commit)。 - 沟通规范:在团队内建立规范,更新技能清单后,需要同时提交更新后的锁文件,并在Pull Request中说明变更内容。
5.4 性能下降与上下文管理
现象:加载了大量技能后,AI助手的响应速度变慢,或者其回复开始变得“混乱”,有时会引用不相关技能的内容。
原因分析:这通常是因为一次性加载了太多技能,导致AI助手的上下文窗口(Context Window)被占满。虽然技能文件可能不大,但几十个加起来就非常可观了。过长的上下文会导致:
- 响应延迟:AI模型需要处理更多令牌(Tokens)。
- 注意力分散:核心指令和最近对话的重要性被稀释,模型可能从上下文中无关的部分提取信息。
- 成本增加:对于按Token收费的API,上下文越长,费用越高。
优化策略:
- 严格遵循任务清单:坚决使用轻量级的
skills.task.txt,只加载当前任务最直接相关的技能。完成一个任务后,清理并加载下一个任务所需的技能。 - 技能摘要化:对于复杂的技能,不要在
SKILL.md里放置完整的文档。改为放置一个高度精炼的摘要、核心命令列表和索引。详细的文档链接放在references/里,并指导AI助手在需要时“请参考技能目录下的详细文档”。 - 分层加载:建立技能依赖树。基础技能(如
systematic-debugging)可以常驻,而高级技能(如react-performance-profiling)则按需加载。这需要修改加载脚本以支持依赖解析。 - 监控上下文长度:一些AI助手插件可以显示当前上下文的Token使用量。定期关注这个指标,如果接近模型上限(如128K),就要考虑精简技能了。
6. 总结与个人实践建议
经过一段时间的深度使用,我将skills仓库从一个新奇的想法,变成了我日常开发流程中不可或缺的一环。它带来的最大改变,是让AI助手从一个“通才”变成了我项目里的“专才”。我不再需要反复解释项目背景和技术栈,AI从一开始就能给出高度契合项目上下文的建议。
我个人的配置习惯:
- 技能仓库管理:我Fork了原仓库,并在内部建立了一个私有的GitLab仓库,将原仓库作为上游远程。这样我可以随时同步官方更新,同时在一个独立的
internal-skills/分支上维护我们团队的自定义技能。 - 清单文件组织:我在项目根目录创建了一个
.agent/文件夹(注意是单数,我个人偏好),里面存放着多个清单文件:base.txt: 包含git-workflow-basics,systematic-debugging,code-style-guide等每个项目都需要的技能。frontend.txt,backend.txt,infra.txt: 按技术栈分类的技能包。sprint-xx-task.txt: 针对当前冲刺任务的临时清单。
- 自动化脚本:我写了一个简单的包装脚本
use-skills.sh,它接受一个标签参数,例如./use-skills.sh frontend,这个脚本会自动组合base.txt和frontend.txt的内容,调用clear和load,并发送一个系统通知告诉我可以重启AI会话了。
给初次使用者的建议:
- 从小处着手:不要试图一开始就配置几十个技能。从一个你非常熟悉的领域开始,比如
react-dev或python-debugging。先加载1-2个技能,观察AI助手行为的变化,感受其价值。 - 重视清单设计:花时间思考你的项目到底需要什么。清单文件是你与AI助手之间的“契约”,设计良好的清单事半功倍。
- 拥抱自定义:官方仓库的1300个技能是宝库,但你自己的经验才是真正的金矿。把你解决某个特定问题的“独门秘籍”整理成一个技能,这个过程本身就能加深你的理解,而结果能让你的AI助手如虎添翼。
- 保持更新与回顾:技能库和AI工具都在快速迭代。定期回顾你的技能清单,移除过时的,添加新的。同时关注原仓库的更新,可能会有更好的技能组织方式或新工具出现。
这个项目的理念——将知识结构化、可复用化、按需交付给AI——在我看来代表了AI辅助开发的一个必然方向。它不仅仅是一个工具集,更是一种方法论,启发我们如何更高效地与AI协同,将人类的抽象思维与AI的执行能力更紧密地结合起来。