name: toml-command-builder description: 构建Gemini CLI TOML自定义命令的指南。涵盖语法、模板、参数处理、shell注入和文件注入。在创建Gemini TOML命令时使用,包括添加{{args}}参数处理、使用!{}注入shell输出或排查命令问题。 argument-hint: [命令名称] [–scope 用户|项目] [–template git|test|docs|review] allowed-tools: 读取、全局搜索、搜索、Bash、技能
TOML命令构建器
文档委托
文档来源: 关于权威的TOML命令语法和当前功能,请查询
gemini-cli-docs技能。 本技能提供导航和示例;gemini-cli-docs提供官方Gemini CLI文档。
概述
本技能提供创建Gemini CLI自定义命令使用TOML格式的全面指导。自定义命令是斜杠命令,通过项目特定或用户特定功能扩展Gemini的能力。
何时使用此技能
关键词: toml命令、自定义命令、斜杠命令gemini、gemini命令、创建命令、{{args}}、@{}, !{}
在以下情况使用此技能:
- 创建新的Gemini CLI自定义命令
- 理解TOML命令语法
- 向命令添加参数处理
- 注入shell输出或文件内容
- 排查命令问题
命令位置
用户命令(全局)
~/.gemini/commands/
├── commit.toml # /commit
├── review.toml # /review
└── git/
└── log.toml # /git:log(命名空间)
项目命令(本地)
.gemini/commands/
├── build.toml # /build
├── test.toml # /test
└── deploy/
└── staging.toml # /deploy:staging
基本语法
最小命令
# ~/.gemini/commands/hello.toml
description = "一个简单的问候命令"
prompt = "向用户问好"
多行提示
description = "生成提交消息"
prompt = """
分析暂存更改并生成提交消息。
遵循常规提交格式:
- feat: 新功能
- fix: 错误修复
- docs: 文档
- refactor: 代码重构
"""
参数处理
基本参数({{args}})
命令后传递的参数在{{args}}处注入:
# /greet Kyle -> "向Kyle问好"
description = "问候一个人"
prompt = "向{{args}}问好"
默认行为
如果没有{{args}}占位符,参数被追加:
description = "分析代码"
prompt = "分析此代码以发现问题"
# /analyze src/main.ts -> "分析此代码以发现问题 src/main.ts"
多个参数
参数以空格分隔,可一起访问:
description = "比较两个文件"
prompt = "比较这些文件:{{args}}"
# /compare file1.ts file2.ts -> "比较这些文件:file1.ts file2.ts"
Shell注入(!{...})
执行shell命令并注入输出:
基本Shell
description = "分析git diff"
prompt = """
审查以下git diff:
~~~diff
!{git diff --staged}
~~~
提出改进建议。
"""
带安全性的Shell
命令在执行前需确认。使用--yolo跳过。
复杂Shell
description = "分析项目结构"
prompt = """
项目结构:
!{find . -type f -name "*.ts" | head -50}
包依赖:
!{cat package.json | jq '.dependencies'}
分析并提出改进建议。
"""
带参数的Shell
结合shell注入与参数:
description = "Grep搜索模式"
prompt = """
搜索"{{args}}"的结果:
!{grep -r "{{args}}" src/ --include="*.ts" | head -20}
分析这些出现。
"""
注意: shell块中的参数会自动转义以确保安全。
文件注入(@{...})
注入文件或目录内容:
单个文件
description = "审查配置"
prompt = """
审查此配置:
@{tsconfig.json}
提出改进建议。
"""
多个文件
description = "审查设置"
prompt = """
包配置:
@{package.json}
TypeScript配置:
@{tsconfig.json}
分析一致性。
"""
目录内容
description = "审查工具"
prompt = """
工具函数:
@{src/utils/}
分析模式和改进建议。
"""
注意: 目录注入尊重.gitignore和.geminiignore。
带参数
description = "审查文件"
prompt = """
审查此文件:
@{{{args}}}
提供反馈。
"""
# /review src/main.ts -> 注入src/main.ts的内容
处理顺序
注入按以下顺序处理:
@{...}- 文件内容注入!{...}- shell命令执行{{args}}- 参数替换
命名空间
使用目录组织命令:
~/.gemini/commands/
├── git/
│ ├── commit.toml # /git:commit
│ ├── review.toml # /git:review
│ └── log.toml # /git:log
├── test/
│ ├── unit.toml # /test:unit
│ └── e2e.toml # /test:e2e
└── deploy/
├── staging.toml # /deploy:staging
└── prod.toml # /deploy:prod
模板库
Git提交消息
# ~/.gemini/commands/git/commit.toml
description = "从暂存更改生成常规提交消息"
prompt = """
分析暂存更改并生成提交消息。
## 暂存更改
~~~diff
!{git diff --staged}
~~~
## 要求
- 使用常规提交格式(feat/fix/docs/refactor/test/chore)
- 保持主题行在72个字符以内
- 如果更改重要,添加正文
- 如果适用,引用问题编号
仅生成提交消息,不添加其他内容。
"""
代码审查
# ~/.gemini/commands/review.toml
description = "以特定焦点审查代码更改"
prompt = """
审查以下代码更改:
~~~diff
!{git diff}
~~~
焦点:{{args}}
提供:
1. 发现的问题(如果有)
2. 改进建议
3. 正面观察
"""
测试生成器
# ~/.gemini/commands/test/generate.toml
description = "为文件生成测试"
prompt = """
为此文件生成全面测试:
@{{{args}}}
要求:
- 使用现有测试框架(jest/vitest/pytest)
- 覆盖边缘情况
- 包括正负测试
- 遵循项目中的现有测试模式
"""
文档生成器
# ~/.gemini/commands/docs/generate.toml
description = "为代码生成文档"
prompt = """
为以下生成文档:
@{{{args}}}
包括:
- 目的和概述
- 函数/方法文档
- 使用示例
- 参数描述
"""
依赖分析器
# ~/.gemini/commands/deps/analyze.toml
description = "分析项目依赖"
prompt = """
分析这些依赖:
## package.json
@{package.json}
## 锁定文件(部分)
!{head -100 package-lock.json 2>/dev/null || head -100 yarn.lock 2>/dev/null || echo "无锁定文件"}
识别:
1. 过时包
2. 安全担忧
3. 未使用依赖
4. 重复功能
"""
迁移助手
# ~/.gemini/commands/migrate.toml
description = "帮助代码迁移"
prompt = """
帮助迁移此代码:{{args}}
当前代码:
@{{{args}}}
迁移要求:
- 保留功能
- 遵循现代模式
- 如果缺少,添加TypeScript类型
- 更新过时API
"""
验证模式
检查语法
# 验证TOML语法
python -c "import tomllib; tomllib.load(open('command.toml', 'rb'))"
必填字段
description(字符串):在命令列表中显示prompt(字符串):提示模板
常见错误
| 错误 | 原因 | 修复 |
|---|---|---|
| 解析错误 | 无效TOML语法 | 检查引号、括号 |
| 命令未找到 | 错误位置 | 验证路径 |
| 参数未注入 | 缺少{{args}} |
添加占位符 |
| Shell失败 | 命令错误 | 手动测试命令 |
最佳实践
1. 清晰描述
# 好
description = "使用常规格式从暂存更改生成提交消息"
# 差
description = "提交东西"
2. 结构化提示
prompt = """
## 任务
{做什么}
## 上下文
{相关信息}
## 要求
- {要求1}
- {要求2}
## 输出格式
{预期格式}
"""
3. 安全Shell命令
# 好 - 只读,有限输出
!{git diff --staged | head -500}
# 风险 - 可能具有破坏性
!{rm -rf {{args}}} # 危险!
4. 有帮助的错误消息
prompt = """
{{args}}
如果未指定文件,响应:"请在命令后指定文件路径"
"""
5. 一致命名
commands/
├── git/ # Git操作
│ ├── commit.toml
│ └── review.toml
├── test/ # 测试
│ ├── unit.toml
│ └── e2e.toml
└── docs/ # 文档
└── generate.toml
相关技能
gemini-cli-docs- 官方命令文档policy-engine-builder- 工具执行策略
相关命令
/google-ecosystem:toml-command-builder- 交互式命令构建向导
关键词注册表
| 主题 | 关键词 |
|---|---|
| 基本语法 | toml命令、自定义命令、gemini命令 |
| 参数 | {{args}}、命令参数、参数注入 |
| Shell | !{...}、shell注入、git diff命令 |
| 文件 | @{...}、文件注入、目录内容 |
| 命名空间 | 命令命名空间、git:commit、组织命令 |
测试场景
场景1:创建基本命令
查询: “如何在Gemini CLI中创建自定义TOML命令?” 预期行为:
- 技能在"toml命令"或"自定义命令"时激活
- 提供带描述和提示的基本TOML语法 成功标准: 用户收到可工作的.toml文件模板
场景2:Shell注入
查询: “如何在Gemini命令中包含git diff?” 预期行为:
- 技能在"shell注入"或"git diff"时激活
- 提供
!{git diff}语法 成功标准: 用户收到带安全注释的shell注入模式
场景3:文件注入
查询: “如何将文件内容注入到Gemini命令中?” 预期行为:
- 技能在"文件注入"或"@{"时激活
- 提供
@{filename}语法 成功标准: 用户收到带目录支持的文件注入模式
用户界面
当用户直接调用时,本技能运行交互式向导以构建Gemini CLI TOML自定义命令。
执行工作流
- 解析参数 - 提取命令名称、
--scope(用户/项目)和--template(git/test/docs/review/analyze)。如果未提供名称,提示输入。 - 范围选择 - 确定保存位置:用户范围(
~/.gemini/commands/)或项目范围(.gemini/commands/)。 - 模板选择 - 如果指定
--template,加载预建模板(git、test、docs、review、analyze)。否则从头开始。 - 提示构建 - 指导用户通过
{{args}}参数、@{file}文件注入、!{command}shell注入构建命令提示。 - 预览与验证 - 显示生成的TOML,验证语法,检查命名规则。
- 保存命令 - 将TOML文件写入适当目录并显示使用说明。
版本历史
- v1.1.0 (2025-12-01):添加必需部分、测试场景、版本历史
- v1.0.0 (2025-11-25):初始发布