@google/gemini-cli-core 0.55.0 → 0.55.1

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.
@@ -1,6 +1,9 @@
1
1
  ---
2
2
  name: skill-creator
3
- description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Gemini CLI's capabilities with specialized knowledge, workflows, or tool integrations.
3
+ description:
4
+ Guide for creating effective skills. This skill should be used when users want
5
+ to create a new skill (or update an existing skill) that extends Gemini CLI's
6
+ capabilities with specialized knowledge, workflows, or tool integrations.
4
7
  ---
5
8
 
6
9
  # Skill Creator
@@ -9,22 +12,33 @@ This skill provides guidance for creating effective skills.
9
12
 
10
13
  ## About Skills
11
14
 
12
- Skills are modular, self-contained packages that extend Gemini CLI's capabilities by providing specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains or tasks—they transform Gemini CLI from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess.
15
+ Skills are modular, self-contained packages that extend Gemini CLI's
16
+ capabilities by providing specialized knowledge, workflows, and tools. Think of
17
+ them as "onboarding guides" for specific domains or tasks—they transform Gemini
18
+ CLI from a general-purpose agent into a specialized agent equipped with
19
+ procedural knowledge that no model can fully possess.
13
20
 
14
21
  ### What Skills Provide
15
22
 
16
23
  1. Specialized workflows - Multi-step procedures for specific domains
17
- 2. Tool integrations - Instructions for working with specific file formats or APIs
24
+ 2. Tool integrations - Instructions for working with specific file formats or
25
+ APIs
18
26
  3. Domain expertise - Company-specific knowledge, schemas, business logic
19
- 4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks
27
+ 4. Bundled resources - Scripts, references, and assets for complex and
28
+ repetitive tasks
20
29
 
21
30
  ## Core Principles
22
31
 
23
32
  ### Concise is Key
24
33
 
25
- The context window is a public good. Skills share the context window with everything else Gemini CLI needs: system prompt, conversation history, other Skills' metadata, and the actual user request.
34
+ The context window is a public good. Skills share the context window with
35
+ everything else Gemini CLI needs: system prompt, conversation history, other
36
+ Skills' metadata, and the actual user request.
26
37
 
27
- **Default assumption: Gemini CLI is already very smart.** Only add context Gemini CLI doesn't already have. Challenge each piece of information: "Does Gemini CLI really need this explanation?" and "Does this paragraph justify its token cost?"
38
+ **Default assumption: Gemini CLI is already very smart.** Only add context
39
+ Gemini CLI doesn't already have. Challenge each piece of information: "Does
40
+ Gemini CLI really need this explanation?" and "Does this paragraph justify its
41
+ token cost?"
28
42
 
29
43
  Prefer concise examples over verbose explanations.
30
44
 
@@ -32,13 +46,19 @@ Prefer concise examples over verbose explanations.
32
46
 
33
47
  Match the level of specificity to the task's fragility and variability:
34
48
 
35
- **High freedom (text-based instructions)**: Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach.
49
+ **High freedom (text-based instructions)**: Use when multiple approaches are
50
+ valid, decisions depend on context, or heuristics guide the approach.
36
51
 
37
- **Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior.
52
+ **Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred
53
+ pattern exists, some variation is acceptable, or configuration affects behavior.
38
54
 
39
- **Low freedom (specific scripts, few parameters)**: Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed.
55
+ **Low freedom (specific scripts, few parameters)**: Use when operations are
56
+ fragile and error-prone, consistency is critical, or a specific sequence must be
57
+ followed.
40
58
 
41
- Think of Gemini CLI as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
59
+ Think of Gemini CLI as exploring a path: a narrow bridge with cliffs needs
60
+ specific guardrails (low freedom), while an open field allows many routes (high
61
+ freedom).
42
62
 
43
63
  ### Anatomy of a Skill
44
64
 
@@ -61,45 +81,75 @@ skill-name/
61
81
 
62
82
  Every SKILL.md consists of:
63
83
 
64
- - **Frontmatter** (YAML): Contains `name` and `description` fields. These are the only fields that Gemini CLI reads to determine when the skill gets used, thus it is very important to be clear and comprehensive in describing what the skill is, and when it should be used.
65
- - **Body** (Markdown): Instructions and guidance for using the skill. Only loaded AFTER the skill triggers (if at all).
84
+ - **Frontmatter** (YAML): Contains `name` and `description` fields. These are
85
+ the only fields that Gemini CLI reads to determine when the skill gets used,
86
+ thus it is very important to be clear and comprehensive in describing what the
87
+ skill is, and when it should be used.
88
+ - **Body** (Markdown): Instructions and guidance for using the skill. Only
89
+ loaded AFTER the skill triggers (if at all).
66
90
 
67
91
  #### Bundled Resources (optional)
68
92
 
69
93
  ##### Scripts (`scripts/`)
70
94
 
71
- Executable code (Node.js/Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
95
+ Executable code (Node.js/Python/Bash/etc.) for tasks that require deterministic
96
+ reliability or are repeatedly rewritten.
72
97
 
73
- - **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed
98
+ - **When to include**: When the same code is being rewritten repeatedly or
99
+ deterministic reliability is needed
74
100
  - **Example**: `scripts/rotate_pdf.cjs` for PDF rotation tasks
75
- - **Benefits**: Token efficient, deterministic, may be executed without loading into context
76
- - **Agentic Ergonomics**: Scripts must output LLM-friendly stdout. Suppress standard tracebacks. Output clear, concise success/failure messages, and paginate or truncate outputs (e.g., "Success: First 50 lines of processed file...") to prevent context window overflow.
77
- - **Note**: Scripts may still need to be read by Gemini CLI for patching or environment-specific adjustments
101
+ - **Benefits**: Token efficient, deterministic, may be executed without loading
102
+ into context
103
+ - **Agentic Ergonomics**: Scripts must output LLM-friendly stdout. Suppress
104
+ standard tracebacks. Output clear, concise success/failure messages, and
105
+ paginate or truncate outputs (e.g., "Success: First 50 lines of processed
106
+ file...") to prevent context window overflow.
107
+ - **Note**: Scripts may still need to be read by Gemini CLI for patching or
108
+ environment-specific adjustments
78
109
 
79
110
  ##### References (`references/`)
80
111
 
81
- Documentation and reference material intended to be loaded as needed into context to inform Gemini CLI's process and thinking.
82
-
83
- - **When to include**: For documentation that Gemini CLI should reference while working
84
- - **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications
85
- - **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides
86
- - **Benefits**: Keeps SKILL.md lean, loaded only when Gemini CLI determines it's needed
87
- - **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md
112
+ Documentation and reference material intended to be loaded as needed into
113
+ context to inform Gemini CLI's process and thinking.
114
+
115
+ - **When to include**: For documentation that Gemini CLI should reference while
116
+ working
117
+ - **Examples**: `references/finance.md` for financial schemas,
118
+ `references/mnda.md` for company NDA template, `references/policies.md` for
119
+ company policies, `references/api_docs.md` for API specifications
120
+ - **Use cases**: Database schemas, API documentation, domain knowledge, company
121
+ policies, detailed workflow guides
122
+ - **Benefits**: Keeps SKILL.md lean, loaded only when Gemini CLI determines it's
123
+ needed
124
+ - **Best practice**: If files are large (>10k words), include grep search
125
+ patterns in SKILL.md
88
126
  - **Avoid duplication**: Information should live in either SKILL.md or
89
- references files, not both. Prefer references files for detailed information unless it's truly core to the skill—this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files.
127
+ references files, not both. Prefer references files for detailed information
128
+ unless it's truly core to the skill—this keeps SKILL.md lean while making
129
+ information discoverable without hogging the context window. Keep only
130
+ essential procedural instructions and workflow guidance in SKILL.md; move
131
+ detailed reference material, schemas, and examples to references files.
90
132
 
91
133
  ##### Assets (`assets/`)
92
134
 
93
- Files not intended to be loaded into context, but rather used within the output Gemini CLI produces.
135
+ Files not intended to be loaded into context, but rather used within the output
136
+ Gemini CLI produces.
94
137
 
95
- - **When to include**: When the skill needs files that will be used in the final output
96
- - **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography
97
- - **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified
98
- - **Benefits**: Separates output resources from documentation, enables Gemini CLI to use files without loading them into context
138
+ - **When to include**: When the skill needs files that will be used in the final
139
+ output
140
+ - **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for
141
+ PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate,
142
+ `assets/font.ttf` for typography
143
+ - **Use cases**: Templates, images, icons, boilerplate code, fonts, sample
144
+ documents that get copied or modified
145
+ - **Benefits**: Separates output resources from documentation, enables Gemini
146
+ CLI to use files without loading them into context
99
147
 
100
148
  #### What to Not Include in a Skill
101
149
 
102
- A skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including:
150
+ A skill should only contain essential files that directly support its
151
+ functionality. Do NOT create extraneous documentation or auxiliary files,
152
+ including:
103
153
 
104
154
  - README.md
105
155
  - INSTALLATION_GUIDE.md
@@ -107,7 +157,10 @@ A skill should only contain essential files that directly support its functional
107
157
  - CHANGELOG.md
108
158
  - etc.
109
159
 
110
- The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxiliary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion.
160
+ The skill should only contain the information needed for an AI agent to do the
161
+ job at hand. It should not contain auxiliary context about the process that went
162
+ into creating it, setup and testing procedures, user-facing documentation, etc.
163
+ Creating additional documentation files just adds clutter and confusion.
111
164
 
112
165
  ### Progressive Disclosure Design Principle
113
166
 
@@ -115,13 +168,21 @@ Skills use a three-level loading system to manage context efficiently:
115
168
 
116
169
  1. **Metadata (name + description)** - Always in context (~100 words)
117
170
  2. **SKILL.md body** - When skill triggers (<5k words)
118
- 3. **Bundled resources** - As needed by Gemini CLI (Unlimited because scripts can be executed without reading into context window)
171
+ 3. **Bundled resources** - As needed by Gemini CLI (Unlimited because scripts
172
+ can be executed without reading into context window)
119
173
 
120
174
  #### Progressive Disclosure Patterns
121
175
 
122
- Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them.
176
+ Keep SKILL.md body to the essentials and under 500 lines to minimize context
177
+ bloat. Split content into separate files when approaching this limit. When
178
+ splitting out content into other files, it is very important to reference them
179
+ from SKILL.md and describe clearly when to read them, to ensure the reader of
180
+ the skill knows they exist and when to use them.
123
181
 
124
- **Key principle:** When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files.
182
+ **Key principle:** When a skill supports multiple variations, frameworks, or
183
+ options, keep only the core workflow and selection guidance in SKILL.md. Move
184
+ variant-specific details (patterns, examples, configuration) into separate
185
+ reference files.
125
186
 
126
187
  **Pattern 1: High-level guide with references**
127
188
 
@@ -143,7 +204,8 @@ Gemini CLI loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed.
143
204
 
144
205
  **Pattern 2: Domain-specific organization**
145
206
 
146
- For Skills with multiple domains, organize content by domain to avoid loading irrelevant context:
207
+ For Skills with multiple domains, organize content by domain to avoid loading
208
+ irrelevant context:
147
209
 
148
210
  ```
149
211
  bigquery-skill/
@@ -157,7 +219,8 @@ bigquery-skill/
157
219
 
158
220
  When a user asks about sales metrics, Gemini CLI only reads sales.md.
159
221
 
160
- Similarly, for skills supporting multiple frameworks or variants, organize by variant:
222
+ Similarly, for skills supporting multiple frameworks or variants, organize by
223
+ variant:
161
224
 
162
225
  ```
163
226
  cloud-deploy/
@@ -183,15 +246,20 @@ Use pandas for loading and basic queries. See [PANDAS.md](PANDAS.md).
183
246
 
184
247
  ## Advanced Operations
185
248
 
186
- For massive files that exceed memory, see [STREAMING.md](STREAMING.md). For timestamp normalization, see [TIMESTAMPS.md](TIMESTAMPS.md).
249
+ For massive files that exceed memory, see [STREAMING.md](STREAMING.md). For
250
+ timestamp normalization, see [TIMESTAMPS.md](TIMESTAMPS.md).
187
251
 
188
- Gemini CLI reads REDLINING.md or OOXML.md only when the user needs those features.
252
+ Gemini CLI reads REDLINING.md or OOXML.md only when the user needs those
253
+ features.
189
254
  ```
190
255
 
191
256
  **Important guidelines:**
192
257
 
193
- - **Avoid deeply nested references** - Keep references one level deep from SKILL.md. All reference files should link directly from SKILL.md.
194
- - **Structure longer reference files** - For files longer than 100 lines, include a table of contents at the top so Gemini CLI can see the full scope when previewing.
258
+ - **Avoid deeply nested references** - Keep references one level deep from
259
+ SKILL.md. All reference files should link directly from SKILL.md.
260
+ - **Structure longer reference files** - For files longer than 100 lines,
261
+ include a table of contents at the top so Gemini CLI can see the full scope
262
+ when previewing.
195
263
 
196
264
  ## Skill Creation Process
197
265
 
@@ -205,66 +273,93 @@ Skill creation involves these steps:
205
273
  6. Install and reload the skill
206
274
  7. Iterate based on real usage
207
275
 
208
- Follow these steps in order, skipping only if there is a clear reason why they are not applicable.
276
+ Follow these steps in order, skipping only if there is a clear reason why they
277
+ are not applicable.
209
278
 
210
279
  ### Skill Naming
211
280
 
212
- - Use lowercase letters, digits, and hyphens only; normalize user-provided titles to hyphen-case (e.g., "Plan Mode" -> `plan-mode`).
213
- - When generating names, generate a name under 64 characters (letters, digits, hyphens).
281
+ - Use lowercase letters, digits, and hyphens only; normalize user-provided
282
+ titles to hyphen-case (e.g., "Plan Mode" -> `plan-mode`).
283
+ - When generating names, generate a name under 64 characters (letters, digits,
284
+ hyphens).
214
285
  - Prefer short, verb-led phrases that describe the action.
215
- - Namespace by tool when it improves clarity or triggering (e.g., `gh-address-comments`, `linear-address-issue`).
286
+ - Namespace by tool when it improves clarity or triggering (e.g.,
287
+ `gh-address-comments`, `linear-address-issue`).
216
288
  - Name the skill folder exactly after the skill name.
217
289
 
218
290
  ### Step 1: Understanding the Skill with Concrete Examples
219
291
 
220
- Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
292
+ Skip this step only when the skill's usage patterns are already clearly
293
+ understood. It remains valuable even when working with an existing skill.
221
294
 
222
- To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
295
+ To create an effective skill, clearly understand concrete examples of how the
296
+ skill will be used. This understanding can come from either direct user examples
297
+ or generated examples that are validated with user feedback.
223
298
 
224
299
  For example, when building an image-editor skill, relevant questions include:
225
300
 
226
- - "What functionality should the image-editor skill support? Editing, rotating, anything else?"
301
+ - "What functionality should the image-editor skill support? Editing, rotating,
302
+ anything else?"
227
303
  - "Can you give some examples of how this skill would be used?"
228
- - "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?"
304
+ - "I can imagine users asking for things like 'Remove the red-eye from this
305
+ image' or 'Rotate this image'. Are there other ways you imagine this skill
306
+ being used?"
229
307
  - "What would a user say that should trigger this skill?"
230
308
 
231
- **Avoid interrogation loops:** Do not ask more than one or two clarifying questions at a time. Bias toward action: propose a concrete list of features or examples based on your initial understanding, and ask the user to refine them.
309
+ **Avoid interrogation loops:** Do not ask more than one or two clarifying
310
+ questions at a time. Bias toward action: propose a concrete list of features or
311
+ examples based on your initial understanding, and ask the user to refine them.
232
312
 
233
- Conclude this step when there is a clear sense of the functionality the skill should support.
313
+ Conclude this step when there is a clear sense of the functionality the skill
314
+ should support.
234
315
 
235
316
  ### Step 2: Planning the Reusable Skill Contents
236
317
 
237
318
  To turn concrete examples into an effective skill, analyze each example by:
238
319
 
239
320
  1. Considering how to execute on the example from scratch
240
- 2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly
321
+ 2. Identifying what scripts, references, and assets would be helpful when
322
+ executing these workflows repeatedly
241
323
 
242
- Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows:
324
+ Example: When building a `pdf-editor` skill to handle queries like "Help me
325
+ rotate this PDF," the analysis shows:
243
326
 
244
327
  1. Rotating a PDF requires re-writing the same code each time
245
328
  2. A `scripts/rotate_pdf.cjs` script would be helpful to store in the skill
246
329
 
247
- Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows:
330
+ Example: When designing a `frontend-webapp-builder` skill for queries like
331
+ "Build me a todo app" or "Build me a dashboard to track my steps," the analysis
332
+ shows:
248
333
 
249
334
  1. Writing a frontend webapp requires the same boilerplate HTML/React each time
250
- 2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill
335
+ 2. An `assets/hello-world/` template containing the boilerplate HTML/React
336
+ project files would be helpful to store in the skill
251
337
 
252
- Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows:
338
+ Example: When building a `big-query` skill to handle queries like "How many
339
+ users have logged in today?" the analysis shows:
253
340
 
254
- 1. Querying BigQuery requires re-discovering the table schemas and relationships each time
255
- 2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill
341
+ 1. Querying BigQuery requires re-discovering the table schemas and relationships
342
+ each time
343
+ 2. A `references/schema.md` file documenting the table schemas would be helpful
344
+ to store in the skill
256
345
 
257
- To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.
346
+ To establish the skill's contents, analyze each concrete example to create a
347
+ list of the reusable resources to include: scripts, references, and assets.
258
348
 
259
349
  ### Step 3: Initializing the Skill
260
350
 
261
351
  At this point, it is time to actually create the skill.
262
352
 
263
- Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step.
353
+ Skip this step only if the skill being developed already exists, and iteration
354
+ or packaging is needed. In this case, continue to the next step.
264
355
 
265
- When creating a new skill from scratch, always run the `init_skill.cjs` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable.
356
+ When creating a new skill from scratch, always run the `init_skill.cjs` script.
357
+ The script conveniently generates a new template skill directory that
358
+ automatically includes everything a skill requires, making the skill creation
359
+ process much more efficient and reliable.
266
360
 
267
- **Note:** Use the absolute path to the script as provided in the `available_resources` section.
361
+ **Note:** Use the absolute path to the script as provided in the
362
+ `available_resources` section.
268
363
 
269
364
  Usage:
270
365
 
@@ -277,30 +372,48 @@ The script:
277
372
  - Creates the skill directory at the specified path
278
373
  - Generates a SKILL.md template with proper frontmatter and TODO placeholders
279
374
  - Creates example resource directories: `scripts/`, `references/`, and `assets/`
280
- - Adds example files (`scripts/example_script.cjs`, `references/example_reference.md`, `assets/example_asset.txt`) that can be customized or deleted
375
+ - Adds example files (`scripts/example_script.cjs`,
376
+ `references/example_reference.md`, `assets/example_asset.txt`) that can be
377
+ customized or deleted
281
378
 
282
- After initialization, customize or remove the generated SKILL.md and example files as needed.
379
+ After initialization, customize or remove the generated SKILL.md and example
380
+ files as needed.
283
381
 
284
382
  ### Step 4: Edit the Skill
285
383
 
286
- When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Gemini CLI to use. Include information that would be beneficial and non-obvious to Gemini CLI. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Gemini CLI instance execute these tasks more effectively.
384
+ When editing the (newly-generated or existing) skill, remember that the skill is
385
+ being created for another instance of Gemini CLI to use. Include information
386
+ that would be beneficial and non-obvious to Gemini CLI. Consider what procedural
387
+ knowledge, domain-specific details, or reusable assets would help another Gemini
388
+ CLI instance execute these tasks more effectively.
287
389
 
288
390
  #### Learn Proven Design Patterns
289
391
 
290
392
  Consult these helpful guides based on your skill's needs:
291
393
 
292
- - **Multi-step processes**: See references/workflows.md for sequential workflows and conditional logic
293
- - **Specific output formats or quality standards**: See references/output-patterns.md for template and example patterns
394
+ - **Multi-step processes**: See references/workflows.md for sequential workflows
395
+ and conditional logic
396
+ - **Specific output formats or quality standards**: See
397
+ references/output-patterns.md for template and example patterns
294
398
 
295
399
  These files contain established best practices for effective skill design.
296
400
 
297
401
  #### Start with Reusable Skill Contents
298
402
 
299
- To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`.
403
+ To begin implementation, start with the reusable resources identified above:
404
+ `scripts/`, `references/`, and `assets/` files. Note that this step may require
405
+ user input. For example, when implementing a `brand-guidelines` skill, the user
406
+ may need to provide brand assets or templates to store in `assets/`, or
407
+ documentation to store in `references/`.
300
408
 
301
- Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
409
+ Added scripts must be tested by actually running them to ensure there are no
410
+ bugs and that the output matches what is expected. If there are many similar
411
+ scripts, only a representative sample needs to be tested to ensure confidence
412
+ that they all work while balancing time to completion.
302
413
 
303
- Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them.
414
+ Any example files and directories not needed for the skill should be deleted.
415
+ The initialization script creates example files in `scripts/`, `references/`,
416
+ and `assets/` to demonstrate structure, but most skills won't need all of them.
304
417
 
305
418
  #### Update SKILL.md
306
419
 
@@ -311,11 +424,17 @@ Any example files and directories not needed for the skill should be deleted. Th
311
424
  Write the YAML frontmatter with `name` and `description`:
312
425
 
313
426
  - `name`: The skill name
314
- - `description`: This is the primary triggering mechanism for your skill, and helps Gemini CLI understand when to use the skill.
315
- - Include both what the Skill does and specific triggers/contexts for when to use it.
316
- - **Must be a single-line string** (e.g., `description: Data ingestion...`). Quotes are optional.
317
- - Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Gemini CLI.
318
- - Example: `description: Data ingestion, cleaning, and transformation for tabular data. Use when Gemini CLI needs to work with CSV/TSV files to analyze large datasets, normalize schemas, or merge sources.`
427
+ - `description`: This is the primary triggering mechanism for your skill, and
428
+ helps Gemini CLI understand when to use the skill.
429
+ - Include both what the Skill does and specific triggers/contexts for when to
430
+ use it.
431
+ - **Must be a single-line string** (e.g., `description: Data ingestion...`).
432
+ Quotes are optional.
433
+ - Include all "when to use" information here - Not in the body. The body is
434
+ only loaded after triggering, so "When to Use This Skill" sections in the
435
+ body are not helpful to Gemini CLI.
436
+ - Example:
437
+ `description: Data ingestion, cleaning, and transformation for tabular data. Use when Gemini CLI needs to work with CSV/TSV files to analyze large datasets, normalize schemas, or merge sources.`
319
438
 
320
439
  Do not include any other fields in YAML frontmatter.
321
440
 
@@ -325,9 +444,13 @@ Write instructions for using the skill and its bundled resources.
325
444
 
326
445
  ### Step 5: Packaging a Skill
327
446
 
328
- Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first (checking YAML and ensuring no TODOs remain) to ensure it meets all requirements:
447
+ Once development of the skill is complete, it must be packaged into a
448
+ distributable .skill file that gets shared with the user. The packaging process
449
+ automatically validates the skill first (checking YAML and ensuring no TODOs
450
+ remain) to ensure it meets all requirements:
329
451
 
330
- **Note:** Use the absolute path to the script as provided in the `available_resources` section.
452
+ **Note:** Use the absolute path to the script as provided in the
453
+ `available_resources` section.
331
454
 
332
455
  ```bash
333
456
  node <path-to-skill-creator>/scripts/package_skill.cjs <path/to/skill-folder>
@@ -342,20 +465,28 @@ node <path-to-skill-creator>/scripts/package_skill.cjs <path/to/skill-folder> ./
342
465
  The packaging script will:
343
466
 
344
467
  1. **Validate** the skill automatically, checking:
468
+
345
469
  - YAML frontmatter format and required fields
346
470
  - Skill naming conventions and directory structure
347
471
  - Description completeness and quality
348
472
  - File organization and resource references
349
473
 
350
- 2. **Package** the skill if validation passes, creating a .skill file named after the skill (e.g., `my-skill.skill`) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension.
474
+ 2. **Package** the skill if validation passes, creating a .skill file named
475
+ after the skill (e.g., `my-skill.skill`) that includes all files and
476
+ maintains the proper directory structure for distribution. The .skill file is
477
+ a zip file with a .skill extension.
351
478
 
352
- If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again.
479
+ If validation fails, the script will report the errors and exit without creating
480
+ a package. Fix any validation errors and run the packaging command again.
353
481
 
354
482
  ### Step 6: Installing and Reloading a Skill
355
483
 
356
- Once the skill is packaged into a `.skill` file, offer to install it for the user. Ask whether they would like to install it locally in the current folder (workspace scope) or at the user level (user scope).
484
+ Once the skill is packaged into a `.skill` file, offer to install it for the
485
+ user. Ask whether they would like to install it locally in the current folder
486
+ (workspace scope) or at the user level (user scope).
357
487
 
358
- If the user agrees to an installation, perform it immediately using the `run_shell_command` tool:
488
+ If the user agrees to an installation, perform it immediately using the
489
+ `run_shell_command` tool:
359
490
 
360
491
  - **Locally (workspace scope)**:
361
492
  ```bash
@@ -366,13 +497,19 @@ If the user agrees to an installation, perform it immediately using the `run_she
366
497
  gemini skills install <path/to/skill-name.skill> --scope user
367
498
  ```
368
499
 
369
- **Important:** After the installation is complete, notify the user that they MUST manually execute the `/skills reload` command in their interactive Gemini CLI session to enable the new skill. They can then verify the installation by running `/skills list`.
500
+ **Important:** After the installation is complete, notify the user that they
501
+ MUST manually execute the `/skills reload` command in their interactive Gemini
502
+ CLI session to enable the new skill. They can then verify the installation by
503
+ running `/skills list`.
370
504
 
371
- Note: You (the agent) cannot execute the `/skills reload` command yourself; it must be done by the user in an interactive instance of Gemini CLI. Do not attempt to run it on their behalf.
505
+ Note: You (the agent) cannot execute the `/skills reload` command yourself; it
506
+ must be done by the user in an interactive instance of Gemini CLI. Do not
507
+ attempt to run it on their behalf.
372
508
 
373
509
  ### Step 7: Iterate
374
510
 
375
- After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed.
511
+ After testing the skill, users may request improvements. Often this happens
512
+ right after using the skill, with fresh context of how the skill performed.
376
513
 
377
514
  **Iteration workflow:**
378
515
 
@@ -47,6 +47,12 @@ export interface OAuthTokenResponse {
47
47
  }
48
48
  /** The path the local callback server listens on. */
49
49
  export declare const REDIRECT_PATH = "/oauth/callback";
50
+ /**
51
+ * Helper to determine the redirect URI, taking Google Cloud Workstations proxy into account.
52
+ */
53
+ export declare function getRedirectUri(config: {
54
+ redirectUri?: string;
55
+ }, redirectPort: number): string;
50
56
  /**
51
57
  * Generate PKCE parameters for OAuth flow.
52
58
  *
@@ -15,6 +15,37 @@ import { URL } from 'node:url';
15
15
  import { debugLogger } from './debugLogger.js';
16
16
  /** The path the local callback server listens on. */
17
17
  export const REDIRECT_PATH = '/oauth/callback';
18
+ /**
19
+ * Helper to determine the redirect URI, taking Google Cloud Workstations proxy into account.
20
+ */
21
+ export function getRedirectUri(config, redirectPort) {
22
+ if (process.env['GOOGLE_CLOUD_WORKSTATIONS'] === 'true' &&
23
+ process.env['WEB_HOST']) {
24
+ if (config.redirectUri) {
25
+ try {
26
+ const parsed = new URL(config.redirectUri);
27
+ if (parsed.hostname === 'localhost' ||
28
+ parsed.hostname === '127.0.0.1' ||
29
+ parsed.hostname === '[::1]') {
30
+ const port = String(redirectPort);
31
+ parsed.protocol = 'https:';
32
+ parsed.hostname = `${port}-${process.env['WEB_HOST']}`;
33
+ parsed.port = '';
34
+ return parsed.toString();
35
+ }
36
+ }
37
+ catch {
38
+ // Fall back to returning config.redirectUri as-is if parsing fails
39
+ }
40
+ return config.redirectUri;
41
+ }
42
+ return `https://${redirectPort}-${process.env['WEB_HOST']}${REDIRECT_PATH}`;
43
+ }
44
+ if (config.redirectUri) {
45
+ return config.redirectUri;
46
+ }
47
+ return `http://localhost:${redirectPort}${REDIRECT_PATH}`;
48
+ }
18
49
  const HTTP_OK = 200;
19
50
  /**
20
51
  * Generate PKCE parameters for OAuth flow.
@@ -190,7 +221,7 @@ export function getPortFromUrl(urlString) {
190
221
  * @returns The authorization URL
191
222
  */
192
223
  export function buildAuthorizationUrl(config, pkceParams, redirectPort, resource) {
193
- const redirectUri = config.redirectUri || `http://localhost:${redirectPort}${REDIRECT_PATH}`;
224
+ const redirectUri = getRedirectUri(config, redirectPort);
194
225
  const params = new URLSearchParams({
195
226
  client_id: config.clientId,
196
227
  response_type: 'code',
@@ -313,7 +344,7 @@ async function parseTokenEndpointResponse(response, operationName, defaultErrorC
313
344
  * @returns The token response
314
345
  */
315
346
  export async function exchangeCodeForToken(config, code, codeVerifier, redirectPort, resource) {
316
- const redirectUri = config.redirectUri || `http://localhost:${redirectPort}${REDIRECT_PATH}`;
347
+ const redirectUri = getRedirectUri(config, redirectPort);
317
348
  const params = new URLSearchParams({
318
349
  grant_type: 'authorization_code',
319
350
  code,
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../../src/utils/oauth-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../../src/utils/oauth-flow.ts"],"names":[],"mappings":"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"}