docs/en/documentation/configuration/skills/_index.md
The skills-generate command allows you to convert a toolset into an Agent Skill. A toolset is a collection of tools, and the generated skill will contain metadata and execution scripts for all tools within that toolset, complying with the Agent Skill specification.
toolbox executable in your PATH.A skill package consists of a SKILL.md file (with required YAML frontmatter) and a set of Node.js scripts. Each tool defined in your toolset maps to a corresponding script in the generated Node.js scripts (.js) that work across different platforms (Linux, macOS, Windows).
The basic syntax for the command is:
toolbox <tool-source> skills-generate \
--name <skill-name> \
--toolset <toolset-name> \
--description <description> \
--output-dir <output-directory> \
--license-header <license-header> \
--additional-notes <additional-notes>
<tool-source>: Can be --config, --configs, --config-folder, and --prebuilt. See the CLI Reference for details.--name: Name of the generated skill. When multiple toolsets are generated because --toolset is omitted, this name acts as a prefix for each skill folder (e.g., <name>-<toolset>).--description: Description of the generated skill.--toolset: (Optional) Name of the toolset to convert into a skill. If not provided, one skill will be generated for every custom toolset defined. If no custom toolsets are defined, it defaults to a single skill containing all tools.--output-dir: (Optional) Directory to output generated skills (default: "skills").--license-header: (Optional) Optional license header to prepend to generated node scripts.--additional-notes: (Optional) Additional notes to add under the Usage section of the generated SKILL.md.--invocation-mode: (Optional) Invocation mode for the generated scripts: 'binary' or 'npx' (default: "npx").--toolbox-version: (Optional) Version of @toolbox-sdk/server to use for npx approach (defaults to current toolbox version).{{< notice note >}}
Note: The <skill-name> must follow the Agent Skill naming convention: it must contain only lowercase alphanumeric characters and hyphens, cannot start or end with a hyphen, and cannot contain consecutive hyphens (e.g., my-skill, data-processing).
{{< /notice >}}
Create a tools.yaml file with a toolset and some tools:
tools:
tool_a:
description: "First tool"
run:
command: "echo 'Tool A'"
tool_b:
description: "Second tool"
run:
command: "echo 'Tool B'"
toolsets:
my_toolset:
tools:
- tool_a
- tool_b
Generate the skill:
toolbox --config tools.yaml skills-generate \
--name "my-skill" \
--toolset "my_toolset" \
--description "A skill containing multiple tools" \
--output-dir "generated-skills"
The generated skill directory structure:
generated-skills/
└── my-skill/
├── SKILL.md
├── assets/
│ └── tools.yaml
└── scripts/
├── tool_a.js
└── tool_b.js
In this example, the skill contains two Node.js scripts (tool_a.js and tool_b.js), each mapping to a tool in the original toolset.
You can also generate skills from prebuilt toolsets:
toolbox --prebuilt alloydb-postgres-admin skills-generate \
--name "alloydb-postgres-admin" \
--description "skill for performing administrative operations on alloydb"
Once you have generated a skill, you can install it into the Gemini CLI using the gemini skills install command.
Provide the path to the directory containing the generated skill:
gemini skills install /path/to/generated-skills/my-skill
Alternatively, use ~/.gemini/skills as the --output-dir to generate the skill straight to the Gemini CLI.