@biggora/claude-plugins 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +13 -0
- package/CLAUDE.md +55 -0
- package/LICENSE +1 -1
- package/README.md +208 -39
- package/bin/cli.js +39 -0
- package/package.json +30 -17
- package/registry/registry.json +166 -1
- package/registry/schema.json +10 -0
- package/src/commands/skills/add.js +194 -0
- package/src/commands/skills/list.js +52 -0
- package/src/commands/skills/remove.js +27 -0
- package/src/commands/skills/update.js +74 -0
- package/src/config.js +5 -0
- package/src/skills/codex-cli/SKILL.md +265 -0
- package/src/skills/commafeed-api/SKILL.md +1012 -0
- package/src/skills/gemini-cli/SKILL.md +379 -0
- package/src/skills/gemini-cli/references/commands.md +145 -0
- package/src/skills/gemini-cli/references/configuration.md +182 -0
- package/src/skills/gemini-cli/references/headless-and-scripting.md +181 -0
- package/src/skills/gemini-cli/references/mcp-and-extensions.md +254 -0
- package/src/skills/n8n-api/SKILL.md +623 -0
- package/src/skills/notebook-lm/SKILL.md +217 -0
- package/src/skills/notebook-lm/references/artifact-options.md +168 -0
- package/src/skills/notebook-lm/references/auth.md +58 -0
- package/src/skills/notebook-lm/references/workflows.md +144 -0
- package/src/skills/screen-recording/SKILL.md +309 -0
- package/src/skills/screen-recording/references/approach1-programmatic.md +311 -0
- package/src/skills/screen-recording/references/approach2-xvfb.md +232 -0
- package/src/skills/screen-recording/references/design-patterns.md +168 -0
- package/src/skills/test-mobile-app/SKILL.md +212 -0
- package/src/skills/test-mobile-app/references/report-template.md +95 -0
- package/src/skills/test-mobile-app/references/setup-appium.md +154 -0
- package/src/skills/test-mobile-app/scripts/analyze_apk.py +164 -0
- package/src/skills/test-mobile-app/scripts/check_environment.py +116 -0
- package/src/skills/test-mobile-app/scripts/generate_report.py +250 -0
- package/src/skills/test-mobile-app/scripts/run_tests.py +326 -0
- package/src/skills/test-web-ui/SKILL.md +232 -0
- package/src/skills/test-web-ui/references/test_case_schema.md +102 -0
- package/src/skills/test-web-ui/scripts/discover.py +176 -0
- package/src/skills/test-web-ui/scripts/generate_report.py +237 -0
- package/src/skills/test-web-ui/scripts/run_tests.py +296 -0
- package/src/skills/text-to-speech/SKILL.md +236 -0
- package/src/skills/text-to-speech/references/espeak-cli.md +277 -0
- package/src/skills/text-to-speech/references/kokoro-onnx.md +124 -0
- package/src/skills/text-to-speech/references/online-engines.md +128 -0
- package/src/skills/text-to-speech/references/pyttsx3-espeak.md +143 -0
- package/src/skills/tm-search/SKILL.md +240 -0
- package/src/skills/tm-search/references/field-guide.md +79 -0
- package/src/skills/tm-search/references/scraping-fallback.md +140 -0
- package/src/skills/tm-search/scripts/tm_search.py +375 -0
- package/src/skills/wp-rest-api/SKILL.md +114 -0
- package/src/skills/wp-rest-api/references/authentication.md +18 -0
- package/src/skills/wp-rest-api/references/custom-content-types.md +20 -0
- package/src/skills/wp-rest-api/references/discovery-and-params.md +20 -0
- package/src/skills/wp-rest-api/references/responses-and-fields.md +30 -0
- package/src/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
- package/src/skills/wp-rest-api/references/schema.md +22 -0
- package/src/skills/youtube-search/SKILL.md +412 -0
- package/src/skills/youtube-search/references/parsing-examples.md +159 -0
- package/src/skills/youtube-search/references/youtube-api-quota.md +85 -0
- package/src/skills/youtube-thumbnail/SKILL.md +1060 -0
- package/tests/commands/info.test.js +49 -0
- package/tests/commands/install.test.js +36 -0
- package/tests/commands/list.test.js +66 -0
- package/tests/commands/publish.test.js +182 -0
- package/tests/commands/search.test.js +45 -0
- package/tests/commands/uninstall.test.js +29 -0
- package/tests/commands/update.test.js +59 -0
- package/tests/functional/skills-lifecycle.test.js +293 -0
- package/tests/helpers/fixtures.js +63 -0
- package/tests/integration/cli.test.js +83 -0
- package/tests/skills/add.test.js +138 -0
- package/tests/skills/list.test.js +63 -0
- package/tests/skills/remove.test.js +38 -0
- package/tests/skills/update.test.js +60 -0
- package/tests/unit/config.test.js +31 -0
- package/tests/unit/registry.test.js +79 -0
- package/tests/unit/utils.test.js +150 -0
- package/tests/validation/registry-schema.test.js +112 -0
- package/tests/validation/skills-validation.test.js +96 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Headless Mode & Scripting Reference
|
|
2
|
+
|
|
3
|
+
## How Headless Mode is Triggered
|
|
4
|
+
|
|
5
|
+
- Passing a prompt via `-p` or `--prompt` flag
|
|
6
|
+
- Running in a non-TTY environment (pipes, CI, cron)
|
|
7
|
+
- Stdin piped input
|
|
8
|
+
|
|
9
|
+
## Output Formats
|
|
10
|
+
|
|
11
|
+
| Flag | Behavior |
|
|
12
|
+
|---|---|
|
|
13
|
+
| *(default)* | Raw text to stdout, ANSI codes stripped in non-TTY |
|
|
14
|
+
| `--output-format json` | Single JSON object after all turns complete |
|
|
15
|
+
| `--output-format stream-json` | Newline-delimited JSON (JSONL) events in real-time |
|
|
16
|
+
|
|
17
|
+
## JSON Output Schema
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"response": "The final text response",
|
|
22
|
+
"stats": {
|
|
23
|
+
"models": {
|
|
24
|
+
"gemini-2.5-pro": {
|
|
25
|
+
"api": {
|
|
26
|
+
"totalRequests": 2,
|
|
27
|
+
"totalErrors": 0,
|
|
28
|
+
"totalLatencyMs": 5053
|
|
29
|
+
},
|
|
30
|
+
"tokens": {
|
|
31
|
+
"prompt": 24939,
|
|
32
|
+
"candidates": 20,
|
|
33
|
+
"total": 25113,
|
|
34
|
+
"cached": 21263,
|
|
35
|
+
"thoughts": 154,
|
|
36
|
+
"tool": 0
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"tools": {
|
|
41
|
+
"totalCalls": 1,
|
|
42
|
+
"totalSuccess": 1,
|
|
43
|
+
"totalFail": 0,
|
|
44
|
+
"totalDurationMs": 1881,
|
|
45
|
+
"byName": {
|
|
46
|
+
"google_web_search": { "count": 1, "success": 1, "fail": 0 }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"files": {
|
|
50
|
+
"totalLinesAdded": 5,
|
|
51
|
+
"totalLinesRemoved": 2
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Exit Codes
|
|
58
|
+
|
|
59
|
+
| Code | Meaning |
|
|
60
|
+
|---|---|
|
|
61
|
+
| 0 | Success |
|
|
62
|
+
| 1 | General error |
|
|
63
|
+
| 2 | Authentication error |
|
|
64
|
+
| 3 | Rate limit / quota exceeded |
|
|
65
|
+
|
|
66
|
+
## Session Management in Headless Mode
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Sessions are auto-saved to ~/.gemini/sessions/<project_hash>/<session_id>.jsonl
|
|
70
|
+
|
|
71
|
+
# Resume a previous session
|
|
72
|
+
gemini -p "Continue from where we left off" --resume <session_id>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Input Sources (merged in order)
|
|
76
|
+
|
|
77
|
+
1. `--context-file` flag
|
|
78
|
+
2. Stdin pipe
|
|
79
|
+
3. `-p` prompt argument
|
|
80
|
+
|
|
81
|
+
## Bash Scripting Patterns
|
|
82
|
+
|
|
83
|
+
### Pattern 1: Simple text response
|
|
84
|
+
```bash
|
|
85
|
+
gemini -p "Summarize @./README.md" > summary.txt
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Pattern 2: JSON response with jq extraction
|
|
89
|
+
```bash
|
|
90
|
+
RESPONSE=$(gemini -p "Generate a changelog entry" --output-format json | jq -r '.response')
|
|
91
|
+
echo "$RESPONSE" >> CHANGELOG.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Pattern 3: Conditional on token usage
|
|
95
|
+
```bash
|
|
96
|
+
RESULT=$(gemini -p "Review @./src/main.py" --output-format json)
|
|
97
|
+
TOKENS=$(echo "$RESULT" | jq '.stats.models."gemini-2.5-pro".tokens.total')
|
|
98
|
+
echo "Used $TOKENS tokens"
|
|
99
|
+
echo "$RESULT" | jq -r '.response'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Pattern 4: Pipe chain
|
|
103
|
+
```bash
|
|
104
|
+
git log --oneline -20 | gemini -p "Summarize the recent development activity"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Pattern 5: Auto-accept all tool actions (YOLO)
|
|
108
|
+
```bash
|
|
109
|
+
# For CI pipelines where no human is present
|
|
110
|
+
gemini -p "Fix lint errors in @./src/ and save changes" --yolo --output-format json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Pattern 6: Batch processing multiple files
|
|
114
|
+
```bash
|
|
115
|
+
#!/bin/bash
|
|
116
|
+
for py_file in $(find src -name "*.py"); do
|
|
117
|
+
echo "Processing: $py_file"
|
|
118
|
+
gemini -p "Add type hints to @$py_file and save" --yolo
|
|
119
|
+
done
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Pattern 7: Structured data extraction
|
|
123
|
+
```bash
|
|
124
|
+
# Get structured JSON from model
|
|
125
|
+
gemini --output-format json \
|
|
126
|
+
"Return a raw JSON object with keys 'version' and 'deps' from @package.json" \
|
|
127
|
+
| jq -r '.response' > data.json
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Pattern 8: Git commit automation
|
|
131
|
+
```bash
|
|
132
|
+
#!/bin/bash
|
|
133
|
+
DIFF=$(git diff --cached)
|
|
134
|
+
if [ -z "$DIFF" ]; then
|
|
135
|
+
echo "Nothing staged"
|
|
136
|
+
exit 1
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
MSG=$(echo "$DIFF" | gemini -p "Write a concise conventional commit message (max 72 chars)" --output-format json | jq -r '.response')
|
|
140
|
+
echo "Committing: $MSG"
|
|
141
|
+
git commit -m "$MSG"
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## PowerShell Patterns (Windows)
|
|
145
|
+
|
|
146
|
+
```powershell
|
|
147
|
+
# Batch process Python files to Markdown docs
|
|
148
|
+
Get-ChildItem -Recurse -Filter "*.py" | ForEach-Object {
|
|
149
|
+
$newName = $_.FullName -replace '\.py$', '.md'
|
|
150
|
+
gemini "Generate Markdown documentation for @$($_.FullName). Print to stdout." | Out-File -FilePath $newName -Encoding utf8
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
# JSON response
|
|
154
|
+
$output = gemini --output-format json "Return raw JSON with 'version' and 'deps' from @package.json" | ConvertFrom-Json
|
|
155
|
+
$output.response > data.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## GitHub Actions Integration
|
|
159
|
+
|
|
160
|
+
```yaml
|
|
161
|
+
- name: AI Code Review
|
|
162
|
+
env:
|
|
163
|
+
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
|
164
|
+
run: |
|
|
165
|
+
REVIEW=$(git diff origin/main...HEAD | gemini -p "Review these changes for bugs and issues" --output-format json | jq -r '.response')
|
|
166
|
+
echo "$REVIEW" >> $GITHUB_STEP_SUMMARY
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Logging / Debugging
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Enable debug logging to file
|
|
173
|
+
gemini -p "My prompt" --debug-log ./gemini-debug.jsonl
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The log file captures all API interactions and tool executions as JSONL events.
|
|
177
|
+
|
|
178
|
+
## Known Limitations
|
|
179
|
+
|
|
180
|
+
- Custom slash commands (`.toml`) currently do NOT work in headless/non-interactive mode (open issue). Workaround: embed the full prompt text directly in your script.
|
|
181
|
+
- Extensions also unavailable in headless mode currently.
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# MCP Servers & Extensions Reference
|
|
2
|
+
|
|
3
|
+
## What is MCP?
|
|
4
|
+
|
|
5
|
+
Model Context Protocol (MCP) is a standard that lets external servers expose tools and
|
|
6
|
+
resources to Gemini CLI. MCP servers act as a bridge between Gemini and external systems
|
|
7
|
+
(databases, APIs, custom scripts, cloud services).
|
|
8
|
+
|
|
9
|
+
## MCP Server Configuration in settings.json
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"mcpServers": {
|
|
14
|
+
"github": {
|
|
15
|
+
"command": "npx",
|
|
16
|
+
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
17
|
+
"env": {
|
|
18
|
+
"GITHUB_TOKEN": "$GITHUB_TOKEN"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"postgres": {
|
|
22
|
+
"command": "npx",
|
|
23
|
+
"args": ["-y", "@modelcontextprotocol/server-postgres"],
|
|
24
|
+
"env": {
|
|
25
|
+
"DATABASE_URL": "$DATABASE_URL"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"myPythonServer": {
|
|
29
|
+
"command": "python",
|
|
30
|
+
"args": ["-m", "my_mcp_server"],
|
|
31
|
+
"cwd": "./mcp_tools",
|
|
32
|
+
"env": {
|
|
33
|
+
"API_KEY": "$MY_API_KEY"
|
|
34
|
+
},
|
|
35
|
+
"timeout": 15000,
|
|
36
|
+
"trust": false,
|
|
37
|
+
"includeTools": ["safe_tool_1", "safe_tool_2"],
|
|
38
|
+
"excludeTools": ["dangerous_tool"]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## MCP Server Config Fields
|
|
45
|
+
|
|
46
|
+
| Field | Type | Description |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `command` | string | Executable to run |
|
|
49
|
+
| `args` | string[] | Arguments array |
|
|
50
|
+
| `cwd` | string | Working directory |
|
|
51
|
+
| `env` | object | Environment variables (use `"$VAR"` to reference env) |
|
|
52
|
+
| `timeout` | number | Connection timeout in ms (default: 10000) |
|
|
53
|
+
| `trust` | boolean | Skip all confirmation dialogs (use with caution) |
|
|
54
|
+
| `includeTools` | string[] | Whitelist of tools to expose |
|
|
55
|
+
| `excludeTools` | string[] | Blacklist of tools to hide |
|
|
56
|
+
|
|
57
|
+
## Remote MCP Servers (SSE/HTTP)
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"mcpServers": {
|
|
62
|
+
"cloudflare": {
|
|
63
|
+
"url": "https://mcp.cloudflare.com/sse",
|
|
64
|
+
"transport": "sse"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Supports OAuth 2.0 for authenticated remote servers.
|
|
71
|
+
|
|
72
|
+
## CLI Commands for MCP Management
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Add a server
|
|
76
|
+
gemini mcp add github --command "npx -y @modelcontextprotocol/server-github"
|
|
77
|
+
|
|
78
|
+
# List configured servers
|
|
79
|
+
gemini mcp list
|
|
80
|
+
|
|
81
|
+
# Remove a server
|
|
82
|
+
gemini mcp remove github
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**In interactive session:**
|
|
86
|
+
```
|
|
87
|
+
/mcp list # list all servers and status
|
|
88
|
+
/mcp status # detailed connection info
|
|
89
|
+
/mcp enable github # enable a disabled server
|
|
90
|
+
/mcp disable github # disable without removing
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Using MCP Tools in Prompts
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
> @github List my open pull requests
|
|
97
|
+
> @github Create an issue titled "Bug: login fails"
|
|
98
|
+
> @slack Send summary of today's commits to #dev
|
|
99
|
+
> @database Find users who haven't logged in for 30 days
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## MCP Prompts as Slash Commands
|
|
103
|
+
|
|
104
|
+
MCP servers can expose predefined prompts, which become slash commands:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
/poem-writer --title="Gemini CLI" --mood="reverent"
|
|
108
|
+
/pr-review --repo="my-project" --pr-number=42
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Positional args also work:
|
|
112
|
+
```
|
|
113
|
+
/mycommand arg1 arg2
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Security Notes
|
|
117
|
+
|
|
118
|
+
- Never hardcode API keys in settings.json — use `"KEY": "$ENV_VAR"` pattern
|
|
119
|
+
- The CLI redacts sensitive env vars (`*TOKEN*`, `*SECRET*`, `*KEY*`, etc.) from MCP processes unless explicitly listed in `env`
|
|
120
|
+
- `"trust": true` disables all confirmation dialogs — only use for servers you completely control
|
|
121
|
+
- MCP servers run with your user account permissions
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Extensions
|
|
126
|
+
|
|
127
|
+
Extensions bundle together MCP servers, context files, and custom commands into a reusable unit.
|
|
128
|
+
|
|
129
|
+
### Install from Git URL
|
|
130
|
+
```bash
|
|
131
|
+
gemini extension install https://github.com/GoogleCloudPlatform/cloud-run-mcp
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Browse the gallery
|
|
135
|
+
https://geminicli.com/extensions/
|
|
136
|
+
|
|
137
|
+
### Popular extensions
|
|
138
|
+
- **Cloud Run** (Google) — deploy to Cloud Run
|
|
139
|
+
- **GitHub** — manage issues, PRs, repositories
|
|
140
|
+
- **Redis** — query Redis instances
|
|
141
|
+
- **DynaTrace** — observability integration
|
|
142
|
+
|
|
143
|
+
### Extension Structure
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
my-extension/
|
|
147
|
+
├── gemini-extension.json # required manifest
|
|
148
|
+
├── GEMINI.md # optional context instructions
|
|
149
|
+
└── commands/
|
|
150
|
+
└── deploy.toml # optional custom commands
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### gemini-extension.json Manifest
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"name": "my-extension",
|
|
158
|
+
"version": "1.0.0",
|
|
159
|
+
"description": "My custom extension",
|
|
160
|
+
"mcpServers": {
|
|
161
|
+
"my-server": {
|
|
162
|
+
"command": "node",
|
|
163
|
+
"args": ["./server.js"]
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"contextFileName": "GEMINI.md",
|
|
167
|
+
"excludeTools": ["run_shell_command"]
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Extension Locations
|
|
172
|
+
|
|
173
|
+
- `~/.gemini/extensions/<n>/` — user-scoped (all projects)
|
|
174
|
+
- `<project>/.gemini/extensions/<n>/` — project-scoped
|
|
175
|
+
|
|
176
|
+
### Managing Extensions
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
/extension list # list installed extensions
|
|
180
|
+
/extension enable <n> # enable extension
|
|
181
|
+
/extension disable <n> # disable extension
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Custom Slash Commands (.toml) — Full Reference
|
|
187
|
+
|
|
188
|
+
### File Locations
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
~/.gemini/commands/plan.toml → /plan (global)
|
|
192
|
+
<project>/.gemini/commands/review.toml → /review (project)
|
|
193
|
+
<project>/.gemini/commands/git/commit.toml → /git:commit (namespaced)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### .toml Schema
|
|
197
|
+
|
|
198
|
+
```toml
|
|
199
|
+
# Required
|
|
200
|
+
prompt = "Your prompt text here"
|
|
201
|
+
|
|
202
|
+
# Optional
|
|
203
|
+
description = "What this command does"
|
|
204
|
+
|
|
205
|
+
# Arguments placeholder
|
|
206
|
+
# Use {{args}} to insert all user-provided arguments
|
|
207
|
+
prompt = "Review this code: {{args}}"
|
|
208
|
+
|
|
209
|
+
# Shell command execution (backtick-style)
|
|
210
|
+
prompt = "Review staged changes:\n!{git diff --cached}"
|
|
211
|
+
|
|
212
|
+
# Combined example
|
|
213
|
+
description = "Commit with AI message"
|
|
214
|
+
prompt = """
|
|
215
|
+
Write a conventional commit message for these changes:
|
|
216
|
+
!{git diff --cached}
|
|
217
|
+
|
|
218
|
+
Format: <type>(<scope>): <description>
|
|
219
|
+
Types: feat, fix, docs, style, refactor, test, chore
|
|
220
|
+
"""
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Usage examples
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
/plan # Run /plan command
|
|
227
|
+
/review src/auth.py # {{args}} = "src/auth.py"
|
|
228
|
+
/git:commit # Namespaced command
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Invoking with args
|
|
232
|
+
```
|
|
233
|
+
/review --file="src/auth.py" --focus="security"
|
|
234
|
+
/review src/auth.py # positional
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Multi-Modal Tool Responses
|
|
238
|
+
|
|
239
|
+
MCP tools can return mixed content (text + images):
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"content": [
|
|
244
|
+
{ "type": "text", "text": "Here is the chart:" },
|
|
245
|
+
{ "type": "image", "data": "BASE64_DATA", "mimeType": "image/png" },
|
|
246
|
+
{ "type": "text", "text": "Analysis complete." }
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Gemini CLI will:
|
|
252
|
+
1. Combine all text blocks into a single response part
|
|
253
|
+
2. Pass image data as inline content to the model
|
|
254
|
+
3. Show a user-friendly summary in the terminal
|