Prongs is the intent layer between your agents and your codebase.

npx prongs add
Get started
http://localhost:3000/team

Works where your agents work

Agents can find things by what they are, not how they look

With class strings

0

matches found

0

characters read

0

tokens read

0

tokens written

agent
Started in ~/acme styled with Tailwind class strings
Rename the Save button to “Save changes”.
Edited settings.tsx +1 −1
Done
What would you like to change next?
Add a confirm step to every destructive action.

With intents

0

matches found

0

characters read

0

tokens read

0

tokens written

agent
Started in ~/acme built on intents, PRONGS.md loaded
Rename the Save button to “Save changes”.
Edited settings.tsx +1 −1
Done
What would you like to change next?
Add a confirm step to every destructive action.

Counted from this example, at about 4 characters per token. A real codebase will differ.

Intents are to your codebase what status codes are to HTTP

A 404 means the same thing in every API, so nobody re-decides it per endpoint. An intent does that for the rest of your code: one agreed word picks a button’s element and look, an error’s status, and a log line’s shape, wherever it’s used.

What an intent is
agent
Add a way to delete the project from its settings page.
Ran prongs find "delete the project" action.delete
action.delete is the intent for this. One word at the call site; the rest comes from the registry.
Edited app/settings/page.tsx +1
<Action intent="action.delete">Delete project</Action>
action.delete resolved toelement <button type="button"> look control.destructive focus a ring, offset on the surface tag data-intent="action.delete"
prongs check passed 0 errors

Errors and logs get intents too

Ask for a failure or a log line and the agent picks its intent, like it picks a button’s. The status code, the error code and the log line’s shape come from that one word, not from each place that writes them.

How errors and logs work
agent
Sign-up should reject a handle that’s already taken, and log new accounts.
Read app/api/signup/route.ts
Ran prongs find "already taken" conflict.duplicate
conflict.duplicate answers with a 409 and its code. I’ll use it, and audit.created for the log.
Edited app/api/signup/route.ts +2
if (taken) return fail('conflict.duplicate', 'That handle is taken.');log('audit.created', 'Account created', { userId: user.id });
Tried a taken handle 409 Conflict · conflict.duplicate
Signed up a new one{"intent":"audit.created","level":"info","message":"Account created","data":{"userId":"u_81"}}
prongs check passed 0 errors

It holds up in harness testing

We ran the same harness twice: once with Prongs and once without. Fresh agents scaffolded two apps from scratch, then worked through a run of tickets, a new agent for each, and we compared what they wrote.

A controlled A/B test: the same prompts and model on both sides, and a fresh agent for every task. Each app was built 3 times per side and compared on the median run, then taken through a chain of 18 and 13 tickets.

See how we tested, and run it yourself
  • 92%

    Fewer one-off styles

    Written at call sites after 18 tickets. 10 with Prongs, 133 without.

  • 100%

    API errors handled right

    Cases with the right status code, across every ticket. 21 of 21 with Prongs, 17 of 21 without.

  • 23%

    Less code written

    Lines to build the same app from scratch. 1,507 lines with Prongs, 1,966 without.

One vocabulary, any product

http://localhost:3000/fleet

Fleet overview

42 drones · updated 12 seconds ago
In the air

19

of 42 drones
Missions today

86

12 more than yesterday
Average battery

50%

3 below 20%
Need attention

4

in maintenance or offline
LocationLast missionActions
Flying
31%
North depot
M-2480

Maintenance
68%
Tech park
M-2477

Charging
15%
Old town
M-2474

Flying
52%
Harbor hub
M-2471

Idle
89%
Stadium
M-2468

Charging
36%
Riverside
M-2465

Flying
73%
Airport west
M-2462

Idle
20%
North depot
M-2459

1–8 of 42

Recently shipped

Oct 17, 2026

Layout intents

Oct 17, 2026

Spec gaps

Oct 17, 2026

Layout tweaks

Oct 17, 2026

Device status

Full changelog

Start in a minute

Add Prongs to an app, point your agent at PRONGS.md, and let the check keep it consistent.

npx prongs add
Get started

Getting started

Install, add the hook, build a first screen.

Intents

Every starter intent, live in this site’s theme.

Errors and logs

Status codes and log lines from one word.

Agents and hooks

How agents read PRONGS.md and the check corrects them.