本页目录5
这个考点是什么
这个考点考的是 Claude Code 里两种「让 Claude 按你定义的方式做事」的机制:自定义斜杠命令(custom slash commands)和 skills。
官方文档口径是二者已经合并——一个放在 .claude/commands/deploy.md 的文件和一个放在 .claude/skills/deploy/SKILL.md 的文件,都会创建 /deploy 命令,行为等价,命令名来自文件名或目录名。
理解这一点是这个考点的地基:不要把 commands 和 skills 当成两套并列的知识去记,它们的 frontmatter 字段(如 $ARGUMENTS、allowed-tools、disable-model-invocation)和触发方式是共用的。
第二层是作用域(scope)。项目级放在 .claude/,随仓库签入版本库,团队共享;个人级放在 ~/.claude/,跨项目生效但只对你自己可见。
这条边界和 subagents(.claude/agents/ vs ~/.claude/agents/)、MCP 服务器配置的 local/project/user 三级是同一类分层逻辑的不同实例,但字段名、默认值、冲突时谁优先各不相同,容易在选项里被互相替换成干扰项。
第三层是触发方式与执行位置的区分:
-
命令/skill 默认可以被 Claude 根据
description自动判断加载,也可以用disable-model-invocation: true限定为只能用户手动/name触发; -
而
context: fork这类 frontmatter 会让 skill 的正文变成一个隔离子代理(subagent)的 prompt,不携带主对话历史,只把最终结果带回主会话——这与 skill 默认在主上下文内联执行是两种截然不同的执行模型。
为什么考
命题人常见的出题角度有三类:
-
一是把「commands 和 skills 已合并」这条容易被想当然按旧知识分开记的事实,做成判断题或多选的其中一项;
-
二是围绕 frontmatter 字段的默认值出反直觉陷阱,例如
$ARGUMENTS未在正文出现时参数并不会丢失,而是被追加为ARGUMENTS: <value>,以及tools/allowed-tools省略时是「继承/放开」而非「禁止」; -
三是拿 skill 和 subagent 的执行模型做对照——skill 默认在主上下文里跑、由模型自动判断触发,
context: fork才会启动独立上下文的子代理,这条边界经常被出成「以为 skill 天然就是隔离执行」的错误选项。
多选题里还会混入个人/项目作用域谁对谁公开、谁进版本库的选项做干扰。
核心辨析
- 1
commands 与 skills 是同一机制的两种落地位置,不是两套体系
.claude/commands/x.md与.claude/skills/x/SKILL.md都产生/x命令,共享$ARGUMENTS、allowed-tools等 frontmatter 语义。遇到选项把二者描述成「需要分别配置触发规则」或「行为不同」,基本可判定为错。 - 2
作用域优先级要按类型分别记,不能混用同一条规则套所有机制
commands/skills 的项目级(
.claude/,签入仓库、团队共享)vs 个人级(~/.claude/,跨项目、仅自己可见)是「共享范围」的区分;subagents 同名冲突时是「项目定义覆盖用户定义」的优先级区分;MCP 的 local/project/user 三级则精度更细、且 local 默认写入~/.claude.json而非.claude/settings.local.json。三者字面相似但规则不通用,题目常把某一类的规则错配到另一类上作为干扰项。 - 3
$ARGUMENTS只替换为命令名之后的原始文本,不包含命令名本身例如
/fix-issue 123展开后$ARGUMENTS是123而不是/fix-issue 123或空。若正文里没写$ARGUMENTS但用户仍传了参数,不会被丢弃,而是以ARGUMENTS: <value>的形式追加——这是「省略字段≠功能失效」这一出题套路在 commands/skills 上的具体表现。 - 4
allowed-tools的免确认权限是当次调用有效,不是永久授权写在 frontmatter 里的工具列表让 Claude 在这一次命令/skill 调用的这一轮里跳过权限确认,下一条用户消息发出后授权即失效,不能理解成「从此这个工具再也不用确认」。
- 5
context: fork触发的是隔离子代理执行,默认执行是内联在主上下文不加这个字段时,skill 正文就是主对话里追加的一段指令,共享现有上下文和工具权限;加了
context: fork后,正文变成驱动一个独立子代理的 prompt,该子代理看不到主对话历史,执行完只把最终结果带回来——这条边界经常被出成「skill 默认就是独立进程/独立上下文」的错误描述。 - 6
disable-model-invocation控制的是「谁能触发」,不是「工具权限」设为
true时 Claude 不会根据description自动加载该 skill/命令,只能由用户显式敲/name触发;这与allowed-tools(控制免确认执行哪些工具)是两个独立维度,题目常把两者的作用故意调换。
反模式对照
把自定义斜杠命令和 skills 当成两套需要分别配置触发规则的独立系统来学
记住二者已合并为同一机制的两种文件落位,frontmatter 字段和触发语义通用
文档明确写出 .claude/commands/deploy.md 与 .claude/skills/deploy/SKILL.md 行为等价,分开记忆容易在选项里被「触发方式不同」这类干扰项带偏。
认为省略 tools/allowed-tools 等字段会导致该命令、skill 或 subagent 无法使用任何工具
省略这类字段时默认是继承/放开(subagent 继承全部可用工具),而不是收紧为零
这是题库里反复出现的「省略字段≠受限」套路,凭直觉认为「没写=没有」是最容易失分的地方。
以为 context: fork 只是个可选的性能优化标记,skill 实际执行方式不受影响
context: fork 会让 skill 正文变成隔离子代理的 prompt,不带主对话历史,仅返回最终结果
默认(不加 fork)是内联在主上下文执行、共享现有对话;两种执行模型的边界是这条考点的高频陷阱。
看到 $ARGUMENTS 没出现在命令正文里,就以为用户输入的参数会被忽略
未使用 $ARGUMENTS 时,传入的参数会以 ARGUMENTS: <value> 形式自动追加到内容末尾
官方文档明确说明了这一兜底行为,题目常用「参数丢失/报错」作为错误干扰项来测试这一点是否被记混。
练这个考点
练习模式支持按考点专练(需 Google 登录,不占用正式考机会)。
专练考点 3.2该考点的公开题(免登录,含完整解析):
- You are creating a custom project-scoped subagent. Which statement accurately describes ho…
- Which statements about configuring MCP servers in Claude Code are correct? (Select all tha…
- Which statements about Claude Code subagents are TRUE? Select all that apply.
- A custom command file at .claude/commands/fix-issue.md contains the body 'Fix GitHub issue…
- A developer wants a /scaffold skill that generates boilerplate for a new microservice. The…
- You want Claude Code to enforce a specific PR review checklist on every pull request. What…