Dev Digest
A local-first studio for AI pull-request review. I took a course starter template and extended it with more than 150 commits of features, evals and CI.
- Status
- Open source, course project
- Stack
- TypeScript, Fastify, Next.js 15, Drizzle, PostgreSQL, pgvector, LLM APIs, MCP
Where it started
Dev Digest began as the starter template of an AI agentic engineering course by Ivan Lapa. The starter does one thing end to end: import a GitHub pull request, index the repository, and run an LLM review that returns structured findings, with a “grounding gate” that drops findings pointing at lines that are not in the diff.
Everything below is what I built on top of it in my fork, over about a month and more than 150 commits.
What I added
- Intent layer. Classifies what a PR is trying to do and filters review findings to that scope.
- Smart Diff. A deterministic file classifier, pseudocode summaries of changes, and real suggestions for splitting oversized PRs.
- PR Brief and Risk Brief. A summary banner with the PR’s intent, risk areas, and why the change was made, linked from findings straight to the code they refer to.
- Blast Radius. An impact map of the symbols a PR changes and what depends on them, built from the repository index, including Go projects with several modules in subdirectories.
- MCP server. A local stdio server that exposes PR review to other agents as five tools.
- Conventions Extractor and agent skills. Scans a repository for its own conventions, verifies them, lets you accept or reject each one and turns them into reusable review skills, with per-run usage stats for each skill.
- Onboarding Generator. Turns the repository index into a five-part tour: architecture overview, critical paths, how to run it locally, a guided reading path, and first tasks.
- Eval pipeline. Any finding can become an eval case; an eval dashboard and a compare view show how reviewer agents score against them.
- Evals in CI. Skill, agent and workflow evals run in GitHub Actions on a small, cheap model, with concurrency capped to stay within the provider’s account-wide rate limits.
How I worked
Most features went through the same pipeline, and the repository shows it: a written spec with numbered acceptance criteria, an implementation plan, the implementation, a self-review pass by a separate review agent, and fixes in rounds until critical findings were resolved. Some specs were also reviewed by a different model before implementation, which caught real defects (an unreachable acceptance criterion, a data-leak risk) before any code existed.
The point of the project for me was exactly that: building with AI agents in a way that stays reviewable, testable and measurable, rather than accepting whatever the model produces.