Навыки
Упакуйте инструкции, скрипты и справочные материалы в навыки SKILL.md, которые агент загружает, когда они нужны для задачи.
Навык — это папка с файлом SKILL.md: инструкции для одного типа задач плюс скрипты, шаблоны или справочные файлы, которые им нужны. Агент видит имя и описание каждого навыка и загружает полные инструкции, только когда задача им соответствует. Навык можно запустить и самостоятельно как слеш-команду.
Cusp использует открытый формат Agent Skills, поэтому ваши существующие навыки работают без изменений — из .claude/skills/, .agents/skills/ или .codex/skills/.
Где хранятся навыки
| Область | Каталоги в порядке поиска |
|---|---|
| Проект | .cusp/skills/, .claude/skills/, .agents/skills/, .codex/skills/ |
| Пользователь | ~/.cusp/skills/, ~/.claude/skills/, ~/.agents/skills/, ~/.codex/skills/ |
Каждый навык — это каталог: .cusp/skills/release-notes/SKILL.md. Если у двух навыков одинаковое имя, побеждает найденный первым, поэтому навык проекта переопределяет одноимённый навык пользователя.
Минимальный навык
---
name: release-notes
description: Draft release notes from the commits since the last tag. Use when the user asks for release notes, a changelog entry, or "what changed since …".
---
1. Find the last tag with `git describe --tags --abbrev=0`.
2. List commits since then with `git log <tag>..HEAD --oneline --no-merges`.
3. Group them into Features, Fixes and Internal. Drop chores and merge commits.
4. Write one line per change, in the past tense, without commit hashes.
5. Show the draft. Don't write any files unless asked.По полю description агент решает, когда применять навык. Опишите, что он делает и когда его использовать, теми словами, которые реально напишет пользователь.
Frontmatter
| Поле | Тип | Значение |
|---|---|---|
name | string | Имя навыка и его слеш-команда. По умолчанию — имя каталога |
description | string | Что делает навык и когда его использовать. Показывается модели |
when_to_use | string | Дополнительные подсказки о том, когда его вызывать |
argument-hint | string | Показывается после имени команды при автодополнении, например [version] |
arguments | string[] | Имена позиционных аргументов для подстановки $name |
allowed-tools | string[] | Инструменты, заранее разрешённые на время работы навыка, в синтаксисе правил, например Bash(git log *) |
disallowed-tools | string[] | Инструменты, запрещённые на время работы навыка |
model | string | Запускать навык на конкретной модели |
effort | string | Уровень рассуждений на время работы навыка |
context | fork | Запускать навык в отдельном субагенте (fork), а не в основном разговоре |
agent | string | При context: fork — тип субагента |
background | boolean | При context: fork — запускать в фоне |
paths | string[] | Glob-шаблоны. Навык предлагается, только когда агент работает с подходящими файлами |
disable-model-invocation | boolean | Запускать навык можете только вы, как слеш-команду |
user-invocable | boolean | Значение false скрывает навык из меню слеш-команд, и использовать его может только модель |
hooks | object | Хуки, активные на время работы навыка, в формате хуков |
shell | string | Оболочка для подстановки !`command` |
Аргументы
Когда вы запускаете /release-notes v0.2.0, текст после команды — это строка аргументов.
| Плейсхолдер | Заменяется на |
|---|---|
$ARGUMENTS | Всю строку аргументов |
$ARGUMENTS[0], $0 | Первый позиционный аргумент (нумерация с 0) |
$1, $2, … | Следующие позиционные аргументы |
$version | Именованный аргумент, если задано arguments: [version] |
\$ | Символ доллара как есть |
Если вы передаёте аргументы, а плейсхолдера в навыке нет, Cusp добавляет их в конец как ARGUMENTS: …, чтобы они не потерялись.
Переменные
${CUSP_SKILL_DIR} (или ${CLAUDE_SKILL_DIR}) — каталог, в котором лежит SKILL.md. Используйте его, чтобы ссылаться на файлы, поставляемые с навыком:
Fill in the template at ${CUSP_SKILL_DIR}/template.md.
Run `python ${CUSP_SKILL_DIR}/scripts/check.py` and fix what it reports.Подстановка команд оболочки
!`command` выполняет команду при загрузке навыка и вставляет её вывод на это место. Так можно дать агенту актуальный контекст, не тратя вызов инструмента:
Current branch: !`git branch --show-current`
Uncommitted changes:
!`git status --short`Вывод вставляется как есть и повторно не раскрывается. Если команда завершается с ошибкой, загрузка навыка тоже завершается ошибкой с кодом выхода и выводом, чтобы вы знали причину.
Чтобы отключить эту возможность, задайте disableSkillShellExecution: true в настройках.
Вспомогательные файлы
Кладите всё, что нужно навыку, рядом с SKILL.md:
.cusp/skills/release-notes/
├── SKILL.md
├── template.md
└── scripts/
└── group_commits.pyАгент читает эти файлы, только когда инструкции ему это говорят, поэтому большой справочный документ ничего не стоит, пока не понадобится.
Управление навыками
Отключить отдельные навыки или ограничить их использование можно через skillOverrides в настройках:
{
"skillOverrides": {
"release-notes": "user-invocable-only",
"legacy-deploy": "off"
}
}| Значение | Действие |
|---|---|
on | По умолчанию: навык виден модели и доступен как команда |
name-only | Виден только по имени, без описания |
user-invocable-only | Доступен только как слеш-команда |
off | Не загружается |
disableSkills: true отключает все навыки.
Разрешения
Запуск навыка — это тоже вызов инструмента (Skill), поэтому им можно управлять правилами: Skill(deploy), Skill(deploy *) — для навыка с любыми аргументами, или Skill(ops:*) — для всех навыков в пространстве имён ops.
Команды из одного файла
Команда — это навык без папки: один файл Markdown, который запускается как /name. Cusp читает их из .cusp/commands/ и .claude/commands/, а также из тех же папок в домашнем каталоге. Если у навыка и команды одинаковое имя, побеждает навык.
Команды других агентов — промпты Codex, TOML-команды Gemini CLI и команды Cursor — импорт переводит в этот вид. См. Импорт вашей настройки.
Параллельные агенты
Как запускать несколько агентов в одном репозитории без конфликтов — worktree, субагенты, workflow, корректировка на ходу и доска, — и что пока в предварительной версии.
Агенты
Описывайте субагентов в Markdown с frontmatter в том же формате, что у ваших существующих файлов агентов, и передавайте им работу с чистым контекстом.