Публикация и авторство
Подготовка repository-backed компонентов и сетапов к публикации.
Авторство компонента или сетапа
Авторство — локальная работа, связанная digest: собрать дерево, заполнить
только подтверждённые факты, закрепить точный публичный GitHub commit,
проверить паспорт, выпустить X.Y, затем пройти
Публикацию. Секреты, приватные пути, кэши и generated output не
должны попадать в паспорт.
Опубликованная версия — неизменяемый X.Y, не SemVer. Изменение байтов
означает новую версию.
Повседневный путь:
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):
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 содержит:
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:
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.
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-доказательства только после того, как версия уже есть локально:
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.
Проверка только для skill
Из закрытых видов независимая спецификация есть только у skill. Проверяйте
пакет (каталог с SKILL.md в корне), а не всё авторское дерево:
ai-stp component skill validate --path ./playwright-checks/source --json
Эта команда — не ai-stp skill install. Последняя
устанавливает собственный Agent Skill CLI.
Из нативного дерева, которое уже есть
Если компонент уже лежит в layout харнесса, запустите intent author.
Discover и adopt ниже — expert recovery:
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-манифест и путь обновления — на странице Сетапы. Путь confirm — на Публикации.
Продуктовые статьи — не пользовательская CMS
Статьи help-центра, changelog и заметки о выпуске живут в репозитории в
docs-user-facing/content/ как Git-native Markdown, по файлу на локаль, с
совпадающими type и slug. Это не CMS, которую аккаунт редактирует с
сайта, и не способ публиковать компонент или сетап. Публикация компонента и
сетапа — CLI-путь выше.