# Публикация компонента
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Выпустить версию X.Y, сделать fork, проверить skill-пакет и выделить встроенный компонент.
## Pages
[Главная](/ru/ai/docs)
### Быстрый старт
[Быстрый старт](/ru/ai/docs/quickstart)
[Для человека](/ru/ai/docs/quickstart/human)
[Для ИИ-агента](/ru/ai/docs/quickstart/agent)
[Харнессы](/ru/ai/docs/harnesses)
[Понятия](/ru/ai/docs/concepts)
[Каталог](/ru/ai/docs/catalog)
### CLI
[CLI](/ru/ai/docs/cli)
[Карта команд](/ru/ai/docs/cli/commands)
[Наблюдение](/ru/ai/docs/cli/observe)
[Конфигурация](/ru/ai/docs/cli/config)
[Телеметрия](/ru/ai/docs/cli/telemetry)
[Устройство](/ru/ai/docs/cli/device)
[Паспорта](/ru/ai/docs/cli/passport)
[Вход](/ru/ai/docs/cli/auth)
[Согласие](/ru/ai/docs/cli/consent)
[Проект](/ru/ai/docs/cli/project)
[Toolchain](/ru/ai/docs/cli/toolchain)
[Harness](/ru/ai/docs/cli/harness)
[Agent Skill CLI](/ru/ai/docs/cli/skill)
[Реестр](/ru/ai/docs/cli/registry)
#### Компонент
[Обзор](/ru/ai/docs/cli/component)
[Обнаружение](/ru/ai/docs/cli/component-discover)
[Паспорт](/ru/ai/docs/cli/component-passport)
[Источник](/ru/ai/docs/cli/component-source)
[Публикация](/ru/ai/docs/cli/component-publish)
[Выбор](/ru/ai/docs/cli/select)
[Установка](/ru/ai/docs/cli/install)
[Target](/ru/ai/docs/cli/target)
[Setup](/ru/ai/docs/cli/setup)
[Provider](/ru/ai/docs/cli/provider)
[Синхронизация](/ru/ai/docs/cli/sync)
[Доступ](/ru/ai/docs/cli/grant)
[Жалобы](/ru/ai/docs/cli/report)
[Owner](/ru/ai/docs/cli/owner)
[Publication](/ru/ai/docs/cli/publication)
[Eval](/ru/ai/docs/cli/eval)
### Веб
[Веб](/ru/ai/docs/web)
[Главная](/ru/ai/docs/web/home)
[Каталог](/ru/ai/docs/web/catalog)
[Карточка компонента](/ru/ai/docs/web/catalog-component)
[Карточка сетапа](/ru/ai/docs/web/catalog-setup)
[Региональные сервисы](/ru/ai/docs/web/services)
[Издатели](/ru/ai/docs/web/publishers)
[Content](/ru/ai/docs/web/content)
[Эта документация](/ru/ai/docs/web/docs)
[Контакт](/ru/ai/docs/web/contact)
[Правовые документы](/ru/ai/docs/web/legal)
[Вход](/ru/ai/docs/web/login)
[Аккаунт](/ru/ai/docs/web/account)
[Профиль](/ru/ai/docs/web/profile)
[Устройства](/ru/ai/docs/web/devices)
[Объекты](/ru/ai/docs/web/objects)
[Доступ](/ru/ai/docs/web/access)
[Жалобы](/ru/ai/docs/web/reports)
[Лайки](/ru/ai/docs/web/likes)
[Онбординг](/ru/ai/docs/web/onboarding)
[Публикация](/ru/ai/docs/web/publications)
### Компоненты
[Компоненты](/ru/ai/docs/components)
[instruction](/ru/ai/docs/components/instruction)
[skill](/ru/ai/docs/components/skill)
[mcp](/ru/ai/docs/components/mcp)
[hook](/ru/ai/docs/components/hook)
[command](/ru/ai/docs/components/command)
[agent](/ru/ai/docs/components/agent)
[plugin](/ru/ai/docs/components/plugin)
[setting](/ru/ai/docs/components/setting)
[Сетапы](/ru/ai/docs/setups)
### Публикация
[Публикация](/ru/ai/docs/publishing)
[Авторство](/ru/ai/docs/publishing/authoring)
### Доверие и безопасность
[Обзор](/ru/ai/docs/trust-and-safety)
[Проверки безопасности](/ru/ai/docs/security-checks)
[Диагностика](/ru/ai/docs/troubleshooting)
[cli](/ru/ai/docs/components/cli)
## Content
# Публикация компонента
Эти команды замораживают локальный head как неизменяемый `X.Y`, копируют
версию под новой идентичностью, проверяют skill-пакет по Agent Skills
Specification и извлекают один embedded-член сетапа в обычный план
публикации.
Сами по себе они не делают каталог публичным. `component publish` — это
`plan`. Публичная запись — подтверждение на [Publication](publication.md)
или `setup publish confirm`, когда наружу уходит весь граф.
Повседневная публикация — intent `publish`. Version, fork, validate и
`component publish` ниже — expert recovery.
```bash
ai-stp task start --intent publish --idempotency-key publish-session-01 --json
```
## Таблица команд
| Команда | Mutability | Confirmation | Когда |
| --- | --- | --- | --- |
| `ai-stp component version list` | `read` | `none` | все записанные версии и следующий minor |
| `ai-stp component version release` | `apply` | `none` | дать текущему head неизменяемый `X.Y`; minor, если нет `--major` |
| `ai-stp component fork` | `apply` | `none` | скопировать одну записанную версию под новой идентичностью |
| `ai-stp component skill validate` | `read` | `none` | назвать каждое отклонение от Agent Skills Specification |
| component publish | `plan` | `none` | извлечь один embedded-компонент в план публикации |
`--json` глобальный. Всегда передавайте его.
## Version list
```bash
ai-stp component version list --id <stable_id> --json
```
Поля успеха: `stable_id`, `versions` (у каждой `version`,
`passport_digest`, `revision_id`, `created_at`), `next_minor`,
`publishable`, `publish_reason`, `forked_from`, `forked_from_version`.
`next_minor` считается из сохранённой истории. Поля `next_major` нет:
открыть major-линию — решение, а не подсказка.
## Version release
Release даёт текущему head паспорта неизменяемый двухцелый номер. По
умолчанию — следующий minor. `--major` открывает следующую major-линию.
Этот boolean **и есть** решение о major-линии. Второго `--confirm` нет.
```bash
ai-stp component version release --id <stable_id> --json
ai-stp component version release --id <stable_id> --major --json
```
Выданный номер не переиспользуется и не переписывается. Ответ той же формы
version-line, что у `version list`, теперь с новым `X.Y`. Если собираетесь
публиковать, перед release проверьте паспорт.
## Fork
Fork копирует одну записанную версию под новой идентичностью. Оригинал не
трогается.
```bash
ai-stp component fork --id <stable_id> --version 1.0 --json
```
`--id` и `--version` обязательны. `--version` — точный копируемый `X.Y`.
Ответ — линия версий **новой** идентичности: `stable_id` (новый),
`forked_from`, `forked_from_version`, `versions`, `next_minor`.
## Skill validate
Проверить каталог по Agent Skills Specification. Это read. Называет каждое
отклонение. Не adopt, не патчит и не публикует.
```bash
ai-stp component skill validate --path ./components/demo-skill --json
```
Поля успеха: `conforms`, `name`, `description`, `findings`,
`extension_directories`, `other_entries`, `packaged_as`. У каждого finding
есть `code` (вида `SK000`), `at` и `summary`. `conforms: false` со списком
finding — успешный отчёт, а не упавшая команда.
Это не собственный Agent Skill CLI (`ai-stp skill …`). Тот skill описан на
[Agent Skill CLI](skill.md). Kind `skill` — это компонент.
## Expert recovery: component publish
Извлечь один **embedded**-компонент из локального сетапа в обычный план
публикации. У членов каталога уже есть издатель; эта команда — для члена,
который живёт только внутри сетапа.
```text
ai-stp component publish \
--from-setup <setup_id> \
--setup-version 1.0 \
--component-id <embedded_id> \
--json
```
`--from-setup`, `--setup-version` и `--component-id` обязательны.
`--component-id` — точный embedded-идентификатор, никогда не display name.
`--attestation-file` повторяемый: каждый путь — полное локально подписанное
attestation, привязанное к продвигаемой версии.
Ответ — план продвижения: `setup_id`, `setup_version`,
`source_component_id`, `catalog_stable_id`, `catalog_version`, `plan_id`,
`plan_hash`, `state`, `reused_passport`, `still_embedded`. Подтверждайте
его через `publication confirm --plan-id … --plan-hash … --confirm`.
Embedded-член остаётся embedded, пока подтверждение не завершится.
## Happy path
Повседневный путь:
```bash
ai-stp task start --intent publish --idempotency-key publish-session-01 --json
```
Expert recovery из локального черновика:
```text
component passport validate --id <id>
→ component version release --id <id>
→ publication plan --id <id> --version <X.Y>
→ publication confirm --plan-id <plan> --plan-hash <hash> --confirm
```
Expert recovery из embedded-члена сетапа:
```text
component publish --from-setup <setup> --setup-version <X.Y> --component-id <id>
→ publication status --plan-id <plan>
→ publication confirm --plan-id <plan> --plan-hash <hash> --confirm
```
Expert recovery для skill-пакета, который ещё не adopt:
```text
component skill validate --path <dir>
→ component adopt --path <dir>
→ component passport validate --id <id>
```
## Именованные поля успеха
| Команда | Какие поля читать |
| --- | --- |
| `version list` / `release` / `fork` | `stable_id`, `versions`, `next_minor`, `forked_from` |
| `skill validate` | `conforms`, `findings` |
| `publish` | `plan_id`, `plan_hash`, `catalog_stable_id`, `catalog_version`, `still_embedded` |
## Отказы
| Что видно | Что это значит | Что делать |
| --- | --- | --- |
| `AI_STP_VALIDATION_ERROR` | нет обязательного id, версии или пути | прочитать дескриптор |
| `AI_STP_NOT_FOUND` | объекта, версии или embedded-члена здесь нет | `version list` или `select graph` |
| `AI_STP_PRECONDITION_FAILED` | паспорт не готов, или attestation не привязано | `passport validate`; подписать через `attestation sign` |
| `AI_STP_AUTH_REQUIRED` | продвижение на сервер требует сессии | `task start --intent account --idempotency-key account-session-01 --json` |
| `AI_STP_PERMISSION_DENIED` | этот аккаунт не может публиковать этот объект | проверить owner и grants |
| `conforms: false` | skill-пакет отклоняется от спецификации | прочитать каждый `SK…` finding; не adopt как прошедший |
| считать `component publish` публичным | это plan | подтвердить через `publication confirm` |
| выдумывать `--confirm` у release | такого флага нет | `--major` — единственное дополнительное решение |
Публичная версия должна приходить из публичного репозитория GitHub на
точном commit и subpath. Черновики только локально остаются локальными,
пока такого provenance нет.
## Связанные страницы
- [Команды компонента](component.md)
- [Паспорт компонента](component-passport.md)
- [Источник компонента](component-source.md)
- [Publication](publication.md)
- [Команды сетапа](setup.md)
- [Публикация](../publishing/index.md)
- [Публикация и авторство](../publishing/authoring.md)
- [Проверки безопасности](../security-checks.md)
- [Agent Skill CLI](skill.md)
## Флаги берутся из continuation argv
```bash
ai-stp task intents --json
```
Не дампьте `help --agent` как прелюдию. Флаги текущей задачи — в continuation `argv`.
Эта страница группирует команды публикации, чтобы человек их нашёл.
Если страница и CLI расходятся, следуйте CLI.