2238 Commits

Author SHA1 Message Date
Morgan Lunt
8ef7f78869
receipts: trim the README to what a user needs
It had grown into an argument with a reviewer — three sections of
rationale for decisions a reader doesn't have to agree with to use the
thing. Install command up top, then how to run it and what comes out.

The reasoning is still in the code comments and SKILL.md, where whoever
maintains this next will look for it.
2026-07-17 16:18:35 -07:00
Morgan Lunt
3b93169856
receipts: count only work that can be checked
The first cut measured the agent's activity and reported it as the
developer's. Rewrites the attribution so every number is one you could
defend to someone who pushed back on it.

What a number now means:

- Projects resolve to a git root, or to the directory the work happened
  in when there isn't one. Not basename(cwd), which turned a home
  directory into a 49% "project" and split one repo across several rows.
- A session's spend follows the files it touched, reads included, split
  across projects. Subagents share their parent's session, so their work
  lands on the same project with no special case.
- Claude Code's own machinery — scratchpad, tool-results, ~/.claude, and
  this report's own past output — is excluded. It was 82% of the reported
  line count.
- Commits are joined against git: authored under the identity git uses in
  that repo, AND touching a file Claude Code touched. The old identity
  grep counted a snapshot cron's 2,209 commits and claimed the developer
  committed on every active day they worked.
- Work with no project — web search, chat tools, dashboards — is named as
  research rather than filed under whatever directory the shell sat in.

What's gone, and why:

- The activity/spend breakdown. A turn's cost is ~90% context handling,
  half of it re-reading what earlier turns added, so charging it to
  whichever tool fired is a modeling choice rather than a measurement —
  and the choice decides the answer. On one real month three defensible
  weightings put web search at 11%, 28% or 51%. Per-project spend
  survives the same test and stays.
- The `git commit` counter. A Bash call carries no working directory, so
  a commit in a throwaway fixture repo can't be told from a real one.
  Measured 33 against 4.

Also: local calendar arithmetic (active days could exceed the window),
paths normalized so Windows doesn't silently count the scratchpad as the
user's work, HTML written 0600 and refusing symlinks, a CSV export with
formula injection neutralized, print output that stays vector text, and
perforated edges.

The report says which columns sum and which don't, and distinguishes "no
commits" from "git couldn't be read" — unknown is not zero.
2026-07-17 11:47:45 -07:00
Morgan Lunt
78cb97b3e6
Add receipts plugin
A personal Claude Code impact report built from the session transcripts
already on disk at ~/.claude/projects, for the conversation where a dev
has to explain what their usage bought. Produces a markdown report and a
self-contained HTML receipt in the home directory.

Complements session-report, which reads the same transcripts to drive
usage down; this reads them to explain what the usage produced, and
cross-references local git history to tie spend to shipped work.

Two design rules the report is built around: no dollar figures, since a
cost inferred from local token counts won't match anyone's real bill and
inviting "that can't be right" discredits everything next to it; and no
invented "hours saved", since there's no baseline in local data to derive
a counterfactual from.

Mining is local — file I/O and git, no network. Tool calls are grouped
into five activity categories during mining so raw tool names, which
enumerate the dev's connected MCP servers, never leave the script. The
report is published nowhere unless the user asks.
2026-07-16 11:22:16 -07:00
github-actions[bot]
a0d18a01d4
bump(astronomer-data-agents): 6163ddc1 → 5432198c (#4140)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:37:55 -05:00
github-actions[bot]
1c500ba91e
bump(carta-cap-table): 3c8a5d9f → 1f99da85 (#4142)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:37:33 -05:00
github-actions[bot]
75b5da0b8e
bump(crowdstrike-falcon-foundry): 1695c448 → fad171a8 (#4144)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:37:09 -05:00
github-actions[bot]
b02ed2bdd3
bump(zyte-web-data): adb02df6 → 8b2d640f (#4155)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:36:45 -05:00
github-actions[bot]
e975879e03
bump(aws-agents): 8ea76325 → 851e0346 (#4141)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:36:21 -05:00
github-actions[bot]
928ceed0ba
bump(carta-investors): 1db768d1 → 1f99da85 (#4143)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:35:55 -05:00
github-actions[bot]
fd964fb93c
bump(data-engineering): 6163ddc1 → 5432198c (#4147)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:35:28 -05:00
github-actions[bot]
9467663ac3
bump(qdrant-skills): 5ea598de → db1dde70 (#4151)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:34:58 -05:00
github-actions[bot]
1734fc49cb
bump(dash0): 77c9130b → 539977ef (#4145)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:34:30 -05:00
github-actions[bot]
43afb7f8d5
bump(data): 6163ddc1 → 5432198c (#4146)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:34:02 -05:00
github-actions[bot]
90ca69cefb
bump(databricks): 5bc462d4 → 3d798146 (#4148)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:33:33 -05:00
github-actions[bot]
4e6d8424ec
bump(expo): 9eb5ab06 → dba2a34f (#4149)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:33:03 -05:00
github-actions[bot]
5c1603dfc1
bump(hyperframes): c2764e08 → b0bb4688 (#4150)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:32:50 -05:00
github-actions[bot]
39914c9a4c
bump(stripe): 423788e0 → e238b951 (#4153)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:30:59 -05:00
github-actions[bot]
f56f23ab6b
bump(wix): 7fd67c8c → c5424178 (#4154)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 12:18:48 -05:00
github-actions[bot]
d9c8f35fd6
bump(sonarqube): 824e4f39 → 5e89beac (#4152)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-16 09:16:04 -05:00
github-actions[bot]
b5eddebc64
bump(carta-cap-table): 1db768d1 → 3c8a5d9f (#4129)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:11:27 -05:00
github-actions[bot]
30a27cef09
bump(crowdstrike-falcon-foundry): 82740a4f → 1695c448 (#4131)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:11:05 -05:00
github-actions[bot]
162ac3eefa
bump(convex): 67e8e750 → b11a1bf5 (#4130)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:10:43 -05:00
github-actions[bot]
3bec117d57
bump(hyperframes): c8d13af9 → c2764e08 (#4134)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:10:19 -05:00
github-actions[bot]
15b1b7f3f0
bump(remember): 31626fd2 → 7db78669 (#4135)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:09:55 -05:00
github-actions[bot]
28fc983dca
bump(resend): cad68a4e → 8a977503 (#4136)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:09:31 -05:00
github-actions[bot]
bb6f8a7e89
bump(langfuse): b8471e0c → 02636d5b (#4138)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:09:06 -05:00
github-actions[bot]
0699f1d2ac
bump(dataverse): 9b23d74e → 2e651c72 (#4132)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:08:43 -05:00
github-actions[bot]
268dcbdb89
bump(snowflake-cortex-code): 0c2d99fb → 86333729 (#4137)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:08:18 -05:00
github-actions[bot]
779f83c537
bump(huggingface-skills): 52d32494 → 9c8c3e1c (#4133)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:07:51 -05:00
github-actions[bot]
bb5fa34a27
bump(carta-investors): 7285fefd → 1db768d1 (#4110)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:06:54 -05:00
github-actions[bot]
cdc948d480
bump(sonarqube): feb8d784 → 824e4f39 (#3883)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:06:27 -05:00
github-actions[bot]
7379588761
bump(wix): afe99e49 → 7fd67c8c (#3884)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 19:06:14 -05:00
github-actions[bot]
52c1459b71
bump(snowflake-cortex-code): 6ecc0939 → 0c2d99fb (#4125)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:18:55 -05:00
github-actions[bot]
d4ecd0d52c
bump(vibe-prospecting): 9a16bada → fcbbd20c (#4126)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:18:31 -05:00
github-actions[bot]
9f8b8fd66d
bump(auth0): ce813504 → ec605c39 (#4107)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:18:07 -05:00
github-actions[bot]
dcd05021d5
bump(hunter): 9d0de1d5 → e56a94b2 (#4117)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:17:40 -05:00
github-actions[bot]
0ff5ebccbb
bump(carta-cap-table): 60f8c4e4 → 1db768d1 (#4109)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:16:58 -05:00
github-actions[bot]
9e6b599df7
bump(chrome-devtools-mcp): 2d944f9f → 9a7e04da (#4111)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:16:32 -05:00
github-actions[bot]
29d75dff78
bump(crowdstrike-falcon-foundry): ae1f81f8 → 82740a4f (#4113)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:16:05 -05:00
github-actions[bot]
8eb0364e44
bump(hyperframes): 10b33519 → c8d13af9 (#4118)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:15:38 -05:00
github-actions[bot]
73083c73b4
bump(sap-fiori-mcp-server): c9963b01 → c288dadb (#4123)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:15:31 -05:00
github-actions[bot]
8dd9a77043
bump(aws-agents): 7e471bf7 → 8ea76325 (#4108)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:15:16 -05:00
github-actions[bot]
59b66c2aa2
bump(exa): 8823cbea → 685aaa99 (#4116)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:15:10 -05:00
github-actions[bot]
ef3f5ebb2f
bump(knowledge-catalog): b662eb35 → 6d8a1ad0 (#4119)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:14:41 -05:00
github-actions[bot]
a931c25d31
bump(codspeed): 58d994aa → 705245d4 (#4112)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:14:33 -05:00
github-actions[bot]
5e23828a80
bump(dash0): 9796547e → 77c9130b (#4114)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:14:02 -05:00
github-actions[bot]
81c86a609e
bump(deepeval): 11375f81 → b11bd0e1 (#4115)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:13:31 -05:00
github-actions[bot]
f237553129
bump(mergify): 0ee93629 → 50b7c343 (#4120)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:13:22 -05:00
github-actions[bot]
61acd6aaaa
bump(pinecone): e29f1843 → f36dec67 (#4121)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:12:49 -05:00
github-actions[bot]
dc2452685d
bump(posthog): 90ae7137 → ffbb2531 (#4122)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 13:12:16 -05:00