Deeds
CLI and Claude Code plugin that reads each commit diff and counts capabilities gained, fixes and upkeep using narrow model judgments.
Overview
Deeds measures work in a repository by what got better rather than by PR or commit counts. It reads the diff of every commit in a window and classifies each improving change as a cap (capability gained or deepened), a fix (broken to working, including security fixes) or tend (refactors, dependency bumps, tests). Renames, reverts and busywork produce nothing, commit messages are never read, and the three counts are kept separate. Reports come as text, JSON or a self-contained HTML page; the README shows a run over 1,065 commits of golang/go.
Each commit passes four layers: code extracts exact facts from the diff, a judgment model answers narrow questions in two waves, and ordered written rules turn facts and answers into deeds, so the model never makes the final call. The directory listing describes it as needing only a Jev key, but the current README says it uses Cloudflare's Clef on Workers AI in your own account.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Narrow questions about the diff, e.g. does this change add a user-facing capability?(inferred) | yes · no |
| Choice | Which kind of deed is this change: cap, fix or tend?(inferred) | cap · fix · tend |
How it works
- Code extracts facts (routes, exports, tests) from each diff
- Judgment model answers narrow questions in two waves
- Ordered rules map facts and answers to deeds
- Emit text, JSON or HTML reports
Strengths
- Ignores commit messages; judges actual diffs
- Model never makes the final call
- Only diffs and file paths are sent
- Checksum-verified installer
Caveats
- Current README uses Clef on Cloudflare rather than Jev
- Requires bun and a Cloudflare account
Getting started
curl -fsSL https://raw.githubusercontent.com/danielmiessler/deeds/main/install.sh | sh, set CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN; or /plugin install deeds@workdeeds.At a glance
- Type
- Plugin
- Status
- beta
- Language
- TypeScript
- Runtime
- CLI (bun), Claude Code plugin
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
CLI and Claude Code plugin that reads each commit's diff and counts capabilities gained, fixes and upkeep, ignoring commit messages. Needs only a Jev key; only diffs and file paths are sent.
MrJev/awesome-jev
Frequently asked questions
What is a deed?
A change that made the product better: a capability, a fix, or upkeep.
Does it use Jev?
The listing says so, but the current README uses Cloudflare's Clef judgment model.
Does it read commit messages?
No, only diffs and file paths.
Related projects
Neovim popup showing jev-lens verdicts after Claude Code edits: whether to look, which files, and debris to strip.
ProjectbetaLuaClaude Code plugin that adds Jev as an independent judge for review findings, debugging hypotheses, design options and search hits.
PluginbetaRust CLI that classifies Git commit diffs with Jev into bug fixes, security fixes with CWEs, and change types.
CLIbetaRustGit tool that stages only the hunks matching a plain-language description, using Jev include/exclude/mixed probabilities per hunk.
ProjectbetaTypeScriptCLI that scores every test against a git diff with Jev and emits filter arguments for vitest, jest, node, Playwright, cargo, go and rspec.
ProjectbetaTypeScriptClaude Code plugin that logs your prompts locally and later has Jev score how well you prompt the coding agent over time.
PluginbetaTypeScript