Какой инструмент: Claude Code vs Cursor vs VS Code (и почему важна переносимость)
Что это
Один и тот же движок компилируется под три реальные цели (проверено в коде — ExportTarget = 'agents-md' | 'claude-code' | 'cursor', диспетчер бросает ошибку на любой другой):
- Claude Code — пакет
.claude-plugin+ субагенты + команды + правила.claude/rules/+ hooks +.mcp.json. - Cursor — правила как
.cursor/rules/*.mdcс фронтматтером +.cursor/mcp.json. - VS Code и всё остальное — через универсальный
AGENTS.mdв корне репозитория. Отдельной целиvscodeНЕТ: VS Code (Copilot), Codex, Jules, Zed и десятки других агентов понимаютAGENTS.md, поэтому именно он ваш путь для VS Code.
Почему это важно (переносимость)
Без единого стандарта вы каждый раз руками пишете AGENTS.md или .claude в каждом новом репо и под каждый инструмент. Движок даёт один валидированный спек, из которого детерминированный компилятор собирает нативный пакет под любую из трёх целей. Сменили инструмент — не переписываете дисциплину заново, а экспортируете тот же движок под новую цель. Для профи это и есть ценность: переносимый, версионируемый стандарт конфигурации AI-агентов вместо разрозненных ручных файлов.
Ключевое отличие — уровень гарантий (честно)
Это самое важное при выборе. Гарантия бывает ENFORCED (код возврата физически блокирует) и ADVISORY (строгая инструкция-текст, которой модель следует, но нарушение технически возможно).
| Гарантия | Claude Code | Cursor | AGENTS.md / VS Code |
|---|---|---|---|
Guard от опасных команд (rm -rf, DROP TABLE, git push --force) |
ENFORCED (PreToolUse-hook, exit-код блокирует) | ADVISORY-текст | ADVISORY-текст |
| Инварианты/правила (tenancy, i18n, миграции) | ADVISORY + ENFORCED, когда выйдет Portable Safety Floor | ADVISORY + floor (roadmap) | ADVISORY + floor (roadmap) |
| Verify-гейт / done-гейт | ADVISORY, пока не вшит в pre-commit/CI (roadmap) | ADVISORY | ADVISORY |
| Вердикты призм / вето | ADVISORY (модель проинструктирована подчиняться) | ADVISORY | ADVISORY |
Сегодня жёсткий блок есть только в Claude Code — через PreToolUse-hook (подтверждено: hooksFiles() эмитит хуки только для Claude). Переносимый git-pre-commit + CI-floor (который дал бы ENFORCED на Cursor и AGENTS) — в разработке (P0 roadmap). Пока он не вышел, «enforced» означает «только Claude PreToolUse», и мы это помечаем прямо в пакете.
Важный нюанс про Cursor: его собственные Project Rules (always / auto-glob / agent-requested / manual) — бесплатная встроенная фича, и она совпадает с нашей моделью активации правил ИМЕННО на Cursor. Наше отличие тут — не «мы лучше Cursor Rules», а одна спека компилируется в три цели плюс самоспециализация glob'ов под стек на установке.
Как выбрать
- Нужен максимум enforced-защиты прямо сейчас → Claude Code (единственный с exit-код блоком today).
- Работаете в Cursor → берите cursor-таргет: правила лягут в родные
.mdc, MCP — в.cursor/mcp.json. - VS Code / Copilot / любой другой агент → универсальный
AGENTS.mdв корень. - Не уверены / меняете инструменты → это и есть аргумент за переносимость: купили движок один раз, экспортируете под любую цель.
Worked-пример
Вход: команда работает половина в Claude Code, половина в Cursor, а CI-бот дергает Copilot в VS Code. Один движок Quest.
Что делает движок: из одной спеки laskoff-mod/v1 компилятор exportMod(spec, target) выдаёт три пакета:
- для Claude —
.claude/agents/*.md,.claude/commands/quest.md,.claude/rules/*.md,.claude/hooks/*.shс регистрацией в.claude/settings.json(реальный guard-hook + route-engine),.mcp.json, тонкийCLAUDE.md; - для Cursor —
.cursor/rules/*.mdc+.cursor/hooks.jsonс тем же guard-скриптом (beforeShellExecution— блокирует опасные команды и здесь) +.cursor/mcp.json; - для VS Code и остальных — один
AGENTS.mdв корень (проводка MCP — JSON-блоком внутри него).
Результат: дисциплина команды идентична везде, а guard от rm -rf / физически срабатывает и в Claude Code (PreToolUse), и в Cursor (beforeShellExecution); на AGENTS.md-целях жёсткую страховку даёт переносимый safety floor — git-hook .engine/hooks/pre-commit + CI engine-guard.yml, которые уже лежат в каждом пакете. Никто не переписывал конфиги руками — три пакета собраны из одного источника. Именно эту разницу в гарантиях мы печатаем честно, чтобы вы выбирали инструмент осознанно.