# Obnovlenie Biblioteki Navykov

> «Обнови библиотеку навыков», «установи свежие Team Skills», «переустанови командные навыки», «убери локальные дубли», «одна каноническая копия». Переустановка plugin Codex.

- Skill: `kir-kopylov/obnovlenie-biblioteki-navykov` (Agent Skill, multi-file: 18 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/obnovlenie-biblioteki-navykov`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/obnovlenie-biblioteki-navykov/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kir-kopylov (https://skillmd.com/u/kir-kopylov)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kir-kopylov/obnovlenie-biblioteki-navykov

---


# Обновление Библиотеки Навыков

## Запуск Навыка

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

Фраза «Обнови библиотеку навыков» уже разрешает один полный цикл: штатное обновление, повторную установку пакета, перенос доказанных дублей в карантин, одну попытку безопасного перезапуска Codex и проверку после него. Не дробите это разрешение на отдельные вопросы.

Применяю экспериментальный навык **«Обновление библиотеки навыков»** (обратная связь — @kir-kopylov): <кратко назовите конкретную пользу для текущего запроса>; продолжаю без ожидания.

Не включайте в строку `author_github`, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.

Не завершайте первый ответ уведомлением или планом обновления. До его отправки обязательно вызовите доступные read-only инструменты и фактически выполните preflight штатного Codex: `codex --version`, наличие plugin-команд, `codex plugin list --json` и точные legacy-следы до любой мутации. Первый ответ без наблюдаемого вывода этих проверок запрещён. В этом же ответе верните статус и продолжайте уже разрешённый цикл либо назовите один доказанный blocker; не просите повторно разрешить отдельные стадии.

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

Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.

## Обзор

Этот skill превращает фразу «Обнови библиотеку навыков» в один обслуживающий цикл. Пользователь не должен отдельно просить обновить marketplace, переустановить plugin, разобрать конфликтующие личные копии, разрешить перезапуск и затем напоминать, что результат надо проверить.

Канонический источник фиксирован:

- Git-источник: `kir-kopylov/codex-team-skills`, ветка `main`;
- marketplace: `codex-team-skills`;
- plugin: `team-skills@codex-team-skills`;
- поддерживаемый способ доставки: штатные команды `codex plugin`.

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

## Граница Первичного Подключения

Ещё не установленный и не видимый в текущей сессии skill не может запустить сам себя. Если `obnovlenie-biblioteki-navykov` отсутствует в списке навыков текущей сессии, первичное подключение выполняется по документу `START_HERE_CONNECT_CODEX_SKILLS.md`, а при следах старой установки — по `START_HERE_RECONNECT_CODEX_SKILLS.md`. После установки нужно полностью открыть новую сессию; уже затем фраза «Обнови библиотеку навыков» запускает будущие циклы целиком.

Не описывайте это как автоматическую самоустановку навыка. Документ первичного подключения — внешний вход в систему, а этот skill — обслуживающая процедура уже доступной библиотеки.

## Естественные Входы

- «Обнови библиотеку навыков».
- «Установи свежую каноническую библиотеку skills».
- «Обнови Team Skills и убери локальные дубли».
- «Переустанови командные навыки из официального репозитория».
- «Приведи мою библиотеку навыков к одной канонической копии».

## Разрешение И Статусы

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

- постоянное фоновое обновление;
- удаление файлов без карантина;
- изменение репозитория проекта, системных политик или защитного ПО;
- очистку неизвестных каталогов по похожему имени;
- отправку секретов, личных путей или журналов наружу.

Используйте только эти статусы:

- `PREFLIGHT_VERIFIED` — штатная CLI и её plugin-команды доступны;
- `INSTALLED_ON_DISK` — канонический plugin переустановлен и виден в JSON-списке;
- `LEGACY_QUARANTINED` — все доказанные одноимённые личные копии перенесены и записаны в manifest;
- `RESTART_PENDING` — дисковая часть готова, но новая сессия ещё не проверена;
- `LIVE_VERIFIED` — в новой сессии виден контрольный навык из канонического plugin, а доказанные конфликты больше не активны;
- `BLOCKED_CODEX_CLI` — штатная CLI отсутствует, слишком старая или падает до выполнения plugin-команд;
- `LEGACY_TRANSITION_REQUIRED` — найден локальный marketplace Team Skills либо при отсутствующем plugin обнаружен след прежней схемы; сначала нужна процедура переподключения;
- `BLOCKED_PRESERVATION` — исходный пакет не сохранён и не проверен, цель изменилась или судьба нужного расширения не определена; замена остановлена;
- `BLOCKED_LEGACY_OWNERSHIP` — старый след найден, но его точное владение библиотекой не доказано, поэтому менять его нельзя;
- `BLOCKED_DUPLICATE_REVIEW` — кандидат на дубль неоднозначен или небезопасен для автоматического переноса;
- `BLOCKED_RESTART_UNAVAILABLE` — нет безопасного способа перезапустить Codex и продолжить проверку.

`INSTALLED_ON_DISK` и `LEGACY_QUARANTINED` не равны завершению. До наблюдения новой сессии итог — только `RESTART_PENDING` или блокирующий статус.

## Процесс

### 1. Прочитать Известные Исключения

До команд прочитайте соседний `known-exceptions.yaml`. Если симптом совпал, сразу примените `do_next_time`; не изобретайте новый механизм доставки.

### 2. Проверить Штатный Путь

Выполните read-only проверки:

```text
codex --version
codex plugin --help
codex plugin list --json
```

Примените общую процедуру [проверки штатной CLI](references/codex-cli-preflight.md). Нужен Codex `0.144.4` или новее, доступная группа `codex plugin` и успешный JSON от `list`. При `ENOENT` или сломанном wrapper сначала проверьте наблюдаемый официальный executable уже установленного приложения с тем же Codex home и профилем. Только после неуспеха всех доступных подтверждённых кандидатов ставьте `BLOCKED_CODEX_CLI`. Выбранный абсолютный путь используйте во всём цикле; не меняйте постоянный `PATH` или защиту компьютера.

### 3. Снять Контрольную Точку До Изменений

Сохраните локально, без публикации:

- версию Codex;
- JSON-состояние установленного plugin;
- точный источник marketplace, если он возвращён;
- перечень существующих личных корней навыков;
- имена потенциальных конфликтов, пока без перемещения.

До любого удаления или замещающего `plugin add` выполните [сохранение до замены](references/preserve-before-reconnect.md): резервная копия конфигурации и всего фактически установленного пакета, проверка копии по SHA-256 и сведения о восстановлении. Для локального/разрабатываемого источника или просьбы сохранить расширение дополнительно сравните содержимое с актуальным полным SHA удалённого `main`. Если нужное изменение уже включено, не создавайте повторный PR; если отсутствует, сначала сохраните его и определите судьбу. Исходный рабочий Git-каталог, index и незакоммиченные файлы оставьте неизменными и проверьте это после перехода. Неизвестное владение блокирует изменение, неподтверждённая сохранность даёт `BLOCKED_PRESERVATION`.

Не включайте в ответ абсолютный домашний путь, содержимое личных навыков, токены или необработанный журнал.

### 4. Выбрать Маршрут По Источнику Marketplace

Независимо от наличия установленного plugin проверьте тип **регистрации marketplace** в свежем ответе CLI или его точной конфигурации: `marketplaceSource.sourceType` / `source_type`. Поле `source.source = "local"` у папки plugin внутри Git marketplace описывает другой слой. Наличие `origin` у локального каталога не превращает регистрацию в Git.

При отсутствующем plugin дополнительно проверьте legacy-следы:

Если `codex plugin list --json` не показывает установленный `team-skills@codex-team-skills`, до любой команды `marketplace add` или `plugin add` проверьте только точные признаки прежнего подключения:

- `~/plugins/team-skills`;
- точные границы `# BEGIN codex-team-skills managed block` и `# END codex-team-skills managed block` в `~/.codex/config.toml`;
- `~/.codex/plugins/cache/codex-team-skills` и старый `~/.agents/plugins/marketplace.json`;
- на Windows — задачу `Codex Team Skills Auto Update` и `%LOCALAPPDATA%\CodexTeamSkills`;
- на macOS — LaunchAgent `com.codex-team-skills.autoupdate` и `~/Library/Application Support/CodexTeamSkills`.

Если найден хотя бы один признак, не продолжайте по ветке чистой установки. Поставьте `LEGACY_TRANSITION_REQUIRED` и выполните процедуру из `references/reconnect.md` (вход для первой установки — `START_HERE_RECONNECT_CODEX_SKILLS.md`): каждый объект можно менять только после описанной там точной проверки владения. Если владение хотя бы одного объекта не доказано, остановитесь с `BLOCKED_LEGACY_OWNERSHIP`; не удаляйте и не переписывайте его по похожему имени.

Только отсутствие всех перечисленных следов разрешает ветку чистой первой установки. Эта проверка обязательна именно до изменяющих команд: последующая установка может скрыть различие между старым артефактом и новым состоянием.

После этой обязательной проверки выберите маршрут:

- Подтверждены Git-репозиторий `kir-kopylov/codex-team-skills` и ref `main` — переходите к шагу 5.
- Подтверждён локальный marketplace Team Skills, даже если plugin уже установлен — `LEGACY_TRANSITION_REQUIRED` и полное чтение [процедуры переподключения](references/reconnect.md), поставляемой внутри plugin. Уже разрешённое переподключение выполняйте без повторного согласования. Общий запрос обновить сам по себе не разрешает заменить источник с невыясненными отличиями: примените шаг 3 и уточните только отсутствующее решение.
- Чужой или неизвестный source/ref, неоднозначный id или состав локального marketplace — `BLOCKED_LEGACY_OWNERSHIP`, без `upgrade` и без молчаливой замены. Если в локальном marketplace есть другие plugins, не удаляйте их регистрацию или общий каталог ради Team Skills.

Локальный источник подтвердите по записи регистрации, точному пути, marketplace-записи Team Skills и manifest пакета; одного имени недостаточно. После переподключения снова проверьте Git source/ref и продолжите с проверенной стадии, не повторяя уже успешную установку.

### 5. Обновить Канонический Marketplace И Plugin

Перед первой изменяющей командой перечитайте состояние и проверьте свежесть снимка по `references/preserve-before-reconnect.md`; после паузы, расхождения версии или движения проверенного `main` обновите снимок до замены.

Если регистрация marketplace подтверждает Git-источник `https://github.com/kir-kopylov/codex-team-skills.git` и ref `main`, выполните:

```text
codex plugin marketplace upgrade codex-team-skills --json
codex plugin add team-skills@codex-team-skills --json
```

Если plugin и канонический marketplace отсутствуют, а шаг 4 подтвердил отсутствие legacy-следов, выполните:

```text
codex plugin marketplace add kir-kopylov/codex-team-skills --ref main --json
codex plugin add team-skills@codex-team-skills --json
```

Если добавление marketplace вернуло точный ответ «уже подключён», сначала подтвердите, что его source — тот же Git-репозиторий и `main`, затем выполните `upgrade`. При другом source, неизвестной структуре ответа или любой иной ошибке остановитесь; не заменяйте источник молча.

Повторный `plugin add` обязателен: обновлённый marketplace и установленный пакет — разные состояния. Сохраните его JSON-ответ с `installedPath` для проверки новой установки: последующий `plugin list` может не раскрывать путь. После команд проверьте сохранность исходного рабочего каталога и нужного расширения по шагу 3; затем снова выполните `codex plugin list --json` и подтвердите ровно одну установленную и включённую запись `team-skills@codex-team-skills`, ожидаемый Git-источник и semver. Путь проверьте по сохранённому успешному ответу `plugin add`. Только тогда поставьте `INSTALLED_ON_DISK`.

### 6. Построить Канонический Список Имён

Возьмите `installedPath` только из успешного JSON-ответа CLI и проверьте, что это обычный каталог внутри текущего Codex home. Из его каталога `skills/` соберите имена папок. Для каждого имени проверьте, что соседний `SKILL.md` имеет frontmatter `name`, точно совпадающий с именем папки.

Несовпадение, ссылка, выход пути за установленный plugin или повреждённый frontmatter блокируют очистку дублей: `BLOCKED_DUPLICATE_REVIEW`. Установка при этом остаётся только `INSTALLED_ON_DISK`.

### 7. Найти Только Личные Конфликты

Проверяйте только существующие пользовательские корни навыков, которые Codex реально использует на этом компьютере. Типичные корни — `$HOME/.agents/skills` и прежний `$HOME/.codex/skills`, но не считайте их активными без проверки текущей среды. Не трогайте repo-scoped `.agents/skills`, системные навыки, другие plugins и уникальные личные навыки.

Каталог считается доказанным конфликтом только когда одновременно выполнены все условия:

1. он находится непосредственно под проверенным личным корнем;
2. это обычный каталог, а не symlink, alias или reparse point;
3. внутри нет ссылок и путей, выходящих за каталог;
4. имя каталога соответствует допустимому имени навыка;
5. `SKILL.md` разбирается, а его frontmatter `name` точно совпадает с именем каталога;
6. такое же имя есть в проверенном каноническом списке нового plugin.

Похожее название, совпавшее описание или общий автор не доказывают конфликт. Неизвестный root, неправильный frontmatter, ссылка или расхождение имён дают `BLOCKED_DUPLICATE_REVIEW` для этого кандидата; ничего не перемещайте автоматически.

### 8. Перенести Дубли В Восстанавливаемый Карантин

Создайте отдельный каталог запуска внутри локального Codex home: `quarantine/team-skills-library/<UTC-timestamp>/`. До первого перемещения запишите manifest с:

- временем и причиной запуска;
- версией установленного plugin;
- исходным путём относительно личного корня;
- каноническим именем;
- деревом файлов и SHA-256 обычных файлов;
- целевым относительным путём карантина;
- статусом каждого шага.

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

Не удаляйте карантин в этом запуске. Не очищайте резервные cache-каталоги вида `.stale-*`: они не являются активными личными навыками. Старый пользовательский plugin-каталог допустимо перенести только при точном `name = team-skills` в его manifest и после отдельной проверки границы владения. Все уникальные личные навыки должны остаться байт-в-байт без изменений.

Если доказанных конфликтов нет, запишите это в manifest и продолжайте. Если все найденные конфликты безопасно перенесены, поставьте `LEGACY_QUARANTINED`.

### 9. Сохранить Точку Продолжения

До перезапуска атомарно сохраните локальную карточку `~/.codex/skill-runs/obnovlenie-biblioteki-navykov/pending.json` со статусом `RESTART_PENDING`, ожидаемым plugin id и semver, контрольным именем `team-skills:razgrom-plana-na-naivnost`, путём к manifest карантина и перечнем незакрытых блокеров. Секреты и содержимое личных файлов в карточку не помещайте.

### 10. Выполнить Один Безопасный Перезапуск

Точная команда пользователя уже разрешает одну попытку перезапуска; повторного вопроса не задавайте. Используйте только поддерживаемое текущей поверхностью действие, которое полностью закрывает и снова открывает Codex и сохраняет возможность продолжить эту задачу по контрольной точке.

Если такого действия нет или среда не гарантирует продолжение, не имитируйте перезапуск завершением процесса и не обещайте автоматическое возвращение. Остановитесь с `BLOCKED_RESTART_UNAVAILABLE`, сохранив `RESTART_PENDING`, и назовите одно ручное действие: полностью закрыть и снова открыть Codex. Это технический блокер, а не просьба отдельно разрешить уже разрешённые шаги.

### 11. Проверить В Новой Сессии

После фактического перезапуска прочитайте `pending.json`, затем проверяйте пользовательский результат только по списку навыков новой сессии:

- виден `team-skills:razgrom-plana-na-naivnost`;
- установленная semver совпадает с контрольной точкой;
- ни один перемещённый одноимённый личный каталог снова не активен;
- уникальные личные навыки остались доступны.

Наличие файлов в cache, успешный `plugin list` и старый список навыков не заменяют эту проверку. При успехе смените карточку на `LIVE_VERIFIED` и сохраните время проверки. При несовпадении оставьте контрольную точку и верните наблюдаемый статус без новой очистки и без второго перезапуска.

## Формат Результата

```text
Статус: [LIVE_VERIFIED | RESTART_PENDING | блокирующий статус]
Канонический plugin: [id, semver, источник]
Перенесено в карантин: [имена или «ничего»]
Сохранено без изменений: [уникальные личные навыки]
Восстановление: [локальный manifest карантина или «не создавался»]
Проверка новой сессии: [наблюдаемый результат или «не выполнена»]
Блокер: [точная причина или «нет»]
```

## Границы

- Не используйте этот skill для создания или редактирования содержания навыков; для этого нужен `dobavlenie-navyka-v-biblioteku`.
- Не называйте skill способом собственной первичной установки: до появления skill в сессии входом служит документ подключения.
- Не используйте его как фоновую службу, планировщик или способ незаметно менять библиотеку без запроса пользователя.
- Не удаляйте локальные навыки, cache, config, marketplace или plugin по одному совпадению имени.
- Не переносите repo-scoped и системные навыки, даже если имя совпало: это отдельная задача с отдельным владельцем.
- Не меняйте Defender, Gatekeeper, антивирус, execution policy или настройки безопасности.
- Не выдавайте Git checkout, скачанные файлы, `INSTALLED_ON_DISK` или `RESTART_PENDING` за `LIVE_VERIFIED`.
- Не делайте второй перезапуск и не повторяйте изменяющие команды после несовпадения; сначала покажите наблюдаемый факт.

## Опрос После Использования

Опрос задаётся один раз — после `LIVE_VERIFIED` или явного блокирующего статуса, не между установкой и перезапуском. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.

```text
Опрос по навыку:
1. Что в работе этого навыка было полезно?
2. Что стоит доработать в процедуре или формате ответа?
Можно ответить коротко или написать "пропустить".
```

Если пользователь ответил, сохраните санированную карточку в `~/.codex/skill-runs/obnovlenie-biblioteki-navykov/usage-feedback.jsonl` — лучше через bundled script:

```bash
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
```

Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет в JSONL `redaction_applied` и `redaction_types`. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.

## Логирование Сбоев

Перед выполнением прочитайте локальный `known-exceptions.yaml` как список уже известных случаев и применяйте подходящее `do_next_time` без нового поиска.

Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы, пришлось искать workaround или skill сделал ложное предположение, запишите приватную карточку в `~/.codex/skill-runs/obnovlenie-biblioteki-navykov/exception-log.jsonl`.

Пишите факты: что skill хотел сделать, что сделал, где сломался, какая предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно, пишите `unknown`. Raw logs не коммитить.

## Definition Of Done

- Выбран работоспособный официальный CLI для целевого Codex home; ошибка одного wrapper не выдана за недоступность всех кандидатов.
- До замены проверены копии конфигурации и установленного пакета; при локальном источнике или запросе сохранить расширение выполнена свежая сверка содержимого, исходный рабочий каталог не изменён.
- Установленный plugin с локальной регистрацией направлен в разрешённое переподключение; чужой источник не заменён.
- При отсутствующем plugin до чистой установки проверены точные legacy-признаки; найденные следы обработаны только через процедуру переподключения и проверку владения.
- Канонический Git marketplace обновлён или впервые подключён штатной CLI, а plugin повторно установлен.
- `codex plugin list --json` показывает ровно одну включённую запись ожидаемого id, source и semver.
- Перенесены только доказанные одноимённые личные копии; уникальные, неоднозначные, repo-scoped и системные навыки не изменены.
- Каждое перемещение имеет локальный manifest, хэши, атомарную проверку и путь восстановления; постоянного удаления нет.
- До перезапуска сохранена контрольная точка.
- Только новая сессия подтвердила контрольный канонический навык и отсутствие активного конфликта.

Пока точный пользовательский вызов не прошёл на реальной машине всю цепочку `update → reinstall → quarantine → restart → new-session visibility`, skill сохраняет статус `experimental`. CI и native smoke подтверждают пакет и команды доставки, но не доказывают срабатывание skill, перезапуск приложения или список навыков новой пользовательской сессии.
- Финальный статус — `LIVE_VERIFIED`; любой более ранний статус честно назван промежуточным или блокирующим.

