Dead weight
Everything installed that hasn’t run in 30, 60 or 90 days, with the date it last did.
Complete pages: four home page concepts, two showcase pages and twenty screens in four library styles.
Full pages built only from the library, to copy as a starting point.
10 parts
A home page where the product is the hero: a live dashboard shot, a bento of features, a run wall and an FAQ.
import { HomeControlRoom } from '@rchursin/home'
/** * Home concept 01, for platform and developer-experience engineers: the product is the hero. * The page brings its own skip link, header, <main> with one <h1>, and footer. Numbers in the * product shots are labelled as sample data. */export default function ControlRoomPage() { return <HomeControlRoom />}A developer-first home page: one command to copy, a terminal that types out the scan, a sample report and pricing.
import { HomeOneCommand } from '@rchursin/home'
/** * Home concept 02, developer-first and self-serve: one command, a terminal that types out the * scan, a sample report, a comparison table, pricing and an FAQ. Complete page: skip link, * header, <main> with one <h1>, footer. */export default function OneCommandPage() { return <HomeOneCommand />}An editorial home page about cost: a printed receipt for agent work, figures that count up, a ledger and a cost chart.
import { HomeReceipt } from '@rchursin/home'
/** * Home concept 03, editorial and about cost: a printed receipt for agent work, three figures, * an itemised ledger and a cost chart. Complete page: skip link, header, <main> with one <h1>, * footer. The ledger and the chart are labelled as sample data. */export default function ReceiptPage() { return <HomeReceipt />}The logo becomes a viewfinder: frame the few skills that work and cut the rest, with an estimator and a floating header.
import { HomeFrame } from '@rchursin/home'
/** * Home concept 04: the logo becomes a viewfinder. A field of skill names behind the hero (a * pointer lens brings words forward), a framed shortlist, an estimator and an FAQ. Complete * page: skip link, floating header, <main> with one <h1>, footer. */export default function FramePage() { return <HomeFrame />}A living spec of the finishing layer: the metal button built up layer by layer, surfaces, controls, motion, type and moments.
import { DetailsPage } from '@rchursin/details/DetailsPage'
/** * A living spec of the finishing layer: the button built up one layer at a time, surfaces and * grain, controls, motion curves, type and small moments. Every specimen is the real class or * component. Complete page: skip link, header, <main> with one <h1>, footer. */export default function DetailsTemplatePage() { return <DetailsPage />}The product kit’s front page: a Today screen built from every tool’s widget, a map of the kits and the shared parts.
import { OverviewPage } from '@rchursin/product/overview/OverviewPage'
/** * The product kit's front page: a Today screen built from each tool's widget, a map of the * kits, the shared parts and how to use them in code. OverviewPage has its <h1> (PageIntro) * but no <main>, so the page adds one around it. */export default function KitOverviewPage() { return ( <main> <OverviewPage /> </main> )}Five screens in the Tailwind Plus style: a centred hero, a sidebar app shell, a sign-in form, a header and a loading screen.
import { TailwindPlusHero } from '@rchursin/screens'
/** * A centred hero under a simple header, in the Tailwind Plus style. The screen has no <main> * of its own, so the page wraps it in one. Bracketed copy is yours to replace. */export default function TailwindPlusHeroPage() { return ( <main className="min-h-dvh bg-white dark:bg-neutral-950"> <TailwindPlusHero /> </main> )}Five screens in the shadcn/ui style: a hero, an inset sidebar shell, a login card, a site header and a loading screen.
import { ShadcnHero } from '@rchursin/screens'
/** * A hero in the shadcn/ui style: its own header, the mark on a card, a badge link, the * headline and two buttons. The page wraps it in a <main>. Bracketed copy is yours to replace. */export default function ShadcnHeroPage() { return ( <main className="min-h-dvh bg-white dark:bg-neutral-950"> <ShadcnHero /> </main> )}Five screens with Magic UI’s effects: retro grid, border beam, shiny and gradient text, shimmer buttons, ripples and a dock.
import { MagicUiHero } from '@rchursin/screens'
/** * A hero in the Magic UI style: a retro grid floor, the mark in a tile with a running border * beam, a shiny announcement pill, a gradient headline and a shimmer button. Each light passes * once or twice on arrival, then rests; nothing moves with reduced motion. The page wraps it * in a <main>. */export default function MagicUiHeroPage() { return ( <main className="min-h-dvh bg-white dark:bg-ink"> <MagicUiHero /> </main> )}Five screens in the Aceternity style: a spotlight hero, a borderless sidebar, a signup-style form, a floating navbar and a lamp.
import { AceternityHero } from '@rchursin/screens'
/** * A hero in the Aceternity style: a spotlight over a grid that fades at the edges, a gradient * headline and a button with a glowing border. The page wraps it in a <main>. */export default function AceternityHeroPage() { return ( <main className="min-h-dvh bg-white dark:bg-black"> <AceternityHero /> </main> )}RChursin_ reads your team’s coding-agent sessions and shows what each agent and skill costs, how often it runs, and whether it helps. Then it tells you what to keep, cut, merge or fix.
Reads sessions from
Why this exists
“I had 12 agents and 80 skills. I used 3 agents and about 10 skills. I couldn’t tell which of the rest were dead weight, so I built RChursin_.”
Product
Counting runs is the easy part. RChursin_ ties every agent and skill to what happened next: the task finished, the tests passed, the PR merged.
Everything installed that hasn’t run in 30, 60 or 90 days, with the date it last did.
Did sessions that used it finish more tasks, faster, for less?
Skills the agent never picks on its own. The description usually needs work.
Two skills doing one job, with a suggested merge.
What your descriptions add to every turn, before any work starts.
Approve the report and get a pull request that removes, merges or rewrites what you don’t need. You review it like any other change.
Agent activity
This is what most setups look like once you can see them. RChursin_ shows it for your team, every day.
How it works
Turn on your agent’s telemetry, or point us at your local session files. Prompts stay out by default.
We match each session to the agent and skill files in your repo, and to the result: task done, tests passing, PR merged.
A weekly report says what to keep, cut, merge or fix, with pull requests ready to review.
export CLAUDE_CODE_ENABLE_TELEMETRY=1export OTEL_LOG_TOOL_DETAILS=1 # real agent and skill namesexport OTEL_METRICS_EXPORTER=otlpexport OTEL_LOGS_EXPORTER=otlpexport OTEL_EXPORTER_OTLP_ENDPOINT=https://YOUR_ENDPOINTexport OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer YOUR_TOKEN"FAQ
Built-in tools show one machine and the last few days. RChursin_ shows your whole team, keeps the history, and ties every agent and skill to results, not just to how often it ran.
The local scan runs on your machine and sends nothing. Team mode receives usage counts, costs and names. Claude Code keeps prompts out of its telemetry unless you turn them on.
We compare sessions that used an agent or skill with similar sessions that didn’t: did the task finish, how long did it take, and what did it cost.
[CONFIRM BEFORE LAUNCH] Claude Code first. Cursor, OpenCode and Codex next.
Its name and description are loaded on every turn so the agent knows it exists. That’s about 100 tokens a skill. Small alone, but 80 skills is around 8,000 tokens before any work starts.
Connect one repo. Your first report is ready after a day of normal work.
Runs locally · sends nothing
One command reads your agent and skill files and your recent sessions. A minute later you know what runs, what never fires, and what it all costs on every turn.
npx rchursin scanOr paste this to your coding agent
Read rchursin.dev/SKILL.md and set up RChursin_ for this repo.
$ npx rchursin scanReading .claude/agents (12) and .claude/skills (81)Reading 1,204 sessions from the last 30 daysAgents 3 of 12 usedSkills 11 of 81 usedContext ~8.1k tokens on every turn, from skill descriptionsKEEP pr-review Used daily. Finishes the job.FIX test-fixer Fails more than half the time.MERGE api-docs Does the same job as openapi-writer.CUT db-migration-helper No runs in 45 days.Full report: ./rchursin-report.htmlWhat the scan reads
No account, no setup. The scan reads files on your machine and writes a report next to them.
.claude/agents/Your subagent files: names, descriptions, tools.
.claude/skills/Every SKILL.md: what it says it does and when to use it.
~/.claude/projects/Local session files: what actually ran, how long it took, what it cost.
The report
Every agent and skill gets one verdict and one reason. You decide; nothing changes without you.
| Name | Verdict | Runs | Success | $ / task | Why |
|---|---|---|---|---|---|
| pr-review | keep | 212 | 91% | $0.92 | Used daily. Finishes the job. |
| test-fixeragent | fix | 34 | 41% | $3.20 | Fails more than half the time. |
| api-docs | merge | 18 | 83% | $0.61 | Does the same job as openapi-writer. |
| release-notes | keep | 48 | 88% | $0.40 | Cheap and reliable. |
| db-migration-helper | cut | 0 | — | — | No runs in 45 days. |
| ui-snapshot | fix | 3 | 67% | $1.10 | Only runs when typed as /ui-snapshot. |
| legacy-refactoragent | cut | 0 | — | — | No runs in 60 days. |
Run it your way
Same scan, same report. Pick where it runs.
npx rchursin scanNeeds Node.js 20 or newer. Run it in the root of any repo that has a .claude folder.
Read rchursin.dev/SKILL.md and set up RChursin_ for this repo.
Your coding agent reads the setup guide, runs the scan and explains the report in the chat.
# .github/workflows/rchursin.yml
name: Agent setup report
on:
schedule: [{ cron: "0 8 * * MON" }]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx rchursin scan --ci --token "$RCHURSIN_TOKEN"
env:
RCHURSIN_TOKEN: ${{ secrets.YOUR_TOKEN }}Team mode
Built-in usage tools see one machine and recent days. Team mode adds your whole team, keeps the history, and links each skill to results.
| Feature | Local | Team |
|---|---|---|
| Machines | Yours | Everyone on the team |
| History | Session files on disk | Kept, week over week |
| Dead weight and trigger check | Yes | Yes |
| Usefulness score and cost per task | — | Yes |
| Cleanup pull requests | — | Yes |
Pricing
Free
One machine. Runs on your laptop, sends nothing.
[YOUR PRICE]per developer / month
Your whole team, with history and cleanup PRs.
Custom
Self-hosting, SSO and a person to call.
FAQ
Built-in tools show one machine and the last few days. RChursin_ shows your whole team, keeps the history, and ties every agent and skill to results, not just to how often it ran.
The local scan runs on your machine and sends nothing. Team mode receives usage counts, costs and names. Claude Code keeps prompts out of its telemetry unless you turn them on.
We compare sessions that used an agent or skill with similar sessions that didn’t: did the task finish, how long did it take, and what did it cost.
[CONFIRM BEFORE LAUNCH] Claude Code first. Cursor, OpenCode and Codex next.
Its name and description are loaded on every turn so the agent knows it exists. That’s about 100 tokens a skill. Small alone, but 80 skills is around 8,000 tokens before any work starts.
One command. Your report in about a minute.
npx rchursin scanCost per task, by agent and skill
Every task your agents run leaves a bill: tokens, time, retries. RChursin_ itemises it by agent and skill, so you can see what pays for itself and what doesn’t.
Fig. 1 · Tokens per skill
~100
What one skill’s name and description add to every turn, used or not. Anthropic docs
Fig. 2 · Tokens per turn
~8,000
Loaded before the first word of work when a repo has 80 skills.
Fig. 3 · Agents in use
3 of 12
Agents that did the work in our founder’s own setup of twelve.
The ledger
Runs, success rate and cost per finished task, with a verdict you can act on.
| Name | Runs | Success | Cost / task | Verdict | Note |
|---|---|---|---|---|---|
| pr-review | 212 | 91% | $0.92 | keep | Used daily. Finishes the job. |
| test-fixeragent | 34 | 41% | $3.20 | fix | Fails more than half the time. |
| api-docs | 18 | 83% | $0.61 | merge | Does the same job as openapi-writer. |
| release-notes | 48 | 88% | $0.40 | keep | Cheap and reliable. |
| db-migration-helper | 0 | — | — | cut | No runs in 45 days. |
| ui-snapshot | 3 | 67% | $1.10 | fix | Only runs when typed as /ui-snapshot. |
| legacy-refactoragent | 0 | — | — | cut | No runs in 60 days. |
Fig. 4 · Cost per finished task
test-fixer costs $3.20 a finished task, 3.5× the median, and still fails more often than it works. That’s the first one to fix.
How it works
Turn on your agent’s telemetry, or point us at your local session files. Prompts stay out by default.
We match each session to the agent and skill files in your repo, and to the result: task done, tests passing, PR merged.
A weekly report says what to keep, cut, merge or fix, with pull requests ready to review.
“I had 12 agents and 80 skills. I used 3 agents and about 10 skills. I couldn’t tell which of the rest were dead weight, so I built RChursin_.”
FAQ
Built-in tools show one machine and the last few days. RChursin_ shows your whole team, keeps the history, and ties every agent and skill to results, not just to how often it ran.
The local scan runs on your machine and sends nothing. Team mode receives usage counts, costs and names. Claude Code keeps prompts out of its telemetry unless you turn them on.
We compare sessions that used an agent or skill with similar sessions that didn’t: did the task finish, how long did it take, and what did it cost.
[CONFIRM BEFORE LAUNCH] Claude Code first. Cursor, OpenCode and Codex next.
Its name and description are loaded on every turn so the agent knows it exists. That’s about 100 tokens a skill. Small alone, but 80 skills is around 8,000 tokens before any work starts.
Your first receipt
Analytics for coding agents and skills
Most teams use a handful of the agents and skills they’ve built. RChursin_ finds that handful, and shows you which of the rest to cut, merge or fix.
“I had 12 agents and 80 skills. I used 3 agents and about 10 skills. I couldn’t tell which of the rest were dead weight, so I built RChursin_.”
Founder, RChursin_
Before and after
81 skills · ~8.1k tokens a turn
14 skills · ~1.4k tokens a turn
65 cut, 3 merged into one, 2 rewritten so the agent picks them on its own.
Estimate
Every skill’s name and description is loaded on every turn so the agent knows it exists. Move the sliders to see what yours add up to.
Product
Fig. 1
Sessions that used it, next to sessions that didn’t: finished, faster, cheaper?
Fig. 2
Skills the agent never picks on its own. Fix the description or turn auto-invoke off.
Fig. 3
Two skills, one job. Merge them and the agent stops guessing.
Privacy
Team mode receives names, counts, durations and costs. Your source code stays where it is.
Claude Code keeps prompt text out of its telemetry unless you switch it on. We don’t ask you to.
The free scan runs on your machine and sends nothing. Self-hosting is available for teams.
FAQ
Built-in tools show one machine and the last few days. RChursin_ shows your whole team, keeps the history, and ties every agent and skill to results, not just to how often it ran.
The local scan runs on your machine and sends nothing. Team mode receives usage counts, costs and names. Claude Code keeps prompts out of its telemetry unless you turn them on.
We compare sessions that used an agent or skill with similar sessions that didn’t: did the task finish, how long did it take, and what did it cost.
[CONFIRM BEFORE LAUNCH] Claude Code first. Cursor, OpenCode and Codex next.
Its name and description are loaded on every turn so the agent knows it exists. That’s about 100 tokens a skill. Small alone, but 80 skills is around 8,000 tokens before any work starts.
RChursin_ · Finishing
Nobody notices one of these on its own. Together they are the difference between something built and something made. Everything on this page is the real component, so hover, press and scroll.
02 · Surfaces
Every step up the scale keeps the same light and the same offset-to-blur ratio, so surfaces stack without arguing. In the dark, height is a lighter surface with a lit top edge.
03 · Controls
Fields sit slightly into the page and glow when you focus them. The slider has a lit pearl of a thumb. The tab highlight glides instead of jumping.
npx rchursin scanThe pill glides here in 500ms.
An in-out curve, because it moves while on screen.
Use the arrow keys too.
04 · Motion
Three curves do all the work. Press Play to feel the difference against the browser default.
ease-lux · 450ms
Hovers, presses, menus. Quick to answer, soft to land.
ease-lux-expo · 1100ms
Arrivals and count-ups. Long and calm.
ease-lux-spring · 700ms
One-off landings, like the stamp. 1.5% overshoot.
ease (browser default) · 450ms
For comparison. Rushes the start, drags the end.
If your system asks for reduced motion, the squares jump straight to the end.
05 · Type
Geist has no optical sizes, so letter-spacing does that job: big words pull together, small capitals open up. Numbers always line up.
Display
84px · 500 · −0.05em
Frame what works.
Heading
40px · 500 · −0.025em
Usage isn’t usefulness.
Body
18px · 400 · 0 · 65ch
Short sentences, plain words. Lines stop at about 65 characters so the eye never loses its place.
Label
Mono 11px · 500 · +0.14em · caps
Fig. 2 · Tokens per turn
Figures
Tabular · −0.04em
$1.84 · 212 · 8,000
06 · Moments
Each page gets at most one signature moment. Here are all of them, with two you can try right here.
Every header
Hover the logo and its underscore blinks three times, like a cursor waiting for you.
Closing panels, Home 04
The L grows out of its corner, then the square settles in. The logo, assembling.
Home 03 receipt
The verdict arrives with a small spring, as if pressed by hand.
Figures on 01 and 03
They rise from zero the first time you see them, then stay still.
Home 04 hero
The field of skill names surfaces word by word, and a soft light follows your pointer across it.
Every header
Clear at the top of the page. Frosted, with a hairline, once you scroll.
Product shots, Magic UI
The border beam runs once when it arrives and again when you hover. It never loops on its own.
Cards on every page
Cards lift two pixels and catch a soft light where your pointer is.
The rules