Show HN: Arrowproof – check an LLM-drawn architecture diagram against your code Arrowproof, an agent skill released by developer ahmtsahin, verifies every box and arrow in an LLM-drawn Excalidraw architecture diagram against a repository's real import graph. In a Flask test, Claude Haiku's diagram yielded 15 verified arrows, 1 indirect arrow (app.py reaching config.py only through sansio/app.py), 2 arrows with no import behind them, and 1 box pointing to a nonexistent file (blueprint.py instead of blueprints.py), while Claude Opus's 20-arrow diagram passed all 20 checks. The tool reads Python and JavaScript/TypeScript, uses only the Python standard library, and returns exit code 1 in CI when a diagram no longer matches the code. Every arrow in your architecture diagram, checked against the code. Karpathy's advice https://x.com/karpathy/status/2105819303471976479 is to ask your LLM for a diagram instead of a wall of text. The advice is good, with one catch: a diagram that a model draws looks right even when it is wrong. arrowproof is an agent skill that checks every box and every arrow of an Excalidraw diagram against the real import graph of your repository. It shows you the import line behind each arrow. | Claude Haiku drew Flask from memory | After arrowproof | |---|---| The result: 15 arrows verified. 1 arrow is indirect, because app.py reaches config.py only through sansio/app.py . 2 arrows have no import behind them, because views.py imports only globals.py and the type aliases in typing.py . 1 box points to blueprint.py , a file that does not exist the real file is blueprints.py . Claude Opus drew the same architecture with 20 arrows, and all 20 passed. Both runs are in examples/flask https://github.com/ahmtsahin/arrowproof/blob/main/examples/flask . Try it live, with nothing to install: - The Flask architecture as a step-by-step explainer https://ahmtsahin.github.io/arrowproof/examples/flask/opus.explainer.html play=1 , with the import lines behind every arrow. - The evidence report for the Haiku diagram https://ahmtsahin.github.io/arrowproof/examples/flask/haiku.report.html . Click an arrow to see why it passed or failed. - The checked Haiku diagram in Excalidraw https://excalidraw.com/ url=https://raw.githubusercontent.com/ahmtsahin/arrowproof/main/examples/flask/haiku.verified.excalidraw , ready to edit. - Checks every arrow. A → B claims that code in box A imports code in box B. The result is ✓ verified, ↝ indirect through one other file , ⇄ reversed, or ✗ not in code. - Checks every box. The path must exist. A package must be imported somewhere. - Finds what the diagram leaves out. It lists the imports between two boxes that have no arrow. - Shows the receipts. The HTML report shows the file, the line and the import statement behind each arrow. Click an arrow to see them. - Draws new diagrams. It lays out a short spec as an editable .excalidraw file, then checks it. - Explains a change, step by step. An interactive page walks through the checked diagram. Each step zooms to its boxes and shows the import lines behind its arrows. Arrows without evidence stay marked, so the story cannot claim more than the code shows. - Runs in CI. The exit code is 1 when a diagram in your docs no longer matches the code. It reads Python and JavaScript/TypeScript: tsconfig paths, workspace packages, require and import . It uses the Python standard library only. There is nothing to install. For any agent that reads Agent Skills https://agentskills.io Claude Code, Codex, Cursor, Gemini CLI, OpenCode and others : npx skills add ahmtsahin/arrowproof As a Claude Code plugin: claude plugin marketplace add ahmtsahin/arrowproof claude plugin install arrowproof@arrowproof Then ask your agent: - "Draw the architecture of this repo." - "Check docs/architecture.excalidraw against the code." - "Is this diagram still correct?" python skills/arrowproof/scripts/graph.py . python skills/arrowproof/scripts/verify.py docs/architecture.excalidraw --repo . graph.py prints the real import graph, grouped by file or folder. verify.py accepts an .excalidraw file or a spec, and writes