Prism

Software intelligence for your agent.

Prepare the change, make it, then review and ship.

Prism is a one-stop software intelligence system that helps your AI agents write better code. It prepares the files that need to be edited. House style helps the agent make the smallest change that matches this repo. Prism then reviews the code, finds bugs, and gives you a ship or no-ship result.

$npm install -g @prismapp/cli && prism install all

Works with the coding agent you already use.

Free · MITRuns on your machineNo account
Your agent
YouAdd VAT to invoice totals
PrismPreparesrc/billing/invoice.ts
src/billing/totals.tsEditFollow invoiceTotal in this repo.
Also used in src/checkout/summary.ts.
AgentI’ll edit those files and update the code that calls them.
PrismReviewNo blocked files. The tests have not been run yet.
Receipt: NOT PROVEN
~/northwind
$ prism prepare "add VAT to invoice totals"Prepare: add VAT to invoice totalsFiles 4Tests 2Reuse 2Truncated noPATH WHYsrc/billing/invoice.ts matches invoice, total; seed filesrc/billing/totals.ts matches total; import distance 1src/checkout/summary.ts import distance 1src/lib/money.ts import distance 1Reuse invoiceTotal src/billing/invoice.ts Line src/billing/invoice.ts…

One conversation: the files to open, the edit, and a receipt.

How it works

Three steps.

1

Install

Install the CLI, then run prism install all. It connects every agent on this machine. Open the agent again.

2

Match the code

While the agent writes, Prism points at a file from your repo to copy. The new code follows that file.

3

Review

Guardrails, QA, and Architect. The receipt says SHIP, NOT PROVEN, or NO-SHIP.

Prepare, before the edit

Names the files to open, the tests to run, and code already in the repo to reuse.

Your agent
YouAdd VAT to computeTotals in the billing totals
PrismPrism · files for this task:
- src/billing/totals.ts: matches compute, total
3: function computeTotals(lines: Line[])
Tests: test/invoice.test.ts, test/totals.test.ts
Run: npx vitest run test/invoice.test.ts test/totals.test.ts
AgentStarting in totals.ts and running those two tests after.
~/northwind
$ prism prepare "add VAT to invoice totals"Prepare: add VAT to invoice totalsFiles 4Tests 2Reuse 1Truncated noPATH WHYsrc/billing/invoice.ts seed filesrc/billing/totals.ts import distance 1src/checkout/summary.ts import distance 2src/lib/money.ts import distance 2Reuse invoiceTotal src/billing/invoice.ts

Match the code, during the edit

Points at a file already in your repo to copy, so the new code looks like the rest. Never a fixture or a test.

Your agent
YouAdd VAT the way this repo already does money
PrismCopy this, do not invent a new shape:
src/billing/invoice.ts · invoiceTotal
Not a fixture. Not a test.
AgentI will follow invoiceTotal in invoice.ts for the new total.
~/northwind
$ prism prepare "add VAT to invoice totals"Reuse invoiceTotal src/billing/invoice.tsCopy the shape of that function.

Review, after the edit

Guardrails, QA, and Architect. Findings are Critical, High, Low, or Nit. The receipt says whether to ship.

Your agent
YouTidy up the reduce in computeTotals
AgentDone. The reduce in computeTotals is shorter now.
PrismPrism · NO-SHIP (1 check failed)
Prism receipt: changed 1 file, 5 dependents, 2 tests reach it. NO-SHIP
Proven          2 scoped test files · typecheck ✓
Failed          test ✗ Failed Tests 1
AgentThe test caught it: I wrote price + qty instead of price * qty. Fixed, and the next receipt says SHIP.
~/northwind
$ prism receipts show 1Prism · NO-SHIP (1 check failed)Prism receipt: changed 1 file, 5 dependents, 2 tests reach it. NO-SHIPProven          2 scoped test files · typecheck ✓Failed          test ✗ Failed Tests 1

Every caller

Ask where a function is used. Prism lists each caller from its map, so the change reaches all of them.

Your agent
YouWhere do we call getUser?
Prismgraphmode: neighbors · direction: in
getUser function · src/users/api.ts
← src/pages/checkout.ts references · measured
← src/users/profile.ts references · measured
AgentgetUser is called in two places: checkout.ts and profile.ts. Both pass a user id.
~/northwind
$ prism refs getUser2 referencesPATH KIND OFFSETsrc/pages/checkout.ts call 232src/users/profile.ts call 117
What it does

Questions Prism answers.

Prism answers from a local map of your repo and runs your own checks. No model is involved.

✓
What should I open for this task?

Prepare hands the agent the few files that matter, the tests to run and code to reuse.

✓
How does this repo do it?

Match the code points at a file from your own code to copy, never a fixture or a test.

✓
What did the agent miss?

Review reads the change and groups findings as Critical, High, Low, and Nit, then gives a Receipt.

✓
What breaks if I change this?

Blast radius lists every caller and test a change reaches, from the map of your code.

✓
Is this rename or delete safe?

Guardrails list every edit site, say what still imports a file, and stop edits to generated files.

✓
Is the change ready to ship?

When the agent stops, Prism runs your typecheck, lint and the tests the change reaches, and the receipt says SHIP, NOT PROVEN or NO-SHIP.

✓
How should the agent work?

Dev follows the code already in the repo and the blast radius. QA and Architect check the change for bugs and structure.

✓
Can it run my routine?

Write a habit like “deploy” once. Say its name and your agent runs the steps.

Benchmarks

Measured on real fixes.

From the Prism 2.0 evaluation on 220 tasks in six public repositories. The method and every result are on the benchmarks page.

See the benchmarks
61.8%

of the files the real fix changed were in Prism’s pack (220 tasks, 6 repos)

64.9%

of the tests a real fix needed were found by Prism (same 220 tasks)

4 of 4

agents pass install, doctor and a sample hook

Privacy is the default

Runs on your machine. No account, and your code stays here. A usage ping sends the command or tool name and whether it worked. `PRISM_PULSE=0` turns that off.

Works with your agent

Any coding agent that can call tools. One install connects the agent already on your machine.

Open source

Free and MIT. Read the code or build it yourself.

Try it in your repo.

Install Prism, then connect every agent on this machine. Open the agent again.

$npm install -g @prismapp/cli && prism install all