mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 22:21:22 -07:00
186 lines
7.1 KiB
Markdown
186 lines
7.1 KiB
Markdown
# Agent Skills
|
|
|
|
Agent Skills allow you to extend Gemini CLI with specialized expertise,
|
|
procedural workflows, and task-specific resources. Based on the
|
|
[Agent Skills](https://agentskills.io) open standard, a "skill" is a
|
|
self-contained directory that packages instructions and assets into a
|
|
discoverable capability.
|
|
|
|
## Overview
|
|
|
|
Unlike general context files ([`GEMINI.md`](./gemini-md.md)), which provide
|
|
persistent workspace-wide background, Skills represent **on-demand expertise**.
|
|
This allows Gemini to maintain a vast library of specialized capabilities—such
|
|
as security auditing, cloud deployments, or codebase migrations—without
|
|
cluttering the model's immediate context window.
|
|
|
|
Gemini autonomously decides when to employ a skill based on your request and the
|
|
skill's description. When a relevant skill is identified, the model "pulls in"
|
|
the full instructions and resources required to complete the task using the
|
|
`activate_skill` tool.
|
|
|
|
## Key Benefits
|
|
|
|
- **Shared Expertise:** Package complex workflows (like a specific team's PR
|
|
review process) into a folder that anyone can use.
|
|
- **Repeatable Workflows:** Ensure complex multi-step tasks are performed
|
|
consistently by providing a procedural framework.
|
|
- **Resource Bundling:** Include scripts, templates, or example data alongside
|
|
instructions so the agent has everything it needs.
|
|
- **Progressive Disclosure:** Only skill metadata (name and description) is
|
|
loaded initially. Detailed instructions and resources are only disclosed when
|
|
the model explicitly activates the skill, saving context tokens.
|
|
|
|
## Skill Discovery Tiers
|
|
|
|
Gemini CLI discovers skills from three primary locations:
|
|
|
|
1. **Workspace Skills** (`.gemini/skills/`): Workspace-specific skills that are
|
|
typically committed to version control and shared with the team.
|
|
2. **User Skills** (`~/.gemini/skills/`): Personal skills available across all
|
|
your workspaces.
|
|
3. **Extension Skills**: Skills bundled within installed
|
|
[extensions](../extensions/index.md).
|
|
|
|
**Precedence:** If multiple skills share the same name, higher-precedence
|
|
locations override lower ones: **Workspace > User > Extension**.
|
|
|
|
## Managing Skills
|
|
|
|
### In an Interactive Session
|
|
|
|
Use the `/skills` slash command to view and manage available expertise:
|
|
|
|
- `/skills list` (default): Shows all discovered skills and their status.
|
|
- `/skills disable <name>`: Prevents a specific skill from being used.
|
|
- `/skills enable <name>`: Re-enables a disabled skill.
|
|
- `/skills reload`: Refreshes the list of discovered skills from all tiers.
|
|
|
|
_Note: `/skills disable` and `/skills enable` default to the `user` scope. Use
|
|
`--scope workspace` to manage workspace-specific settings._
|
|
|
|
### From the Terminal
|
|
|
|
The `gemini skills` command provides management utilities:
|
|
|
|
```bash
|
|
# List all discovered skills
|
|
gemini skills list
|
|
|
|
# Install a skill from a Git repository, local directory, or zipped skill file (.skill)
|
|
# Uses the user scope by default (~/.gemini/skills)
|
|
gemini skills install https://github.com/user/repo.git
|
|
gemini skills install /path/to/local/skill
|
|
gemini skills install /path/to/local/my-expertise.skill
|
|
|
|
# Install a specific skill from a monorepo or subdirectory using --path
|
|
gemini skills install https://github.com/my-org/my-skills.git --path skills/frontend-design
|
|
|
|
# Install to the workspace scope (.gemini/skills)
|
|
gemini skills install /path/to/skill --scope workspace
|
|
|
|
# Uninstall a skill by name
|
|
gemini skills uninstall my-expertise --scope workspace
|
|
|
|
# Enable a skill (globally)
|
|
gemini skills enable my-expertise
|
|
|
|
# Disable a skill. Can use --scope to specify workspace or user (defaults to workspace)
|
|
gemini skills disable my-expertise --scope workspace
|
|
```
|
|
|
|
## Creating a Skill
|
|
|
|
A skill is a directory containing a `SKILL.md` file at its root. This file
|
|
serves as the entry point for your skill and uses YAML frontmatter for metadata
|
|
and Markdown for instructions.
|
|
|
|
### Folder Structure
|
|
|
|
Skills are self-contained directories. At a minimum, a skill requires a
|
|
`SKILL.md` file, but can include other resources:
|
|
|
|
```text
|
|
my-skill/
|
|
├── SKILL.md (Required) Instructions and metadata
|
|
├── scripts/ (Optional) Executable scripts/tools
|
|
├── references/ (Optional) Static documentation and examples
|
|
└── assets/ (Optional) Templates and binary resources
|
|
```
|
|
|
|
### Basic Structure (SKILL.md)
|
|
|
|
```markdown
|
|
---
|
|
name: <unique-name>
|
|
description: <what the skill does and when Gemini should use it>
|
|
---
|
|
|
|
<your instructions for how the agent should behave / use the skill>
|
|
```
|
|
|
|
- **`name`**: A unique identifier (lowercase, alphanumeric, and dashes).
|
|
- **`description`**: The most critical field. Gemini uses this to decide when
|
|
the skill is relevant. Be specific about the expertise provided.
|
|
- **Body**: Everything below the second `---` is injected as expert procedural
|
|
guidance for the model.
|
|
|
|
### Example: Team Code Reviewer
|
|
|
|
Create `~/.gemini/skills/code-reviewer/SKILL.md`:
|
|
|
|
```markdown
|
|
---
|
|
name: code-reviewer
|
|
description:
|
|
Expertise in reviewing code for style, security, and performance. Use when the
|
|
user asks for "feedback," a "review," or to "check" their changes.
|
|
---
|
|
|
|
# Code Reviewer
|
|
|
|
You are an expert code reviewer. When reviewing code, follow this workflow:
|
|
|
|
1. **Analyze**: Review the staged changes or specific files provided. Ensure
|
|
that the changes are scoped properly and represent minimal changes required
|
|
to address the issue.
|
|
2. **Style**: Ensure code follows the workspace's conventions and idiomatic
|
|
patterns as described in the `GEMINI.md` file.
|
|
3. **Security**: Flag any potential security vulnerabilities.
|
|
4. **Tests**: Verify that new logic has corresponding test coverage and that
|
|
the test coverage adequately validates the changes.
|
|
|
|
Provide your feedback as a concise bulleted list of "Strengths" and
|
|
"Opportunities."
|
|
```
|
|
|
|
### Resource Conventions
|
|
|
|
While you can structure your skill directory however you like, the Agent Skills
|
|
standard encourages these conventions:
|
|
|
|
- **`scripts/`**: Executable scripts (bash, python, node) the agent can run.
|
|
- **`references/`**: Static documentation, schemas, or example data for the
|
|
agent to consult.
|
|
- **`assets/`**: Code templates, boilerplate, or binary resources.
|
|
|
|
When a skill is activated, Gemini CLI provides the model with a tree view of the
|
|
entire skill directory, allowing it to discover and utilize these assets.
|
|
|
|
## How it Works (Security & Privacy)
|
|
|
|
1. **Discovery**: At the start of a session, Gemini CLI scans the discovery
|
|
tiers and injects the name and description of all enabled skills into the
|
|
system prompt.
|
|
2. **Activation**: When Gemini identifies a task matching a skill's
|
|
description, it calls the `activate_skill` tool.
|
|
3. **Consent**: You will see a confirmation prompt in the UI detailing the
|
|
skill's name, purpose, and the directory path it will gain access to.
|
|
4. **Injection**: Upon your approval:
|
|
- The `SKILL.md` body and folder structure is added to the conversation
|
|
history.
|
|
- The skill's directory is added to the agent's allowed file paths, granting
|
|
it permission to read any bundled assets.
|
|
5. **Execution**: The model proceeds with the specialized expertise active. It
|
|
is instructed to prioritize the skill's procedural guidance within reason.
|