qvib.pro
EN

~4 мин чтения · всем · Обновлено: 02.07.2026 · Read in English

Экспорт под инструмент: Claude, Cursor, AGENTS.md

Экспорт под инструмент: что генерится для Claude / Cursor / AGENTS.md

Коротко

Движок — это типизированная спека engine-mod/v1, из которой детерминированный компилятор собирает пакет ровно под три цели: Claude Code (плагин с субагентами, командами, правилами и хуками), Cursor (правила .cursor/rules/*.mdc с фронтматтером) и универсальный AGENTS.md, который читают VS Code Copilot, Codex, Jules, Zed и другие. Отдельной цели «vscode» нет — её закрывает AGENTS.md. Правится только канон-спека, целевые форматы — артефакты билда, поэтому между таргетами нет дрейфа. В каждый пакет кладутся README, INSTALL.md и готовый промт-установщик. Сменили инструмент — экспортируете тот же движок под новую цель, не переписывая дисциплину заново.

Что это. Движок в qvib.pro — это не «ещё один промпт», а типизированная спека (engine-mod/v1): команда ролей, призмы-судьи, оркестрация, правила, skills/MCP/knowledge. Из ОДНОЙ этой спеки детерминированный компилятор (exporters.ts, диспетчер exportMod(spec, target)) собирает пакет под конкретный инструмент. Поддерживаются РОВНО три цели: claude-code, cursor, agents-md — неизвестная цель кидает Unknown export target (никакого «vscode» в списке нет; VS Code/Copilot обслуживаются через универсальный AGENTS.md).

Spec движкаlaskoff-mod/v1Компилятор экспортадетерминированно.claude/Claude Code.cursor/CursorAGENTS.mdостальные
Один spec детерминированно компилируется в три нативных пакета

Зачем именно так. Разные инструменты понимают разные форматы. Cursor игнорирует .mdc-правило без frontmatter; у Claude Code есть плагины, субагенты и hooks; универсальный AGENTS.md читают Codex, Jules, Zed, Cursor и другие. Adapter-first: правится только канон-спека, а целевые форматы — это артефакты билда, поэтому нет дрейфа между таргетами.

Когда что выбирать.

  • Claude Code → полноценный плагин: .claude-plugin/plugin.json, agents/*.md (каждая роль — субагент), commands/<движок>.md (слэш-команда с полным workflow), призмы как независимые subagent-ревьюеры с контрактом вывода verdict/findings/oneChange, .mcp.json, .claude/rules/*.md (always/manual — чистый md; auto — frontmatter paths; agent-правило — как skill, потому что аналога agent-requested в rules у Claude нет), hooks/ и skills/.
  • Cursor → .cursor/rules/<slug>.mdc (always-ядро) плюс отдельный .mdc на каждое гранулярное правило со своим frontmatter по режиму активации (globs — строкой через запятую, иначе Cursor молча не применит), и .cursor/mcp.json.
  • AGENTS.md → один самодостаточный AGENTS.md в корень: команда, движок, навыки, знание, MCP-блок, правила, секреты. Максимальная совместимость.

Во ВСЕ пакеты кладутся README.md (инструкция под таргет + секреты), INSTALL.md («до я готова»: папки → доступы → чеклист) и INSTALL-PROMPT.md — готовый текст, который вы вставляете своей модели, и она сама ставит движок.

Worked-пример: экспорт Quest под Cursor

Вход: у движка есть правило i18n-sync с активацией auto и globs: ['**/locales/*.json'], и правило secrets-hygiene с активацией always.

Что делает движок (компилятор):

  1. Диспетчер зовёт exportCursor(spec).
  2. Ядро → .cursor/rules/forge-core.mdc с frontmatter alwaysApply: true (устав + роли + движок + инварианты).
  3. i18n-sync → отдельный .cursor/rules/i18n-sync.mdc с frontmatter { description, globs: '**/locales/*.json', alwaysApply: false } — Cursor применит его только к locale-файлам.
  4. secrets-hygiene → свой .mdc c alwaysApply: true.
  5. Секреты рендерятся ТОЛЬКО как имена/плейсхолдеры ${NAME} — значение никогда не попадает в файл (это проверяется тестом «секрет НЕ попадает значением в .mcp.json»).
  6. Добавляется переносимый предохранитель: .engine/hooks/pre-commit (POSIX sh + grep, без Node) и .github/workflows/engine-guard.yml — оба гоняют ОДИН и тот же скан секретов и разрушительных маркеров и падают с ненулевым кодом на совпадении.

Результат: папка с .cursor/rules/*.mdc, .cursor/mcp.json, README.md, INSTALL.md, INSTALL-PROMPT.md и предохранителем. Скачивается zip (engine-cursor.zip); распаковали в проект — правила подхватились на каждом запросе агента.

Честно про гарантии (ENFORCED vs ADVISORY)

Жёсткая гарантия (код возврата физически блокирует) есть в двух местах, и оба реальны в коде:

  • Claude CodePreToolUse-hook guard-dangerous.sh: блок ДО запуска инструмента (rm -rf, DROP TABLE, git push --force, curl | bash).
  • Все таргеты — переносимый safety floor: git-хук (ENFORCED после git config core.hooksPath .engine/hooks) + CI (ENFORCED всегда на push/PR).

А вот сам ТЕКСТ правил, призм и инвариантов, который читает модель на Cursor/AGENTS, — это ADVISORY: строгая инструкция, но нет рантайма, который её физически заблокирует. Пакет помечает это прямо в INSTALL.md. Смысл движка — сделать advisory настолько буквальным рецептом, что его исполнит даже слабая целевая модель.

Уровни гарантий в экспортированном пакете
ENFORCED · Claude Code
PreToolUse-hook guard-dangerous.sh — блок ДО запуска инструмента (rm -rf, DROP TABLE, git push --force, curl | bash)
ENFORCED · все таргеты
Safety floor: git-хук .engine/hooks/pre-commit + CI engine-guard.yml — один скан секретов, падение с ненулевым кодом
ADVISORY · Cursor / AGENTS
Текст правил, призм и инвариантов — строгая инструкция без рантайма-блокировки; помечено в INSTALL.md
Жёсткая гарантия = код возврата физически блокирует операцию

Полный workflow движка инлайнится в пакет целиком — он работает оффлайн и не зависит от наших серверов.

Читайте также

Базовый разбор темы — Claude Code: с него удобно начать, если тема новая.