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 ./my-app --since 90d
0caps
0fixes
0tends
412 commits in 90 days. 54 of them changed the product. 14 caps9 fixes31 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.

Same 90 days. Two ways of counting.

Counting activity

412

commits, and zero pull requests. It says a lot happened. It can't say what.

Counting deeds

14
caps
9
fixes
31
tends

Fourteen new things the product can do, nine 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/danielmiessler/LifeOS --since all
deeds github.com/danielmiessler/LifeOS
2025-09-09 → 2026-09-03 · 717 commits (124 cached) · judged by jev (jev-1.13.0)
​
68 caps 53 fixes 497 tends
​
month caps fixes tends
2025-09 █████▎ 14 ███████▍ 11 ████▉ 68
2025-10 ██▋ 7 ██ 3 ██▎ 31
2025-11 ██▋ 7 ███▍ 5 █▎ 17
2025-12 ████████████ 32 ████████████ 18 ████████████ 167
2026-01 ▊ 2 ██▋ 4 ███████ 98
2026-02 ◂ −3 ▋ 1 █▎ 18
2026-03 █▉ 5 · 0 ▊ 11
2026-04 · 0 · 0 ▉ 12
2026-05 · 0 · 0 ▏ 1
2026-06 █▏ 3 ███▍ 5 ██▎ 31
2026-07 ▍ 1 ███▍ 5 ██▍ 33
2026-08 · 0 ▋ 1 ▊ 10
​
by author caps fixes tends
Daniel Miessler 64 43 466 ████████████████
Daniel Miessler 0 0 14 █
Michael Vöhringer 0 1 2 ██
Timo S. 1 1 1 ███
Nathan Bost 0 0 2 █
+ 33 more authors
​
caps newest first, 8 of 130
+ overlay system be9e8ef Daniel Miessler
− isa reconcile b948a8f Daniel Miessler
↑ store 36c6f01 Daniel Miessler
− div onDragOver handler and 4 more bc0a20a Daniel Miessler
− backup restore 82c521d Daniel Miessler
+ doctor a4e8e74 Daniel Miessler
↑ generate analysis 0707f1b Rob Heaser
− pai core 058e29d Daniel Miessler
​
80 secret-shaped strings were redacted before leaving this machine

Real output: all 717 commits of LifeOS, judged by Jev on 2026-10-04. 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/ledger-app

show me deeds progress

deeds analyze . --since 7d

6 caps
2 fixes
11 tends
This week. The biggest cap is recurring invoices, from devon.

how many caps did maria land this month?

deeds analyze . --since 30d

Four caps, including multi-currency invoices and the CSV export.

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