教程

Claude Code Skills 进阶:动态上下文注入、路径限定激活和 Subagent 集成深度指南

Claude Code Skills 三个高级特性深度指南:动态上下文注入(!! 命令预处理原理、内联和多行语法、实战健康检查 Skill 含 6 个命令块、安全注意事项);路径限定自动激活(TypeScript 严格模式/SQL 安全/React 组件三个实战示例);context: fork 在 Subagent 运行(适用场景判断、agent 类型选择);以及三种特性组合的完整 PR 审查 Skill 示例。

2026/5/108分钟 阅读ClaudeEagle

掌握了 Skills 基础后,三个高级特性可以让 Skills 真正发挥威力:用 Shell 命令在 Claude 看到内容前注入实时数据、用路径 glob 让 Skills 只在相关文件上自动激活、用 context: fork 在独立 Subagent 里运行复杂任务。本文是这三个高级模式的深度指南。


高级模式一:动态上下文注入(Shell 命令预处理)

工作原理

Skills 里的 !`命令` 语法在内容发送给 Claude 之前在本地执行,命令输出替换占位符。Claude 看到的是真实数据,而不是命令本身。

Skill 内容: "当前 git 状态:!`git status --short`" Claude 实际看到的: "当前 git 状态: M src/api/auth.ts ?? src/api/payments.ts"

这不是 Claude 执行的命令,而是预处理,在 Claude 介入前已完成。

内联命令

markdown
---
name: pr-context
description: 加载当前 PR 的上下文,帮助 Claude 理解工作背景
---

## Pull Request 信息

- PR 差异:!`gh pr diff --stat`
- 最新评论:!`gh pr view --comments | head -50`
- CI 状态:!`gh pr checks`
- 分支信息:!`git log main..HEAD --oneline`

多行命令块

使用 ```! 块执行多行命令:

markdown
---
name: env-check
description: 检查开发环境配置状态
---

## 当前环境

```!
echo "=== Node.js ==="
node --version
echo "=== npm 版本 ==="
npm --version
echo "=== 环境变量 ==="
echo "DATABASE_URL: ${DATABASE_URL:+已设置}"
echo "API_KEY: ${API_KEY:+已设置}"
echo "=== 数据库连接 ==="
node -e "require('./src/db').ping().then(() => console.log('✅')).catch(e => console.log('❌', e.message))" 2>/dev/null || echo "无法测试"
### 安全注意事项 项目级 Skills(`.claude/skills/`)的 Shell 执行在接受工作区信任后生效,与 `.claude/settings.json` 的权限规则相同。**Review 你克隆的项目的 Skills,因为 Skill 可以授予自己宽泛的工具访问权限。** 禁用特定来源的 Shell 执行: ```json // .claude/settings.json { "disableSkillShellExecution": true }

(这个设置不影响 Bundled Skills 和 Managed Skills。)


实战示例:代码库健康检查

markdown
---
name: health-check
description: 全面的代码库健康检查,包含测试/覆盖率/技术债/依赖状态
disable-model-invocation: true
allowed-tools: Bash(npm *) Bash(git *)
effort: high
---

## 代码库健康状况报告

### 测试
```!
npm test -- --reporter=min 2>&1 | tail -10

覆盖率

npm run test:coverage 2>&1 | grep "All files" | head -3

TypeScript 错误

npx tsc --noEmit 2>&1 | head -20

技术债标记

grep -rn "TODO\|FIXME\|HACK\|XXX" src/ --include="*.ts" | wc -l | xargs echo "技术债标记数:"

依赖安全

npm audit --json 2>/dev/null | python3 -c " import json,sys try: d=json.load(sys.stdin) v=d['metadata']['vulnerabilities'] print(f'Critical: {v[\"critical\"]}, High: {v[\"high\"]}, Moderate: {v[\"moderate\"]}') except: print('audit 数据不可用') "

最近 7 天的提交活跃度

!git log --since="7 days ago" --oneline | wc -l | xargs echo "本周提交数:"


分析以上数据,给出:

  1. 整体健康评分(A/B/C/D)
  2. 最需要关注的 3 个问题
  3. 各项指标的趋势判断(良好/警告/危险)
--- ## 高级模式二:路径限定自动激活 ### 工作原理 `paths` 字段定义 glob 模式,只有在处理匹配文件时,Claude 才自动激活这个 Skill。 ```yaml paths: "src/components/**/*.tsx" # 单个 glob paths: "src/**/*.ts,tests/**/*.ts" # 逗号分隔多个 paths: # YAML 列表 - "src/api/**" - "src/types/**"

激活时机:Claude 正在查看、编辑或讨论匹配路径的文件时。

注意:路径限定的 Skill 仍然可以通过 /skill-name 手动调用,不受路径限制。


实战示例

TypeScript 严格模式规范(TS 文件专用)

markdown
---
name: ts-strict
description: TypeScript 严格类型的编码规范,在编辑 TS 文件时自动激活
paths: "**/*.ts,**/*.tsx"
user-invocable: false
---

编写 TypeScript 代码时,严格遵守以下规范:

**类型安全**
- 禁止使用 `any`,改用 `unknown` 配合类型守卫
- 禁止无目的的类型断言(`as SomeType`),必须有注释说明
- 所有公共 API 函数必须有显式返回类型注解
- 优先使用联合类型(`A | B`)而非 `Optional<A>`(TypeScript 5+)

**Null 安全**
- 开启 `strictNullChecks`(已在 tsconfig 里配置)
- 可选链(`?.`)和空值合并(`??`)优于显式 null 检查

**错误处理**
- `try/catch` 的 catch 参数用 `unknown`,不用 `any`
- 类型收窄:`if (error instanceof Error) { ... }`

SQL 文件安全规范

markdown
---
name: sql-safety
description: SQL 文件的安全约束,防止注入
paths: "**/*.sql,src/**/*query*.ts,src/**/*repository*.ts"
user-invocable: false
---

处理数据库查询时:

**强制要求**
- 所有参数化查询,禁止字符串拼接
- 使用 `$1, $2` 占位符(PostgreSQL)或 `?` 占位符(MySQL)
- 用户输入必须通过参数传递,不能直接插入 SQL 字符串

**禁止模式**
```typescript
// ❌ 禁止
const query = `SELECT * FROM users WHERE id = ${userId}`;

// ✅ 正确
const query = 'SELECT * FROM users WHERE id = $1';
const result = await db.query(query, [userId]);

如果发现字符串拼接的 SQL,立即提醒并重写。

#### React 组件规范(组件目录专用) ```markdown --- name: react-standards description: React 组件编写规范,在组件目录自动激活 paths: "src/components/**,src/pages/**,src/views/**" user-invocable: false --- 编写 React 组件时: **组件结构** 1. Props interface 声明(`interface ComponentProps { ... }`) 2. 函数式组件(`const Component: React.FC<Props> = ({ ... }) => {`) 3. Hooks 调用(useState、useEffect 等在函数体顶部) 4. 事件处理函数 5. 渲染逻辑 **性能** - 纯展示组件用 `React.memo` 包裹 - 回调函数用 `useCallback`(传递给子组件时) - 昂贵计算用 `useMemo` **禁止** - Class 组件(除非有特殊理由) - `any` 类型的 Props - 直接修改 state(`state.push()` 等)

高级模式三:context: fork(在 Subagent 里运行)

适用场景

用途是否适合 context: fork
需要访问对话历史作为上下文❌ 不适合(fork 不访问历史)
大量探索性工作(日志、搜索结果)✅ 适合(不污染主会话)
需要独立的模型/努力等级配置✅ 适合
并行执行的调研任务✅ 适合
需要只读访问✅ 适合(指定 agent: Explore)

可选的 agent 类型

yaml
context: fork
agent: Explore       # 只读工具,Haiku 模型,适合代码探索
agent: Plan          # 只读工具,适合规划阶段研究
agent: general-purpose  # 全部工具(默认)
agent: my-custom-agent  # 任何 .claude/agents/ 里的自定义 agent

实战示例:依赖分析器

markdown
---
name: dep-analysis
description: 深入分析项目依赖关系和潜在问题,在独立上下文里运行
context: fork
agent: Explore
---

对当前项目进行依赖分析:

1. 读取 package.json(或 requirements.txt/go.mod)
2. 识别以下问题:
   - 重复功能的依赖(两个做同一件事的库)
   - 主版本升级可用的过时依赖
   - 已知有安全问题的依赖
   - 只在开发中使用但放在 dependencies 里的包

3. 分析依赖图的深度(间接依赖数量)

4. 输出报告:
   - 关键发现(Top 5)
   - 建议移除的依赖
   - 建议升级的依赖(优先级排序)
   - 估计的 bundle size 影响

实战示例:代码库架构调研

markdown
---
name: arch-research
description: 深入调研代码库架构,用于理解大型系统的结构
context: fork
agent: Explore
---

对 $ARGUMENTS 进行深入架构调研:

## 调研范围

1. **入口点识别**:找到所有主要入口点(main.ts、index.ts、app.ts 等)
2. **模块边界**:识别主要的功能模块和它们的边界
3. **数据流**:追踪数据从输入到存储的完整路径
4. **依赖关系**:模块间的依赖图(哪些模块依赖哪些模块)
5. **关键决策点**:找到代码里体现重要架构决策的地方

## 输出格式

用 Mermaid 图表展示模块关系:

```mermaid
graph TD
  ...

然后用文字描述每个主要模块的职责和它与其他模块的交互。

--- ## 组合使用:动态注入 + 路径限定 + Fork 最强大的 Skill 通常结合三个特性: ```markdown --- name: pr-review-full description: 完整的 PR 审查:拉取实时数据,在独立上下文里进行深度分析 context: fork agent: Explore paths: "**/*.ts,**/*.tsx,**/*.py,**/*.go" allowed-tools: Bash(gh *) Read Glob Grep effort: xhigh --- ## PR 实时数据 - PR 差异:!`gh pr diff` - PR 信息:!`gh pr view` - CI 状态:!`gh pr checks 2>/dev/null | head -20` - 变更文件:!`gh pr diff --name-only` ## 审查任务 对这个 PR 进行全面审查: **代码质量** - 是否有明显的 Bug? - 是否有更好的实现方式? - 是否遵循项目的代码规范? **测试覆盖** - 新功能是否有对应测试? - 边界情况是否被覆盖? **安全性** - 是否有输入验证缺失? - 是否有敏感数据暴露风险? **性能** - 是否有明显的性能问题(N+1 查询、不必要的循环等)? 输出格式:按严重性排序(🔴 必须修改 / 🟡 建议修改 / 🟢 小建议),每项含具体位置和修复方案。

来源:Claude Code 官方文档 - Skills 高级特性 | 整理:ClaudeEagle

相关文章推荐

教程Claude Code 自定义 Subagent 完整指南:配置文件、工具限制、持久记忆与四大内置 AgentClaude Code 自定义 Subagent 完整指南:四大内置 Agent(Explore/Plan/General-purpose/辅助 Agents)、三种创建方式(/agents 交互界面/手动 Markdown 文件/--agents CLI Flag)、四级作用域和优先级(CLI>项目>.claude/agents/>用户)、完整 Frontmatter 配置字段、持久记忆 autoMemory 配置、前台/后台运行模式,以及隔离高流量操作/并行研究/链式 Subagent 三种常用模式。2026/3/6教程Claude Code CLI 完全参考:所有命令与 40+ Flags 速查,含 --agents、--print、系统提示词四种模式Claude Code CLI 完整参考:14 个顶层命令(claude/claude -p/claude -c/-r/claude mcp/remote-control 等)、40+ Flags 全分类速查(会话控制/模型输出/工具权限/工作目录/Subagent+MCP)、--agents JSON 格式七字段说明、系统提示词四种模式对比(替换 vs 追加),以及 CI/CD 自动化、团队 Subagent、Git Worktree 三种常用组合模式示例。2026/3/5教程Claude Code 自定义 Subagent 完全指南:隔离上下文、专属工具与并行协作Claude Code 自定义 Subagent 完整指南:内置 Explore/Plan/General-purpose Subagent 介绍、快速创建步骤(/agents 命令和手动 Markdown 文件)、全部 Frontmatter 字段说明、安全审查员等实用 Subagent 示例,以及并行研究、链式调用等高级使用模式。2026/2/28教程Claude Code 自定义 Subagent 指南:打造专属 AI 编码助理团队Claude Code Subagent 让每个任务在独立上下文窗口中运行,有效保护主对话上下文。本文介绍内置 Subagent(Explore、Plan、General-purpose)的功能,以及如何通过 /agents 命令或手动创建 Markdown 文件定义自定义 Subagent,包含安全审查、文档生成和测试生成等实用配置示例。2026/2/27教程Claude Code Skills 官方完整指南:从入门到高级模式的权威教程Claude Code Skills 官方文档完整中文整理:Skills vs CLAUDE.md 核心区别;目录结构;存储位置和优先级;实时变更检测和 Monorepo 自动发现;完整 Frontmatter 字段参考(20+字段);字符串替换(动态参数);内容类型(参考类 vs 任务类);调用控制表;Skill 内容生命周期(压缩保留机制);三个高级模式(动态注入/路径限定/Subagent运行);以及内置 Bundled Skills 和权限控制方法。2026/5/10教程Claude Code Slack 集成完整指南:团队协作、CI 通知和权限管理Claude Code Slack 集成完整指南:5 大核心功能(频道触发任务/代码问答/CI 通知/PR 审查/Routines 结果推送);安装配置步骤;4 个权限等级(read/write/execute/pr)及频道级配置;人工审批工作流;GitHub Actions + Slack 通知自动化;4 个团队协作场景(新人上手/PM 提需求/频道分工规范/结构化请求模板);以及官方 Slack 集成 vs OpenClaw 方案的对比。2026/5/8