Skip to content

Обновление навыков: поддержание синхронизации навыков с исходным репозиторием

Что вы сможете сделать

В этом уроке вы научитесь поддерживать навыки OpenSkills в актуальной версии. С помощью команды OpenSkills update вы сможете:

  • Обновить все установленные навыки одним щелчком
  • Обновить только указанные навыки
  • Понимать различия в обновлении для разных источников установки
  • Диагностировать причины неудачных обновлений

Ваша текущая проблема

Репозитории навыков постоянно обновляются — авторы могут исправлять ошибки, добавлять новые функции, улучшать документацию. Но ваши установленные навыки остаются в старой версии.

Возможно, вы уже сталкивались с такими ситуациями:

  • В документации навыка указано, что "поддерживается какая-то функция", но ваш ИИ-агент говорит, что не знает об этом
  • В навыке улучшены сообщения об ошибках, но вы всё ещё видите старые
  • Ошибка при установке уже исправлена, но вы всё ещё сталкиваетесь с ней

Каждый раз удалять и переустанавливать слишком хлопотно — вам нужен эффективный способ обновления.

Когда использовать этот метод

Типичные сценарии использования команды update:

СценарийДействие
Обнаружено обновление навыкаВыполнить openskills update
Обновить только несколько навыковopenskills update skill1,skill2
Тестирование локально разрабатываемых навыковОбновить из локального пути
Обновление из репозитория GitHubАвтоматически клонировать последний код

Рекомендации по частоте обновлений

  • Общественные навыки: обновляйте раз в месяц для получения последних улучшений
  • Собственные навыки: обновляйте вручную после каждого изменения
  • Навыки из локальных путей: обновляйте после каждого изменения кода

🎒 Подготовка

Перед началом убедитесь, что выполнено:

Основная идея

Механизм обновления OpenSkills очень прост:

При каждой установке записывается информация об источнике → При обновлении копируется из исходного источника заново

Зачем требуется переустановка?

Навыки старой версии (установленные без записи источника) невозможно обновить. В этом случае нужно переустановить один раз, OpenSkills запомнит источник, и тогда станет возможным автоматическое обновление.

Три способа обновления для разных источников установки:

Тип источникаСпособ обновленияПрименимые сценарии
Локальный путьНепосредственное копирование из локального путиРазработка собственных навыков
git-репозиторийКлонирование последнего кода во временную директориюУстановка из GitHub/GitLab
GitHub shorthandПреобразование в полный URL, затем клонированиеУстановка из официального репозитория GitHub

При обновлении пропускаются навыки без метаданных источника, и выводится список навыков, требующих переустановки.

Следуйте за мной

Шаг 1: Просмотр установленных навыков

Сначала подтвердите, какие навыки можно обновить:

bash
npx openskills list

Что вы должны увидеть: список установленных навыков, включая названия, описания и метки мест установки (project/global)

Шаг 2: Обновление всех навыков

Самый простой способ — обновить все установленные навыки:

bash
npx openskills update

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

✅ Updated: git-workflow
✅ Updated: check-branch-first
Skipped: my-old-skill (no source metadata; re-install once to enable updates)
Summary: 2 updated, 1 skipped (3 total)
Значение пропущенных навыков

Если вы видите Skipped: xxx (no source metadata), это означает, что навык был установлен до добавления функции обновления. Необходимо переустановить его один раз, чтобы включить автоматическое обновление.

Шаг 3: Обновление указанных навыков

Если вы хотите обновить только несколько конкретных навыков, передайте их названия (разделённые запятыми):

bash
npx openskills update git-workflow,check-branch-first

Что вы должны увидеть: обновлены только два указанных навыка

✅ Updated: git-workflow
✅ Updated: check-branch-first
Summary: 2 updated, 0 skipped (2 total)

Шаг 4: Обновление локально разрабатываемых навыков

Если вы разрабатываете навык локально, можно обновить его из локального пути:

bash
npx openskills update my-skill

Что вы должны увидеть: навык копируется заново из локального пути, который использовался при установке

✅ Updated: my-skill
Summary: 1 updated, 0 skipped (1 total)

Рабочий процесс локальной разработки

Процесс разработки:

  1. Установите навык: openskills install ./my-skill
  2. Измените код
  3. Обновите навык: openskills update my-skill
  4. Синхронизируйте с AGENTS.md: openskills sync

Шаг 5: Обработка неудачных обновлений

Если некоторые навыки не удаётся обновить, OpenSkills отобразит подробные причины:

bash
npx openskills update

Возможные ситуации, которые вы увидите:

Skipped: git-workflow (git clone failed)
Skipped: my-skill (local source missing)
Missing source metadata (1): old-skill
Clone failed (1): git-workflow

Соответствующие методы решения:

Сообщение об ошибкеПричинаМетод решения
no source metadataУстановка старой версииПереустановите: openskills install <source>
local source missingЛокальный путь удалёнВосстановите локальный путь или переустановите
SKILL.md missing at local sourceЛокальный файл удалёнВосстановите файл SKILL.md
git clone failedПроблема с сетью или репозиторий не существуетПроверьте сеть или адрес репозитория
SKILL.md not found in repoИзменение структуры репозиторияСвяжитесь с автором навыка или обновите subpath

Контрольная точка ✅

Убедитесь, что вы научились:

  • [ ] Умение использовать openskills update для обновления всех навыков
  • [ ] Умение обновлять указанные навыки, разделяя их запятыми
  • [ ] Понимание значения "пропущенных" навыков и методов решения
  • [ ] Знание процесса обновления локально разрабатываемых навыков

На что обратить внимание

❌ Распространённые ошибки

ОшибкаПравильный способ
Видите пропущенный навык и не обращаете вниманияПереустановите или исправьте проблему согласно подсказке
Каждый раз удаляете и переустанавливаетеИспользование команды update более эффективно
Не знаете, откуда установлен навыкИспользуйте openskills list для просмотра источника

⚠️ Меры предосторожности

Обновление перезаписывает локальные изменения

Если вы напрямую изменяли файлы навыка в директории установки, при обновлении эти изменения будут перезаписаны. Правильный способ:

  1. Измените исходный файл (локальный путь или репозиторий)
  2. Затем выполните openskills update

Навыки с символическими ссылками требуют специальной обработки

Если навык установлен с помощью символической ссылки (см. Поддержка символических ссылок), при обновлении ссылка будет создана заново, но связь символической ссылки не нарушится.

Глобальные и проектные навыки нужно обновлять отдельно

bash
# Обновление только проектных навыков (по умолчанию)
openskills update

# Обновление глобальных навыков требует отдельной обработки
# Или используйте режим --universal для унифицированного управления

Итоги урока

В этом уроке вы изучили функцию обновления OpenSkills:

  • Пакетное обновление: openskills update обновляет все навыки одним щелчком
  • Указанное обновление: openskills update skill1,skill2 обновляет конкретные навыки
  • Осведомлённость об источнике: автоматическое распознавание локальных путей и git-репозиториев
  • Подсказки об ошибках: подробное описание причин пропуска и методов решения

Функция обновления поддерживает навыки в актуальной версии, гарантируя, что используемые навыки всегда включают последние улучшения и исправления.

Прогноз следующего урока

На следующем уроке мы изучим Удаление навыков.

Вы узнаете:

  • Как использовать интерактивную команду manage для удаления навыков
  • Как использовать команду remove для автоматизированного удаления
  • Меры предосторожности после удаления навыков

Приложение: справочник по исходному коду

Нажмите, чтобы развернуть расположение исходного кода

Время обновления: 2026-01-24

ФункцияПуть к файлуНомер строки
Основная логика обновления навыковsrc/commands/update.ts14-150
Обновление из локального путиsrc/commands/update.ts64-82
Обновление из git-репозиторияsrc/commands/update.ts85-125
Копирование навыка из директорииsrc/commands/update.ts152-163
Проверка безопасности путиsrc/commands/update.ts165-172
Определение структуры метаданныхsrc/utils/skill-metadata.ts8-15
Чтение метаданных навыкаsrc/utils/skill-metadata.ts17-27
Запись метаданных навыкаsrc/utils/skill-metadata.ts29-36
Определение CLI-командыsrc/cli.ts58-62

Ключевые константы:

  • SKILL_METADATA_FILE = '.openskills.json': имя файла метаданных, записывает источник установки навыка

Ключевые функции:

  • updateSkills(skillNames): основная функция для обновления указанных или всех навыков
  • updateSkillFromDir(targetPath, sourceDir): копирование навыка из исходной директории в целевую
  • isPathInside(targetPath, targetDir): проверка безопасности пути установки (предотвращение обхода пути)
  • readSkillMetadata(skillDir): чтение метаданных навыка
  • writeSkillMetadata(skillDir, metadata): запись/обновление метаданных навыка

Бизнес-правила:

  • BR-5-1: по умолчанию обновление всех установленных навыков (update.ts:37-38)
  • BR-5-2: поддержка списка названий навыков, разделённых запятыми (update.ts:15)
  • BR-5-3: пропуск навыков без метаданных источника (update.ts:56-62)
  • BR-5-4: поддержка обновления из локального пути (update.ts:64-82)
  • BR-5-5: поддержка обновления из git-репозитория (update.ts:85-125)
  • BR-5-6: проверка безопасности пути (update.ts:156-162)