@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.
Files changed (80) hide show
  1. package/.claude/settings.local.json +13 -0
  2. package/CLAUDE.md +55 -0
  3. package/LICENSE +1 -1
  4. package/README.md +208 -39
  5. package/bin/cli.js +39 -0
  6. package/package.json +30 -17
  7. package/registry/registry.json +166 -1
  8. package/registry/schema.json +10 -0
  9. package/src/commands/skills/add.js +194 -0
  10. package/src/commands/skills/list.js +52 -0
  11. package/src/commands/skills/remove.js +27 -0
  12. package/src/commands/skills/update.js +74 -0
  13. package/src/config.js +5 -0
  14. package/src/skills/codex-cli/SKILL.md +265 -0
  15. package/src/skills/commafeed-api/SKILL.md +1012 -0
  16. package/src/skills/gemini-cli/SKILL.md +379 -0
  17. package/src/skills/gemini-cli/references/commands.md +145 -0
  18. package/src/skills/gemini-cli/references/configuration.md +182 -0
  19. package/src/skills/gemini-cli/references/headless-and-scripting.md +181 -0
  20. package/src/skills/gemini-cli/references/mcp-and-extensions.md +254 -0
  21. package/src/skills/n8n-api/SKILL.md +623 -0
  22. package/src/skills/notebook-lm/SKILL.md +217 -0
  23. package/src/skills/notebook-lm/references/artifact-options.md +168 -0
  24. package/src/skills/notebook-lm/references/auth.md +58 -0
  25. package/src/skills/notebook-lm/references/workflows.md +144 -0
  26. package/src/skills/screen-recording/SKILL.md +309 -0
  27. package/src/skills/screen-recording/references/approach1-programmatic.md +311 -0
  28. package/src/skills/screen-recording/references/approach2-xvfb.md +232 -0
  29. package/src/skills/screen-recording/references/design-patterns.md +168 -0
  30. package/src/skills/test-mobile-app/SKILL.md +212 -0
  31. package/src/skills/test-mobile-app/references/report-template.md +95 -0
  32. package/src/skills/test-mobile-app/references/setup-appium.md +154 -0
  33. package/src/skills/test-mobile-app/scripts/analyze_apk.py +164 -0
  34. package/src/skills/test-mobile-app/scripts/check_environment.py +116 -0
  35. package/src/skills/test-mobile-app/scripts/generate_report.py +250 -0
  36. package/src/skills/test-mobile-app/scripts/run_tests.py +326 -0
  37. package/src/skills/test-web-ui/SKILL.md +232 -0
  38. package/src/skills/test-web-ui/references/test_case_schema.md +102 -0
  39. package/src/skills/test-web-ui/scripts/discover.py +176 -0
  40. package/src/skills/test-web-ui/scripts/generate_report.py +237 -0
  41. package/src/skills/test-web-ui/scripts/run_tests.py +296 -0
  42. package/src/skills/text-to-speech/SKILL.md +236 -0
  43. package/src/skills/text-to-speech/references/espeak-cli.md +277 -0
  44. package/src/skills/text-to-speech/references/kokoro-onnx.md +124 -0
  45. package/src/skills/text-to-speech/references/online-engines.md +128 -0
  46. package/src/skills/text-to-speech/references/pyttsx3-espeak.md +143 -0
  47. package/src/skills/tm-search/SKILL.md +240 -0
  48. package/src/skills/tm-search/references/field-guide.md +79 -0
  49. package/src/skills/tm-search/references/scraping-fallback.md +140 -0
  50. package/src/skills/tm-search/scripts/tm_search.py +375 -0
  51. package/src/skills/wp-rest-api/SKILL.md +114 -0
  52. package/src/skills/wp-rest-api/references/authentication.md +18 -0
  53. package/src/skills/wp-rest-api/references/custom-content-types.md +20 -0
  54. package/src/skills/wp-rest-api/references/discovery-and-params.md +20 -0
  55. package/src/skills/wp-rest-api/references/responses-and-fields.md +30 -0
  56. package/src/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
  57. package/src/skills/wp-rest-api/references/schema.md +22 -0
  58. package/src/skills/youtube-search/SKILL.md +412 -0
  59. package/src/skills/youtube-search/references/parsing-examples.md +159 -0
  60. package/src/skills/youtube-search/references/youtube-api-quota.md +85 -0
  61. package/src/skills/youtube-thumbnail/SKILL.md +1060 -0
  62. package/tests/commands/info.test.js +49 -0
  63. package/tests/commands/install.test.js +36 -0
  64. package/tests/commands/list.test.js +66 -0
  65. package/tests/commands/publish.test.js +182 -0
  66. package/tests/commands/search.test.js +45 -0
  67. package/tests/commands/uninstall.test.js +29 -0
  68. package/tests/commands/update.test.js +59 -0
  69. package/tests/functional/skills-lifecycle.test.js +293 -0
  70. package/tests/helpers/fixtures.js +63 -0
  71. package/tests/integration/cli.test.js +83 -0
  72. package/tests/skills/add.test.js +138 -0
  73. package/tests/skills/list.test.js +63 -0
  74. package/tests/skills/remove.test.js +38 -0
  75. package/tests/skills/update.test.js +60 -0
  76. package/tests/unit/config.test.js +31 -0
  77. package/tests/unit/registry.test.js +79 -0
  78. package/tests/unit/utils.test.js +150 -0
  79. package/tests/validation/registry-schema.test.js +112 -0
  80. 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