npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

getreceipts

v0.1.1

Published

Catch your AI coding agent claiming work it didn't do. Deterministic, read-only, zero-config. The lie detector for Claude Code.

Readme

一個確定性、唯讀的看門狗,專抓你的 coding agent 謊報它根本沒做的工作 —— 號稱「所有測試都過了」但根本沒跑測試、號稱「我改了 src/foo.ts」但 git diff 打臉。它在每次 Claude Code turn 結束後執行,除非某個宣稱可被證明是假的,否則完全保持安靜。

不用 LLM。不收任何遙測。不演假警報。只給你證據(receipts)。

⚠️  getreceipts — 2 unverified claims caught
  ✗ Claimed tests pass, but no test command ran this turn.
      • observed: no test command appears in this turn's tool calls
  ✗ Claimed to have updated src/missing.ts, but it does not exist.
      • path: src/missing.ts
      • observed: this file is not in the git diff and does not exist in the repo

⭐ 只要它幫你抓到一次,就請給專案一顆星 —— 能幫助更多人找到它。

快速開始

npx -y getreceipts init      # 把 Stop hook 寫進 ./.claude/settings.json

就這樣,零設定。之後每次 Claude Code turn 結束,getreceipts 會把 agent 的宣稱拿去跟你的 git diff、磁碟上的檔案、以及它實際跑過的指令交叉比對。乾淨的 turn?你根本不會注意到它在。

getreceipts doctor     # 證明引擎能動 + 檢查 hook 是否接好
getreceipts explain    # 說明到底會檢查(與不檢查)哪些東西

它會抓到什麼

| 宣稱 | 何時會被標記 | |---|---| | 「所有測試都過了」 /「suite 全綠」 | 這個 turn 內根本沒跑測試指令,或跑了但出錯 | | 「build 成功」 /「lint 通過」/「型別檢查乾淨」 | 沒有對應的 check/build 指令跑過,或跑了但失敗 | | 「我改了 src/foo.ts /「建立了 config/x.yaml」 | 該路徑不在 git diff 裡(甚至根本不存在) |

它(刻意)不會做的事

會亂叫的工具會被解除安裝。getreceipts 只在某個宣稱與觀察到的事實(git、檔案系統、行程結果)矛盾時才出聲。任何無法證明的,它一律保持安靜:

  • 未來式/意圖 —— 「我等等會跑測試」「我們來加個測試吧」
  • 含糊 —— 「我想測試應該有過」「看起來有 build 起來」
  • 條件式 —— 「如果測試過了…」 ・ 否定 —— 「測試還沒過」
  • 任何在 程式碼區塊 裡的內容

永遠不會跑你的測試、不安裝任何東西、不碰你的 repo。永遠唯讀。

運作原理

  1. Claude Code 在一個 turn 結束時觸發 Stop hook,並把 session transcript 的路徑交給我們。
  2. 我們讀取 transcript,只切出這一個 turn(忽略先前的 turn 與 subagent),取出 agent 的發言+它實際呼叫過的工具。
  3. 用高精準度的 pattern 從發言中抽出可被證偽的宣稱(claims)
  4. 把每個宣稱拿去跟觀察到的事實比對,只在可被證明的矛盾時印出一張收據(receipt) —— 預設是不擋住流程的警告(或加上 --strict,把它丟回給 agent 自己修)。

設計上就是確定性、規則式的:一個反幻覺的工具,自己絕不能幻覺。

為什麼不用 linter?或 LLM 裁判?

  • 靜態的 AI-slop linter 只在 CI 檢查程式碼,一次一種語言。它們看不到 agent 的宣稱 ——「我跑了測試而且都過了」對 tsceslint 來說是隱形的。
  • LLM 裁判型 hook 等於把它要解決的問題又帶回來(成本、延遲,而且模型本身也可能判錯)。getreceipts 是建立在地面真相之上的純規則 —— 每次答案都一樣、即時、離線。

開發藍圖

  • 更多 claim 類型(removed/renamed、「版本升到 X」、「committed/pushed」)
  • 檔案引用 & lockfile import 檢查
  • Cursor、Codex、OpenCode 的 adapter(引擎本來就與 agent 無關)
  • MCP server 模式(verify_last_turn),讓任何說 MCP 的 agent 都能用
  • 社群 check-packs —— 可安裝的規則包

參與貢獻

claim 的 pattern 與指令辨識器都刻意做成資料驅動,因此很容易擴充。歡迎送 PR 補上漏掉的真實世界用語(附測試)或新的 test-runner —— 每個新 pattern 都必須有通過的測試,且在語料庫中不增加任何假陽性

Star 成長史

授權

MIT © getreceipts contributors