Skip to content

AIM Loadout v0.9.0: import теперь сам находит навыки и MCP

aiman v0.9.0 меняет наполнение инвентаря из существующей среды: команда import без флагов сама находит навыки и MCP-серверы в Claude Code, Cursor и Codex CLI и показывает план переноса. Раньше aiman import без аргументов печатал справку и завершался с кодом 0.

Новое

  • aiman import без флагов сканирует Claude Code, Cursor и Codex CLI и строит план переноса найденных навыков и MCP-серверов в инвентарь. Флаг --yes выполняет план и переносит всё одной командой — раньше каждый навык или сервер нужно было импортировать по имени отдельно.
  • У Skill Item в frontmatter появилось поле targets, как уже было у MCP Item: навык теперь можно раскладывать только в перечисленные среды, а не во все сразу.
  • К сборке через goreleaser добавлены .deb- и .rpm-пакеты: aiman теперь можно установить системным пакетом на Debian/Ubuntu и Fedora/RHEL, а не только через архив или Homebrew.

Исправлено

  • При импорте имя элемента не проверялось перед записью — специально сформированное имя навыка или MCP-сервера могло вывести запись за пределы каталога инвентаря. Теперь import отклоняет такие имена до записи на диск.
  • Файлы инвентаря и конфигов писались напрямую: прерывание в момент записи могло оставить повреждённый файл, а для aim.local.yaml — потерю секретов, которые больше нигде не хранятся. Теперь запись идёт через временный файл с переименованием, и прерванная операция больше не портит файл.
  • Если активный репозиторий инвентаря не был выбран, add и import всё равно писали файлы в текущую директорию — навык, MCP-сервер или значения из aim.local.yaml могли оказаться вне инвентаря. Теперь обе команды отказываются писать без активного репозитория и указывают на aiman init.
  • Разбор папочного навыка не ограничивал число, размер и глубину файлов и разворачивал symlink как обычный файл — риск, который вырос вместе с автоматическим импортом чужих директорий. Теперь такой пакет проверяется по лимитам на объём и глубину, а symlink внутри него отклоняется.
  • Импорт папочного навыка сохранял только SKILL.md, вложенные файлы навыка — референсы, скрипты — молча пропадали. Теперь переносится вся папка skills/<name>/ целиком, и навык работает так же, как в исходной среде.
  • Запись файлов из папочного навыка ставила права 0644 на каждый файл, и исполняемые скрипты внутри пакета теряли свой бит на выполнение. Теперь права исходного файла сохраняются при записи.
  • MCP-сервер с транспортом http/sse вместо stdio раньше импортировался как рабочий элемент без команды запуска — сломанный сервер без объяснения причины. Теперь такие серверы отклоняются с сообщением, что переносятся только stdio-серверы.
  • import mcp --print при конфликтующем или уже существующем файле на диске не показывал нормализованный YAML вообще, хотя флаг документирован как просмотр без записи. Теперь --print всегда печатает результат, а проверка конфликта на диске идёт после.
  • Ошибки разбора mcp/*.yaml — битый YAML, отсутствующие обязательные поля — не попадали в вывод aiman doctor вообще, в отличие от таких же ошибок у навыков. Теперь они показываются в разделе Issues так же, как невалидные навыки.
  • Порядок переменных окружения в сериализованном MCP Item не был детерминированным, из-за чего файл mcp/<name>.yaml мог меняться при каждой записи без реального изменения. Теперь порядок стабилен.
  • MCP Item и его переменные окружения требовали поле description, хотя оно не всегда нужно — валидация отклоняла корректные определения без описания. Теперь description необязательно и для MCP Item, и для переменной окружения.
  • Ошибка о конфликте одноимённых MCP-серверов при импорте советовала флаг --name, которого у import mcp нет. Теперь сообщение об этом конфликте не содержит несуществующей подсказки.

Обновиться — по инструкции для своей ОС; полный список изменений — на странице релиза.

Released under the Apache 2.0 License.