Appearance
Gemini CLI Skills 是存储在 .gemini/skills/ 或 ~/.gemini/skills/ 目录下的 Markdown 文件夹,通过 /skills 命令或对话触发,为代理提供专门的工作流指令。推荐用内置 skill-creator 自动生成框架;手动创建时,SKILL.md 的 frontmatter 必须包含 name 和 description 字段,正文即为代理执行技能时的指令。
创建自定义 Skills
Skills 让你为 Gemini CLI 添加专属的工作流和领域知识。每个 Skill 是一个包含 SKILL.md 的文件夹,可以附带脚本、参考文档和资源文件。
用 skill-creator 快速创建(推荐)
直接告诉 Gemini CLI 创建新 Skill:
创建一个叫 "code-reviewer" 的 skillGemini CLI 会自动:
- 生成
my-new-skill/目录 - 创建带有 YAML frontmatter 的
SKILL.md文件 - 创建标准资源目录:
scripts/、references/、assets/
手动创建
如果偏好手动控制:
- 创建一个目录(如
my-new-skill/) - 在该目录内创建
SKILL.md文件
Skill 目录结构
SKILL.md 是唯一必须的文件,但推荐以下完整结构:
my-skill/
├── SKILL.md (必须)指令和元数据
├── scripts/ (可选)可执行脚本
├── references/ (可选)静态参考文档
└── assets/ (可选)模板和其他资源SKILL.md 文件格式
SKILL.md 使用 YAML frontmatter 定义元数据,正文是 Markdown 格式的指令内容:
markdown
---
name: code-reviewer
description: >
用此 skill 进行代码审查,支持本地改动和远程 Pull Request 两种模式。
---
# 代码审查助手
此 skill 指导代理进行彻底的代码审查。
## 工作流
### 1. 确定审查目标
- **远程 PR**:如果用户提供了 PR 编号或 URL,对远程 PR 进行审查。
- **本地改动**:如果是本地未提交的改动,使用 git diff 获取变更内容。
### 2. 审查维度
- 代码逻辑和潜在 Bug
- 安全漏洞(注入、认证、授权)
- 性能问题
- 代码风格和可读性字段说明:
| 字段 | 说明 |
|---|---|
name | 唯一标识符,应与目录名保持一致 |
description | 告诉 Gemini 何时使用此 skill,描述越清晰越容易被自动触发 |
| 正文 | 代理执行 skill 时遵循的指令,支持完整 Markdown 格式 |
Skill 的存储位置
| 位置 | 路径 | 作用范围 |
|---|---|---|
| 项目级 | .gemini/skills/ | 当前项目,可与团队共享 |
| 用户级 | ~/.gemini/skills/ | 所有项目个人使用 |
管理 Skills
bash
# 查看所有已发现的 skills
/skills list
# 启用/禁用
/skills enable code-reviewer
/skills disable code-reviewer
# 重新加载(修改后不需要重启 CLI)
/skills reload在对话中调用 Skill
Skills 可以自动触发(代理判断场景匹配),也可以手动调用:
# 手动触发
使用 code-reviewer skill 审查 src/auth.ts 的改动
# 列出可用 skills
/skills list详细的 Skills 使用教程见 Skills 工作流 和 Skills 入门教程。
常见问题
Q: Skill 和子代理(Subagent)的区别是什么?
A: Skill 是工作流指令文件,代理读取后在主会话中执行;子代理是拥有独立上下文的专家代理实例。Skill 适合固化常用工作流,子代理适合需要隔离上下文的复杂任务。
Q: 如何让 Skill 调用外部脚本?
A: 在 SKILL.md 正文的指令中,告诉代理运行 scripts/ 目录下的脚本即可,例如 "运行 bash scripts/analyze.sh 来完成分析步骤"。代理会通过 run_shell_command 工具执行。
Q: 一个 Skill 可以引用另一个 Skill 吗?
A: 不可以直接嵌套调用,但你可以在 SKILL.md 的指令中提示代理"完成此步骤后使用 X skill",代理会根据描述判断是否调用。