# Upakovka Navyka Odnim Faylom

> «Выгрузи навык одним ZIP для Claude», «отдать skill одним файлом», «минимальный пакет Claude Custom Skills, ничего не загружая», «в архиве нет лишних repo-файлов».

- Skill: `kir-kopylov/upakovka-navyka-odnim-faylom` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/upakovka-navyka-odnim-faylom`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/upakovka-navyka-odnim-faylom/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/upakovka-navyka-odnim-faylom

---


# Экспорт навыка в Claude Custom Skills

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

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

Применяю **«Экспорт навыка в Claude Custom Skills»**: <кратко назовите конкретную дополнительную процедуру или проверяемый результат для текущего запроса>; продолжаю без ожидания.

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

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

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

## Обзор

Skill переносит один существующий навык из командного или другого рабочего формата в минимальный пользовательский ZIP для загрузки через интерфейс Claude.ai или Cowork Custom Skills.

Смысловую адаптацию выполняет агент. Bundled script только проверяет уже подготовленную папку и упаковывает её стандартной библиотекой Python. Он не редактирует исходник, не решает, какие инструкции важны, и не обращается к сети или аккаунту Claude.

Claude Code не является целевой поверхностью этого workflow. Для него используйте существующий marketplace репозитория.

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

- «Выгрузи этот навык одним ZIP для загрузки в Claude».
- «Подготовь skill, чтобы я мог отдать один файл пользователю Claude».
- «Проверь, что в архиве нет лишних repo-файлов и всего хватает».
- «Сделай минимальный пакет Claude Custom Skills, но ничего не загружай».

Обязательный вход — существующая папка навыка. Каталог результата опционален. По умолчанию создавайте `dist/<name>-claude-custom.zip` относительно текущего проекта.

## Процесс

1. Прочитайте `known-exceptions.yaml` этого skill и примените подходящий `do_next_time`.
2. Подтвердите целевую поверхность. Если запрос относится к Claude Code, остановите экспорт и направьте пользователя в существующий marketplace.
3. Найдите исходную папку и прочитайте её `SKILL.md`. Затем откройте только реально упомянутые или функционально необходимые файлы. Не считайте весь repo обязательной зависимостью.
4. Зафиксируйте исходный состав и создайте отдельный временный каталог. Все адаптации выполняйте только в этой копии; после сборки сравните исходный состав и содержимое с зафиксированным состоянием.
5. Прочитайте `name` и `description`. Если имя нарушает ограничения ниже, не переименовывайте его молча: задайте один вопрос с предложенным допустимым именем и продолжайте только после ответа.
6. Перепишите `description` по смыслу в одну строку длиной не более 200 символов: сохраните назначение и условия срабатывания. Не обрезайте строку механически.
7. Удалите из копии только зависимости исходного repo или Codex, которые не выполняют полезную функцию на целевой поверхности:
   - инструкции про `~/.codex`, локальный feedback-опрос и exception logging;
   - служебную карточку согласия, если она относится только к автоподключению командного skill;
   - инструкции про каталог, manifest, marketplace, PR, CI и внутреннюю доставку repo;
   - registry-файлы и примеры, которые не нужны для выполнения самого навыка.
8. Сохраните функциональные правила, ограничения, примеры внутри инструкции и только те файлы из `scripts/`, `references/`, `assets/` и `resources/`, без которых workflow не работает. Не добавляйте автоматически `LICENSE.txt`, `README`, `skill.yaml`, `known-exceptions.yaml`, папку `examples/` или любые файлы «на всякий случай».
9. Если необходимый script зависит от отсутствующей среды или требует переписывания между платформами, поставьте `BLOCKED`. V1 не устанавливает пакеты и не переводит произвольный код между средами.
10. Передайте подготовленную папку bundled packager. Если каталог результата не задан, вычислите `dist/<name>-claude-custom.zip`. Не выбирайте существующий путь: упаковщик не перезаписывает архивы.

```text
python3 scripts/build_custom_skill_zip.py --source <prepared-skill-dir> --output <archive.zip>
```

11. Проверьте stdout, повторно откройте готовый ZIP независимо от исходной папки и составьте финальный отчёт. Удалите временную копию только после того, как точный состав зафиксирован.

## Проверки Упаковщика

Упаковщик обязан завершиться с `BLOCKED`, если обнаружено хотя бы одно условие:

- нет `SKILL.md`, файл не читается как UTF-8 или frontmatter не содержит однострочные `name` и `description`;
- `name` длиннее 64 символов, содержит что-либо кроме lowercase letters, digits и hyphens либо включает `anthropic` или `claude`;
- `description` пуст или длиннее 200 символов;
- общий объём файлов или итоговый ZIP превышает 30 МБ;
- найден symlink, скрытый служебный файл, небезопасный путь, очевидный secret или персональный абсолютный путь;
- путь из `scripts/`, `references/`, `assets/` или `resources/`, упомянутый в `SKILL.md`, отсутствует;
- output уже существует или находится внутри исходной папки.

Успешный архив содержит ровно одну корневую папку с именем из frontmatter. Упаковщик повторно открывает ZIP, сверяет точный список записей и выполняет проверку целостности.

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

```text
Статус: STATIC_VALIDATED | BLOCKED
Архив: <путь или прочерк>
Состав: <точный список файлов>
Адаптации: <что изменено или удалено>
Загрузка в Claude: не выполнялась
```

`STATIC_VALIDATED` означает только то, что локальный архив прошёл перечисленные проверки. Он не доказывает, что Claude принял ZIP, включил навык или вызвал его на реальном запросе.

## Границы

- Не изменяйте исходную папку и не подменяйте её временной копией.
- Не загружайте, не включайте и не отправляйте архив без отдельного действия пользователя.
- Не используйте наличие ZIP как доказательство загрузки в аккаунт.
- Не создавайте API-клиент, manifest, отдельный валидатор, uploader или новую подсистему доставки.
- Не добавляйте сеть в обычный экспорт. Если пользователь отдельно просит подтвердить актуальность требований прямо сейчас, повторно откройте [Claude Help Center](https://support.claude.com/en/articles/12512198-how-to-create-custom-skills) и [Claude Platform](https://platform.claude.com/docs/en/build-with-claude/skills-guide), затем назовите дату проверки.
- Не обещайте совместимость произвольного исполняемого кода. Необходимые зависимости должны быть совместимы с целевой средой или результат остаётся `BLOCKED`.

## Definition Of Done

- исходная папка после выполнения байтово не изменилась;
- подготовленная копия содержит только функционально необходимые файлы;
- упаковщик вернул `STATIC_VALIDATED` и точный состав;
- ZIP содержит одну корневую папку и повторно открылся без ошибок;
- отчёт перечисляет каждую смысловую адаптацию и всегда говорит `Загрузка в Claude: не выполнялась`;
- ни загрузка, ни включение навыка не выдаются за выполненные.

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

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

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

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

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

