runprompt CLI
Однофайловый скрипт на Python, который запускает .prompt-файлы из оболочки: шаблоны, JSON-вывод, инструменты, чат и конвейеры между промптами
- 445 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Блок `before:` и инструменты `shell` и `shell_tools` выполняют команды оболочки на вашей машине
- Инструмент `write_file` и функции Python могут менять файлы, а подтверждение отключается флагом `--safe-yes`
- Ключи провайдеров лежат в окружении или в `config.yml`, а тексты промптов и файлов уходят выбранному провайдеру
Установка
Ручная установка
uvx --from git+https://github.com/chr15m/runprompt runprompt hello.promptЗапуск без установки. Нужен ключ провайдера в окружении.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Блок `before:` и инструменты `shell` и `shell_tools` выполняют команды оболочки на вашей машине
- Инструмент `write_file` и функции Python могут менять файлы, а подтверждение отключается флагом `--safe-yes`
- Ключи провайдеров лежат в окружении или в `config.yml`, а тексты промптов и файлов уходят выбранному провайдеру
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
runprompt запускает файлы формата `.prompt` (dotprompt) прямо из терминала. В одном файле лежат метаданные в YAML (модель, схемы, настройки) и текст запроса с шаблонами в стиле Handlebars. Скрипт один, без зависимостей: его скачивают командой `curl`, запускают через `uvx` или ставят из GitHub через `pip` и `uv`. Входные данные передают аргументами, JSON или через stdin, переменные доступны как `{{STDIN}}`, `{{ARGS}}` и `{{INPUT}}`. Вывод можно описать схемой Picoschema и получать чистый JSON, а выход одного промпта скормить другому через конвейер. Перед отправкой запроса блок `before:` выполняет команды оболочки (например `git log -1 --oneline`) и подставляет их результат, а `files:` и `--read` прикрепляют файлы по маске и ссылки. Есть интерактивный режим `--chat`, в нем команды `/read`, `/edit` и `/drop`. Любой промпт может получить инструменты: функции Python с докстрингами, короткие `shell_tools` или встроенные (`calculator`, `fetch_clean`, `datetime`, `shell`, `write_file('путь')`). По умолчанию каждый вызов инструмента требует подтверждения, а флаг `--safe-yes` пропускает только инструменты с пометкой safe. Провайдеры: Anthropic, OpenAI, Google AI, OpenRouter и любой OpenAI-совместимый адрес, например Ollama.
Для кого. Для разработчиков и администраторов, которые хранят промпты в репозитории как файлы и запускают их из скриптов, cron и конвейеров оболочки.
Подходит, если
- Нужно прогонять один и тот же промпт по файлам и получать структурированный JSON: `cat article.txt | ./runprompt summarize.prompt`
- Результат первого промпта должен стать входом второго, как в `extract.prompt | generate-bio.prompt`
- Промпт должен брать контекст из `git log`, `git diff` или списка файлов, добавляемого блоком `before:`
- Хочется запускать `.prompt` как исполняемый файл с шебангом `#!/usr/bin/env runprompt`
- Нужен единый запуск для разных провайдеров и локальной Ollama без отдельных SDK
Не подходит, если
- Нужен полноценный кодовый агент с правкой проекта: runprompt исполняет заданный промпт и не ведет цикл разработки сам
- Нужен MCP-сервер или скилл для агента: runprompt запускается отдельной командой
- На машине нет Python 3.8 или новее и нельзя поставить ни `uv`, ни `pip`
- Вам нужен графический интерфейс: runprompt работает только из командной строки
Пример запроса к агенту
Напиши summarize.prompt, который делает из текста на stdin пять тезисов в JSON, и запусти его на README.mdОграничения
Нужен Python 3.8 или новее. Дополнительные пакеты `pyyaml` и `playwright` необязательны: они улучшают разбор YAML и загрузку веб-страниц (`pip install runprompt[full]`).
- Нужен ключ провайдера: `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_API_KEY` или `OPENROUTER_API_KEY`. API OpenAI и Anthropic из России недоступны, а с локальной Ollama ключ не нужен.
- Встроенные `shell` и `write_file` и любые ваши функции требуют подтверждения, `--safe-yes` снимает его только для инструментов с пометкой safe.
- Ключи можно хранить в `config.yml` открытым текстом, поэтому ограничьте права на файл.
Как отключить. Удалите файл `runprompt` или выполните `pip uninstall runprompt`. Настройки лежат в `~/.runprompt/config.yml`, `~/.config/runprompt/config.yml` и `./.runprompt/config.yml`, кэш ответов в каталоге из `RUNPROMPT_CACHE_DIR`.
Частые вопросы
Как запустить runprompt без установки?
Командой `uvx --from git+https://github.com/chr15m/runprompt runprompt hello.prompt`. Можно и скачать единственный файл `runprompt` и сделать его исполняемым.
Как получить JSON вместо текста?
Опишите `output.format: json` и схему `output.schema` в формате Picoschema. Поля со знаком вопроса необязательны, а ответ печатается чистым JSON, готовым для следующего промпта в конвейере.
Как подключить локальную Ollama?
Задайте модель `ollama/llama3` или адрес через `--base-url http://localhost:11434/v1` либо переменную `RUNPROMPT_BASE_URL`. Ключ в этом случае необязателен.
Безопасно ли давать промпту инструменты?
Каждый вызов инструмента по умолчанию спрашивает подтверждение. Флаг `--safe-yes` пропускает только функции с пометкой `fn.safe = True`, а `write_file('output.txt')` ограничивает запись одним файлом.
Как сохранить ответы при отладке промпта?
Включите кэш флагом `--cache`: повторный запуск с теми же входными данными берет ответ из кэша и не обращается к API.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструменты29 готовых промптов на китайском: разработка в пять шагов, код-ревью, диаграммы Draw.io, отчеты, статьи для WeChat и главы диплома
Promptr отправляет текстовое задание модели OpenAI и сразу записывает предложенные правки в файлы проекта прямо из терминала
CLI на Rust, который собирает кодовую базу в один промпт с деревом файлов, шаблонами и оценкой токенов
Консольный чат с ChatGPT, Claude, Gemini и Cohere: свои ассистенты в YAML, разовые запросы из скриптов и команды оболочки с правкой перед запуском
Промт для Claude Code, который разворачивает структуру 1С-проекта со стандартами кода, ролевыми агентами, навыками и MCP
Две команды для терминала на Rust: qq отвечает на быстрый вопрос по командной строке, а qa делает один шаг с файлами и командами
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
Коротко о README
Страница показывает, как поставить и запустить скрипт, и дальше идет по возможностям на примерах: ввод из stdin и аргументов, встроенные запросы, JSON по схеме, конвейеры, команды `before:`, исполняемые промпты, чат, прикрепление файлов. Затем описаны инструменты (функции Python, shell_tools, встроенные), синтаксис шаблонов, слои настройки, ключи провайдеров, пользовательский адрес API, кэш и совместимость со спецификацией dotprompt. Лицензия MIT.