SkillTool:执行 Skills
它不是命令别名,而是技能运行时
很多人第一次看到 /commit、/verify、/update-config 这类 skill,会以为它们只是更长 prompt 的快捷方式。
但从源码看,SkillTool 明显比“文本别名”复杂得多。
它负责的是:
- 找到 skill 对应的 command
- 解析参数
- 处理本地 skill 和 MCP skill
- 必要时 fork 一个子 Agent 去跑
所以更准确的说法是:
SkillTool是 Claude Code 的技能执行器。
关键源码
tools/SkillTool/SkillTool.ts:
import {
builtInCommandNames,
findCommand,
getCommands,
} from 'src/commands.js'
import { runAgent } from '../AgentTool/runAgent.js'
文件里还有一段很关键:
async function executeForkedSkill(
command: Command & { type: 'prompt' },
...
): Promise<ToolResult<Output>> {
...
}
这说明 skill 执行并不总在当前线程内完成,复杂 skill 可以 fork。
调用链
加载图表中…
它还兼容 MCP skills
源码里专门有一段:
async function getAllCommands(context: ToolUseContext): Promise<Command[]> {
const mcpSkills = context
.getAppState()
.mcp.commands.filter(
cmd => cmd.type === 'prompt' && cmd.loadedFrom === 'mcp',
)
...
}
这说明 SkillTool 并不只执行本地技能,还能把 MCP 侧暴露出来的 prompt skills 统一纳入调度。
一次典型使用路径
- 用户输入
/commit SkillTool找到这个 skill 的 command- skill prompt 被展开
- 必要时 fork 子 Agent 跑完整流程
- 结果回到主线程
它和相邻工具的关系
加载图表中…
小结
SkillTool 代表 Claude Code 走向平台化的一步:
它把“技能”从普通 prompt 文本提升成了可被系统调度、可 fork、可统计、可扩展的正式能力单元。