SetFork Docs

Скиллы для агентов

Любой публичный список ставится агенту как Agent Skill одной командой. Как поставить, как опубликовать свой скилл и как вести его версии.

Agent Skills — открытый стандарт: папка со SKILL.md (инструкция для агента) и при надобности scripts/, references/, assets/. Его понимают Claude Code, Codex, Cursor и другие агенты.

На SetFork любой опубликованный публичный список — это скилл: отдельно собирать ничего не нужно. Шаги становятся инструкцией, команды — скриптом, а файлы, которые автор положил в список, едут вместе с ним.

Как узнать скилл

У имени скилла — метка «Скилл», рядом с меткой «Шаблон» у шаблонов. Найти все скиллы: is:skill в поиске. Метку ставит автор в настройках списка («Скилл для агентов»), а publish_skill и sf skill publish — сами. Под списком — блок «Файлы скилла»: папки scripts/, references/, assets/ проводником, текст файла открывается по щелчку.

Поставить скилл

npx skills add https://setfork.com/<owner>/<slug>/skill.tar.gz

Команду можно скопировать на странице списка: «Получить» → «Встроить» → «Скилл для агента». Там же есть ссылки «Открыть SKILL.md» и «Скачать архив».

АдресЧто отдаёт
/<owner>/<slug>/skill.tar.gzСкилл целиком: SKILL.md, скрипт, справка и файлы автора
/<owner>/<slug>/SKILL.mdТолько инструкцию — годится, если у списка нет файлов

Чтобы поставить конкретную версию, добавьте ?ref=: тег релиза или номер версии.

npx skills add "https://setfork.com/<owner>/<slug>/skill.tar.gz?ref=v1.2.0"

Шаги и файлы тогда берутся из той версии, даже если список ушёл дальше. Название, описание и шапка скилла остаются текущими. Незнакомый тег даёт 404, текущую версию вместо него сервер не подставляет.

Агент скачивает скилл без входа, поэтому команда работает только у опубликованного публичного списка. У приватного списка и черновика её нет в меню: агент получил бы 404. Сами файлы в браузере открываются и там — под вашим входом.

Проверить скачанный скилл по стандарту можно валидатором: skills-ref validate <папка>.

Что внутри

<name>/
  SKILL.md              # инструкция: шаги и текст списка по порядку
  scripts/run.sh        # команды шагов — тот же скрипт, что /raw
  scripts/…, references/…, assets/…   # файлы автора, если он их положил
  • Шапка SKILL.md. name берётся из адреса списка (латиница, до 64 знаков), description — из описания списка, а если его нет, из названия. По описанию агент решает, звать ли скилл, поэтому пишите в нём, что скилл делает и когда его применять. В metadata — ссылка на список, номер версии (setfork-version) и SHA её коммита (setfork-sha): по ним видно, какую именно редакцию вы поставили. Если скилл пришёл своим SKILL.md, его license, compatibility, allowed-tools и ключи metadata возвращаются как были; в клоне они лежат в list.json полем skillHeader. Убрать шапку через git — записать "skillHeader": {}.
  • Текст — на своих местах. Текстовые блоки списка идут в SKILL.md между шагами, там же, где стоят на странице.
  • Опасные шаги помечены. Шаг с разрушительной командой приходит с меткой ⚠ DESTRUCTIVE и в scripts/run.sh закомментирован. Шаг, отмеченный «нужен человек», приходит с меткой 🧑 NEEDS A HUMAN: агент на нём останавливается и спрашивает. Сверху инструкции — предупреждение, что текст пришёл из списка, а не от вас.
  • Файлы автора главнее сгенерированных. Если автор положил свой scripts/run.sh, в архив уходит его файл.

Опубликовать свой скилл

Скилл на SetFork — это список, поэтому публикация идёт теми же путями, что и у любого списка. Отличие одно: файлы автора кладутся через git.

1. Текст — шаги и описание

Любым удобным способом:

  • на сайте — «Новый список», шаги и текстовые блоки;
  • через MCP — create_list, затем patch_list (см. MCP-сервер). Так удобно перенести готовый SKILL.md: агент разложит его на блоки сам;
  • через git — правкой list.json (см. Доступ по git).

2. Файлы — scripts/, references/, assets/

Владелец или соавтор кладёт их одним из трёх способов:

  • на сайте — раздел «Файлы скилла» в редакторе списка (он есть у скилла и у списка, где файлы уже лежат): добавить, править, удалить. Правка уходит той же версией, что и шаги;
  • через sf или MCP — sf skill publish и publish_skill (ниже);
  • через git — пароль — API-токен со скоупом write:
git clone https://setfork.com/<owner>/<slug>.git
cd <slug>
mkdir -p scripts references
cp ~/my-skill/scripts/* scripts/
cp ~/my-skill/references/* references/
git add scripts references
git commit -m "Файлы скилла"
git push

Что проверяет сервер при push:

  • только три каталога, один уровень — без подпапок;
  • только текст — бинарные файлы push не примет;
  • не больше 50 файлов и 1 МБ на все три каталога вместе;
  • scripts/ проходит ту же проверку на разрушительные команды, что и шаги; отказ назовёт файл;
  • ключи доступа (токены GitHub, AWS, OpenAI, Anthropic, OpenRouter, Slack, Stripe, Yandex Cloud, закрытые ключи и другие) не принимаются нигде — ни в файлах, ни в шагах, ни в названии. Отказ назовёт файл и строку и покажет только начало ключа.

Ключ ищется во всех коммитах push'а, а не только в последнем: git clone отдаёт историю целиком, и ключ, добавленный одним коммитом и убранный следующим, всё равно утекает. Если отказ указывает путь@коммит, ключ сидит в истории — уберите его из того коммита (git rebase), а не из текущего файла. Ключ, который уже где-то появлялся, отзовите у провайдера: удаление из списка его не отменяет.

Правка шагов на сайте файлы не теряет: если файлы не трогали, новая версия переносит их из предыдущей. Сайт проверяет файлы так же: опасная команда в скрипте или ключ в файле дают предупреждение при сохранении и отказ при публикации с именем файла.

3. Опубликовать и открыть

Список должен быть опубликован и публичен — иначе агент без входа его не скачает. Публикация черновика: «…» → «Опубликовать» на странице списка или publish_draft в MCP.

4. Дать версии имя — релиз

Номер версии SetFork (v3) растёт с каждой правкой. Имя для людей — 0.5.1, v1.2.0 — даёт релиз: тег на версии с заголовком и заметками. Его можно выпустить на странице «Релизы» или агентом через MCP create_release (см. Версии и релизы).

Одной командой: sf

CLI sf (в духе gh) публикует папку скилла целиком — SKILL.md, scripts/, references/, assets/ — одной версией:

sf auth login                              # один раз, токен со скоупом write
sf skill publish ./my-skill                # новый черновик
sf skill publish ./my-skill owner/slug     # новая версия существующего списка
sf release create owner/slug v1.2.0 --notes-file CHANGELOG.md --yes

Папка — правда: файлы, которых в ней нет, из списка уходят. Шаги и текст берутся из SKILL.md: нумерованные пункты становятся шагами, остальное — текстовыми блоками. Агент делает то же через MCP-инструмент publish_skill.

Релиз из GitHub: Action

Если скилл живёт в репозитории на GitHub, каждый запушенный тег можно превращать в версию списка и релиз с тем же тегом:

# .github/workflows/setfork.yml
on:
  push:
    tags: ['v*']
permissions: {}
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: mikey-semy/setfork-app/cli@<commit-sha>
        with:
          list: owner/slug
          token: ${{ secrets.SETFORK_TOKEN }}
          path: skills/my-skill

SETFORK_TOKEN — API-токен со скоупом write в секретах репозитория. Папка — правда, как у sf skill publish. Повторный запуск для уже выпущенного тега ничего не публикует. Все входы описаны в README CLI.

Рецепт: перенести готовый скилл

Так на SetFork переехал review-kit:

  1. Попросите агента с подключённым MCP создать список из SKILL.md: описание — в описание списка, разделы и шаги — в блоки.
  2. Опубликуйте его приватным — так у списка появятся версии и git, но чужие его не увидят.
  3. Склонируйте список и перенесите scripts/, references/, assets/ одним коммитом (шаг 2 выше).
  4. Сделайте список публичным.
  5. Выпустите релиз с тем же тегом, что у исходного скилла.
  6. Проверьте: npx skills add …/skill.tar.gz, затем skills-ref validate.

Импортировать чужой скилл

Скилл с GitHub можно забрать себе черновиком: на странице Новый список — «Импортировать скилл с GitHub», через MCP — import_skill, в терминале — sf skill import <адрес>. Адрес такой же, как для npx skills add: репозиторий, папка скилла или его SKILL.md. Всё берётся из одного коммита, и ссылка на него остаётся под названием списка.

Видимость следует лицензии.

  • Лицензия открытая (MIT, Apache-2.0, BSD, GPL, CC-BY и другие, что разрешают распространять) — черновик можно опубликовать; под названием видно, откуда он и под какой лицензией.
  • Лицензии нет, она закрытая или некоммерческая — список только приватный: сделать его публичным нельзя ни в настройках, ни копией «из шаблона».

Лицензия берётся из поля license: шапки SKILL.md или из файла LICENSE. Что не удалось узнать — считается закрытым. Файлы во вложенных папках, двоичные и крупнее 1 МБ не переносятся — импорт называет каждый.

Что пока не так

  • Мета по тегу — текущая. ?ref= отдаёт шаги и файлы той версии, а название, описание и шапку — текущие.
  • Пушем текст и файлы — две версии. Через git push они приезжают разными коммитами; одной версией их кладут sf skill publish и publish_skill.

На этой странице