# Публикация и авторство
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Подготовка repository-backed компонентов и сетапов к публикации.
## 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
# Авторство компонента или сетапа
Авторство — локальная работа, связанная digest: собрать дерево, заполнить
только подтверждённые факты, закрепить точный публичный GitHub commit,
проверить паспорт, выпустить `X.Y`, затем пройти
[Публикацию](index.md). Секреты, приватные пути, кэши и generated output не
должны попадать в паспорт.
Опубликованная версия — неизменяемый `X.Y`, не SemVer. Изменение байтов
означает новую версию.
Повседневный путь:
```bash
ai-stp task start --intent author --idempotency-key author-session-01 --json
```
Leaves scaffold / adopt / validate / release ниже — expert recovery.
## Expert recovery: scaffold
Сначала просмотрите каждый файл и digest, затем примените те же входы с
точным digest плана. Назначения ещё не должно существовать.
Expert recovery (уже есть digest):
```text
ai-stp component scaffold plan \
--type skill \
--language none \
--harness portable \
--name playwright-checks \
--output ./playwright-checks \
--json
ai-stp component scaffold apply \
--type skill \
--language none \
--harness portable \
--name playwright-checks \
--output ./playwright-checks \
--expected-plan-digest <digest> \
--json
```
`--type` — один из закрытых видов. Декларативные виды (`instruction`, `skill`,
`command`, `agent`, `setting`) принимают `--language none`. Исполняемые `mcp`,
`plugin` и `cli` принимают `python`, `typescript`, `javascript`, `rust`, `go`
или `dart-flutter`. `hook` не принимает Rust или Go: provider не делает скрытую
сборку исходников. Вид `cli` только portable.
`--harness` — `portable` или один конкретный харнесс. Если у харнесса нет
самостоятельной нативной формы для этого вида, план отклоняется до любой
записи. `setting` требует конкретный харнесс. Apply инициализирует git,
если каталог ещё не внутри worktree; git не входит в digest плана.
Каталог `component-scaffold/6` содержит:
```text
playwright-checks/
├── .ai-stp-template.json
├── .gitignore
├── README.md
├── component-passport.json
├── eval-profile.json
├── source/ # канон; portable adopt переносит это
└── projections/<harness>/ # только если --harness конкретный
```
У hook дополнительно есть `source/hook-source.json` (событие, порядок, блокирующий
failure, handler). Portable hook пишет производные `hooks.json` и запускаемый
handler в `source/`; конкретный харнесс проецирует их в `projections/<harness>/`.
Plugin с каталогом манифеста получает продуктовый манифест и заметку `skills/`,
без заглушки `activate_plugin`. Plugin для OpenCode и Pi — один модуль JS/TS, без
выдуманного манифеста. `setting` требует конкретный харнесс.
`discover` / `adopt` переносят `source/` для portable и
`projections/<harness>/` для конкретного харнесса, а не весь авторский
каталог.
`setup scaffold plan` / `apply` создают физический каталог сетапа для одного
харнесса: черновик `setup.json`, черновик `setup-passport.json`, вложенные
`components/<member>/` с одним git-корнем и пустой `projections/<harness>/`
до отдельной команды экспорта. Вложенные члены указывают на сгенерированную
проекцию и задают `managed_paths`. Перед `setup compose` замените каждый
маркер `TODO(ai-stp-scaffold):` и добавьте tags: compose отказывает черновику.
Compose пишет SQLite. Compose — это не install.
## Паспорт
Паспорт scaffold — локальный patch: без выдуманного источника, без секретов,
без разрешения на распространение (`NOASSERTION`, пока вы не проверите
лицензию).
Expert recovery — повседневное авторство это intent `author`:
```bash
ai-stp task start --intent author --idempotency-key author-session-01 --json
```
Не набирайте discover / adopt / passport. Движок регистрирует дерево.
`validate` перечисляет все структурные блокеры публикации. `quality` —
необязательные подсказки автору; он не меняет доверие и готовность.
Для `required_env` записывайте имена и назначение, никогда значения.
## Точный GitHub commit
`component source parse` — недоверенное намерение. `github/exact` становится
только полный lowercase SHA commit.
```bash
ai-stp component source parse --source https://github.com/example/repo --json
ai-stp component source resolve --source https://github.com/example/repo --commit <40-char-sha> --json
```
Ветка, тег, короткий SHA, URL с учётными данными, управляющие символы,
абсолютный subpath или выход через `..` отклоняются. Точная идентичность ещё
не доказывает digest содержимого; это даёт последующий путь import/adopt.
Обновляйте архивные GitHub-доказательства только после того, как версия уже
есть локально:
```bash
ai-stp component source evidence show --id <stable_id> --version 1.0 --json
ai-stp component source evidence refresh --id <stable_id> --version 1.0 --json
```
## Без секретов
Не кладите токены, пароли, закрытые ключи, OAuth refresh token или тела
`.env` в:
- паспорт;
- файлы `source/` или `projections/<harness>/`, которые будут опубликованы;
- логи, фикстуры или примеры README с живыми значениями.
Если харнессу нужна учётная запись, паспорт может сказать, что требуется
именованная переменная. Значение живёт в системном хранилище секретов или в
окружении оператора — никогда в артефакте.
`setting` — не место, чтобы прятать секреты. См.
[`setting`](../components/setting.md).
## Проверка только для skill
Из закрытых видов независимая спецификация есть только у `skill`. Проверяйте
**пакет** (каталог с `SKILL.md` в корне), а не всё авторское дерево:
```bash
ai-stp component skill validate --path ./playwright-checks/source --json
```
Эта команда — не [`ai-stp skill install`](../cli/skill.md). Последняя
устанавливает собственный Agent Skill CLI.
## Из нативного дерева, которое уже есть
Если компонент уже лежит в layout харнесса, запустите intent `author`.
Discover и adopt ниже — expert recovery:
```bash
ai-stp task start --intent author --idempotency-key author-session-01 --json
```
Не набирайте `component discover` или `component adopt`.
Adoption принимает только путь, который discovery уже назвал. У каталога
должен быть манифест из закрытого набора (`SKILL.md`, `AGENTS.md`,
`plugin.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`,
`.cursor-plugin/plugin.json`, `hooks.json`, `package.json` или
`pyproject.toml`). Каталог без такого файла отклоняется.
## Сетапы
Соберите сетап из каталожных pin и embedded-источников, затем выпустите и
опубликуйте граф как набор. JSON-манифест и путь обновления — на странице
[Сетапы](../setups/index.md). Путь confirm — на
[Публикации](index.md).
## Продуктовые статьи — не пользовательская CMS
Статьи help-центра, changelog и заметки о выпуске живут в репозитории в
`docs-user-facing/content/` как Git-native Markdown, по файлу на локаль, с
совпадающими `type` и `slug`. Это не CMS, которую аккаунт редактирует с
сайта, и не способ публиковать компонент или сетап. Публикация компонента и
сетапа — CLI-путь выше.