К содержимому
# Постоянные правила — это отдельный компонент, а не роль агента
[Content hub](/ru/ai/content)
- type: article
- published_at: 2026-09-04
- tags: component, instruction
Расширенный разбор instruction: границы, приоритеты, нативные файлы и безопасное распространение.
## Content
# `instruction` ![Component type: instruction](/content/illustrations/kind-instruction.jpg) `instruction` — постоянный текст, который формирует решения агента: правила, проектная память, стиль работы, границы полномочий и заметки харнесса, которые не являются workflow, shortcut или пакетом. Instruction отвечает на вопрос: **что агент должен держать в уме, пока работает?** Он не отвечает «как агент должен делать этот класс задач?» ([`skill`](https://ai-stp.aiguild.space/ru/docs/components)), «какой именованный shortcut набрать?» ([`command`](https://ai-stp.aiguild.space/ru/docs/components)) и «какая специализированная роль должна выполнять работу?» ([`agent`](https://ai-stp.aiguild.space/ru/docs/components)). !!! warning "AGENTS.md — это instruction, а не `agent`" Файл с именем `AGENTS.md` — кросс-харнесс соглашение об инструкции. Вид `agent` — определение роли. Discovery не считает `AGENTS.md` ролью и не считает файл роли постоянными правилами. `CODEX.md` — **не** документированный layout инструкции Codex. Discovery возвращает его как `unsupported_manifest` и указывает на `AGENTS.md`. Память, правила, preferences и проектные договорённости — *содержимое* `instruction` (или [`setting`](https://ai-stp.aiguild.space/ru/docs/components)). Вида `memory` нет. | Объект | Вид | Живёт в сетапе? | | --- | --- | --- | | `AGENTS.md` / `CLAUDE.md` / текст rules | `instruction` | да | | Именованная роль под `agents/` | `agent` | да | | CLI Agent Skill (`ai-stp skill …`) | не этот вид | нет | ## Соседи | Вид | Главное отличие | | --- | --- | | `skill` | skill — повторяемая процедура с сопроводительными файлами; instruction — постоянный контекст | | `command` | command вызывается по имени; instruction уже есть в сессии | | `agent` | agent — роль, которая *использует* инструкции; instruction — текст, а не роль | | `plugin` | plugin расширяет харнесс; instruction расширяет список чтения агента | | `mcp` | MCP подключает tool; instruction может лишь *сказать*, когда этим tool пользоваться | | `hook` | hook срабатывает на событии жизненного цикла; instruction не исполняется | | `setting` | setting хранит параметры; instruction хранит прозу | Выбирайте `instruction`, когда агент должен следовать постоянным правилам без приложенной процедуры. Выбирайте `skill`, когда у работы есть шаги, scripts или references. Выбирайте `command`, когда человек должен начать работу по имени. ## Рекомендуемая структура пакета `instruction` декларативен. `--language` — `none`. Независимой спецификации instruction, сравнимой с [Agent Skills Specification](https://agentskills.io/specification), нет; тело — Markdown, который харнесс загрузит как контекст. Переносимый пакет (то, что `discover` / `adopt` переносят из `source/`): ```text project-conventions/ └── AGENTS.md ``` Когда вы начинаете из `ai_stp`, стартуйте intent `author`. Не набирайте `component scaffold plan`. Авторский каталог шире опубликованного пакета: `discover` / `adopt` переносят `source/` для portable и `projections/<harness>/` для конкретного харнесса, а не всё дерево. ```text project-conventions/ # component-scaffold/3 ├── .ai-stp-template.json ├── .gitignore ├── README.md ├── component-passport.json ├── eval-profile.json └── source/ └── AGENTS.md ``` `source/AGENTS.md` — канон. Проекция Claude Code — `CLAUDE.md`; Cursor — `rules/<name>.mdc`. Не выдумывайте второй каталог-обёртку. Повседневное авторство: ```bash ai-stp task start --intent author --idempotency-key author-session-01 --json ``` Expert recovery (уже есть digest): ```text ai-stp component scaffold plan \ --type instruction \ --language none \ --harness portable \ --name project-conventions \ --output ./project-conventions \ --json ai-stp component scaffold apply \ --type instruction \ --language none \ --harness portable \ --name project-conventions \ --output ./project-conventions \ --expected-plan-digest <digest> \ --json ``` `--language` для instruction — `none`. Вид декларативный. Adopt принимает только путь, который 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`). Одиночный файл в file-shaped layout — в том числе `AGENTS.md` — и есть компонент; дополнительная обёртка не нужна. Команды `ai-stp component instruction validate` нет. Структурная готовность — `component passport validate`. Kind-specific проверка по спецификации есть только у [`skill`](https://ai-stp.aiguild.space/ru/docs/components). ## Стандарты и фреймворки - [AGENTS.md](https://agents.md) — кросс-продуктовый файл инструкции. Discovery считает `AGENTS.md` в корне проекта instruction, а не видом `agent`. - Страницы харнесса, которые объявили layout, появляются у каждой находки как `layout_source` из конверта intent `author`. Если классификация неясна, покажите это поле; не угадывайте путь соседа. - Сравнивайте с [Agent Skills Specification](https://agentskills.io/specification), когда хочется положить workflow в instruction: процедура с `SKILL.md` — это `skill`. Не выдумывайте вид `memory`, вид `rules` или extra frontmatter, который случайно показывает UI харнесса. Это содержимое этого вида или `setting`. ## Нативные layout по харнессам Discovery сообщает только объявленные layout. Точные пути на машине даёт конверт intent `author`. У каждой находки есть `layout_source` — официальный документ, который объявил layout. Если классификация неясна, покажите это поле; не угадывайте путь соседа. Из матрицы discovery: | Харнесс | Global | Project | Что есть в контракте discovery | | --- | --- | --- | --- | | Claude Code | да | да | постоянный текст; каталог под `skills/` с plugin-манифестом — это **plugin**, не instruction | | Codex | да | да | `CODEX.md` — `unsupported_manifest`; используйте `AGENTS.md` | | Pi | да | нет | в ограниченной матрице только global instruction | | OpenCode | нет | нет | instruction в ограниченной матрице не объявлен | | Grok Build | нет | нет | instruction в ограниченной матрице не объявлен | | Cursor | да | да | внутри доказанного пакета `.cursor-plugin/plugin.json` каждый файл под `rules/` — instruction | | Antigravity | нет | нет | instruction в ограниченной матрице не объявлен | | `undefined` | переносимые соглашения | переносимые соглашения | это не харнесс; автоматическая установка не считается безопасной | Внутри доказанного Cursor plugin discovery читает `rules` и классифицирует каждый файл как `instruction`. Он не выдумывает файлы instruction из соседнего каталога. Expert recovery — повседневное авторство это intent `author`: ```bash ai-stp task start --intent author --idempotency-key author-session-01 --json ``` Не набирайте `component discover`. Движок сам находит нативное дерево. Если один путь отвечает более чем одному харнессу, назовите `--harness` при adopt. Для общей кросс-продуктовой претензии используйте `portable`. ## Версии — `X.Y`, не SemVer Опубликованная версия instruction неизменяема и имеет вид `X.Y`. Патч-номера нет. Изменение Markdown — новая версия. Обновление instruction внутри сетапа — новая версия сетапа. ```bash ai-stp component version list --id <stable_id> --json ai-stp component version release --id <stable_id> --json ``` `--major` открывает следующую мажорную линию. Мажорная линия — отдельная граница доступа. ## Что проверяет `ai_stp` Процент карточки каталога и разделение обязательных и необязательных проверок объяснены на странице [Проверки безопасности](https://ai-stp.aiguild.space/ru/docs/components). Для instruction ожидайте как минимум: - структуру, digest, лицензию, tags, исходный репозиторий; - ограниченную распаковку и path denylist; - сканирование секретов (`secrets_heuristic` и Gitleaks, если включён); - правила prompt-injection и скрытого содержимого (`pi_content_pack`, `content_hidden`). Пройденное сканирование снижает известный риск. Это не гарантия, что текст безвреден. Обязательные проверки, которые провалились или не смогли запуститься, блокируют публикацию. Перед установкой также смотрите: | Проверка | Почему важно | | --- | --- | | Diff прозы | instruction может незаметно расширить полномочия | | Совместимость с харнессом | Claude-специфичный текст не должен попасть на несовместимый target | | Scope | глобальные правила действуют шире, чем файл проекта | | Кто автор | verified-автор не делает содержимое автоматически безопасным | | Какой `X.Y` закреплён | обновление текста создаёт новую версию сетапа | | Линия доверия | `experimental` требует явного согласия | `author_verified` и `component_verified` независимы. Ни одно не является гарантией безопасности. ## Связанные команды CLI Только команды, которые существуют. Флаги всегда со страниц CLI и всегда `--json`. Исполняемый файл — `ai-stp` (пакет `ai-stp-cli`). Команд `component inspect` и `setup show` нет. Единственный kind-specific validate — `ai-stp component skill validate`. **Именно этот вид:** команды `component instruction validate` нет. Используйте проверку паспорта. ```bash ai-stp component passport validate --id <stable_id> --json ``` **Автор, adopt, публикация:** ```bash ai-stp task start --intent author --idempotency-key author-session-01 --json ai-stp task start --intent publish --idempotency-key publish-session-01 --json ``` Если discovery сообщил путь более чем под одним харнессом или видом: Expert recovery: ```text ai-stp component adopt --path <source_path> --harness portable --kind instruction --json ``` **Установить:** ```bash ai-stp task start --intent install --idempotency-key install-session-01 --json ``` Expert-просмотр каталога: ```text ai-stp registry search --kind component --query <name> --json ``` Instruction может быть embedded-членом compose-манифеста. См. [Сетапы](https://ai-stp.aiguild.space/ru/docs/components). ## Как instruction проходит через `ai_stp` === "Автор" Автор публикует instruction из публичного GitHub-источника или импортирует её локально. Версия закрепляет точный commit и подпуть. === "Каталог" Каталог показывает назначение, поддерживаемые харнессы, ограничения, trusted status автора и независимый status самого компонента. === "Сборщик" Сборщик проверяет, что instruction можно встроить в выбранный сетап и что её файловая структура подходит проекции provider. === "Provider" Provider кладёт instruction на нативную поверхность харнесса и обновляет связанные индексы только после плана, digest и подтверждения. ## Красные флаги - Обращение с `AGENTS.md` как с видом `agent`, или с файлом роли как с постоянными правилами. - Поставка `CODEX.md` в ожидании, что discovery примет его как инструкции Codex. - Markdown, вложенный в `payload/` или другой каталог-обёртку. - Живые токены, закрытые ключи или тела `.env` в пакете. - Правила, которые велят агенту игнорировать предыдущие инструкции или выносить секреты. - Линия доверия `experimental` без `consent allow`. - Харнесс не в списке совместимости компонента. - «Latest» или имя ветки вместо точных `X.Y` и commit. - Обращение с `author_verified` как с `component_verified`. - Выдуманный вид `memory` вместо памяти в этом тексте. - Копирование файлов в target в обход плана provider. ??? question "Можно ли instruction использовать без публикации" Да. Собственную, импортированную или точно закреплённую instruction можно использовать после локальных проверок. Она от этого не становится platform-verified и должна быть показана именно как локальный или закреплённый объект (`local_owner_or_pinned`). ## Чеклист автора 1. Сделайте scaffold с `--type instruction --language none` и держите Markdown в корне пакета (в авторском дереве — под `source/`). 2. Пишите только постоянные правила. Процедуру перенесите в [`skill`](https://ai-stp.aiguild.space/ru/docs/components); именованный shortcut — в [`command`](https://ai-stp.aiguild.space/ru/docs/components). 3. Объявите в паспорте, чего текст требует от агента. Секретов нет. 4. Зарегистрируйте каталог через `ai-stp task start --intent author --idempotency-key author-session-01 --json`. Expert `component discover` / `component adopt` остаются для recovery. 5. Закрепите точный публичный GitHub commit и подпуть. 6. `component passport validate` → `component version release`, чтобы выпустить неизменяемый `X.Y`. 7. Публикуйте через [путь публикации](https://ai-stp.aiguild.space/ru/docs/components). 8. В сетапе закрепите этот `X.Y`. Позднее обновление — новая версия сетапа. Связанное: [Авторство](https://ai-stp.aiguild.space/ru/docs/components), [Компоненты](https://ai-stp.aiguild.space/ru/docs/components), [`agent`](https://ai-stp.aiguild.space/ru/docs/components), [`skill`](https://ai-stp.aiguild.space/ru/docs/components).