Перейти к основному содержимому

API управления Skill

@grant CAT.agent.skills

API управления Skill позволяет скрипту запрашивать, устанавливать, удалять и вызывать пакеты Skill.

О разработке и упаковке Skill см. Руководство по разработке Skill. Официальный репозиторий примеров Skill: scriptscat/skills.

list — список установленных Skills

const skills = await CAT.agent.skills.list();

Возвращаемое значение, SkillSummary[]:

ПолеТипОписание
namestringИмя Skill
descriptionstringОписание Skill
versionstringНомер версии (semver)
toolNamesstring[]Список имён инструментов SkillScript
referenceNamesstring[]Список имён файлов справочных материалов
hasConfigbooleanОбъявлены ли поля конфигурации
enabledbooleanВключён ли (по умолчанию true)
installUrlstringURL источника установки (для проверки обновлений)
installtimenumberВременная метка установки
updatetimenumberВременная метка обновления

get — детали Skill

const skill = await CAT.agent.skills.get(name);

Возвращает полный SkillRecord или null, если не существует.

Структура SkillRecord:

Наследует все поля SkillSummary, плюс:

ПолеТипОписание
promptstringMarkdown-тело SKILL.cat.md (промпт для AI)
configRecord<string, SkillConfigField>Определения полей конфигурации (schema)

Структура SkillConfigField:

ПолеТипОписание
titlestringОтображаемый заголовок
type"text" | "number" | "select" | "switch"Тип поля
secretbooleanКонфиденциальная информация (маскируется в UI)
requiredbooleanОбязательность
defaultunknownЗначение по умолчанию
valuesstring[]Список вариантов (только для типа select)

install — установить Skill

const record = await CAT.agent.skills.install(skillMd, scripts?, references?);

Параметры:

ПараметрТипОписание
skillMdstringСодержимое файла SKILL.cat.md (обязательно)
scriptsArray<{ name, code }>Список файлов SkillScript
referencesArray<{ name, content }>Список файлов справочных материалов

Если Skill с таким именем уже существует, выполняется обновление.

const record = await CAT.agent.skills.install(
`---
name: my-search
description: Custom search tool
---

When the user needs to search, use the search tool.`,
[{ name: "search.js", code: skillScriptCode }],
[{ name: "api-docs.md", content: "# API Documentation\n..." }]
);

remove — удалить Skill

const success = await CAT.agent.skills.remove(name);

Возвращает true при успешном удалении, false, если Skill не существует.

call — прямой вызов SkillScript

const result = await CAT.agent.skills.call(skillName, scriptName, params?);

Напрямую выполняет SkillScript из указанного Skill, минуя AI-диалог.

Параметры:

ПараметрТипОписание
skillNamestringИмя Skill (обязательно)
scriptNamestringИмя SkillScript (обязательно)
paramsRecord<string, unknown>Передаваемые параметры (соответствуют объявлениям @param)
// Directly call a search script from a Skill
const results = await CAT.agent.skills.call(
"my-search",
"search",
{ query: "ScriptCat", limit: 5 }
);

Выполнение SkillScript ограничено таймаутом (по умолчанию 300 секунд, настраивается через @timeout).