-
TypeScript supabase/supabase
feat(studio): add feature to rewrite queries
15 files ยท +986 โ229 ยท merged PR #47266GitHub's alphabetical file list opens on a test file, and the Logs Explorer page โ where this feature actually lives โ is the 14th of 15 files. You read the tests before the thing they test.
ncr starts at the API contract, then the AI rewrite logic, then descends into key discovery and the page that wires it all together.
-
Python simonw/datasette
Add column types system, refs #2664
14 files ยท +1367 โ55 ยท merged PR #2667GitHub opens on datasette/app.py โ 108 lines of internal registry wiring โ and you read the abstraction, its implementations, and the schema before ever seeing where column types reach users (views/table.py, file 9 of 14).
ncr opens with the ColumnType contract, then the plugin hook and built-in types, the internal-DB schema, and only then the rendering pipeline โ with the +732-line test file folded into one closing chapter.
-
Go go-gitea/gitea
feat(actions): add job summaries (GITHUB_STEP_SUMMARY)
18 files ยท +683 โ23 ยท merged PR #37500GitHub opens on the 207-line storage model, then two DB migration files and a locale string โ all before any code that uses them. The runner-upload endpoint where a summary actually enters the system is file 6 of 18.
ncr starts at the capability negotiation between Gitea and its runners, then the upload endpoint, the web view, and the Vue panel โ the data model and migration arrive only after you have met every one of their consumers.
-
Java keycloak/keycloak
[OID4VCI] Support for credentials CRUD (DB and admin REST endpoints)
18 files ยท +843 โ0 ยท merged PR #48668GitHub shows a DTO first, then the JPA entity, the Liquibase migration, and persistence.xml (files 5โ8) โ the database, bottom-up โ before the admin REST endpoint that motivates them at file 14 of 18, scattered across five Maven modules.
ncr reads it as an enterprise feature should be read: REST contract, admin endpoint, SPI/model layer, then JPA persistence and the migration, then cache pass-through, then tests.
-
Rust astral-sh/uv
Add
uv checkto runtyfrom uv13 files ยท +1154 โ3 ยท merged PR #19605Crate-name sorting puts uv-bin-install โ the bottom-layer machinery that downloads the ty binary โ on page one, before you learn a new
uv checkcommand exists; the implementation is file 6, its dispatch wiring file 8.ncr opens with the CLI contract, then settings resolution, dispatch, the core check() pipeline, and only then the binary-download adapter it rests on.
Run it on your own PRs
ncr is a single Go binary. Point it at any GitHub PR and it builds the narrative, serves it locally, and opens your browser.
-
1
Install
brew install justinabrahms/tap/ncr
Or
go install github.com/justinabrahms/ncr@latest, or grab a prebuilt binary from Releases. -
2
Authenticate once
ncr reads the PR through the GitHub CLI and calls Anthropic to plan the chapters.
gh auth login export ANTHROPIC_API_KEY=sk-ant-โฆ
-
3
Read a PR as a story
ncr supabase/supabase 47266 # build, serve locally, open the browser ncr owner/repo 812 --static # write out/review.html and exit โ no server ncr . # self-review the current branch vs. its merge-base
Every run is cached, so re-opening a PR is instant and free.