https://github.com/nozikov/github-repo-analyzer
LangGraph CLI agent that analyzes a GitHub repo and produces a tech due-diligence report
https://github.com/nozikov/github-repo-analyzer
agent ai-agent anthropic claude cli github-api langchain langgraph llm-agent python
Last synced: 15 days ago
JSON representation
LangGraph CLI agent that analyzes a GitHub repo and produces a tech due-diligence report
- Host: GitHub
- URL: https://github.com/nozikov/github-repo-analyzer
- Owner: nozikov
- License: mit
- Created: 2026-05-08T09:42:28.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-08T09:59:55.000Z (about 2 months ago)
- Last Synced: 2026-05-08T11:37:33.600Z (about 2 months ago)
- Topics: agent, ai-agent, anthropic, claude, cli, github-api, langchain, langgraph, llm-agent, python
- Language: Python
- Size: 147 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Repo Analyzer
[](https://github.com/nozikov/github-repo-analyzer/actions/workflows/test.yml)
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://github.com/langchain-ai/langgraph)
[](https://www.anthropic.com/claude)
[](https://github.com/astral-sh/uv)
Учебный LangGraph-агент: принимает URL публичного GitHub-репозитория и выдаёт markdown-отчёт из трёх секций — tech due-diligence, советы автору, идеи продуктов поверх технологии.
## Установка
```bash
uv sync
cp .env.example .env
# открой .env и впиши три ключа
```
## Запуск
```bash
uv run python -m repo_analyzer https://github.com/tiangolo/typer
```
Отчёт пишется в `reports/--.md` и одновременно печатается в stdout.
## Как работает
Граф из 5 узлов. Три параллельные ветки сливаются в финальный синтезатор:
```mermaid
flowchart TD
Start([URL]) --> fetch_meta[fetch_meta]
fetch_meta -->|GitHub API| plan[plan]
plan -->|fan-out| analyze_code[analyze_code]
plan -->|fan-out| find_similar[find_similar]
plan -->|fan-out| web_context[web_context]
analyze_code --> synthesize[synthesize]
find_similar --> synthesize
web_context --> synthesize
synthesize --> End([report.md])
classDef io fill:#e0f2fe,stroke:#0284c7
classDef llm fill:#fef3c7,stroke:#d97706
class fetch_meta io
class plan,analyze_code,find_similar,web_context,synthesize llm
```
- **`fetch_meta`** — тянет метаданные репо, README и file_tree из GitHub API.
- **`plan`** — Claude решает, какие файлы читать, какой запрос на похожие репо отправить и какие веб-запросы.
- **`analyze_code` / `find_similar` / `web_context`** — три ветки идут одновременно, каждая собирает свой кусок контекста.
- **`synthesize`** — собирает всё в финальный markdown с тремя секциями.
Полное описание архитектуры, контракты узлов, обработка ошибок и roadmap — в [docs/architecture.md](docs/architecture.md).
## Трассировка работы агента (опционально)
Если хочется видеть, **что именно делает агент на каждом шаге** — входы/выходы каждого узла, тайминги, токены и стоимость каждого LLM-вызова — подключи [LangSmith](https://smith.langchain.com/). Бесплатный tier хватит с большим запасом.
1. Зарегистрируйся, создай API-ключ в Settings.
2. Раскомментируй три строки в `.env`:
```
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_...
LANGSMITH_PROJECT=github-repo-analyzer
```
3. Запусти агента как обычно. В терминале появится `LangSmith tracing enabled — project: github-repo-analyzer`. Открой проект в UI — каждый прогон будет деревом узлов с деталями.
Никакого кода менять не нужно — LangChain автоматически подхватывает env-переменные.
## Тесты
```bash
uv run pytest -v # все юнит и smoke тесты с моками
uv run pytest -m live -s # реальные API (нужны ключи)
```
CI прогоняет юнит-тесты на Python 3.11 и 3.12 на каждый push и PR.
## Стоимость прогона
На среднем репо (10-15 файлов): ~10-30 центов на Claude Sonnet 4.6 + бесплатные tier-ы GitHub и Tavily.
## Contributing
См. [CONTRIBUTING.md](CONTRIBUTING.md). Issues и PR приветствуются.
## Лицензия
[MIT](LICENSE)