Agent Skills extend Gemini CLI with specialized expertise. In this tutorial, you'll learn how to create your first skill, bundle custom logic, and activate it during a session.
A skill is defined by a directory containing a SKILL.md file and
subdirectories containing reference materials or scripts used by the skill.
Let's create an API Auditor skill that runs a script to help you verify if
local or remote endpoints are responding correctly.
The first step is to create the necessary folders for your skill and its scripts.
macOS/Linux
mkdir -p .gemini/skills/api-auditor/scriptsWindows (PowerShell)
New-Item -ItemType Directory -Force -Path ".gemini\skills\api-auditor\scripts"The SKILL.md file defines the skill's purpose and instructions for the agent.
Create a file at .gemini/skills/api-auditor/SKILL.md. This tells the agent
when to use the skill and how to behave.
---
name: api-auditor
description:
Expertise in auditing and testing API endpoints. Use when the user asks to
"check", "test", or "audit" a URL or API.
---
# API Auditor Instructions
You act as a QA engineer specialized in API reliability. When this skill is
active, you MUST:
1. **Audit**: Use the bundled `scripts/audit.js` utility to check the status of
the provided URL.
2. **Report**: Analyze the output (status codes, latency) and explain any
failures in plain English.
3. **Secure**: Remind the user if they are testing a sensitive endpoint without
an `https://` protocol.Skills can bundle resources like scripts to perform deterministic tasks. Create
a file at .gemini/skills/api-auditor/scripts/audit.js. This is the code the
agent will run.
// .gemini/skills/api-auditor/scripts/audit.js
const url = process.argv[2];
if (!url) {
console.error('Usage: node audit.js <url>');
process.exit(1);
}
console.log(`Auditing ${url}...`);
fetch(url, { method: 'HEAD' })
.then((r) => console.log(`Result: Success (Status ${r.status})`))
.catch((e) => console.error(`Result: Failed (${e.message})`));Gemini CLI automatically discovers skills in the .gemini/skills directory (as
well as the .agents/skills alias).
To check if Gemini CLI found your new skill, use the /skills list command
within an interactive session:
/skills listYou should see api-auditor in the list of available skills. If you just added
the files, you can run /skills reload to refresh the list without restarting
the session.
If /skills list doesn't show your skill, check the following:
- The folder must be trusted (workspace skills only). Skills under
<workspace>/.gemini/skills/are only loaded when the workspace folder is marked as trusted. Run/trustand restart the session if needed. Skills under~/.gemini/skills/(user scope) are not affected by trust. - Check the path layout.
SKILL.mdis discovered either at the root of the skills directory (.gemini/skills/SKILL.md) or one directory deep (.gemini/skills/<skill-name>/SKILL.md). The recommended layout uses a subdirectory per skill so you can bundle scripts and other resources alongside it. Files nested more than one directory deep are not discovered. - The filename must be exactly
SKILL.md. Capitalization matters on case-sensitive filesystems (Linux, and macOS when configured as such):skill.mdorSkill.mdwill be ignored. - Frontmatter must include both
name:anddescription:, and must be the first thing in the file. ASKILL.mdis silently skipped if either field is missing, if the delimiters (---on their own lines) are absent, or if any text (an H1 title, a comment, even a blank line) appears before the opening---. - The skill name comes from the
name:field, not the directory name. If your frontmatter saysname: foo, the skill appears asfooin/skills listregardless of what its parent directory is called. The characters: \ / < > * ? " |in the name are replaced with-.
Now that the skill is discovered, you can trigger its activation by asking a relevant question.
- Trigger: Start a new session and ask: "Can you audit https://google.com"
- Activation: Gemini identifies that the request matches the
api-auditordescription and calls theactivate_skilltool. - Consent: You will see a confirmation prompt. Type y to approve.
- Execution: Once activated, Gemini uses the
run_shell_commandtool to execute your bundled script:node .gemini/skills/api-auditor/scripts/audit.js https://google.com
If you don't want to create the files manually, you can use the built-in
skill-creator skill. Simply ask Gemini:
"Create a new skill called 'api-auditor' that tests if URLs are responding."
The skill-creator will handle the directory structure and boilerplate for you.
You can also manage skills using the gemini skills command from your terminal:
- Install:
gemini skills install <url-or-path> - Link:
gemini skills link <path>(useful for local development) - Uninstall:
gemini skills uninstall <name>
- Creating Agent Skills: Detailed guide on advanced skill features and metadata.
- Using Agent Skills: More ways to discover and manage your skill library.
- Skill best practices: Learn how to design reliable and effective expertise.