# capsite checklist Goal ladder toward "an EmDash site collecting diigo.com bookmarks, credentials held by the host, never inside the plugin" (see capsite-notes.md). Start small; each step must pass before moving down. - [x] **1. Cookie-path dump worker** (`diigo-dump/`): port of `mm-diigo/projects/diigo-bak/diigo-dump.mjs` — one page-number field + button, GET `interact_api/load_user_items?sort=updated&count=24&page_num=N` with the browser session cookie (`DIIGO_COOKIE` secret). **Result (2026-10-06):** manual integration test PASSES — status 200, `total: 1674`, page-1 items returned. GET / is inert; dump only on POST submit. (2026-10-06, scrubbed: a static API-key ping worker, `diigo-ping/`, was tried first and failed — Diigo rejected the key pair with 401. The session-cookie / interact_api path is the one that works.) - [ ] **2. Real credentials in madmode/.dev.vars**: replace the placeholder `DIIGO_API_KEY="dckc-madmode"` with a key from https://www.diigo.com/settings/api; confirm the EmDash plugin's "Sync now" returns success (status 200, bookmarks stored). - [ ] **3. `/bookmarks` page renders real data** after a sync — titles/tags visible at `http://localhost:4321/bookmarks`. - [ ] **4. Cron sync works** locally without errors (`0 */6 * * *` task in `_emdash_cron_tasks`). - [ ] **5. Deploy**: madmode to Workers `pnpm wrangler deploy`, secrets via `wrangler secret put`; plugin "Sync now" against prod. - [ ] **6. bib sync #195**: repeat the pattern for the next read-access need. ## Step 1 how-to: diigo-dump (session-cookie path) ```bash cd diigo-dump # .dev.vars: DIIGO_COOKIE="" npx wrangler dev --port 8788 # → http://localhost:8788 wrangler restarts pick up .dev.vars edits only at startup ``` Enter a page number, click dump → status + `total` + JSON items. GET `/` is inert (no accidental fetches); dumps happen only on POST submits.