GitReverse — реверс-инжиниринг любого GitHub-репозитория в исходный промпт

· 1 мин чтения
prompt-engineering vibe-coding ai-coding reverse-engineering github
📂 Исходный код на GitHub

Открытый веб-сервис (Next.js 16, React 19, TypeScript), который по метаданным репозитория, корневому дереву файлов и README восстанавливает с помощью LLM один короткий разговорный промпт, из которого можно «свайпкодить» проект с нуля. Поддерживает Grok, OpenRouter, Azure OpenAI и Google AI Studio, опционально Supabase и Stripe.

GitReverse — реверс-инжиниринг любого GitHub-репозитория в исходный промпт

Что если взять любой публичный репозиторий на GitHub и спросить не «как он устроен», а «какое задание попросил бы человек, чтобы AI-агент написал это с нуля»? Именно это делает GitReverse — открытый проект с почти двумя тысячами звёзд, который превращает репозиторий в один синтетический пользовательский промпт. Тот самый, который кто-то мог бы вставить в Cursor, Claude Code или Codex, чтобы «завайбкодить» проект с нуля. Живой экземпляр сервиса доступен на gitreverse.com.

Идея одновременно шутливая и глубокая: в эпоху, когда заметная часть кода пишется по одному промпту, «обратный инжиниринг промпта» становится отдельным жанром prompt engineering. GitReverse — практичный инструмент этого жанра.

Реверс промпта как жанр

За последними годами сложилась любопытная асимметрия. Раньше главным артефактом разработчика был код, а задание — расходным материалом. Сейчас всё чаще наоборот: промпт или спецификация становятся долгоживущим артефактом, а код — генерируемым выводом, который можно пересоздать. Отсюда растёт интерес к «декомпиляции промптов»: если проект написан агентом по короткому заданию, то по коду теоретически можно восстановить это задание.

GitReverse доводит идею до логического конца и применяет её к любому репозиторию — даже к тому, который никогда не был написан AI. Результат — не архивная истина, а синтетическая реконструкция: «каким мог бы быть промпт, из которого вырос бы такой проект». Это делает каждый открытый репозиторий материалом для изучения того, как формулировать задания для агентов.

Проект органично вписался в культуру vibe coding: 1.8 тысячи звёзд, 306 форков и 286 коммитов, а на GitHub он помечен темами prompt-engineering, reverse-engineering и vibe-coding.

Как это работает

Пайплайн намеренно простой и прозрачный:

  1. Приложение забирает через GitHub API метаданные репозитория — название, описание, звёзды, язык.
  2. Получает корневое дерево файлов (глубина 1) — верхнеуровневую структуру проекта.
  3. Читает README.
  4. Отдаёт этот контекст LLM, которая генерирует один короткий разговорный промпт, «заземлённый» в реальном контексте репозитория.

Что значит «заземлённый»: модель не фантазирует абстрактное ТЗ, а опирается на то, что реально видит — стек из метаданных, типичные файлы конфигурации в корне, заявленные фичи из README. На выходе получается текст в духе «сделай мне приложение на таком-то стеке, с таким-то страницами и таким-то поведением» — разговорный, но конкретный.

На главной странице достаточно вставить URL репозитория или просто owner/repo. Есть и shareable-ссылки вида /owner/repo (например, /vercel/next.js), которые запускают тот же процесс. GitHub-подобные пути /owner/repo/tree/... редиректятся на /owner/repo, чтобы ссылки не отдавали 404. Пока реверс использует весь репозиторий целиком; поддержка контекста по конкретной подпапке заявлена в планах.

Кому и зачем это нужно

Сценарии применения, вокруг которых проект и собрал аудиторию:

  • Изучение prompt engineering. Хотите понять, как выглядит промпт, из которого вырастает реальный проект, а не «напиши мне TODO-приложение»? GitReverse показывает это на любом известном репозитории.
  • Эталонные промпты для vibe coding. Сгенерированный промпт можно взять за скелет собственного ТЗ: структура, стек, ключевые фичи уже сформулированы.
  • Обзор незнакомых проектов. Короткий разговорный промпт — своеедельный «реферат» репозитория: что внутри и зачем.
  • Бенчмаркинг агентов. Взяли промпт из репозитория A, скормили своему агенту, сравнили результат с оригиналом — получили дешёвый способ оценить качество vibe coding-инструментов.
  • Обучение команд. На больших открытых проектах промпты GitReverse наглядно показывают, насколько конкретным должно быть задание, чтобы агент выдал структурированное приложение, а не набор разрозненных файлов.

Стек

Проект написан на современном фронтенд-стеке и сам является продуктом эпохи AI-кодинга:

Технология Роль
Next.js 16 (App Router) Фреймворк приложения
React 19 UI
TypeScript Язык
Tailwind CSS 4 Стили
GitHub API Метаданные, дерево файлов, README
Supabase Опционально: кэш промптов, страница /library, синхронизация истории
Stripe Опционально: монетизация

Поддерживаемые LLM-провайдеры

Quick reverse работает с четырьмя провайдерами. Переменная GITREVERSE_QUICK_LLM закрепляет конкретного, а без неё включается режим auto — приложение берёт первый найденный ключ.

Провайдер Ключ Модель по умолчанию
Grok (xAI) XAI_API_KEY grok-3
OpenRouter OPENROUTER_API_KEY google/gemini-2.5-pro
Azure OpenAI AZURE_OPENAI_API_KEY + AZURE_OPENAI_BASE_URL gpt-5.4
Google AI Studio GOOGLE_GENERATIVE_AI_API_KEY gemini-2.5-pro

В режиме auto приоритет такой: Grok → OpenRouter → Azure → Google. Azure-реверс по умолчанию использует gpt-5.4 с reasoning effort medium, а генерация заголовков — gpt-5.4-mini без reasoning.

Embeddings и библиотека промптов

Кэш сгенерированных промптов индексируется эмбеддингами Azure (по умолчанию text-embedding-3-small, 512 измерений), что даёт гибридный поиск по странице /library. Если в вашем Azure-ресурсе ещё нет embedding-деплоя, можно временно задать OPENAI_API_KEY как fallback только для эмбеддингов — quick reverse и генерация заголовков останутся на Azure.

Маршруты приложения

Путь Назначение
/ Главная — быстрый реверс (кодовая база или сайт)
/library Просмотр кэшированных промптов (требует Supabase)
/history История ваших промптов, синхронизируется с Supabase
/[owner]/[repo] Shareable-ссылка на быстрый реверс
/[owner]/[repo]/tree/... Редирект на /[owner]/[repo]

Запуск и конфигурация

pnpm install
pnpm dev

После этого приложение доступно на http://localhost:3000. Сборка и линтинг — стандартные:

pnpm build
pnpm start
pnpm lint

Конфигурация — через .env.local (образец в .env.example). Ключевые переменные:

  • Хотя бы один ключ LLM из таблицы выше — обязателен.
  • GITHUB_TOKEN — опционально, повышает лимиты GitHub API.
  • SUPABASE_URL + SUPABASE_PUBLISHABLE_KEY — опционально, включает серверный кэш промптов и страницу /library.
  • VIEWS_IP_SALTобязательна в продакшене: приложение откажется стартовать со значением по умолчанию. Генерируется через openssl rand -hex 32.

Ограничения

Стоит трезво понимать границы инструмента. Реверс опирается только на метаданные, корневую структуру и README — глубокий анализ кода не выполняется, поэтому промпт отражает «фасад» проекта, а не его внутреннюю логику. Результат — синтетическая реконструкция: красиво и правдоподобно, но это не «настоящий» исходный промпт (которого у большинства проектов, разумеется, никогда и не было). Пока не поддерживается реверс отдельной подпапки — только репозиторий целиком.

Итог

GitReverse — лёгкий, хорошо собранный и ироничный проект, который ухватил дух времени: если код теперь пишется из промптов, то и промпты можно «декомпилировать» из кода. Для практикующих vibe coding это генератор референсных ТЗ, для интересующихся prompt engineering — песочница на реальных репозиториях, а для всех остальных — быстрый способ взглянуть на знакомые open-source проекты под неожиданным углом.

Репозиторий: filiksyos/gitreverse, живой сервис — gitreverse.com. Темы на GitHub: prompt-engineering, reverse-engineering, vibe-coding.

Источник: https://github.com/filiksyos/gitreverse