edvardgrishin27/nativeprompt
Переписывает промпт под правила той модели, где вы работаете: GPT-6 Astra, Claude Fable 5.1, Opus 5, Codex. Каждая правка со ссылкой на офиц. док.
About edvardgrishin27/nativeprompt
edvardgrishin27/nativeprompt is an open-source project on GitHub, mainly written in Python. Переписывает промпт под правила той модели, где вы работаете: GPT-6 Astra, Claude Fable 5.1, Opus 5, Codex. Каждая правка со ссылкой на офиц. док. It currently holds 126 stars and 12 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
AI Homed tracks it on the AI Prompt Engineering board.
GitHub Repository Details
README
🇷🇺 Русский · 🇬🇧 English
nativeprompt
Один и тот же промпт Claude Code и Codex читают по-разному. nativeprompt переписывает его под ту модель, за которой вы сидите прямо сейчас, по официальным правилам вендора, и на каждую правку дает ссылку на первоисточник.
Claude Code · Codex · 2459 теста · ноль зависимостей · ноль API-ключей · работает офлайн
Свежее. Правила под GPT-6 Astra добавлены 7 сентября 2026, через шесть дней
после выхода модели: разобраны все четыре отличия, которые видны прямо в тексте
промпта. Под Claude Fable 5.1 правила были готовы 2 сентября, на следующий день
после релиза. Список поддержанных моделей ниже.
Одна фраза, две судьбы
«Думай пошагово». Совет, который повторяют все и везде.
На Claude он безобиден. На reasoning-моделях GPT-5.x он делает ответ хуже, и написано это не у меня в блоге, а в документации самой OpenAI: модель уже рассуждает внутри, навязанные шаги ей мешают.
Вы пишете один и тот же текст в двух окнах и думаете, что просите одно и то же. А просите разное. Вот несколько мест, где грамматики расходятся:
| Что в промпте | Claude Code (Opus 5) | Codex / GPT-5.x | |---|---|---| | «думай пошагово» | допустимо | удалить, модель рассуждает сама (reasoning guide) | | «перепроверь себя» | предупреждение, Opus 5 верифицирует сам (prompting Opus 5) | нейтрально | | «покажи только самое важное» | переформулировать, Opus 5 поймет буквально и правда скроет остальное | нейтрально | | КАПС и «ОБЯЗАТЕЛЬНО!!!» | убрать, вызывает пере-срабатывание | убрать, скаффолдинг эпохи GPT-4.1 не помогает | | Одна инструкция дважды | терпимо | убрать, лаконичный промпт выигрывает (prompt guidance) |
Это не мои наблюдения и не народные приметы. Каждая строка тут ведет на страницу вендора, и эти страницы инструмент сам проверяет на свежесть.
Что он делает
Три шага, никакой магии.
Смотрит, на чем вы работаете. Явный --model, потом маркеры живой сессии CLI, потом
переменные окружения, потом каскад .claude/settings.json и ~/.codex/config.toml. Ключ
это семейство плюс поколение, поэтому незнакомый идентификатор вроде будущего
claude-opus-6 все равно получит правила семейства Claude, а не «модель не определена».
Проверяет промпт по правилам именно этого вендора. У Claude их 18, у OpenAI 8, каждое с обязательной ссылкой на официальный док. Народные хаки в шпаргалку не принимаются, это условие вклада.
Показывает, что и почему. Каждая находка идет с объяснением, с оговоркой «когда этот
совет не подходит» и с адресом правила. Плюс подсказывает, какой командой запускать задачу:
/goal, /loop, plan mode, dynamic workflow у Claude Code, /plan, /goal, делегирование
в облако у Codex.
Текст ваш при этом цел. Инструмент понижает КАПС, снимает вежливую обертку и дописывает
недостающие секции плейсхолдерами ‹…›. Он не додумывает за вас задачу и ничего не удаляет
молча: маркер [!] означает «вендор советует это убрать, решать вам».
Какие модели поддержаны
Правила разобраны по поколениям, а не по вендору целиком: у каждой модели свои отличия, и валить их в одну кучу значит советовать наугад.
| Модель | Правил | Когда добавлены | Гайд вендора | |---|:--:|---|---| | GPT-6 Astra | 4 + семейные | 07.09.2026, через 6 дней после релиза | latest-model | | GPT-5.6 (sol / terra / luna) | семейные | 29.07.2026 | prompt-guidance | | Claude Fable 5.1 | 4 + семейные | 02.09.2026, на следующий день после релиза | prompting-fable-5-1 | | Claude Opus 5 | 4 + семейные | 29.07.2026 | prompting-opus-5 | | Claude Sonnet 5, Opus 4.8 | семейные | 29.07.2026 | общая страница практик | | Gemini CLI, Grok Build, Qwen Code, Kimi CLI | по одному | 04.08.2026 | вендоры правил промптинга не публикуют |
Что нового в Astra и почему это важно для счета. Модель охотнее задает уточняющий вопрос вместо того, чтобы делать: там, где вы ждали работу, она останавливается и спрашивает. Лечится строкой в промпте. Второе: у Astra есть опубликованный вендором блоклист оборотов, по которым текст опознают как машинный, и в нем, кстати, стоит конструкция «X, not Y». Третье: правила проекта из AGENTS.md она может поставить выше вашей просьбы. Четвертое: пишет тесты даже на мелкие обратимые правки.
Отдельно, к тексту промпта отношения не имеет, но ломает старые интеграции: Astra
больше не принимает temperature, top_p и top_logprobs, а уровень усилий none
не поддерживается.
Почему это работает на вашей подписке
Внутри инструмента нет модели. Совсем.
Разбор считается локально: регулярные выражения плюс версионированная шпаргалка правил. Ни
API-ключа, ни счета за токены, ни отправки вашего промпта кому бы то ни было. Выдерните
сеть, он продолжит работать, кроме команды update, которая ходит за доками вендоров.
А «умную» литературную переписку делает ваша же модель, по мета-промпту, который инструмент для нее готовит. То есть внутри подписки Claude Code или Codex, за которую вы уже заплатили. Второго счета не появляется.
Ноль рантайм-зависимостей, только стандартная библиотека Python.
Чем он отличается от других улучшателей
У Anthropic и OpenAI есть свои prompt improver'ы. Каждый умеет ровно одну вещь: свою модель. Мульти-вендорные вроде Rosetta требуют, чтобы вы сами выбрали целевую модель, а правила внутри со временем протухают, и вы об этом не узнаете.
| | Anthropic improver | OpenAI optimizer | Rosetta и похожие | nativeprompt | |---|:--:|:--:|:--:|:--:| | Сам определяет вашу модель (семейство + поколение) | нет | нет | нет | да | | Только официальные правила вендора | да | да | частично | да | | Дает ссылку на док под каждой правкой | нет | нет | нет | да | | Следит за свежестью доков и сигналит | нет | нет | нет | да | | Работает офлайн, без ключа и без счета за токены | нет | нет | нет | да | | Знает и Claude, и Codex одновременно | нет | нет | да | да |
Последняя строка и есть причина, по которой инструмент вообще появился. Если вы работаете только в Claude, вам хватит родного improver'а от Anthropic. Больно становится, когда окон два.
Кому это надо
Тем, у кого открыты оба окна. Claude Code для одного, Codex для другого. Держать в голове две грамматики руками тяжело, а разница реальная и стоит качества ответа.
Тем, кто платит за подписку и не хочет второй счет. Разбор ничего не стоит: он считается у вас на машине.
Тем, кто учит промптингу. Каждый совет со ссылкой на официальную страницу, спорить не с чем. Это сильно короче, чем объяснять своими словами.
Командам с общими правилами. Шпаргалка лежит в JSON, правится через PR, версионируется. Свои правила добавляются рядом с вендорскими.
Тем, кто ведет проект долго. Вендоры меняют рекомендации, и вы об этом обычно узнаете
последним. nativeprompt update следит за 25 страницами доков и говорит, когда первоисточник
поехал.
Область применения это агентные CLI: Claude Code, Codex, а также Gemini CLI, Grok Build, Qwen Code и Kimi CLI. Не API, не веб-чат.
Про последние четыре скажу честно и сразу. Google, xAI, Alibaba и Moonshot правил промптинга под свои модели не публикуют. Значит там остается только половина про запуск, а половина про текст промпта пустует. Выдумать правила и подписать их именем вендора я не могу: тогда рухнет вся конструкция, ради которой все затевалось.
Установка
pipx install nativeprompt # или: pip install nativeprompt
Ноль внешних зависимостей, только стандартная библиотека. Работает офлайн и без API-ключа.
Из исходников, если хотите править правила под себя:
git clone https://github.com/edvardgrishin27/nativeprompt
cd nativeprompt
pip install -e . # даст команду nativeprompt в PATH
Можно вообще без установки, пакет запускается как модуль из папки репозитория:
python3 -m nativeprompt improve "..."
Требования: Python 3.9 и выше. Больше ничего.
Быстрый старт
Шесть команд: improve, detect, rules, coverage, install, update.
# переписать промпт под автоматически определённую модель + объяснить
nativeprompt improve "почини баг в логине, думай пошагово, перепроверь себя"
задать целевую модель явно
nativeprompt improve "..." --model claude-opus-5
nativeprompt improve "..." --model gpt-5.6 # или просто: codex
какая модель определилась?
nativeprompt detect
показать все правила и их источники
nativeprompt rules claude
nativeprompt rules codex
самопроверка: не изменились ли официальные доки вендоров
nativeprompt update
Флаги improve: --model M, --json (весь отчет машиночитаемо), --no-metaprompt (без
блока мета-промпта), --verify (самопроверка: те же детекторы по собственному результату,
закрыто / оставлено вам / внесено инструментом).
Флаги detect: --model M, --json.
Флаги update: --write (записать снапшот хэшей после ревью), --diff (показать, ЧТО именно изменилось в доке вендора), --timeout N (по умолчанию 20 с), --json.
Каждый отчет несет карточку воспроизводимости: строкой в шапке и полным объектом meta в
--json. Там версия пакета, семейство, версия правил, дата сверки с доками, поколение и
признак, по которому оно определилось, форма задачи, id сработавших и примененных правил и
первые 12 символов sha256 промпта. Нужна она вот зачем: два отчета от разных версий
инструмента и разных версий шпаргалки внешне неразличимы, и спор «у меня выдавало другое»
иначе не решить.
воспроизводимость: nativeprompt 0.7.0 · правила claude 2026-09-02 · доки
сверены 2026-07-29 · поколение opus-5 (model-id) · форма normal ·
сработало 8, применено 6 · промпт sha256 4da13855e134
Хэш тут метка для сверки «тот ли промпт», не доказательство: полный текст по 48 битам не восстановить. Поэтому карточку можно приложить к issue, не вклеивая туда пути и куски логов.
Промпт подается и через stdin, для текста с кавычками так безопаснее:
printf '%s' "$PROMPT" | nativeprompt improve --model claude-opus-5 --json
Как выглядит вывод
Возьмем типичный «как привыкли» промпт:
Не мог бы ты пожалуйста ОБЯЗАТЕЛЬНО починить баг в логине, думай пошагово и обязательно перепроверь себя. Покажи только самое важное.
На Claude Opus 5 (--model claude-opus-5), 7 находок:
МОДЕЛЬ: Claude Code (claude-opus-5) · opus-5
определено: явно (--model)
ЧТО УЛУЧШИТЬ (7, сначала важное):
1. [+] Заскоупить задачу: файл, сценарий, что значит «готово»
неприменимо: Если файл, модуль или экран уже назван выше в этом же диалоге…
правило: https://code.claude.com/docs/en/best-practices
2. [+] Дать проверку, которую Claude прогонит сам
неприменимо: Если проверку задаёт окружение (хук на тесты, CI на каждый коммит)…
правило: https://code.claude.com/docs/en/best-practices
3. [~] Симптом + где искать + что значит «починено» (лечить причину)
неприменимо: Если причина уже найдена выше в диалоге…
правило: https://code.claude.com/docs/en/best-practices
4. [!] «Только важное» сужает выдачу — просите всё, фильтруйте отдельно
неприменимо: Если сузить выдачу — и есть цель («только упавшие тесты»)…
правило: https://platform.claude.com/docs/en/.../prompting-claude-opus-5
5. [~] Просить действие прямо, а не намёком
неприменимо: Если вы и правда просите мнение, а не работу…
правило: https://platform.claude.com/docs/en/.../be-clear-and-direct
6. [-] Убрать давящие КАПС / «CRITICAL» / «ОБЯЗАТЕЛЬНО!!!»
неприменимо: Если КАПС — это имя, флаг или цитата из лога (ERROR, TODO, DEBUG=1)…
7. [!] Лишняя просьба «перепроверь себя» (Opus 5 верифицирует сам)
неприменимо: Если «проверь» — часть самого задания…
правило: https://platform.claude.com/docs/en/.../prompting-claude-opus-5
УЛУЧШЕННЫЙ ПРОМПТ (детерминированная правка):
Обязательно починить баг в логине, думай пошагово и обязательно перепроверь себя. Покажи только самое важное.
Контекст: ‹назовите файл/путь через @ (напр. @src/...), сценарий и что значит «готово»›
Симптом: ‹что именно ломается, где искать (файл/модуль) и что значит «починено»; лечить причину, не симптом›
Проверка: ‹тест/сборка/команда, которую нужно прогнать после правки, и чинить, пока не пройдёт›
(Краткость: Ответь кратко.)
Тот же промпт на GPT-5.6 (--model gpt-5.6), находки уже другие:
МОДЕЛЬ: Codex (gpt-5.6) · gpt-5.6
ЧТО УЛУЧШИТЬ (3, сначала важное):
1. [!] «думай пошагово» лишнее — GPT-5.x рассуждает сам
неприменимо: Если «пошагово» относится к ФОРМАТУ ответа…
правило: https://developers.openai.com/api/docs/guides/reasoning
2. [~] Просить действие прямо
3. [-] Убрать лишние подпорки и КАПС-приказы
УЛУЧШЕННЫЙ ПРОМПТ (детерминированная правка):
Обязательно починить баг в логине, думай пошагово и обязательно перепроверь себя. Покажи только самое важное.
Смотрите: у Codex «думай пошагово» это находка, а у Claude такого правила нет вовсе. Вот они, две разные официальные грамматики, ради которых все и написано.
И обратите внимание, что текст промпта в обоих случаях цел. Меняется форма, дописываются
секции-плейсхолдеры. Маркер считается по факту, а не по тому, что правило о себе объявляет:
знак действия получает только та находка, которая правда изменила текст. Поэтому [!] стоит
и там, где совет ушел только в мета-промпт.
Находки идут от важного к косметике: priority 1 это контракт результата и границы
задачи, 2 режим запуска и структура, 3 косметика. Под каждой стоит строка неприменимо:,
конкретная ситуация, где совет мимо («файл уже назван выше в этом же диалоге»). Детекторы тут
регулярки, истории диалога они не видят, и часть находок ложные. Ложное срабатывание, которое
видно и которое можно пропустить, ничего не стоит. Детектор, который никогда не ошибается,
обошелся бы дороже.
Если правила молчат, или все сработавшее инструмент закрыл сам, improve так и скажет, а
мета-промпт печатать не станет: «Промпт соответствует правилам, которые инструмент умеет
проверять, переписывать нечего». Плейсхолдер ‹…› закрытием не считается, он передает
правило вам, и --verify смотрит на это так же. Почему так устроено, разобрано в
CLAIMS.ru.md, раздел «Почему инструмент не переписывает текст сам».
Увидеть оба варианта рядом одной командой:
python3 examples/contrast_demo.py
Сырые промпты для экспериментов лежат в examples/prompts.md.
Сколько правил он реально закрывает
Команда coverage считает это на ваших же промптах, без всякой модели внутри:
nativeprompt coverage мои-промпты.json --models claude-opus-5,gpt-5.6
На моем тестовом корпусе цифра такая: 227 находок, инструмент закрывает 87 из них, это 38 %, оставляет вам 140 и вносит своих ноль. Последнее и есть главное свойство: инструмент не имеет права добавить нарушение, которого в промпте не было.
Что эта цифра НЕ означает: она не про качество ответа модели. Модель тут не запускается вовсе. Померить качество ответа офлайн честно нельзя, для этого нужен датасет и два прогона. Померить соответствие официальным правилам можно, и результат воспроизводится побайтово.
Использование в VS Code
Расширение Claude Code для VS Code это отдельная поверхность со своими особенностями. Разберу явно, потому что именно тут детект модели удивляет чаще всего.
Предпосылки
- Нужен VS Code 1.94.0 и выше. Расширение ставится по ссылке
vscode:extension/anthropic.claude-codeили поиском «Claude Code» в Extensions. Для форков (Cursor, Kiro, Devin Desktop) есть сборка в Open VSX. - Расширение НЕ добавляет
claudeв PATH. Оно несет приватную копию CLI для панели чата, а командаclaudeв терминале требует отдельной установки standalone-CLI. Это стоит развести:nativepromptобычная CLI-утилита, вы ставите и запускаете ее во встроенном терминале VS Code (`Cmd+`). Хук же работает внутри панели чата. Выводnativeprompt improve` сам по себе в панели не появится.
Как проверить, что модель определилась
Три способа, по возрастанию надежности.
1. /status прямо в панели чата, покажет активную модель и аккаунт.
2. nativeprompt detect во встроенном терминале, покажет не только модель, но и источник:
$ nativeprompt detect
Модель: claude-opus-5[1m] · opus-5
Семейство/CLI: claude (Claude Code)
Определено: ~/.claude/settings.json (сессия Claude Code · VS Code)
3. Статус-строка (statusLine), самый точный путь: скрипту статус-строки на stdin приходит JSON с model.id и model.display_name, а заодно context_window.context_window_size (фактическое подтверждение, что 1M-контекст правда активен) и effort.level.
Если detect показывает не ту модель
Все причины ниже из официальных доков, а не из догадок.
- В пикере
/modelвы нажалиs(«только на эту сессию»).Enterсохраняет выбор в пользовательские настройки (~/.claude/settings.json),sне сохраняет ничего. Значитdetectчестно читает старое значение. Это известное ограничение чтения настроек. - VS Code запущен из Dock или Finder и не унаследовал shell-окружение. Тогда
ANTHROPIC_MODELиз.zshrcрасширение не увидит. Лечится тремя способами: запускатьcode .из терминала, задать переменную в настройке расширенияclaudeCode.environmentVariables, либо прописать ее в блокеenvфайла~/.claude/settings.json, этот файл общий для расширения и CLI. - Проектные или managed-настройки перебивают ваш выбор. Порядок приоритета: managed (высший, не переопределяется ничем), аргументы командной строки,
.claude/settings.local.json,.claude/settings.jsonпроекта,~/.claude/settings.json. Когда модель на старте пришла из проектных или managed-настроек, стартовый заголовок сессии показывает, какой файл ее задал. - Алиас это не версия.
opus,sonnet,bestрезолвятся в конкретную модель по-разному в зависимости от провайдера: Anthropic API, AWS, Bedrock, Google Cloud, Microsoft Foundry дают разные поколения.nativepromptв таком случае честно оставляет поколение неопределенным и применяет правила семейства. Нужна точность, пиньте полное имя модели или используйтеANTHROPIC_DEFAULT_OPUS_MODEL/_SONNET_/_HAIKU_/_FABLE_. - Суффикс
[1m](окно 1M) дописывается и к алиасу, и к полному имени:opus[1m],claude-opus-4-8[1m],opusplan[1m].nativepromptсрезает его так же, как это делает сам Claude Code, но запоминает факт, чтобы не подтолкнуть вас к потере 1M-контекста.
Хук в VS Code
Конфигурация хуков общая для расширения и терминального CLI: тот же ~/.claude/settings.json, тот же блок hooks (JSON ниже, в разделе про режимы). Из GUI: в поле ввода наберите /, раздел Customize, дальше hooks.
Три вещи про UserPromptSubmit, которые стоит знать заранее:
- Таймаут 30 секунд, а не стандартные 600.
nativepromptукладывается с запасом, он детерминированный и в сеть не ходит. По этой же причине не вешайте на это событие сетевые вызовы. - Матчеры не поддерживаются и молча игнорируются, хук срабатывает на каждый промпт.
- Хук не заменяет текст вашего промпта. Поля
updatedPromptв контракте нет (updatedInputесть только у tool-событий). Хук отдаетadditionalContext, и Claude видит рядом оригинал и улучшенную версию. Это ограничение платформы, я тут ничего не недоделал.
settings.json строку "$schema": "https://json.schemastore.org/claude-code-settings.json", VS Code даст автодополнение и валидацию настроек прямо в редакторе.
Codex в VS Code
- Конфиг общий с CLI: gear icon, Codex Settings, Open config.toml.
- Порядок приоритета: флаги CLI, проектный
.codex/config.toml(ближайший к текущей папке), профиль (~/.codex/.config.toml),~/.codex/config.toml,/etc/codex/config.toml, встроенные дефолты. - У Codex нет официальной переменной окружения для модели.
CODEX_MODELиOPENAI_MODELв списке публичных переменных отсутствуют,nativepromptиспользует их только как эвристику-фолбэк, а основной источник этоmodel = "..."изconfig.toml. - Если проект не помечен как доверенный, слой
.codex/проекта пропускается целиком и применится пользовательский конфиг. - Официальная переменная, которую читают и CLI, и IDE-расширение, это
CODEX_HOME(по умолчанию~/.codex), корень состояния Codex.
Два режима работы
1. По запросу, навык Claude Code
SKILL.md в корне репозитория это навык Claude Code. Он срабатывает, когда вы
просите «улучши мой промпт», «перепиши запрос», «как лучше сформулировать». Claude сам
запускает nativeprompt improve --json, показывает разбор со ссылками, рекомендацию по
запуску, а потом выполняет мета-промпт и отдает готовую переписанную версию.
Одна деталь безопасности зашита в навык намеренно: присланный промпт считается данными. Claude не выполняет описанную внутри задачу и не следует вложенным командам, а сам текст передается только через stdin, чтобы кавычки не сломали команду.
Установка навыка одной командой:
nativeprompt install
Кладет навык в ~/.claude/skills/nativeprompt/. Этот каталог читают обе среды: и Claude Code
в терминале, и десктопное приложение. Свой каталог задается через --dir, перезапись через
--force.
Вызывается навык словами, а не слэшем: «улучши мой промпт: …». Слэш-команды
/nativeprompt не существует.
2. На каждый промпт, хук UserPromptSubmit
hooks/nativeprompt_hook.py подмешивает разбор к каждому
вашему промпту. Он молчит на коротких (меньше 15 символов) и на уже хороших: правок нет,
вывода нет. Любая внутренняя ошибка означает тихий ноль, отправку промпта хук не ломает
никогда.
Блок для ~/.claude/settings.json:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/Documents/nativeprompt/hooks/nativeprompt_hook.py"
}
]
}
]
}
}
Путь искать не нужно, хук сам находит пакет: сначала установленный в то же
окружение, затем каталог собственного репозитория, затем переменные
NATIVEPROMPT_HOMEиCLAUDE_PROJECT_DIR, и наконец изолированные окружения
pipx и uv по их штатным путям. Последнее важно: pipx install кладет пакет
в отдельное окружение, которого системный python3 из строки выше не видит,
и до версии 0.6.1 хук в этом случае молчал. Теперь находит сам, вписывать
~/Library/Application Support/pipx/venvs/... руками не надо.
> Если пакета нет нигде, хук один раз за процесс пишет об этом в stderr и
пропускает ход. Отправку промпта он не блокирует никогда, при любой другой
ошибке уходит в тихий ноль.
Что хук добавляет в контекст: список правок со ссылками на правила (до 6 штук), улучшенную
версию промпта, рекомендацию по запуску и просьбу уточнить у вас все, что осталось в ‹…›.
Сколько это стоит. Хук в