从零理解 AI Skill:不只是Markdown这么简单

我第一次看到 AI Skill 这个词的时候,非常疑惑:

这不就是把 Prompt 写进一个 Markdown 文件吗?

后来我把 Codex、Claude Code、Cursor 这些工具放进日常开发里用了几轮,才发现这个理解太浅了。

Prompt 解决的是“这一次怎么问”。Skill 解决的是“以后这类事怎么稳定做”。

这两件事看起来都在写自然语言,但工程意义完全不一样。

我真正意识到这一点,是在反复让 AI 做代码 Review、整理接口文档、检查发布清单的时候。每次我都要重新提醒它:

先看已有实现。
不要上来就重构。
别动无关文件。
先报风险,再讲建议。
日志里不要打敏感字段。
跑不了测试要说明原因。

这些话单次看没什么,一周说十几遍之后就很烦。更要命的是,只要漏说一次,AI 就可能按自己的默认习惯来。

这就是 Skill 出现的背景。

从一次性 Prompt 到 AI Skill 的演进图

这篇文章不是官方文档翻译。我更想按自己理解这件事的过程,把 AI Skill 讲清楚:

  • 它到底比 Prompt 多了什么。
  • 为什么 Codex、Claude Code、Cursor 都在往“技能化”方向走。
  • 我们自己要怎么写一个真正能落地的 Skill。

先说我最开始的误解

我以前以为 Prompt 的问题只是“不够长”。

比如我要让 AI Review 一段 Go 后端代码,通常会这样写:

帮我按我们团队规范 Review 这段 Go 代码,重点关注接口边界、错误处理、并发安全、日志和测试。

这条 Prompt 当然能用。

但用着用着,我又会补充:

handler 不直接写业务逻辑。
error 要保留上下文,不能只返回 err。
goroutine 启动后要有退出条件。
context 不能随便用 context.Background()。
数据库查询不要 select *。
不要只说代码风格,先找真实风险。

再后来我发现,不只是代码 Review。每个项目、每类任务,都有一堆这种“隐形规则”。

接口文档有接口文档的规则。Review 有 Review 的规则。排查线上日志有排查线上日志的规则。做发布检查也有发布检查的规则。

如果这些规则都靠聊天时临时补充,AI Coding 的体验会很不稳定:

问题实际表现
记不住上下文今天按规范写,明天又忘了
难复用每次开新对话都要重新解释
难协作团队其他人不知道你平时怎么教 AI
难演进好用的经验散落在聊天记录里

后来我看了一些有关的科普才把它想明白:

Prompt 更像临时沟通。
Skill 更像可以版本管理的岗位 SOP。

在真实工程里,我们不会指望每个新人都靠口头提醒记住所有规范。我们会写文档、脚本、模板、检查清单。Skill 做的事情也类似,只不过它的读者从人变成了 Agent。


Skill 到底是什么

我现在会这样定义它:

AI Skill = 触发条件 + 操作流程 + 行为约束 + 参考资料 + 可复用脚本/模板

它不是“更长的 Prompt”。

一个典型 Skill 目录大概长这样:

my-skill/
  SKILL.md
  references/
    api-style-guide.md
    database-schema.md
  scripts/
    check_structure.py
  assets/
    template.md

核心是 SKILL.md,但真正让它有工程价值的,经常是旁边的 references/scripts/assets/

AI Skill 目录结构图

一个最小的 Skill 可以这么写:

---
name: go-service-review
description: 用于 Review Go 后端服务代码,重点关注接口边界、错误处理、并发安全、context 传递、数据库访问、日志和测试覆盖。
---

# Go 服务代码 Review

按下面的顺序 Review Go 后端改动:

1. 先看业务行为是否正确,接口边界是否清晰。
2. 检查错误处理:错误是否保留上下文,是否避免吞错和重复包装。
3. 检查并发安全:goroutine 是否可退出,channel 是否可能阻塞,是否存在 data race。
4. 检查 context 传递:不要随意使用 `context.Background()`,超时和取消要能向下传递。
5. 检查数据库访问:不要 `select *`,避免 N+1 查询,新增查询条件要考虑索引。
6. 检查日志和测试:日志不能包含敏感信息,测试要覆盖成功路径、失败路径和边界场景。

报告问题时,先说具体风险和文件位置。除非会影响正确性或维护成本,否则不要把重点放在纯代码风格建议上。

这里有两个细节很重要。

第一个是 description

很多人写 Skill 时,会把“什么时候使用”写在正文里。但 Agent 只有先决定加载这个 Skill,才会看到正文。所以触发条件最好写进 description,而且要具体。

这里也顺便解释一下:name 保留英文短标识更多是工程习惯,方便目录、脚本和工具识别;description、流程、约束、检查清单都可以写中文。只要你的团队主要用中文协作,中文反而更容易维护。

第二个是流程顺序。

我以前写 Review Prompt,经常只写“关注事务、日志、异常”。结果 AI 会按自己的习惯输出一堆建议。后来我把顺序固定成“业务正确性优先,其次数据一致性,再看日志和测试”,输出质量明显稳定了很多。

不是模型突然变聪明了,而是它的工作路径的输出被收窄了。


Prompt 和 Skill 的区别,不在长度

一开始我把 Skill 当成“长的 Prompt”。后来做了几个小 Skill 才发现,真正的区别不是长度,而是生命周期。

对比PromptSkill
生命周期一次对话长期存在
复用方式复制粘贴自动发现或显式调用
内容形态一段文本文件夹、说明、脚本、参考资料、模板
团队协作难共享可以放进 Git
稳定性依赖当次表达依赖固定流程和约束
演进方式聊天记录里改像代码一样迭代

比如这个 Prompt:

帮我检查一下这次数据库变更,重点看字段设计、索引、兼容性和回滚方案。

能不能用?能。

但它太依赖当次表达。下次你要检查订单表、用户表、账单表,又要重新强调哪些字段不能改、哪些索引要看、哪些兼容性风险要提前说明。

Skill 化之后,可以变成这样:

---
name: db-migration-review
description: 用于 Review 数据库表结构和数据迁移变更,重点关注兼容性、索引、数据一致性、回滚方案和上线风险。
---

# 数据库变更 Review

Review 数据库变更时,先判断这次改动会不会影响线上读写路径。

检查顺序:

1. 先确认变更目的和影响范围。
2. 检查是否兼容老版本代码和灰度发布过程。
3. 检查新增索引是否匹配真实查询条件,避免无效索引和锁表风险。
4. 检查字段默认值、空值约束、枚举值扩展是否会影响历史数据。
5. 检查数据迁移脚本是否可重复执行,失败后是否可恢复。
6. 检查回滚方案和监控指标是否清楚。

安全边界:

- 不要直接执行生产写操作。
- 不要假设业务含义,拿不准时要标出问题。
- 不要只看 SQL 能不能跑,还要看上线时机、数据量和锁影响。

之后你只需要说:

帮我看一下这次订单表结构变更有没有风险。

Agent 就有机会按这套数据库变更 Review 的习惯来,而不是每次重新猜。

这里的关键不是“少打几个字”,而是把协作方式固定下来。

Prompt 与 Skill 生命周期对比图


Skill 和 Agent、Memory、Workflow、MCP 的关系

这几个词特别容易混。

我之前看 Agent 架构文章时,经常看到一堆概念堆在一起:

Agent
Memory
Workflow
MCP
Skill
Tool

刚开始看,会觉得它们都像是在“给 AI 增强能力”。但实际做下来,它们管的层不一样。

简单总结来说:

Agent:真正执行任务的运行体
Workflow:规定任务步骤怎么流转
Memory:长期记住偏好、事实和项目约定
MCP / Tools:连接外部系统,比如文件、GitHub、数据库、浏览器
Skill:告诉 Agent 遇到某类任务时应该怎么专业地做

Skill 不是工具,也不是记忆。

它更像“专业行为层”。

Agent 分层架构图

举个更具体的例子。

用户说:

帮我看一下这次订单模块改动有没有问题。

没有 Skill 时,Agent 可能会泛泛地说:

代码整体结构清晰,建议增加测试。

加载 go-service-review Skill 后,它更可能按后端 Reviewer 的思路看:

1. handler 是否只处理 HTTP 入参和响应,而不是直接写业务逻辑?
2. 下单流程里的 context 超时和取消是否能传到库存、支付、数据库层?
3. 支付回调是否幂等?
4. 新增 goroutine 是否有退出条件,是否可能泄漏?
5. 失败日志是否带 orderId 和 traceId,同时不包含敏感字段?
6. 测试是否覆盖重复回调、库存不足和并发下单?

这就是差别。

Skill 没有让 Agent 多一个 shell 工具,也没有让它记住新事实。它改变的是 Agent 做这类任务时的判断顺序和关注点。


Skill 和 MCP:一个管工艺,一个管机器

MCP 是 Model Context Protocol。简单说,它让 AI 应用可以用统一方式连接外部工具。

比如:

Filesystem MCP Server:读写文件
GitHub MCP Server:查 issue、PR、CI
Docs/Search MCP Server:查文档或知识库
Database MCP Server:查结构或执行受控查询

但工具只是工具。

有 GitHub 工具,不代表 Agent 就知道修 issue 前应该先看哪些上下文。有数据库工具,也不代表它知道什么时候不能直接执行写操作。

所以我现在更喜欢这个类比:

MCP 像车间里的机器。
Skill 像工艺流程。
Agent 像操作员。

只有机器,没有流程,很容易乱用。只有流程,没有机器,又只能纸上谈兵。

Skill + MCP 调用链图

一个规定 MCP 使用方式的 Skill 可能长这样:

---
name: github-issue-fixer
description: 用于在具备 GitHub 和文件系统工具的代码库中修复 GitHub issue。
---

# GitHub Issue 修复助手

工作流程:

1. 先阅读 issue 标题、正文、标签和评论。
2. 在代码库里搜索相关模块。
3. 如果条件允许,查看最近相关 commit 或 PR。
4. 编辑文件前,先写一个简短修复计划。
5. 实现最小可行改动。
6. 运行有针对性的测试。
7. 总结修改文件、测试结果和剩余风险。

工具使用建议:

- 用 GitHub 工具读取 issue 和 PR 上下文。
- 用文件系统工具检查和修改代码。
- 用 shell 命令运行测试、lint 和安全的只读检查。

安全边界:

- 不要自动关闭 issue。
- 除非用户明确要求,不要推送分支。
- 不要修改无关文件。

这段内容本身不提供 GitHub API。

它只是告诉 Agent:有了工具以后,应该按什么顺序用,哪些动作不能擅自做。

这个边界很重要。尤其在真实项目里,AI 不是不能调用工具,而是不能乱调用工具。


Codex、Claude Code、Cursor 为什么都在“技能化”

不同产品叫法不一样,但方向确实很像。

工具常见形态更适合沉淀什么
CodexSKILL.md、skills 目录、插件/资源专项工作流、脚本、项目能力包
Claude CodeAgent Skills、CLAUDE.md、slash commands、hooks团队技能、记忆、命令、自动化检查
CursorProject Rules、User Rules、Memories项目规范、编码风格、持久上下文

它们不一定是完全相同的功能,但都在解决同一个工程问题:

怎么让 AI 的行为从临时对话,变成可复用的协作模式。

我自己使用时,会粗略这样区分:

机制更像什么适合场景
Skill能力包某类任务的流程、规则、工具策略
Slash Command按钮/review/commit 这种固定入口
Memory / Rules长期说明项目规范、个人偏好
Hooks自动守门工具调用前后的校验、阻断、审计

比如 Claude Code 里可以有一个项目 Skill:

.claude/
  skills/
    go-service-review/
      SKILL.md

内容可能是:

---
name: go-service-review
description: 用于 Review 或修改 Go 后端服务代码,重点关注 handler、service、repository、context、错误处理、日志和测试。
---

# Go 服务代码 Review

编辑前先做三件事:

1. 分清 handler、service、repository 和 DTO 的边界。
2. 搜索项目里是否已经有类似实现。
3. 优先做符合本地约定的小改动。

Review 检查清单:

- handler 只处理 HTTP 入参、鉴权结果和响应组装。
- service 承载业务规则、事务边界和核心流程。
- repository 不要把存储细节泄漏到上层。
- 参数校验要在业务状态变更前完成。
- error 要保留上下文,但不要重复包装到难以阅读。
- goroutine、channel、mutex 的使用要检查退出、阻塞和 data race 风险。
- 日志要包含业务标识,但不能包含密钥、token、手机号等敏感信息。
- 测试要覆盖成功、失败、边界和并发场景。

Cursor 里不一定叫 Skill,但你用 Rules、Memories 做的很多事,本质上也在沉淀“AI 应该怎么参与这个项目”。

名字不同,不影响背后的趋势:AI Coding 正在从“提示词技巧”走向“能力工程”。


一个 Skill 是怎么被选中的

最简化的版本,其实就四步:

扫描可用 Skill
读取 name + description
根据用户任务选择匹配项
加载完整 SKILL.md,并把 instructions 注入上下文

Skill 选择流程时序图

真实系统肯定会更复杂,可能会有语义检索、排序、项目作用域、上下文预算、权限策略。但理解原理时,先把它想成“按任务选择操作手册”就够了。

这里有个容易踩的坑:不要把所有 Skill 一次性塞进上下文。

Skill 多了以后,如果全部加载,成本高不说,还会互相干扰。一个数据库变更 Review Skill、一个代码 Review Skill、一个安全审计 Skill 同时进上下文,模型很容易不知道到底该听谁的。

更合理的方式是:

先读取 metadata
命中后再读取正文
正文不够再读取 references
确定性任务交给 scripts

这也是为什么 description 要写清楚。


写一个接入 LLM 的迷你 Skill Runner

为了搞明白 Skill 到底怎么影响 Agent 行为,最直接的办法不是只打印上下文,而是接一个真实 LLM 跑一遍。

这个教学版 Runner 只做四件事:

  1. 扫描 skills/*/SKILL.md
  2. 读取 Skill 的 namedescription
  3. 选择一个匹配的 Skill
  4. 把完整 Skill 正文和用户任务一起发给 LLM

项目结构:

mini-skill-runner/
  run_skill_with_llm.py
  skills/
    python-review/
      SKILL.md

skills/python-review/SKILL.md

---
name: python-review
description: 用于 Review Python 代码,重点关注正确性、可读性、类型标注、错误处理、测试和可维护性。
---

# Python 代码 Review

Review Python 代码时:

1. 先找正确性问题。
2. 再看边界条件和错误处理。
3. 检查类型标注和数据结构是否合适。
4. 检查测试是否覆盖了本次改动行为。
5. 输出时先列问题,再写总结。

run_skill_with_llm.py

from dataclasses import dataclass
from pathlib import Path
from openai import OpenAI
import os
import re
import sys


DEMO_CODE = """
def average_price(items):
    total = 0
    for item in items:
        total += item["price"] / item["count"]
    return total / len(items)
"""


@dataclass
class Skill:
    name: str
    description: str
    body: str
    path: Path


def parse_skill(path: Path) -> Skill:
    text = path.read_text(encoding="utf-8")
    match = re.match(r"---\r?\n(.*?)\r?\n---\r?\n(.*)", text, re.S)
    if not match:
        raise ValueError(f"Invalid skill file: {path}")

    frontmatter, body = match.groups()
    data = {}
    for line in frontmatter.splitlines():
        if ":" in line:
            key, value = line.split(":", 1)
            data[key.strip()] = value.strip()

    return Skill(
        name=data["name"],
        description=data["description"],
        body=body.strip(),
        path=path,
    )


def load_skills(root: Path) -> list[Skill]:
    return [parse_skill(path) for path in root.glob("*/SKILL.md")]


def score(task: str, skill: Skill) -> int:
    text = f"{skill.name} {skill.description}".lower()
    words = re.findall(r"[a-zA-Z][a-zA-Z0-9_-]+", task.lower())
    return sum(1 for word in words if word in text)


def select_skill(task: str, skills: list[Skill]) -> Skill | None:
    ranked = sorted(skills, key=lambda skill: score(task, skill), reverse=True)
    if not ranked or score(task, ranked[0]) == 0:
        return None
    return ranked[0]


def build_input(task: str, skill: Skill) -> str:
    return f"""
你是一个谨慎的代码审查 Agent。

下面是本次任务加载的 Skill,请按它的流程和约束工作:

{skill.body}

用户任务:
{task}

待 Review 代码:

```python
{DEMO_CODE.strip()}
```
"""


def main() -> int:
    if len(sys.argv) < 2:
        print("Usage: python run_skill_with_llm.py <task>")
        return 2

    model = os.getenv("OPENAI_MODEL")
    if not model:
        print("Please set OPENAI_MODEL, for example: $env:OPENAI_MODEL='gpt-5.6'")
        return 2

    task = " ".join(sys.argv[1:])
    skills = load_skills(Path("skills"))
    skill = select_skill(task, skills)

    if skill is None:
        print("No matching skill. Use general agent behavior.")
        return 0

    print(f"Selected skill: {skill.name}")
    print()
    print("LLM response:")
    print("=" * 40)

    client = OpenAI()
    response = client.responses.create(
        model=model,
        input=build_input(task, skill),
    )

    print(response.output_text)
    print("=" * 40)
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

运行:

pip install openai
$env:OPENAI_API_KEY="你的 API Key"
$env:OPENAI_MODEL="gpt-5.6"
python run_skill_with_llm.py "review this Python code for bugs and tests"

输出会类似:

Selected skill: python-review

LLM response:
========================================
问题:
1. `items` 为空时会触发除零错误。
2. `item["count"]` 为 0 时会触发除零错误。
3. `price` 或 `count` 缺失时会抛出 KeyError,错误信息对调用方不友好。

建议:
- 先校验输入列表不能为空。
- 校验每个元素是否包含必要字段。
- 对 `count <= 0` 的数据给出明确错误。
- 为正常、空列表、缺失字段、count 为 0 的场景补测试。
========================================

这个 Demo 比单纯打印上下文更直观,因为你能看到同一段代码在加载 Skill 后,输出会更接近 Skill 里规定的 Review 顺序。

当然,它仍然很简陋:

  • Skill 选择还只是英文关键词匹配。
  • 中文任务要做得更好,需要分词、向量检索或语义匹配。
  • 真实系统还要考虑文件类型、目录、历史使用、用户显式指定和工具权限。
  • 调用真实 LLM 会产生 API 成本,所以不要把 API Key 写进代码或仓库。

但它已经能把 Skill 系统的骨架说明白:

Skill 不是黑科技。
它就是先被发现,再被选择,最后作为上下文影响 Agent 行为。

Skill 真正提效的地方

我一开始以为 Skill 最大收益是“少写 Prompt”。

后来发现,这只是最浅的一层。

更有价值的是后面几层:

少解释项目背景
少纠正输出风格
少出现流程漂移
少改无关文件
团队经验可以沉淀进 Git

比如团队共享一个代码审查 Skill:

# Service Review

按下面的优先级找问题:

1. 行为回归。
2. 数据一致性。
3. 安全和权限校验。
4. 可观测性和错误处理。
5. 测试覆盖。

除非影响可维护性或正确性,否则不要把时间花在纯格式、命名这类表层风格问题上。

这几行规则看起来朴素,但很管用。

因为很多 AI Review 的问题不是“看不懂代码”,而是“优先级不对”。它可能花很多篇幅讲命名、空行、注释,却漏掉事务边界、幂等、权限校验这种真正会出事的东西。

Skill 的作用就是把优先级固定住。

团队共享代码 Review Skill 的协作流程图

还有一个点:Skill 可以减少幻觉空间,但不能消灭幻觉。

比如在 API 文档生成 Skill 里写:

不要编造 API 字段。写接口文档前,先读取 OpenAPI schema 或 controller 定义。

这句话不能保证模型永远不编字段,但会改变它的行为倾向。

更稳的做法是配脚本:

从 OpenAPI JSON 自动抽取 endpoint
再让模型只负责解释和组织文字

能确定的部分交给程序,需要表达的部分交给模型。这才是我觉得 Skill 工程化里最重要的思路。


团队里怎么管理 Skill

如果 Skill 只是你本地的几个 Markdown 文件,它更多是个人效率工具。

如果它进了团队仓库,就变成团队资产。

这时就不能随便写了。至少要像代码一样管理:

  • 有目录规范。
  • 有 owner。
  • 有 Review。
  • 有版本。
  • 有测试样例。
  • 有安全边界。

一个比较舒服的目录可以这样设计:

ai-skills/
  skills/
    service-review/
      SKILL.md
      references/
        backend-style.md
        error-code.md
      scripts/
        check_structure.py
    api-doc-writer/
      SKILL.md
      references/
        doc-style.md
  adapters/
    cursor/
    claude/
    codex/

为什么要有 adapters/

因为不同工具的格式不完全一样。团队可以维护一份标准 Skill 源,再生成不同工具需要的格式:

Claude Code: .claude/skills/...
Codex: .agents/skills/...
Cursor: .cursor/rules/...

我不建议一开始就做得特别复杂。

比较现实的做法是,先从一个高频任务开始,比如:

service-review
api-doc-writer
db-migration-review
incident-analysis
release-note

每个 Skill 只解决一类任务。别把所有团队规范塞进一个 “super-skill”,最后谁也不敢改,Agent 也抓不住重点。


安全问题不能跳过

Skill 本身也可能成为风险源。

因为它会影响 Agent 行为,而且里面可能带脚本。

常见风险有这些:

  • 恶意 Skill 在说明里诱导 Agent 泄露数据。
  • Skill 里的脚本执行危险命令。
  • Skill 要求读取过多敏感文件。
  • Skill 给工具过宽权限。
  • description 写得太宽,导致误触发。

所以团队共享 Skill 至少要做几件事:

  • 只安装可信来源的 Skill。
  • Review SKILL.mdscripts/
  • 不把密钥写进 Skill。
  • 高危写操作、发布、删除必须有人确认。
  • 对 Skill 的变更走代码审查。

这部分听起来没那么有趣,但在真实项目里很关键。

AI Coding 的问题从来不是“能不能自动化”,而是“自动化以后出了事谁兜底”。Skill 越强,这个问题越要提前想清楚。

AI Skill 安全审查流程图


更大的图:Skill + Workflow + Memory + MCP + Multi-Agent

如果只看单个 Skill,它就是一个能力包。

但放到更大的 AI Coding 系统里,它的位置会更清楚:

用户任务
  ↓
Workflow 拆步骤
  ↓
不同 Agent 执行不同节点
  ↓
Skill 提供专业行为
  ↓
Memory 补充长期上下文
  ↓
MCP / Tools 连接真实系统
  ↓
测试、审计、人类确认形成闭环

AI Coding 分层架构图

Multi-Agent 如果没有 Skill,很容易变成角色扮演:

你是架构师。
你是开发者。
你是测试。

听起来分工明确,实际输出经常还是泛泛而谈。

更有用的做法是:

架构师 Agent 有 architecture-review Skill。
开发者 Agent 有 implementation Skill。
测试 Agent 有 test-design Skill。
发布 Agent 有 release-checklist Skill。

角色名只是标签。Skill 才是能力。


我现在会怎么写第一个 Skill

如果让我从零开始,我不会先写一个很大的 Skill 系统。

我会找一个每周都在重复做的任务,比如代码 Review。

然后只写这几个部分:

---
name: service-review
description: 用于 Review 后端服务代码改动,重点关注正确性、数据一致性、安全、可观测性和测试覆盖。
---

# 服务代码 Review

Review 前:

1. 先阅读变更文件。
2. 梳理请求流和数据变更路径。
3. 搜索项目里是否已有类似实现。

Review 优先级:

1. 行为回归。
2. 数据一致性和事务边界。
3. 权限和安全检查。
4. 日志、指标和排障上下文。
5. 测试覆盖。

报告格式:

- 先列问题,按严重程度排序。
- 尽量附上文件和行号。
- 除非影响可维护性,否则跳过纯风格建议。

边界:

- Review 过程中不要修改文件。
- 不要编造业务规则。
- 如果测试无法运行,要说明原因。

先让它在真实任务里跑几次。

跑完再改。

不要一开始就追求完美。Skill 跟代码一样,只有进入真实使用场景,问题才会暴露出来。

我自己踩过的一个坑是:Skill 写得太“全面”,反而不好用。

比如一个 Skill 同时要求:

检查安全
检查性能
检查命名
检查架构
补测试
写文档
生成总结

看起来很强,实际执行时容易发散。后来我更倾向把它拆成几个小 Skill,让每个 Skill 只解决一类问题。


最后聊聊:Skill 的价值其实不在“炫”

Skill 这东西看起来没有 Agent 框架、MCP Server、向量数据库那么热闹。

但我越用越觉得,它很接近 AI 工程化的基础设施。

因为真正重要的不是“让 AI 会写一段代码”,而是把团队里的隐性经验沉淀下来:

  • 业务规则
  • 架构约定
  • 发布流程
  • 故障处理经验
  • 数据口径
  • 安全红线
  • Review 偏好

这些东西不会自动存在于模型里。

你不写,Agent 就只能猜。

Skill 的意义,就是把这些“以前靠人记住、靠口头传递、靠踩坑积累”的东西,变成 AI 可以读取、可以执行、可以迭代的能力资产。

我现在对 Skill 的理解很简单:

Prompt 是一次性交互。
Skill 是长期协作方式。

Codex、Claude Code、Cursor 的实现方式会继续变化,目录名、触发方式、产品入口也可能变。但这个方向大概率不会变:

AI Coding 会从临时聊天,走向可复用、可审查、可演进的工程协作。

如果你还没写过 Skill,可以先从一个最小版本开始:

选一个每周重复做的任务。
写清楚什么时候用。
写清楚先做什么、后做什么。
写清楚不能做什么。
配一个必要的参考文件或脚本。
拿真实任务跑几次,再迭代。

当第一个 Skill 真正跑顺以后,你会发现自己和 AI 的关系会有点变化。

它不再只是一个“问答工具”。

它开始像一个可以被训练、被约束、被复盘的工程协作者。


参考资料

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐