Deeds

A New Way to Measure Work Done with AI

Pull requests show that code changed. Deeds tries to show what got better.

$curl -fsSL https://raw.githubusercontent.com/danielmiessler/deeds/main/install.sh | sh

Runs on your machine. All you need is a Jev key. Source on GitHub

deeds analyze github.com/microsoft/TypeScript --since 90d --html report.html
Open the full report
396 commits to TypeScript in 90 days. 382 of them did something deeds counts. 73 caps195 fixes172 tends

I'm not sure we're measuring AI coding work correctly.

The pull request has been the unit of software work for a long time, and it has earned that. It gives a team one clean place to discuss a change and review it before it merges. I'm not trying to replace it for that.

But as a way to measure how much work got done, especially work done with AI, I see two problems.

  1. It's built for collaboration.

    A PR exists so someone else can review your change. One person working with agents, testing and pushing straight to production, often never opens one. The share of code written that way is rising fast.

  2. It shows change, not value.

    A PR tells you code changed. A refactor, a typo fix and a revert count the same as a new capability, and a change that made things worse counts too.

As PRsrefactorreverttoken leakCSV export4 PRs
As deedstendno deedfixcap1 cap, 1 fix, 1 tend

I don't think the PR is the right unit of measurement anymore.

Deeds is my attempt to address both problems. It's a proposal, not a finished answer, and I expect parts of it to be wrong. If you see where, I'd like to hear it.

TypeScript's last 90 days, counted two ways.

Counting activity

396

commits from 243 merged pull requests. It says a lot happened. It can't say what.

Counting deeds

73
caps
195
fixes
172
tends

73 things TypeScript can do that it couldn't, or does more fully. 195 things that work now. And the upkeep that kept it standing.

The proposal: deeds.

Deeds is a proposed alternative for measuring valuable work rather than collaborative code modifications. It works whether or not anyone opens a PR, and it only counts a change when the product got better. Each of those changes is a deed, and every deed is one of three kinds.

cap

A capability gained or deepened. Someone can now do a thing they couldn't, or do an existing thing more fully.

src/reports/export.ts
+ export function toCSV(rows: Invoice[]): string {
+   return [HEADER, ...rows.map(toLine)].join("\n");
+ }
fix

Something moved from broken to sound. Security fixes count here too.

src/server/session.ts
- log.info("session", req.headers.cookie);
+ log.info("session", redact(req.headers.cookie));
tend

Upkeep nobody sees: refactors, dependencies, performance, tests.

package.json
-   "hono": "^4.5.1",
+   "hono": "^4.6.0",

Judged from the diff

Every commit is read from what it actually changed, never from its message. Renames, reverts and busywork add no caps.

Counts stay separate

Nine caps, four fixes and six tends tells a story one blended score would hide.

No ranking of domains

A recipe app and a payments system meet on the same ground. A team that wants one number can apply its own weights on top.

Point it at any repo.

  1. Pick a repo and a windowA local folder or a GitHub URL, over the last week, a quarter, or all time.
  2. Every commit is judgedEach diff becomes zero or more caps, fixes and tends.
  3. You get the reportTotals, a week-by-week trend, and who did the work. Same repo and window, same answer.
deeds analyze github.com/microsoft/TypeScript --since 90d
deeds github.com/microsoft/TypeScript
2026-07-07 → 2026-10-03 · 396 commits (153 cached) · judged by jev (jev-1.13.0)
​
73 caps 195 fixes 172 tends
​
week of caps fixes tends
07-06 ██▏ 2 █ 3 ██▌ 6
07-13 ███▎ 3 ████▌ 14 █▎ 3
07-20 ████████▊ 8 █████▎ 16 ██▉ 7
07-27 ███▎ 3 ██████▏ 19 ███████ 17
08-03 █▏ 1 █ 3 · 0
08-10 ████████████ 11 ███████▊ 24 █████▊ 14
08-17 ██████████▉ 10 █████▉ 18 ███████▌ 18
08-24 █████████▉ 9 ████▉ 15 █████████▉ 24
08-31 ███▎ 3 █████▉ 18 ██▏ 5
09-07 ████▍ 4 █ 3 ████▏ 10
09-14 ██████▌ 6 ██▉ 9 ███████▌ 18
09-21 ███████▋ 7 █████▎ 16 ████████▊ 21
09-28 ██████▌ 6 ████████████ 37 ████████████ 29
​
by author caps fixes tends
Jake Bailey 3 29 71 ████████████████
Andrew Branch 22 14 21 █████████
Copilot 8 31 5 ███████
Wesley Wigham 7 18 17 ███████
John Favret 7 18 8 █████
+ 56 more authors
​
caps newest first, 8 of 81
+ api d2f9dd6 Andrew Branch
+ api 688d86d Andrew Branch
+ api e8c1ac1 Andrew Branch
↑ watcher 85f9dfb soso
+ callbackfs 192ede8 Andrew Branch
+ utilities 75e50a4 Oleksandr Tarasiuk
+ api ebb89d1 Isabel Duan
+ ast 87f2e8c Andrew Branch
​
38 secret-shaped strings were redacted before leaving this machine

Real output: the last 90 days of microsoft/TypeScript, judged by Jev on 2026-10-05. Add --html report.html for the full page.

Or just ask your agent.

Deeds ships as a Claude Code plugin. It installs the deeds command and a skill that knows how to use it, so you can ask in plain words and get the report back.

>/plugin marketplace add danielmiessler/deeds
>/plugin install deeds@workdeeds
claude ~/code/TypeScript

show me deeds progress

deeds analyze . --since 7d

6 caps
37 fixes
29 tends
This week. Andrew Branch landed four of the six caps, most of them on the API.

how many caps did Andrew Branch land this month?

deeds analyze . --since 30d

Twelve caps, mostly on the API, plus session handling and module resolution.

Try it on your own repo.

Deeds runs on your machine, and all you need is a Jev key: no OpenAI or Anthropic key. Each commit's diff goes only to Jev, with anything shaped like a secret stripped out first. There is no account and no telemetry.

$curl -fsSL https://raw.githubusercontent.com/danielmiessler/deeds/main/install.sh | sh
Read the code on GitHub