diff --git a/CLAUDE.md b/CLAUDE.md
index eebb657..bbdb675 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -15,14 +15,6 @@ InstaArchive Viewer is a React 19 + Vite 6 PWA for browsing archived Instagram d
- `npm run lint` — type-check only (`tsc --noEmit`)
- `npm test` / `npm run test:watch` — vitest
- `npx vitest run src/lib/archive-patterns.test.ts` — a single test file
-- `npm run jd2 -- --archives
--dry-run` — generate JDownloader `.crawljob`
- files for every profile on disk (see `scripts/jd2-sync.ts` and
- `docs/jdownloader.md`)
-- `scripts/gdl-sync.py` — the gallery-dl fetcher that replaced JD2 for the
- ARTMS profiles (see `docs/gallery-dl.md`)
-
-**This branch is not published to GitHub.** `main` is; keep fetching tooling,
-host details and account lists on this branch only.
Local development usually needs both `npm run dev` and `npm run server`. Local-folder mode works without the backend; server-mode archives do not.
diff --git a/docs/jdownloader.md b/docs/jdownloader.md
index 07fe6b8..f0a276f 100644
--- a/docs/jdownloader.md
+++ b/docs/jdownloader.md
@@ -1,4 +1,16 @@
-# JDownloader2 — archive fetching quick reference
+# JDownloader2 — archive fetching
+
+> **This file lives only on the `tooling` branch.** `main` is published to
+> GitHub and deliberately carries none of this. Keep host details, IPs and
+> account names here.
+>
+> There is no `npm run jd2` script — `package.json` and `CLAUDE.md` are kept
+> byte-identical to `main` so that merging `main` into `tooling` never
+> conflicts. Run the crawljob generator directly:
+>
+> ```sh
+> npx tsx scripts/jd2-sync.ts --archives --dry-run
+> ```
How content gets into this archive, and why the setup is shaped the way it is.
diff --git a/package.json b/package.json
index c662d59..edd84c6 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,7 @@
"clean": "rm -rf dist",
"lint": "tsc --noEmit",
"test": "vitest run",
- "test:watch": "vitest",
- "jd2": "tsx scripts/jd2-sync.ts"
+ "test:watch": "vitest"
},
"dependencies": {
"@tailwindcss/vite": "^4.1.14",