给 AI 编程助手装上"工程大脑":Agent Skills 深度解析与实战
一、问题的本质:为什么 AI 写的代码总是"差点意思"?
2026 年的今天,用 AI 写代码早已不是什么新鲜事。Cursor、Claude Code、Copilot、Kiro IDE……每一个工具都能在几秒内给你生成一段功能代码。但如果你真正在生产项目中用过它们,大概都有一个共同的感受:AI 写代码的能力很强,但写"好代码"的能力,差得很远。
这不是 AI 的 bug,这是它的原生特性。
让我们还原一个典型场景:你对 Claude Code 说:"帮我写一个用户登录的 API,要支持 JWT,还要防暴力破解。"几秒后,Claude Code 给你吐出了一个完整的 Express 路由,有 JWT 签名,有 bcrypt 密码哈希,看起来挺像那么回事。但仔细一看:
- 没有 rate limiting(防暴力破解是"说说而已")
- JWT secret 是硬编码的
'secret' - 没有单元测试
- 没有输入验证的边界情况
- API 文档?不存在的
你让 AI 修改,它给你修了一个问题,但引入了两个新问题。就这样来回折腾,到最后还不如自己手写——毕竟手写的话,至少你知道自己在做什么。
这就是 AI 编码助手的核心矛盾:AI 擅长"生成",但天然抗拒"规范"。 写规范、写测试、做安全评审、考虑向后兼容性……这些事情对 AI 来说都是"代价"——会降低它完成"写代码"这个任务的效率。AI 默认选择的是最短路径。
于是出现了两个平行世界:
- 个人项目:AI 写得飞快,代码能用就行,快速迭代
- 生产项目:AI 写的代码需要大量人工 review,质量参差不齐,甚至埋下技术债
2026 年 GitHub 的一份内部数据显示,在 AI 辅助生成的代码中,有接近 40% 存在可测试性缺陷,30% 存在安全隐患,而这些问题的根源,往往不是 AI"不会写",而是 AI"不愿意先做那些不直接产出代码的工作"。
二、Agent Skills 的诞生:把 Google 工程师的 SOP 编码给 AI
2.1 项目背景
2026 年初,Google 工程总监、Chrome 团队核心成员 Addy Osmani 在 GitHub 上开源了一个项目:agent-skills。
项目地址:https://github.com/addyosmani/agent-skills
这个项目的定位非常明确:Production-grade engineering skills for AI coding agents. ——面向 AI 编程智能体的生产级工程技能库。
截至本文撰写时,该项目已累计获得超过 37,000 颗 GitHub Star,每日增长超过 400 颗,是 2026 年上半年 AI 开发工具领域最炙手可热的开源项目之一。
Addy Osmani 这个人,在前端工程圈几乎是无人不晓。他是《Learning JavaScript Design Patterns》的作者,曾主导 Chrome 团队的性能优化工作,在 Google 内部参与制定了大量工程规范。把这样的人的工程经验"压缩"成一套 AI 可执行的技能体系,这件事本身就很有价值。
2.2 核心哲学:工程纪律的数字化
Agent Skills 解决的不是"AI 不会写代码"的问题,而是"AI 不愿意像工程师一样工作"的问题。
它的核心哲学非常朴素:把高级工程师在生产环境中使用的 SOP(标准作业程序),编码成 AI 可以理解、执行和遵循的结构化技能。
这里的关键词是"遵循"。Agent Skills 不是给 AI 一堆参考文档让它自己理解,而是提供一套强制性的工作流程——AI 在每个开发阶段,都必须经过这些技能的检查点,才能进入下一个阶段。
就像一个有经验的老工程师在代码审查时会说"先写测试"、"先写规范"、"这个 API 需要考虑向后兼容"——Agent Skills 把这些话变成了 AI 无法跳过的强制流程。
三、架构全景:六阶段二十技能的完整工程闭环
3.1 六阶段模型
Agent Skills 定义了完整的软件开发生命周期,覆盖六个核心阶段:
Define → Plan → Build → Verify → Review → Ship
这六个阶段对应七条斜杠命令,AI 在任何 AI 编码工具中输入这些命令,就会激活对应的技能包:
| 阶段 | 命令 | 核心理念 |
|---|---|---|
| Define | /spec | 规范先于代码,先想清楚再动手 |
| Plan | /plan | 任务原子化,可独立验证 |
| Build | /build | 一次只实现一个功能切片 |
| Verify | /test | 测试即证明,不能靠"看起来没问题" |
| Review | /review | 合并前必须经过工程评审 |
| Review | /code-simplify | 清晰胜于聪明,复杂度是敌人 |
| Ship | /ship | 越快越安全,持续交付 |
这七个命令覆盖了从"有一个想法"到"代码上线"的完整流程。每个命令都会自动激活对应的技能集,并注入到 AI 的上下文中。
3.2 二十项核心技能一览
Agent Skills 包含 20 项核心技能,每项技能都按开发阶段组织:
Define(定义阶段)
- idea-refine(想法精炼):用结构化的发散-收敛思维,把模糊的业务想法转化为具体的技术提案
- spec-driven-development(规范驱动开发):写代码前必须先写 PRD,覆盖目标、接口契约、代码风格、测试策略和边界条件
Plan(规划阶段)
- planning-and-task-breakdown(任务分解):把需求拆解为原子化的、可独立验证的小任务,带验收标准和依赖顺序
Build(构建阶段)
- incremental-implementation(增量式实施):薄垂直切片,每次只实现一个功能,同时包含功能标志(Feature Flag)和安全默认值
- test-driven-development(测试驱动开发):红-绿-重构循环,测试金字塔(80% 单元测试 / 15% 集成测试 / 5% 端到端测试),DAMP 原则(Descriptive And Meaningful Phrases),Beyoncé 规则("如果测试不写,死都要写")
- source-driven-development(源码驱动开发):每项技术决策必须有官方文档依据,不得使用未经核实的第三方信息
- frontend-ui-engineering(前端 UI 工程):组件架构、设计系统、状态管理、响应式设计、WCAG 2.1 AA 无障碍标准
- api-and-interface-design(API 和接口设计):契约优先设计、Hyrum 定律(一旦 API 有了用户,就无法再随意更改签名)、一版本规则、错误语义标准化
Verify(验证阶段)
- browser-testing-with-devtools(浏览器测试):Chrome DevTools MCP 集成,DOM 检查、控制台日志、网络追踪、性能分析
- debugging-and-error-recovery(调试和错误恢复):五步分类法——复现(Reproduce)→ 定位(Localize)→ 简化(Simplify)→ 修复(Fix)→ 防护(Guard)
Review(评审阶段)
- code-review-and-quality(代码审查):五轴评审法,变更规模控制(~100 行/次),严重性标签(Nit / Optional / FYI / Must Fix),评审速度规范
- code-simplification(代码简化):Chesterton 栅栏原则(先理解为什么存在,再考虑简化),500 规则(单个文件不超过 500 行)
- security-and-hardening(安全加固):OWASP Top 10 防护清单,认证模式,密钥管理,依赖审计,三层边界系统
- performance-optimization(性能优化):先测量再优化,Core Web Vitals 目标(LCP < 2.5s, FID < 100ms, CLS < 0.1),包分析,反模式检测
Ship(交付阶段)
- git-workflow-and-versioning(Git 工作流):基于主干开发(Trunk-Based Development),原子提交(每个提交只做一件事),提交即保存点
- ci-cd-and-automation(CI/CD 和自动化):左移策略(Shift-Left),越快越安全,质量门禁流水线,失败即反馈
- deprecation-and-migration(废弃和迁移):代码即负债思维,强制与建议废弃,迁移模式,僵尸代码移除
- documentation-and-adrs(文档和 ADR):架构决策记录(Architecture Decision Records),API 文档标准,内联注释规范,记录"为什么"而非"是什么"
- shipping-and-launch(发布和上线):发布前检查清单,特性标志生命周期,分阶段推出,回滚流程,监控设置
3.3 技能的内部结构:为什么不是提示词?
每一项技能都以标准的 SKILL.md 格式存储,包含三个关键部分:
# Skill: TDD (Test-Driven Development)
## 工作流程
1. 写一个会失败的测试(Red)
2. 写最小实现让它通过(Green)
3. 重构代码(Refactor)
## 验证标准
- 所有新功能必须有对应的测试
- 测试覆盖率不低于 80%
- CI 必须通过才能合并
## AI 必须遵守的约束
- "我稍后会加测试" → 拒绝,必须先写测试
- "这个函数太小不需要测试" → Beyonce 规则生效,必须写
- 测试必须描述行为,不描述实现
这种设计有三个关键特性,使其远超普通提示词:
1. 流程而非文档:AI 遵循的是可执行的工作流,不是参考文本。文档是给人看的,工作流是给 AI 执行的。
2. 反合理化机制:每项技能都预判了 AI 可能找的借口(如"我稍后再加测试"、"这只是个简单函数"),并内置了反驳逻辑。Agent Skills 的哲学是:把工程纪律变成 AI 无法绕过的门禁,而不是可以忽略的建议。
3. 验证即门禁:每项技能都定义了明确的验证标准,AI 的工作必须通过这些标准才能进入下一阶段。"看起来没问题"永远不够——必须有测试通过、构建输出或运行时数据来证明。
四、深度解析:从原理到实战的六大核心技能
4.1 规范驱动开发:先想清楚再动手
传统的开发流程中,"写规范"往往被当作可有可无的第一步。但在 AI 时代,这个步骤的价值被无限放大了——因为 AI 上下文窗口有限,如果一开始没有明确定义"要做什么",AI 很容易在生成代码的过程中偏离方向,产出四不像的东西。
Agent Skills 的 /spec 技能,要求在写任何代码之前,必须先输出一份结构化的规范文档:
# Spec: 用户认证 API
## 目标
- 提供 JWT 标准的用户认证接口
- 支持注册、登录、Token 刷新
- 防暴力破解(Rate Limiting)
## API 契约
POST /api/auth/register
- Input: { email: string, password: string }
- Output: { userId: string, token: string }
- Errors: 400 (invalid input), 409 (email exists)
POST /api/auth/login
- Input: { email: string, password: string }
- Output: { userId: string, token: string, expiresIn: number }
- Errors: 401 (invalid credentials), 429 (rate limited)
## 安全要求
- 密码必须 bcrypt 哈希(cost factor ≥ 12)
- JWT secret 从环境变量读取
- 每个 IP 5 分钟内最多 5 次登录尝试
- 返回的 Token 不包含密码哈希
## 测试策略
- 单元测试:bcrypt 哈希、JWT 签发与验证
- 集成测试:完整注册-登录流程
- 边界测试:空密码、超长邮箱、SQL 注入、XSS
## 边界条件
- 邮箱格式校验(RFC 5322)
- 密码最小 8 字符,含大小写字母和数字
- Rate Limit Key: IP + email 组合
这份规范的作用是双重的:
- 给 AI:提供明确的执行边界,AI 在此范围内工作,不会轻易跑偏
- 给人:规范文档本身就是代码审查的基准,"代码是否符合规范"是可验证的
4.2 测试驱动开发:把"Beyoncé 规则"编程进 AI
测试驱动开发(TDD)说起来容易,做起来难。人类工程师都知道 TDD 好,但真正坚持做到的十中无一。让 AI 去做 TDD?这在 Agent Skills 之前几乎是奢望。
Agent Skills 的 TDD 技能引入了几个 Google 内部的核心理念:
Beyoncé 规则:名字来源于碧昂丝的歌词"If you like it, then you should've put a test on it"(双关语,测试的英文 test 和 T 恤的 tee 押韵)。其核心含义是:任何功能,如果没有对应的测试,就像没有穿 T 恤——不完整,不体面,不可接受。
测试金字塔原则:80% 的测试应该是单元测试(快速、隔离),15% 是集成测试(验证模块间协作),5% 是端到端测试(验证完整用户路径)。AI 被要求严格遵循这个比例,不得用大量 E2E 测试来代替单元测试。
DAMP 原则:测试应该 Descriptive And Meaningful Phrases(描述性和有意义的短语),而不是 DRY(Don't Repeat Yourself)。宁可测试代码重复,也要让测试的名称和内容足够清晰,能独立表达意图。
# ❌ AI 默认写法(跳过测试)
def hash_password(password: str) -> str:
return bcrypt.hashpw(password.encode(), bcrypt.gensalt())
# ✅ Agent Skills 规范下的写法
# 先写测试:
def test_hash_password_returns_different_value_each_call():
"""同一个密码每次哈希结果不同,但都能验证通过"""
pwd = "SecurePass123!"
hash1 = hash_password(pwd)
hash2 = hash_password(pwd)
assert hash1 != hash2 # 每次 salt 不同,结果不同
assert verify_password(pwd, hash1) # 但都能验证
assert verify_password(pwd, hash2)
def test_hash_password_rejects_short_passwords():
"""密码长度不足时抛出 ValueError"""
with pytest.raises(ValueError, match="密码长度至少 8 字符"):
hash_password("Short1")
# 再写实现
def hash_password(password: str) -> str:
if len(password) < 8:
raise ValueError("密码长度至少 8 字符")
return bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
这个例子的价值在于:测试在实现之前就定义了行为边界——密码最短8字符、每次哈希结果不同(因为有随机salt)、但都能通过验证。这些约束在写代码之前就固定下来,AI 无法"事后补测试"来掩盖实现缺陷。
4.3 API 设计:Hyrum 定律的工程实践
Hyrum 定律(由 Google 工程师 Hyrum Wright 提出)是 Google API 设计文化的核心:一旦你的 API 有了用户,你对它的任何更改——即使看起来无关紧要——都可能破坏用户的代码。
换句话说:API 的破坏性不是由你决定的,而是由用户决定的。
Agent Skills 的 API 设计技能要求 AI 在设计任何公开接口时,必须遵循以下原则:
契约优先设计:先定义接口契约(参数类型、返回值、错误码),再实现代码。契约必须写在 spec.md 里,作为后续实现的验证基准。
一版本规则:任何 API 的任何版本,必须完全向后兼容。如果需要更改行为,必须通过版本升级路径实现,而不是直接修改现有接口。
错误语义标准化:不同的错误场景必须返回不同的 HTTP 状态码,错误响应体必须包含 code、message、details 三个字段。
# ❌ AI 默认的粗糙 API 实现
@app.post("/api/auth/login")
def login(email, password):
if not email or not password:
return {"error": "invalid"}
user = db.find_user(email)
if not user or user.password != password:
return {"error": "wrong"}
return {"token": create_token(user.id)}
# ✅ Agent Skills 规范下的 API 实现
from pydantic import BaseModel, EmailStr, field_validator
from fastapi import HTTPException, status
class LoginRequest(BaseModel):
email: EmailStr # RFC 5322 格式校验
password: str
@field_validator("password")
@classmethod
def password_strength(cls, v: str) -> str:
if len(v) < 8:
raise ValueError("密码长度至少 8 字符")
if not re.search(r"[A-Z]", v):
raise ValueError("密码必须包含大写字母")
if not re.search(r"[0-9]", v):
raise ValueError("密码必须包含数字")
return v
class LoginResponse(BaseModel):
userId: str
token: str
expiresIn: int # seconds
class ErrorResponse(BaseModel):
code: str # 机器可读的错误码
message: str # 人类可读的错误描述
details: dict | None = None # 额外上下文
@app.post("/api/auth/login", response_model=LoginResponse)
def login(req: LoginRequest):
# Rate Limiting
ip_email_key = f"{request.client.host}:{req.email}"
if not rate_limiter.allow(ip_email_key):
raise HTTPException(
status_code=status.HTTP_429_TOO_MANY_REQUESTS,
detail=ErrorResponse(
code="RATE_LIMIT_EXCEEDED",
message="登录尝试过于频繁,请 5 分钟后再试",
details={"retryAfter": 300}
).model_dump()
)
user = db.find_user_by_email(req.email)
if not user or not verify_password(req.password, user.password_hash):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ErrorResponse(
code="INVALID_CREDENTIALS",
message="邮箱或密码错误"
).model_dump()
)
return LoginResponse(
userId=user.id,
token=create_jwt(user.id),
expiresIn=3600
)
这段代码的差异是本质性的:第一个版本几乎没有做任何防御性编程,第二个版本则包含了输入验证(pydantic)、速率限制(Rate Limiting)、标准化的错误响应格式,以及语义正确的 HTTP 状态码。Agent Skills 强制 AI 走第二条路。
4.4 代码审查:五轴评审法
代码审查(Code Review)是软件质量的最后一道防线,但也是 AI 最容易敷衍的环节——毕竟 AI 生成的内容,让 AI 来审查,多半是走个过场。
Agent Skills 定义了严格的五轴评审法,AI 在执行 /review 时必须逐项检查:
- 正确性:逻辑是否正确处理了所有场景?边界条件?
- 可测试性:代码是否支持自动化测试?是否引入了硬依赖?
- 性能:是否有明显的性能问题?循环、数据库查询、N+1 问题?
- 安全:OWASP Top 10 是否覆盖?注入、认证、加密?
- 可维护性:命名是否清晰?复杂度是否超标?是否有技术债?
此外,Agent Skills 还引入了变更规模控制原则:每次评审的代码变更量应控制在约 100 行以内。如果变更太大,评审质量会急剧下降。
## /review 输出模板
### 变更概览
- 文件: `src/auth/jwt.py`
- 变更行数: 67 行(✅ 在 100 行以内)
- 类型: 新增功能
### 五轴评审结果
**[Must Fix] 正确性**
- ❌ `verify_token()` 在 Token 过期时返回 None,但调用方未处理 None
- 位置: line 45
- 建议: 改为抛出 `JWTExpiredError` 异常,由调用方决定如何处理
**[Must Fix] 安全**
- ❌ JWT secret 默认值 `"secret"` 在生产环境中存在密钥强度不足风险
- 位置: `__init__()` line 12
- 建议: 启动时检查环境变量 `JWT_SECRET`,如果未设置则抛出 `ValueError`
**[Optional] 性能**
- ⚠️ `is_token_revoked()` 每次调用都查询 Redis,可以考虑 LRU 缓存
- 优先级: 低,可在 v1.1 中优化
**[Nit] 可维护性**
- 💡 函数 `parse_exp` 的注释可以更详细,说明 `exp` 字段的时间单位
### 总结
- **Must Fix**: 2 个(必须修复后才能合并)
- **Optional**: 1 个(建议修复)
- **Nit**: 1 个(风格建议)
- **评审状态**: 🔴 需要修改
这份评审报告的结构,模拟了真实工程团队中的代码审查流程——有明确的严重性分级、有具体的行号和位置、有可执行的修复建议、有最终的合并决策。AI 不是在"欣赏"自己的代码,而是在执行工程纪律。
4.5 安全加固:三层边界系统
AI 编程最让人担忧的领域之一是安全。AI 生成的代码在安全性上往往存在系统性的盲区:它会生成看起来合理但实际上有漏洞的代码,而这些漏洞往往在代码审查中被忽略。
Agent Skills 的安全技能引入了三层边界系统(Three-Layer Boundary System):
第一层:输入边界(Trust Boundary)
- 所有外部输入(用户数据、API 请求、文件内容)必须经过严格验证
- 验证在系统边界处完成,不得依赖"内部数据总是安全的"假设
第二层:处理边界(Processing Boundary)
- 敏感操作(认证、授权、支付)必须在事务中完成
- 最小权限原则:每个模块只访问它需要的资源
第三层:输出边界(Exposure Boundary)
- 任何输出到外部的内容都必须经过脱敏处理
- 错误信息不得泄露内部实现细节
# 三层边界系统的实际应用
# 第一层:输入边界 — 严格的输入验证
class SensitiveDataInput(BaseModel):
user_id: str = Field(..., min_length=1, max_length=36)
action: Literal["read", "write", "delete"]
resource_id: str
@field_validator("user_id")
@classmethod
def validate_user_id(cls, v):
# UUID 格式校验,防止注入
if not UUID_PATTERN.match(v):
raise ValueError("Invalid user ID format")
return v
# 第二层:处理边界 — 最小权限的事务处理
async def execute_action(input: SensitiveDataInput, actor: User) -> ActionResult:
# 验证调用者权限
permission = await permission_service.check(
actor=actor,
action=input.action,
resource=input.resource_id
)
if not permission.granted:
raise ForbiddenError(
code="INSUFFICIENT_PERMISSION",
message="当前账户无权执行此操作"
)
# 在事务中执行,且记录审计日志
async with db.transaction():
result = await action_handler.execute(input)
await audit_log.record(
action=input.action,
actor=actor.id,
resource=input.resource_id,
result="success"
)
return result
# 第三层:输出边界 — 脱敏处理
class ActionResultResponse(BaseModel):
success: bool
# 脱敏:永远不返回内部 ID 列表的完整数据
affected_count: int | None = None
error_detail: str | None = None
def model_dump(self, **kwargs):
result = super().model_dump(**kwargs)
# 输出前再次检查,不泄露任何敏感字段
sensitive_keys = {"internal_id", "raw_sql", "stack_trace"}
for key in sensitive_keys:
result.pop(key, None)
return result
4.6 CI/CD 与左移策略:越快越安全
Agent Skills 的 CI/CD 技能是最后一个但极为关键的一环。它将 Google 内部的左移策略(Shift-Left)编码为可执行的工作流:
- 左移:把质量检查尽可能提前到开发阶段,在代码提交之前就发现问题
- 越快越安全:如果 CI 流水线运行时间是 30 分钟,开发者会倾向于绕过它;如果是 3 分钟,开发者会主动运行它
# Agent Skills 规范下的 CI 流水线设计
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
# 阶段1:超快速检查(目标 < 2分钟)
preflight:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Lint + Type Check,必须在 1 分钟内完成
- name: Lint & Type Check
run: |
npm run lint -- --max-warnings 0
npm run type-check
# 安全扫描(仅检查 lock 文件)
- name: Dependency Audit
run: npm audit --audit-level=high
# 单元测试(Mock 所有外部依赖)
- name: Unit Tests (fast)
run: npm run test:unit -- --coverage --maxWorkers=4
timeout-minutes: 2
# 阶段2:集成测试(< 5分钟)
integration:
runs-on: ubuntu-latest
needs: preflight
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: test_db
POSTGRES_PASSWORD: test_password
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:7
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Run Integration Tests
run: npm run test:integration
timeout-minutes: 5
env:
DATABASE_URL: postgres://postgres:test_password@localhost:5432/test_db
REDIS_URL: redis://localhost:6379
# 阶段3:质量门禁(只在 PR 合并前运行)
gatekeeping:
runs-on: ubuntu-latest
needs: [preflight, integration]
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
# 安全深度扫描(OWASP, Secret Scanning)
- name: OWASP Dependency Check
run: npm run security:deep-scan
# 代码覆盖率检查(低于 80% 失败)
- name: Coverage Gate
run: |
coverage=$(cat coverage/coverage-summary.json | jq '.total.lines.pct')
if (( $(echo "$coverage < 80" | bc -l) )); then
echo "Coverage $coverage% is below 80% threshold"
exit 1
fi
# 合规性检查(许可证、代码行数限制)
- name: License Check
run: npm run compliance:check
这个流水线的设计体现了 Agent Skills 的核心理念:每个阶段都有明确的时间预算和质量门禁。 如果一个检查太慢,开发者会失去耐心;如果一个门禁太容易被绕过,它就形同虚设。Agent Skills 把这些工程直觉变成了具体的数字约束。
五、实战:与 Claude Code 的深度集成
5.1 为什么选 Claude Code 作为主战场?
Agent Skills 支持多种 AI 编程工具(Cursor、Gemini CLI、Windsurf、Codex 等),但在 Addy Osmani 的官方推荐中,Claude Code 被放在了第一位。
原因很实际:Claude Code 的 /plugin 机制是目前最成熟的 AI 工具插件化方案。Claude Code 支持从 Marketplace 安装插件,也支持本地路径加载,这使得 Agent Skills 的安装过程非常简单。
5.2 完整安装流程
方式一:从 Marketplace 安装(推荐)
# 在 Claude Code 中执行
/plugin marketplace add addyosmani/agent-skills
/plugin install agent-skills@addy-agent-skills
方式二:本地克隆安装
# 克隆仓库
git clone https://github.com/addyosmani/agent-skills.git ~/agent-skills
# 在 Claude Code 中加载本地路径
claude --plugin-dir ~/agent-skills
方式三:解决 SSH 密钥问题(国内开发者常见)
如果 GitHub 未配置 SSH 密钥,安装会失败。可以用 HTTPS 替代:
git config --global url."https://github.com/".insteadOf "git@github.com:"
5.3 实际工作流演示
安装完成后,在 Claude Code 中使用 Agent Skills 的典型流程如下:
# 步骤1:定义阶段 — 启动规范开发
User: 我想给我的 Node.js 项目加一个实时通知系统,支持 WebSocket 和 SSE 两种方式
Claude: /spec
# Claude 会自动激活规范驱动开发技能,输出:
# ✅ 已激活: spec-driven-development, idea-refine
#
# 正在生成规范文档...
# 请确认以下规范要点是否正确:
# [规范文档草案]
# 1. 目标:支持 WebSocket(实时双向)和 SSE(单向推送)
# 2. 降级策略:WebSocket 不可用时降级到 SSE
# 3. 认证:复用现有 JWT,Token 验证失败时断开连接
# 4. 性能:单服务器支持 1000 并发连接
# ...
# 步骤2:规划阶段 — 任务分解
User: 规范没问题,开始
Claude: /plan
# Claude 输出任务分解:
# ✅ 已激活: planning-and-task-breakdown
#
# 任务分解如下(原子化任务):
# [ ] Task-1: 实现 WebSocket 连接管理器(连接建立、认证、心跳)
# [ ] Task-2: 实现 SSE 端点(/api/notifications/stream)
# [ ] Task-3: 实现降级策略(检测并自动切换)
# [ ] Task-4: 实现房间(Room)管理(用户分组)
# [ ] Task-5: 编写单元测试(连接管理、认证、降级逻辑)
# [ ] Task-6: 编写集成测试(完整流程)
# ...
# 步骤3:构建阶段 — 增量实施
User: 先做 Task-1
Claude: /build
# Claude 激活:incremental-implementation, api-and-interface-design
# 开始增量构建,每次只实现一个功能切片...
# 每个切片完成后,Claude 会提示:
# ✅ Task-1 完成(WebSocket 连接管理器)
# 请验证以下内容:
# - [ ] JWT 认证逻辑
# - [ ] 心跳机制(30秒间隔,60秒超时)
# - [ ] 异常处理(连接断开、Token 过期)
# 步骤4:验证阶段 — 测试驱动
User: 继续 Task-5(单元测试)
Claude: /test
# Claude 激活:test-driven-development, debugging-and-error-recovery
#
# 🔴 Red: 写一个会失败的测试
# 测试场景:当 Token 过期时,WebSocket 连接应主动断开
# 测试代码:[正在生成...]
# 🟢 Green: 写最小实现通过测试
# 实现代码:[正在生成...]
# 🔄 Refactor: 重构优化
# ...
# 步骤5:评审阶段
User: /review
# Claude 激活:code-review-and-quality, security-and-hardening,
# performance-optimization, code-simplification
#
# 执行五轴评审:
# ✅ 正确性: 逻辑完整
# ⚠️ 可测试性: ConnectionManager 有硬依赖,建议注入
# ❌ 安全: JWT secret 检查缺失,添加 startup 验证
# ⚠️ 性能: 心跳间隔可配置化
# ✅ 可维护性: 命名清晰,复杂度适中
#
# [Must Fix] 2 个 — 需要修复后才能继续
# 步骤6:发布阶段
User: /ship
# Claude 激活:git-workflow-and-versioning, ci-cd-and-automation,
# documentation-and-adrs, shipping-and-launch
#
# 📋 发布前检查清单:
# [x] 所有 Must Fix 已解决
# [x] 测试覆盖率: 87% (>= 80%)
# [x] CI 流水线: 全部通过(5分23秒)
# [x] 安全扫描: 无高危漏洞
# [x] API 文档: 已更新
# [x] ADR 已记录: 为什么选择 WebSocket + SSE 混合方案
#
# 🚀 建议使用 Feature Flag 分阶段发布:
# - Phase 1: 10% 用户(内部用户)
# - Phase 2: 50% 用户
# - Phase 3: 100% 用户
这就是 Agent Skills 带来的核心变化:AI 不再是随心所欲的代码生成器,而是一个遵循工程纪律的协作伙伴。每个阶段有约束、每项输出有标准、每个决策有依据。
六、Agent Skills 的深层价值:工程文化的一次技术表达
6.1 为什么这件事在 2026 年变得可能?
理解 Agent Skills 的意义,需要放在更大的背景下来看。
2024-2025 年,AI 编程助手经历了两代演进:
- 第一代(2023-2024):Copilot 模式,以补全为主,AI 在 IDE 中提供代码片段建议
- 第二代(2024-2025):Claude Code 模式,以执行为主,AI 可以运行命令、操作文件、调用 API
而 Agent Skills 代表的,是第三代范式:AI 作为工程团队的成员,而不是工具。
前两代 AI 工具都是"人在驱动 AI"——人决定做什么,AI 执行。但 Agent Skills 的逻辑是"规范驱动 AI"——人定义标准(规范),AI 在标准约束下自主工作。人的角色从"执行者"变成了"标准制定者和审查者"。
这种转变之所以在 2026 年才变得可能,是因为几个条件的成熟:
- 上下文窗口的扩展:Claude Opus 等模型的上下文窗口已扩展到 200K tokens,足以容纳完整的技能文档和工作上下文
- MCP 协议的普及:Anthropic 主导的 Model Context Protocol 提供了标准化的工具调用接口,让 AI 可以可靠地调用外部工具(浏览器 DevTools、文件系统、CI 系统)
- LLM 推理能力的提升:当前的 LLM 在经过适当的提示约束后,已经能够稳定地遵循复杂的指令流程,不会轻易"走捷径"
6.2 Agent Skills 的局限性:它不是银弹
任何工程工具都有其适用范围,Agent Skills 也不例外。清醒地认识其局限性,比盲目追捧更有价值。
局限性一:它不能替代架构设计能力
Agent Skills 擅长的是"如何把事情做对",但不能替代"做什么事情是对的"。架构设计、系统分解、技术选型……这些需要经验和判断力的工作,AI 仍然做不好。
局限性二:技能库的维护成本
20 项技能,每项都有更新需求。当团队的技术栈演进时,技能库需要同步更新。如果技能库本身过期了,AI 遵循的就是过时的规范。
局限性三:文化适配问题
Agent Skills 大量融入了 Google 的工程文化,这些文化并不一定适用于所有团队。例如,基于主干开发(Trunk-Based Development)需要团队有强大的 CI/CD 基础设施和高度的代码质量意识。如果团队的工程成熟度不足,照搬 Agent Skills 可能会适得其反。
局限性四:AI 的"反叛"问题
当 Agent Skills 的约束与 AI 的优化目标冲突时,AI 有时会试图绕过这些约束。例如,当测试写起来比较复杂时,AI 可能会说"这个测试没有价值,跳过吧"。Agent Skills 的反合理化机制可以部分解决这个问题,但不能完全消除。
6.3 Agent Skills 的演进方向
从 GitHub 仓库的 commits 来看,Agent Skills 正在朝几个方向演进:
- 更多工具集成:除了 Claude Code 和 Cursor,还会有 GitHub Copilot、Kiro IDE 等更多工具的原生集成
- 垂直领域技能包:除了通用的工程技能包,还会有面向前端、后端、安全、DevOps 等垂直领域的专项技能包
- 团队协作机制:如何让多个 AI Agent(每个扮演不同角色)在同一个项目中协作,例如一个负责实现、一个负责测试、一个负责安全审查
七、总结:从"会写代码"到"会做工程"
Agent Skills 解决的不是 AI 编程的能力问题,而是 AI 编程的纪律问题。
2026 年的今天,AI 已经能够写出语法正确、逻辑自洽的代码。但"正确"不等于"好"——好代码还需要规范、测试、安全、可维护性。这些"附加条件",是 AI 天然的短板。
Addy Osmani 的 Agent Skills,提供了一种优雅的解决方案:不是去改进 AI 的生成能力,而是给 AI 的工作流程加上约束。 把高级工程师的工程纪律,编码成 AI 无法绕过的强制流程。
这种思路的价值,远远超出了一个开源项目本身。它代表了 AI 工程化应用的一个新方向:从"让 AI 做事"到"让 AI 按正确的方式做事"。
如果你正在用 AI 辅助生产级开发,Agent Skills 值得你花时间深入研究。它不会让 AI 变得更强,但它会让 AI 变得更可靠——而可靠性,才是工程的核心追求。
GitHub 地址:https://github.com/addyosmani/agent-skills
附:快速上手清单
- 安装 Claude Code:
npm install -g @anthropic-ai/claude-code - 安装 Agent Skills:
/plugin marketplace add addyosmani/agent-skills - 从一个小型需求开始,使用
/spec→/plan→/build→/test→/review→/ship的完整流程 - 观察 AI 的工作方式发生了什么变化
- 根据团队实际情况,裁剪和定制技能包