编程 给 AI 编程助手装上"工程大脑":Agent Skills 深度解析与实战

2026-05-28 17:40:55 +0800 CST views 11

给 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 状态码,错误响应体必须包含 codemessagedetails 三个字段。

# ❌ 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 时必须逐项检查:

  1. 正确性:逻辑是否正确处理了所有场景?边界条件?
  2. 可测试性:代码是否支持自动化测试?是否引入了硬依赖?
  3. 性能:是否有明显的性能问题?循环、数据库查询、N+1 问题?
  4. 安全:OWASP Top 10 是否覆盖?注入、认证、加密?
  5. 可维护性:命名是否清晰?复杂度是否超标?是否有技术债?

此外,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 年才变得可能,是因为几个条件的成熟:

  1. 上下文窗口的扩展:Claude Opus 等模型的上下文窗口已扩展到 200K tokens,足以容纳完整的技能文档和工作上下文
  2. MCP 协议的普及:Anthropic 主导的 Model Context Protocol 提供了标准化的工具调用接口,让 AI 可以可靠地调用外部工具(浏览器 DevTools、文件系统、CI 系统)
  3. 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

附:快速上手清单

  1. 安装 Claude Code:npm install -g @anthropic-ai/claude-code
  2. 安装 Agent Skills:/plugin marketplace add addyosmani/agent-skills
  3. 从一个小型需求开始,使用 /spec/plan/build/test/review/ship 的完整流程
  4. 观察 AI 的工作方式发生了什么变化
  5. 根据团队实际情况,裁剪和定制技能包

推荐文章

Dropzone.js实现文件拖放上传功能
2024-11-18 18:28:02 +0800 CST
Python实现Zip文件的暴力破解
2024-11-19 03:48:35 +0800 CST
浏览器自动播放策略
2024-11-19 08:54:41 +0800 CST
任务管理工具的HTML
2025-01-20 22:36:11 +0800 CST
Elasticsearch 条件查询
2024-11-19 06:50:24 +0800 CST
利用Python构建语音助手
2024-11-19 04:24:50 +0800 CST
JavaScript 流程控制
2024-11-19 05:14:38 +0800 CST
程序员茄子在线接单