diff --git a/CLAUDE.md b/CLAUDE.md
index fa05f2b..9124d2b 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -232,13 +232,46 @@ A tool is just an app that is displayed in a tab and an iframe on each app's pag
### Minimal Tool Structure
-A tool needs three files at minimum:
+A tool needs four files at minimum:
**.npmrc**
```
registry=https://npm.nose.space
```
+**tsconfig.json**
+```json
+{
+ "compilerOptions": {
+ "lib": ["ESNext"],
+ "target": "ESNext",
+ "module": "Preserve",
+ "moduleDetection": "force",
+ "jsx": "react-jsx",
+ "jsxImportSource": "hono/jsx",
+ "allowJs": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "noEmit": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedIndexedAccess": true,
+ "noImplicitOverride": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noPropertyAccessFromIndexSignature": false,
+ "baseUrl": ".",
+ "paths": {
+ "$*": ["src/server/*"],
+ "#*": ["src/client/*"],
+ "@*": ["src/shared/*"]
+ }
+ }
+}
+```
+
**package.json**
```json
{
@@ -516,12 +549,13 @@ watch(APPS_DIR, { recursive: true }, (_event, filename) => {
### Checklist for New Tools
1. [ ] `.npmrc` contains `registry=https://npm.nose.space`
-2. [ ] `package.json` has `toes.tool: true` and `toes.icon`
-3. [ ] `scripts.toes` uses `bun run --watch index.tsx`
-4. [ ] Dependencies include `@because/forge`, `@because/hype`, `@because/toes`
-5. [ ] Import `baseStyles`, `ToolScript`, `theme` from `@because/toes/tools`
-6. [ ] Layout body includes ``
-7. [ ] Styles served at `/styles.css` with `baseStyles + stylesToCSS()`
-8. [ ] Main route handles missing `?app` parameter gracefully
-9. [ ] Uses `APPS_DIR//current` for file paths
-10. [ ] Exports `app.defaults` as default export
+2. [ ] `tsconfig.json` matches the exact config shown above (do not improvise)
+3. [ ] `package.json` has `toes.tool: true` and `toes.icon`
+4. [ ] `scripts.toes` uses `bun run --watch index.tsx`
+5. [ ] Dependencies include `@because/forge`, `@because/hype`, `@because/toes`
+6. [ ] Import `baseStyles`, `ToolScript`, `theme` from `@because/toes/tools`
+7. [ ] Layout body includes ``
+8. [ ] Styles served at `/styles.css` with `baseStyles + stylesToCSS()`
+9. [ ] Main route handles missing `?app` parameter gracefully
+10. [ ] Uses `APPS_DIR//current` for file paths
+11. [ ] Exports `app.defaults` as default export