---
name: grix-skill-library
description: Manage the owner's custom skill library on the Grix platform with `grix_skill_get` (list or read a skill's SKILL.md) and `grix_skill_set` (create, overwrite, or delete a skill by name). The library syncs to every machine the owner runs an agent on. Trigger when the user asks to save something as a reusable skill, list or show their skills, edit an existing skill, or delete one.
trigger: When the user wants to list, read, create, update, or delete one of their custom Grix skills, or turn a procedure into a reusable skill
---

# Grix Skill Library

The owner's custom skills live in the Grix platform and auto-sync to a
per-machine `grix/skills` directory on every host where the owner runs an
agent. These two tools manage that library only; whether and when an agent
loads a synced skill is up to the owner (system prompt or conversation).

## Tools

- `grix_skill_get` — `name` (optional). With a name: returns that skill's full
  `SKILL.md` text. Without: lists the library (names + versions).
- `grix_skill_set` — `name` (required, max 100 chars, unique per owner; also
  the synced directory name) and `content` (required, full `SKILL.md` text,
  max 256 KB). An existing name is overwritten. An empty `content` string
  **deletes** the skill.

## Skill format

`content` is a standard `SKILL.md`: YAML frontmatter with `name` (matching
the `name` argument) and a one-line `description` that says what the skill
does and when to use it, then a Markdown body with the procedure — inputs,
steps, rules, and how to report. Write it for an agent that has no other
context. Keep it focused on one job; do not embed secrets, machine-specific
paths, or credentials.

## Workflow

1. **Create**: confirm the name and what the skill should do; draft the
   `SKILL.md`; call `grix_skill_set`. Before overwriting, call
   `grix_skill_get` with the name to check whether it already exists and
   tell the user if it does.
2. **Edit**: `grix_skill_get` the current content first, apply the change to
   that text, then `grix_skill_set` the full revised text — never send a
   partial body.
3. **Delete**: confirm with the user, then `grix_skill_set` with the name and
   `content: ""`.
4. **List / show**: `grix_skill_get` without a name, or with the name.

## Rules

1. Never guess a skill name — list first if unsure.
2. Overwrite and delete are irreversible; confirm before either when the
   user did not explicitly ask for it.
3. After a successful set, tell the user the skill is saved and will sync to
   their machines; do not paste the whole content back unless asked.
4. On a permission or scope error, report it as-is; do not retry.
