From overleaf-skills
Walks through configuring the Overleaf session cookie for the overleaf-skills plugin. Use when Overleaf authentication fails or cookie expires.
How this skill is triggered — by the user, by Claude, or both
Slash command
/overleaf-skills:setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Walk the user through pasting a fresh `overleaf_session2` cookie into `~/.claude/overleaf-skills/cookie`. Cookies slide ~5 days idle; users will hit this every few days.
Walk the user through pasting a fresh overleaf_session2 cookie into ~/.claude/overleaf-skills/cookie. Cookies slide ~5 days idle; users will hit this every few days.
Check if ~/.claude/overleaf-skills/cookie already exists. If yes, run:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/overleaf_reviews.py --check-auth
OK <email>: tell user "Already configured, logged in as ". Ask via AskUserQuestion whether to refresh or keep.FAIL: tell user the stored cookie is expired and continue to Step 2.Tell the user to grab the cookie from their browser. Give all three branches; pick none for them:
Chrome / Edge / Brave / Arc: Cmd+Option+I (mac) or F12 → Application tab → Storage → Cookies → https://www.overleaf.com → row where Name = overleaf_session2 → double-click Value cell → Cmd+A → Cmd+C.
Firefox: F12 → Storage tab (enable in DevTools settings if hidden) → Cookies → https://www.overleaf.com → click overleaf_session2 row → right-click → Copy Value.
Safari: Enable Develop menu (Settings → Advanced → Show features for web developers), then Cmd+Option+I → Storage → Cookies → www.overleaf.com → click overleaf_session2 row → copy from right-hand detail pane.
Add three warnings at the bottom:
overleaf_session2 (UNDERSCORE). A row named overleaf.session2 (DOT) is a stale legacy cookie that will not authenticate.HttpOnly — document.cookie in the JS console returns empty for it. The storage panel is the only path.s%3A and be ~80+ chars. If it starts with s%3Ac%3A1%3A, you're logged out — log into overleaf.com and re-grab.Use AskUserQuestion: "Do you have your overleaf_session2 cookie value ready?" with options "Yes, paste it now" and "Skip for now". The user pastes via the "Other" free-text field.
Normalize the input: strip whitespace; if it does NOT start with overleaf_session2=, prepend it (accept bare value).
Reject (re-prompt with reason):
overleaf.session2= → "Overleaf renamed this cookie to overleaf_session2 (underscore). Re-grab the underscore row."=) starts with s%3Ac%3A1%3A → "That's an anonymous-visitor cookie. Log into overleaf.com first, then re-grab."s%3A after the = → "Doesn't look like an Overleaf session cookie. Confirm you copied from the overleaf_session2 row on www.overleaf.com."Cmd+A inside the Value cell."mkdir -p ~/.claude/overleaf-skills
[ -f ~/.claude/overleaf-skills/cookie ] && cp ~/.claude/overleaf-skills/cookie ~/.claude/overleaf-skills/cookie.backup
# Write the normalized value (one line, no trailing newline beyond what's natural)
printf '%s\n' "<normalized-cookie>" > ~/.claude/overleaf-skills/cookie
chmod 600 ~/.claude/overleaf-skills/cookie
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/overleaf_reviews.py --check-auth
OK <email>: report "Configured. Logged in as ." Done.FAIL: restore from cookie.backup if it exists (mv ~/.claude/overleaf-skills/cookie.backup ~/.claude/overleaf-skills/cookie), tell user the new cookie did not authenticate, loop back to Step 2.Scans a codebase for architectural friction, presents candidates as a visual HTML report with before/after diagrams, and guides you through deepening refactors.
npx claudepluginhub p/fcakyon-overleaf-skills-plugins-overleaf-skills