CritKit
Open source · MIT licensed

Design critwith your coding agents

CritKit is the design QA step in the agentic coding loop. Open your running app, walk it, and crit every flaw—spacing, a color, a label, an alignment. CritKit hands your coding agent a source-anchored to-do list it works top to bottom.

npm i -D critkit
3CritsClear All
<SectionHeader> crit-session.tsx:24

Eyebrow should be sentence case, not all-caps.

<Hero> hero.tsx:61

Tighten the CTA padding to match the card above.

<PlanBadge> demo-zone.tsx:48

Badge contrast falls below AA on this surface.

01The Crit

Four keystrokes from flaw to fix.

No mode you get trapped in, no prose to write from scratch. A single crit takes two to four seconds—a full-page session, a couple of minutes.

01

Press C

Crit mode arms. Hover highlights every element; Esc exits.

02

Click a flaw

Click it. CritKit anchors it to the component that rendered it.

03

Drop a note

Type what's wrong, hit ⏎. CritKit harvests the DOM context.

04

Copy the prompt

Open the list, hit Copy Crit Prompt, paste it to your agent.

02Live demo

Crit this page. Right now.

CritKit is already running—no install, no sandbox. The panel below is an ordinary app surface. Walk it the way you'd walk your own build.

  1. 01Press C—crit mode arms across the whole page.
  2. 02Hover the panel; elements highlight. Click one that's off.
  3. 03Type a note, hit . CritKit harvests the DOM context for you.
  4. 04The crit list docks to your screen edge—open it, hit Copy Crit Prompt.
0crits capturedPress C, then click an element in the panel.
localhost:3000
Profile
How you show up across the workspace.

Richard Hendricks

@richard

Maintainer

Email

richard@piedpiper.com

Your profile is visible to everyone in the workspace.

03The output

Your taste. You paste.

Paste a copied crit prompt into the field to see exactly what your agent receives: every item source-anchored, with values harvested live from the DOM.

crit-prompt
awaiting paste
04Install

One install. Dev only.

Register CritKit once, on the client, in development. It never touches a production build.

npm i -D critkit

Zero production footprint. The dynamic import is gated on NODE_ENV—CritKit never ships in your production bundle. Nothing to misconfigure into production.

critkit-dev.tsx
// critkit-dev.tsx"use client"import { useEffect } from "react" export function CritKitDev() {  useEffect(() => {    void import("critkit").then(({ registerCritKit }) =>      registerCritKit(),    )  }, [])  return null}
app/layout.tsx
// app/layout.tsx (development only){process.env.NODE_ENV === "development" && <CritKitDev />}