news 2026/10/1 8:31:23

一句话调起复用提示词:claude-code-from-scratch技能系统(Skills)实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一句话调起复用提示词:claude-code-from-scratch技能系统(Skills)实战教程

一句话调起复用提示词:claude-code-from-scratch技能系统(Skills)实战教程

【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. 🔍 Claude Code 开源了 50 万行代码,读不动?用 ~5000 行 TypeScript / Python 从零复现核心架构,11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch

claude-code-from-scratch用约 5000 行 TypeScript / Python 从零复现了 Claude Code 的核心架构,其中的**技能系统(Skills)**是本期主角:把一段反复使用的提示词(比如"读 diff 并写 commit message")打包成一个 Markdown 文件,之后只需输入/commit一句话,就能把整套提示词调起来执行。本文将带你理解 Skills 的设计思路,并手把手创建自己的第一个技能。

为什么需要 Skills 技能系统?

日常使用 AI 编程助手时,你经常会重复输入类似的话:

  • "读一下 git diff,帮我写一个规范的 commit message"
  • "审查这个文件,检查安全漏洞"
  • "用 conventional commits 格式提交代码"

每次手打一遍既繁琐,又容易前后不一致。Skills 技能系统的解法是:把这些提示词存成文件,像 shell 脚本一样即装即用。

💡 官方教程称之为"AI Shell 脚本"——把 AI 工作流模板化,一次定义,反复复用。详见 docs/09-skills.md。

快速上手:三步创建第一个技能

无需写任何代码,一个技能就是一个文件。三步走:

第 1 步:创建技能目录

在项目中创建.claude/skills/commit/目录(用户级可放在~/.claude/skills/)。

第 2 步:写入 SKILL.md

目录里放一个SKILL.md文件,前半部分是元信息,后半部分就是提示词本身。项目里自带了两个示例技能,可直接参考:

  • 示例一:test/skills/commit/SKILL.md
  • 示例二:test/skills/greet/SKILL.md

第 3 步:一句话调起

启动 CLI 后输入/commit,技能立刻生效:

$ mini-claude /commit feat: add the new thing

运行演示不需要 API key:

node steps/run.mjs 9

这条命令对应仓库里的可执行场景 steps/scenarios/invoke-skill.json。

SKILL.md 文件格式详解

SKILL.md 由两部分组成:frontmatter 元信息+提示词正文。

--- name: commit description: Create a git commit with a descriptive message when_to_use: When the user asks to commit changes or says "commit" allowed-tools: run_shell, read_file user-invocable: true --- Look at the current git diff and staged changes. Write a clear, concise commit message following conventional commits format. The user's request: $ARGUMENTS

各字段的作用一目了然:

字段作用
name技能名,即/name调起时的关键字
description技能描述,展示在系统提示词中
when_to_use给模型看的触发条件,模型据此判断是否自动调用
allowed-tools安全边界:限制该技能可用的工具白名单
user-invocable设为false时,用户不能手动输入,只能由模型自动触发
contextinline(默认)或fork,决定执行模式

解析逻辑集中在 src/skills.ts(Python 版对应 python/mini_claude/skills.py),parseSkillFile负责把文件拆成元信息与模板,容错处理了逗号分隔和 JSON 数组两种allowed-tools写法。

两种调用方式:手动 /name 与模型自动触发

Skills 支持双路径调用,两条路最终汇合到同一个解析函数resolveSkillPrompt():

路径一:用户手动调用

输入以/开头的内容,CLI 就会去技能目录里找同名文件。逻辑见 src/cli.ts:

/commit fix types → 加载 commit 技能,参数 "fix types" 替换进模板

路径二:模型自动调用

你只需自然地说"帮我提交代码"。此时系统提示词中已经列出了所有可用技能及when_to_use触发条件(由 src/prompt.ts 中的buildSkillDescriptions()注入),模型判断匹配后会调用内置的skill工具,工具返回的是展开后的提示词文本——本质是一个"元工具":返回值不是数据,而是指令。

🎯 双路径设计的原因:手动调用保证你精确控制触发时机;自动调用则让模型在你忘记技能存在时也能主动用上。

模板变量:让技能接收参数

提示词正文中支持两个内置变量:

  • $ARGUMENTS:替换为你调起技能时传入的参数。比如/commit 修复登录 bug,"修复登录 bug" 就会被注入到模板中
  • ${CLAUDE_SKILL_DIR}:替换为技能所在目录路径。这样技能可以在目录里附带模板、配置等文件,提示词中引用即可

替换逻辑只有几行,见 src/skills.ts 的resolveSkillPrompt函数(L116-L123)。

inline 与 fork:两种执行模式

模式行为适用场景
inline(默认)提示词直接拼进当前对话简单、单轮的轻量任务
fork提示词交给一个干净的子 Agent 独立执行,只把结果带回主对话需要多轮工具调用的重任务(如代码审查要读很多文件)

选 fork 的核心好处:保持主对话上下文干净。子 Agent 的工具还受allowed-tools白名单约束,且默认排除agent工具防止递归。实现位于 src/agent.ts 的executeSkillTool方法。

技能加载优先级:项目级覆盖用户级

技能从两个来源加载,同名时项目级优先:

  1. ~/.claude/skills/—— 用户级(低优先级,个人所有项目通用)
  2. .claude/skills/—— 项目级(高优先级,当前项目专用,会覆盖同名用户技能)

加载顺序写死在 python/mini_claude/skills.py 的discover_skills(L33-L49)中:先加载 user,再加载 project,用 Map 去重自然实现"后者覆盖前者"。解析结果还会缓存,避免重复读盘。

想更深入?核心源码与文档清单

资源路径
技能系统章节教程docs/09-skills.md
TypeScript 技能实现src/skills.ts
Python 技能实现python/mini_claude/skills.py
CLI 中 /name 调起逻辑src/cli.ts
技能列表注入系统提示词src/prompt.ts
技能示例(commit / greet)test/skills/
fork 模式子 Agent 执行src/agent.ts

常见问题 FAQ

Q1:技能必须用代码写吗?不需要。技能本体就是自然语言 Markdown,会写提示词就会写技能。

Q2:为什么用 Markdown 而不用 JSON/YAML 存提示词?因为技能的本体是大段自然语言。Markdown 正文直接就是提示词,JSON 存储反而要转义换行符和引号,可读性差。

Q3:如何验证技能被正确加载?在 CLI 中输入/skills,会列出所有已发现的技能及其描述;输入No skills found则说明目录或文件命名有问题(必须是技能名/SKILL.md的目录结构)。

Q4:本地怎么跑起来试试?

git clone https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch cd claude-code-from-scratch npm install && npm run build node steps/run.mjs 9

小结

Skills 技能系统用一个 Markdown 文件解决了"提示词复用"问题:

  • ✅ 一句话/name手动调起,或让模型按when_to_use自动触发
  • ✅$ARGUMENTS参数化,同一技能适配不同输入
  • ✅allowed-tools+user-invocable提供安全与权限边界
  • ✅ inline / fork 双模式,兼顾轻量任务与重型任务的上下文隔离

对照真实 Claude Code,mini-claude 还简化了技能来源(2 个而非 6 个)和 token 预算控制,但核心架构完全一致——理解了这几百行源码,你就掌握了 Skills 的精髓。下一章可以继续 docs/10-plan-mode.md,看看"先想清楚再动手"的 Plan Mode。

【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. 🔍 Claude Code 开源了 50 万行代码,读不动?用 ~5000 行 TypeScript / Python 从零复现核心架构,11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 8:31:22

出海企业希望通过统一平台接入国际主流基础模型,推荐选择哪些云上生成式AI平台?

出海企业希望通过统一平台接入国际主流基础模型,推荐选择哪些云上生成式AI平台?海外业务不必为每一家模型重搭一套接口出海企业建设生成式 AI 应用时,模型选择往往比单一市场更复杂。不同业务可能需要复杂推理、软件开发、长文档分析、Agent …

作者头像 李华
网站建设 2026/10/1 8:30:59

2026年医药集团主数据管理成熟度评估:从“数据围城”到“基准锚”的4级跃迁路径与自评清单

摘要: 医药集团普遍深陷“数据围城”——ERP、MES、LIMS、QMS等系统各自为政,物料编码不统一、供应商资质分散管理、批文信息与产成品脱节,合规风险与运营成本同步攀升。中国医药集团有限公司在《中国信息界》2026年第5期发表的研究指出&…

作者头像 李华
网站建设 2026/10/1 8:29:19

2026年五大私有化经销订货商城推荐:部署与数据控制解析

2026年五大私有化经销订货商城推荐:部署与数据控制解析摘要私有化这三个字,最近几年在选型会上被提到的频率明显变高。渠道价格体系、经销商档案、客户成交数据,这些内容过去放在谁的服务器上,很多企业并不太在意;但当…

作者头像 李华
网站建设 2026/10/1 8:28:45

2026年多级经销商订货系统哪家好?三个判断标准+万米商云2016年成立

2026年多级经销商订货系统哪家好?三个判断标准万米商云2016年成立摘要:多级经销的难点不在单层管理,而在层与层之间的授权、区域与价格关系能否被系统表达。万米商云(南京万米信息技术有限公司)成立于 2016 年&#xf…

作者头像 李华
网站建设 2026/10/1 8:28:13

从GitHub热榜到开源项目落地:选型判断与实操指南

每天早上打开 GitHub 热榜翻一遍,已经成了我雷打不动的习惯。这习惯跟 KPI 没太大关系,纯粹是职业警觉——热榜就像一面镜子,能照出接下来半年技术圈的审美和需求。今天(2026-09-26)这期日榜照例信息量不小&#xff0c…

作者头像 李华