diff --git a/README.md b/README.md
index 8f617f7..64b6eb5 100644
--- a/README.md
+++ b/README.md
@@ -37,6 +37,7 @@ and no external requests — the page is fully self-contained.
| `app.css` / `app.js` | Human-readable, unminified source of the styles/script that are inlined into `index.html`. Edit these, then re-minify and re-inline into `index.html` when publishing a change. |
| `data/charmap.json` | The full character → Gen 1 byte value → species lookup table, generated from the source spreadsheet. Source of truth for `app.js`'s inlined data. |
| `data/charmap.min.json` | Minified copy of the same table. |
+| `csp-hash.py` | Prints the `sha256-...` CSP tokens for `index.html`'s inline `", html, re.S)
+script_match = re.search(r"", html, re.S)
+
+if not style_match or not script_match:
+ raise SystemExit("Couldn't find both an inline