# Sverka Aktivnoy Versii Navykov

> «Какая версия навыков активна», «новый навык не виден», «застряло обновление Team Skills», «локальный skill перекрывает командный»: read-only сверка GitHub, plugin, сессии.

- Skill: `kir-kopylov/sverka-aktivnoy-versii-navykov` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/sverka-aktivnoy-versii-navykov`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/sverka-aktivnoy-versii-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/sverka-aktivnoy-versii-navykov

---


# Проверка Реального Состояния Библиотеки Навыков

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

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

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

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

Уведомление или обещание проверки не считается рабочим шагом. Не завершайте первый ответ строкой уведомления, планом будущих команд или сообщением о ходе. Сразу после уведомления и до отправки первого ответа выполните доступный read-only снимок независимых слоёв: repo/remote main, marketplace/plugin source, установленный plugin, личные одноимённые кандидаты и текущая сессия. Первый ответ должен уже содержать наблюдаемые значения или явный `unknown` по каждому доступному слою.

Если target runtime нельзя определить из запроса, данных текущей сессии и доступной среды, сначала соберите не зависящие от этого выбора наблюдения. Затем верните наблюдаемый partial/blocked результат и задайте один ближайший вопрос, какой runtime считать целевым. Не спрашивайте о runtime до доступных самостоятельных проверок.

Stop-gate для точной просьбы «проверь, какая версия библиотеки навыков реально активна»: первое действие — не текст, а вызов доступного терминала для `git`, manifest и `codex plugin list --json` плюс проверка списка навыков текущей сессии. До получения фактического tool result отправлять пользователю строку уведомления или обещание проверки запрещено. Если отдельная команда недоступна, зафиксируйте её ошибку как наблюдаемый `unknown` или `blocked`, а не пропускайте весь снимок.

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

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

## Обзор

Этот skill отвечает не на вопрос «какие файлы где-то лежат», а на вопрос «что доказано на каждом слое прямо сейчас». Он строит read-only карту пяти независимых состояний:

```text
удалённый main
  → marketplace-источник
  → установленный plugin
  → личные одноимённые кандидаты
  → список навыков текущей сессии
```

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

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

- «Какая версия библиотеки навыков реально активна?»
- «Почему новый навык не виден?»
- «Сравни GitHub, установленный plugin и текущую сессию».
- «Проверь, не перекрывает ли локальный skill командный».
- «Где именно застряло обновление Team Skills?»

## Допустимые Статусы

- `OBSERVED_MATCH` — оба соседних слоя наблюдались и совпали по проверяемому признаку;
- `OBSERVED_MISMATCH` — оба соседних слоя наблюдались и различаются;
- `NOT_INSTALLED` — штатная CLI наблюдаемо не показывает установленный plugin;
- `POTENTIAL_PERSONAL_SHADOW` — в проверенном личном корне есть точное одноимённое совпадение, но приоритет загрузки ещё не доказан;
- `OBSERVED_PERSONAL_SHADOW` — источник реально загруженного skill наблюдаем и указывает на личную копию;
- `UNKNOWN_COMMAND_FAILED` — read-only команда не выполнилась или вернула неразбираемый результат;
- `UNKNOWN_NOT_EXPOSED` — интерфейс не возвращает нужный commit, semver, source или path;
- `UNKNOWN_SESSION_NOT_OBSERVED` — список навыков именно текущей сессии недоступен наблюдению.

`unknown` — результат проверки, а не повод заполнить пробел догадкой.

## Процесс

### 1. Зафиксировать Вопрос И Время

Назовите проверяемый skill или версию, текущую машину/профиль в допустимой обезличенной форме и UTC-время начала. Прочитайте соседний `known-exceptions.yaml` и `references/domain-playbook.md`.

Если спор касается текста, который пользователь видит сейчас, зафиксируйте название skill и один самый короткий различающий фрагмент из цитаты или скриншота. Видимый фрагмент доказывает, что текст был показан, но не доказывает, какой `SKILL.md` его предоставил.

### 2. Проверить Удалённый Main

Read-only способом получите текущий SHA ветки `main` репозитория `kir-kopylov/codex-team-skills`. Из того же SHA прочитайте `plugins/team-skills/.codex-plugin/plugin.json` и, если вопрос о конкретном skill, наличие его каталога и registry-файлов.

Не используйте локальный checkout как доказательство удалённого `main`. Если сеть, GitHub или чтение конкретного SHA недоступны, поставьте `UNKNOWN_COMMAND_FAILED` и продолжите с остальными слоями.

### 3. Проверить Marketplace-Источник

Выберите работающую официальную CLI по [общей предварительной проверке](../obnovlenie-biblioteki-navykov/references/codex-cli-preflight.md) и выполните только её read-only часть: `--version`, `plugin --help` и `plugin list --json`. Ошибка команды `codex` из `PATH` доказывает сбой этого запуска, но не недоступность всей CLI: проверьте уже установленный официальный binary приложения с тем же Codex home/profile. Если совпадение home/profile не доказано, не переносите результат другого окружения на проверяемую установку. Не устанавливайте CLI и не меняйте `PATH` ради диагностики.

Из ответа текущего успешного запуска берите только реально возвращённые поля: marketplace/source/ref или их отсутствие. Не вычисляйте snapshot marketplace по имени cache-каталога. Если ни один безопасно обнаруженный официальный кандидат для того же home/profile не запускает нужную команду или не возвращает разбираемый JSON, этот слой получает `UNKNOWN_COMMAND_FAILED`. Укажите проверенные способы запуска и точную границу недоступного наблюдения; это не `NOT_INSTALLED`. Остальные слои проверяйте независимо. Если CLI не отдаёт commit/ref marketplace, укажите `UNKNOWN_NOT_EXPOSED`; не приравнивайте source URL к конкретному SHA.

### 4. Проверить Установленный Plugin

Из того же JSON найдите ровно одну запись `team-skills@codex-team-skills` и зафиксируйте `version`, `enabled`, `installedPath` и source лишь когда эти поля возвращены. Затем безопасно проверьте, что `installedPath` — обычный каталог внутри текущего Codex home, и прочитайте из него plugin manifest и наличие проверяемого skill.

Нет записи — `NOT_INSTALLED`. Несколько записей, path escape, symlink, несовпавший manifest или неизвестная структура — наблюдаемое расхождение либо `UNKNOWN_NOT_EXPOSED`, но не автоматическая очистка.

### 5. Проверить Личные Одноимённые Кандидаты

Сначала установите, какие пользовательские корни навыков реально относятся к текущей поверхности. Проверяйте только непосредственные каталоги под этими корнями. Не обходите repo-scoped, системные и plugin-каталоги как «личные».

Кандидат получает `POTENTIAL_PERSONAL_SHADOW`, только если это обычный каталог без выхода по ссылкам, имя папки и frontmatter `name` совпадают, а такое имя есть в установленном plugin. Само совпадение не доказывает приоритет загрузки. `OBSERVED_PERSONAL_SHADOW` разрешён лишь когда текущая поверхность прямо показывает источник загруженного skill.

### 6. Проверить Текущую Сессию

Используйте только список skills или metadata, предоставленные самой текущей сессией. Проверьте наличие конкретного skill или контрольного `team-skills:razgrom-plana-na-naivnost`.

Не восстанавливайте список сессии из cache, `installedPath`, каталога repo или памяти о предыдущем чате. Если текущая поверхность не раскрывает список, поставьте `UNKNOWN_SESSION_NOT_OBSERVED`. Если список раскрывает имя, но не версию пакета, подтверждайте только видимость имени, а semver сессии оставляйте `UNKNOWN_NOT_EXPOSED`.

### 7. Сверить Спорный Видимый Текст

Выполняйте этот шаг только когда вопрос относится к формулировке или размеру текста и определены оба входа: конкретный skill и различающий фрагмент. Если одного из них нет в уже доступном наблюдении, отметьте сверку текста как `unknown` и пропустите её; не заменяйте недостающее сканированием всей библиотеки. Проверьте один и тот же буквальный фрагмент в `SKILL.md` названного skill на каждом доступном файловом слое: в remote `main` из уже зафиксированного SHA, в marketplace — только если интерфейс прямо раскрыл точный неизменяемый snapshot или path и его содержимое безопасно читается, в проверенном `installedPath` и, если это относится к вопросу, в точном одноимённом личном кандидате. URL или имя ветки без наблюдаемого содержимого дают для текста `unknown`. Для личного слоя публикуйте только «найден», «не найден» или `unknown`, но не сам текст и не путь.

Не вычисляйте хэши и не сравнивайте весь файл или всю библиотеку, если достаточно названного skill и одного фрагмента. Если наблюдаемы только remote и установленный файл, а marketplace ref или содержимое неизвестны, назовите это наблюдаемым различием содержимого конечных файлов: не присваивайте `OBSERVED_MISMATCH` соседней границе, не локализуйте доставку через marketplace и не придумывайте причину.

Совпадение видимого фрагмента с файлом доказывает только совпадение текста, а не источник текущей сессии. Если текст наблюдается в текущей сессии, но её metadata не раскрывает source или path, источник остаётся `UNKNOWN_NOT_EXPOSED`; если сама сессия недоступна наблюдению, сохраняйте `UNKNOWN_SESSION_NOT_OBSERVED`.

### 8. Найти Первое Доказанное Расхождение

Сравнивайте только соседние слои и только общий наблюдаемый признак:

- remote и marketplace: commit SHA только с точным commit SHA, semver только с semver;
- marketplace и installed: commit SHA только с source commit SHA, semver только с semver, source только с source;
- установленный manifest и каталог skill против JSON plugin;
- точное личное совпадение против наблюдаемого источника загруженного skill;
- установленное наличие skill против списка текущей сессии.

Не сравнивайте URL или имя ветки с commit SHA и не называйте такие разные поля общим признаком.

Первый `OBSERVED_MISMATCH` — локализация разрыва, не автоматически его причина. Если перед предполагаемым разрывом есть unknown, формулируйте «причина не локализована» и называйте недостающее наблюдение.

Результат шага 7 показывайте отдельно от первого соседнего расхождения. Если сравнивались remote и установленный файл, а содержимое marketplace неизвестно, это доказывает различие файлов, но не локализует границу доставки.

### 9. Выдать Карту Без Изменений

Покажите по каждому слою:

- наблюдаемое значение;
- источник доказательства и время;
- статус;
- что именно этот факт доказывает и чего не доказывает.

Затем дайте одну строку: «Первое доказанное расхождение: …» или «Расхождение не локализовано: …». Если пользователь после диагноза просит обновить, переустановить, перенести дубль или перезапустить Codex, это новая изменяющая задача для `obnovlenie-biblioteki-navykov`; не выполняйте её внутри этого skill.

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

```text
Проверено в: [UTC]
Удалённый main: [SHA, semver, наличие skill, status, evidence]
Marketplace: [source/ref или unknown, status, evidence]
Установленный plugin: [id, semver, enabled, наличие skill, status, evidence]
Личные кандидаты: [имена и potential/observed либо ничего, status, evidence]
Текущая сессия: [видимость имени; semver или unknown, status, evidence]
Первое доказанное расхождение: [слой A → слой B либо не локализовано]
Изменения среды: не выполнялись
```

Если вопрос касается видимого текста, перед первым расхождением всегда добавляйте строку: `Спорный видимый текст: [skill или unknown, короткий фрагмент или unknown; найден/не найден/unknown по доступным файловым слоям; source сессии или unknown]`. При пропущенной сверке назовите в этой строке точный недостающий вход или слой.

## Границы

- Не выполнять `marketplace add/upgrade/remove`, `plugin add/remove`, `git pull`, перемещение, карантин, удаление, правку config или перезапуск.
- Не добавлять или удалять plugin ради получения его пути; отсутствие `installedPath` в read-only ответе оставлять `UNKNOWN_NOT_EXPOSED`.
- Не считать один сломанный запуск из `PATH` доказательством недоступности официальной CLI приложения и не подменять целевой Codex home/profile при её проверке.
- Не выдавать remote `main`, marketplace, cache, установленный plugin и текущую сессию за одно состояние.
- Не считать каталог в cache доказательством активной версии.
- Не считать точную личную копию фактическим перекрытием без наблюдаемого источника загруженного skill.
- Не считать совпадение видимого текста с файлом доказательством источника или semver текущей сессии.
- Не строить хэши, полный diff или инвентаризацию всей библиотеки, когда вопрос закрывается одним названным skill и коротким фрагментом.
- Не утверждать semver текущей сессии, если сессия показывает только имена.
- Не скрывать failed/unknown слой ради удобного диагноза.
- Не публиковать абсолютные личные пути, содержимое личных skills, токены или raw logs.

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

Опрос задаётся один раз после выдачи полной карты пяти слоёв или явного диагностического блокера, не посреди проверки. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.

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

Если пользователь ответил, сохраните санированную карточку в `~/.codex/skill-runs/sverka-aktivnoy-versii-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/sverka-aktivnoy-versii-navykov/exception-log.jsonl`.

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

## Definition Of Done

- Все пять слоёв представлены наблюдением или явным unknown со временем и источником.
- Remote SHA и semver взяты из одного commit, а установленное состояние — из JSON текущего запуска и проверенного manifest.
- Личный одноимённый каталог назван только кандидатом, пока источник загруженного skill не наблюдался.
- Видимость текущей сессии не выведена из файловой системы.
- При споре о видимом тексте один и тот же короткий фрагмент проверен на доступных файловых слоях либо точный недостающий вход или наблюдение отмечены как `unknown`; source текущей сессии не выведен из совпадения текста.
- Названо первое доказанное расхождение либо точное недостающее наблюдение.
- Ни один файл, plugin, marketplace, config, процесс или сессия не изменены.

