# Command — проверяемая операция с именем
[Content hub](/ru/ai/content)
- type: article
- published_at: 2026-09-04
- tags: command, component
Расширенный разбор command: интерфейс запуска, параметры, повторяемость и границы ответственности.
## Content
# `command`

`command` — именованный вход в повторяемое действие: slash command,
шаблон prompt или другой shortcut, который харнесс действительно
документирует.
Command отвечает на вопрос: **какую проверяемую операцию можно вызвать
по имени?**
Он не отвечает «как агент должен делать этот класс задач?»
([`skill`](https://ai-stp.aiguild.space/ru/docs/components)), «что должно выполниться автоматически на событии?»
([`hook`](https://ai-stp.aiguild.space/ru/docs/components)) и «какое семейство CLI открывает сам `ai-stp`?»
(эти страницы живут в [`cli/`](https://ai-stp.aiguild.space/ru/docs/components)).
!!! warning "Вид `command` — не CLI `ai-stp`"
Эта страница — **вид компонента** `command`, который входит в сетап.
Исполняемый файл `ai-stp` (пакет `ai-stp-cli`) имеет собственные
группы команд — `component`, `select`, `install` и остальные. Они
описаны в [CLI](https://ai-stp.aiguild.space/ru/docs/components). Это не компоненты каталога, их не
выбирают в сетап, и команды `ai-stp component command validate` нет.
Codex называет эту поверхность **command/prompt**. Discovery всё равно
сообщает вид `command`.
| Объект | Где живёт | Живёт в сетапе? |
| --- | --- | --- |
| Вид `command` (эта страница) | slash/prompt-поверхность харнесса | да |
| Группы CLI `ai-stp …` | [Карта CLI](https://ai-stp.aiguild.space/ru/docs/components) | нет |
## Соседи
| Вид | Главное отличие |
| --- | --- |
| `skill` | skill активируется по смыслу задачи; command вызывается по имени |
| `hook` | hook стартует на событии жизненного цикла; command стартует при вызове |
| `instruction` | instruction уже в контексте; command — точка входа |
| `plugin` | plugin может *содержать* каталог `commands/`; каждый файл всё равно вид `command` |
| `agent` | agent — роль; command — shortcut, которым роль может пользоваться |
| `mcp` | MCP — протокол tool; command — не сервер |
| `setting` | setting хранит параметры; command хранит вызов |
Выбирайте `command`, когда человек или агент должен начать работу по
имени. Выбирайте `skill`, когда агент должен узнать задачу без slash.
Выбирайте `hook`, когда работа должна произойти на событии.
## Рекомендуемая структура пакета
`command` декларативен. `--language` — `none`. Обычно command — один
Markdown-файл. Claude Code авторит commands как файлы в directory-shaped
layout; adopt принимает этот одиночный файл без дополнительного
манифеста-обёртки.
Переносимый пакет (то, что `discover` / `adopt` переносят из `source/`):
```text
run-tests/
└── run-tests.md # {name}.md в корне пакета
```
Когда вы начинаете из `ai_stp`, стартуйте intent `author`. Не набирайте `component scaffold plan`. Авторский
каталог шире опубликованного пакета: `discover` / `adopt` переносят
`source/` для portable и `projections/<harness>/` для конкретного харнесса,
а не всё дерево.
```text
run-tests/ # component-scaffold/3
├── .ai-stp-template.json
├── .gitignore
├── README.md
├── component-passport.json
├── eval-profile.json
└── source/
└── run-tests.md
```
Повседневное авторство:
```bash
ai-stp task start --intent author --idempotency-key author-session-01 --json
```
Expert recovery (уже есть digest):
```text
ai-stp component scaffold plan \
--type command \
--language none \
--harness portable \
--name run-tests \
--output ./run-tests \
--json
ai-stp component scaffold apply \
--type command \
--language none \
--harness portable \
--name run-tests \
--output ./run-tests \
--expected-plan-digest <digest> \
--json
```
`--language` для command — `none`. Вид декларативный.
Команды `ai-stp component command validate` нет. Структурная готовность —
`component passport validate`. Kind-specific проверка по спецификации
есть только у [`skill`](https://ai-stp.aiguild.space/ru/docs/components).
Дайте command короткое имя, явное описание и ограниченные аргументы.
Агент должен читать доступные commands из continuation `argv` после
`ai-stp task intents --json`, а не придумывать их из памяти — это правило
для самого `ai-stp` и правильная привычка для commands харнесса тоже.
## Стандарты и фреймворки
Независимой спецификации command, сравнимой с
[Agent Skills Specification](https://agentskills.io/specification), нет.
Skill — переносимый workflow; command — именованный вход.
Ссылайтесь на `layout_source` из конверта intent `author`,
когда классификация неясна. Не угадывайте путь соседа.
NVIDIA SkillSpector и Cisco Skill Scanner — сканеры skill. Они не
проверяют commands.
## Нативные layout по харнессам
Discovery сообщает только объявленные layout. Точные пути на машине даёт
конверт intent `author`. У каждой находки есть `layout_source`.
Если классификация неясна, покажите это поле; не угадывайте путь соседа.
Из матрицы discovery:
| Харнесс | Global | Project | Что есть в контракте discovery |
| --- | --- | --- | --- |
| Claude Code | да | да | под `commands/`; внутри доказанного пакета `.claude-plugin/plugin.json` члены `commands/` — commands |
| Codex | command/prompt | нет | global-каталог prompt в ограниченной матрице |
| Pi | да | да | |
| OpenCode | да | да | |
| Grok Build | общий command | нет | общий command в global-области в ограниченной матрице |
| Cursor | через plugin pack | через plugin pack | commands читаются внутри доказанного пакета `.cursor-plugin/plugin.json` |
| Antigravity | нет | нет | command layout в ограниченной матрице не объявлен |
| `undefined` | переносимые соглашения | переносимые соглашения | это не харнесс; автоматическая установка не считается безопасной |
Внутри доказанного Claude Code plugin discovery читает `commands` (каждый
потомок — один command). Внутри доказанного Cursor plugin — то же самое.
Официальная схема Cursor называет и другие ключи; walker не изобретает
файлы command из соседнего каталога.
Одиночный файл в directory-shaped layout дополнительного манифеста не
требует — так авторят commands Claude Code, и adopt их принимает.
Expert recovery — повседневное авторство это intent `author`:
```bash
ai-stp task start --intent author --idempotency-key author-session-01 --json
```
Не набирайте `component discover`. Движок сам находит нативное дерево.
## Версии — `X.Y`, не SemVer
Опубликованная версия command неизменяема и имеет вид `X.Y`. Патч-номера
нет. Изменение Markdown, имени или аргументов — новая версия. Обновление
command внутри сетапа — новая версия сетапа.
```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). Для command ожидайте как
минимум:
- структуру, digest, лицензию, tags, исходный репозиторий;
- ограниченную распаковку и path denylist;
- сканирование секретов (`secrets_heuristic` и Gitleaks, если включён);
- правила prompt-injection и скрытого содержимого.
Пройденное сканирование снижает известный риск. Это не гарантия, что
shortcut безвреден. Обязательные проверки, которые провалились или не
смогли запуститься, блокируют публикацию.
Перед установкой также смотрите:
| Проверка | Почему важно |
| --- | --- |
| Конфликт имён | два shortcut с одним именем путают и людей, и агентов |
| Описание | агент не должен угадывать, для чего command |
| Что он меняет | command, который мутирует внешний мир, должен быть в плане установки |
| Кто автор | verified-автор не делает shortcut автоматически безопасным |
| Какой `X.Y` закреплён | обновление command создаёт новую версию сетапа |
| Линия доверия | `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 command validate` нет.
Используйте проверку паспорта.
```bash
ai-stp component passport validate --id <stable_id> --json
```
**Не этот вид** — группы CLI `ai-stp` (см. [CLI](https://ai-stp.aiguild.space/ru/docs/components)):
```bash
ai-stp task intents --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
```
**Установить:**
```bash
ai-stp task start --intent install --idempotency-key install-session-01 --json
```
Expert-просмотр каталога:
```text
ai-stp registry search --kind component --query <name> --json
```
Command может быть embedded-членом compose-манифеста. См.
[Сетапы](https://ai-stp.aiguild.space/ru/docs/components).
## Как command проходит через `ai_stp`
=== "Автор"
Автор публикует command из публичного GitHub-источника или импортирует
его локально. Версия закрепляет точный commit и подпуть.
=== "Каталог"
Каталог показывает имя, поддерживаемые харнессы, ограничения,
trusted status автора и независимый status самого компонента.
=== "Сборщик"
Сборщик проверяет конфликт имён, совместимость с харнессом и что
файловая структура подходит проекции provider.
=== "Provider"
Provider создаёт нативную команду там, где её ожидает этот харнесс,
только после плана, digest и подтверждения.
## Красные флаги
- Обращение с группой CLI `ai-stp` так, будто это этот вид компонента.
- Skill (каталог с `SKILL.md`), помеченный как command, или наоборот.
- Каталог `commands/` внутри `.claude-plugin/` (каталог манифеста держит
только `plugin.json`; `commands/` стоит в корне plugin).
- Неограниченные аргументы, из-за которых опасный вызов становится лёгким.
- Живые токены, закрытые ключи или тела `.env` в пакете.
- Линия доверия `experimental` без `consent allow`.
- Харнесс не в списке совместимости компонента.
- «Latest» или имя ветки вместо точных `X.Y` и commit.
- Обращение с `author_verified` как с `component_verified`.
- Command, который меняет внешний мир, но невидим в плане установки.
??? question "Можно ли command использовать без публикации"
Да. Собственный, импортированный или точно закреплённый command можно
использовать после локальных проверок. Он от этого не становится
platform-verified и должен быть показан именно как локальный или
закреплённый объект (`local_owner_or_pinned`).
## Чеклист автора
1. Сделайте scaffold с `--type command --language none` и держите
Markdown в корне пакета (в авторском дереве — под `source/`).
2. Дайте короткое имя, описание, которое прочитает человек, и
ограниченные аргументы. Процедуру с assets положите в
[`skill`](https://ai-stp.aiguild.space/ru/docs/components).
3. Объявите в паспорте, что command меняет. Секретов нет.
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), [`skill`](https://ai-stp.aiguild.space/ru/docs/components), [`hook`](https://ai-stp.aiguild.space/ru/docs/components),
[Карта CLI](https://ai-stp.aiguild.space/ru/docs/components).