packages/skills/skills/browser-cookies/SKILL.md
Export, save, and import cookies for isolated browser MCP agents. Use after new logins in isolated browsers to persist sessions across restarts, or to seed isolated browsers from the real Chrome session.
npx skillsauth add mediar-ai/skillhubz browser-cookiesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage cookie persistence for isolated browser MCP agents. Isolated browsers load cookies from ~/.claude/browser-sessions.json at startup but do not save changes back automatically. This skill handles the export/import cycle.
~/.claude/browser-sessions.jsonstorageState JSON ({ "cookies": [...], "origins": [...] })storageState in their configUse this after logging into a new service in the isolated browser. This exports the current session cookies and merges them back into the shared cookie file.
// Call via mcp__isolated-browser__browser_run_code
async (page) => {
const cookies = await page.context().cookies();
return JSON.stringify(cookies);
}
The result is a large JSON string. Save it to a temp file if it exceeds inline limits.
Parse the exported cookies and merge them into the existing file. When merging, cookies from the export take precedence (matched by domain + name + path).
import json
# Load exported cookies (from temp file or inline)
with open('/tmp/exported-cookies.json') as f:
new_cookies = json.load(f)
# Load existing storage state
with open('~/.claude/browser-sessions.json') as f:
state = json.load(f)
# Build lookup of existing cookies
existing = {}
for c in state.get('cookies', []):
key = (c['domain'], c['name'], c.get('path', '/'))
existing[key] = c
# Merge: new cookies overwrite existing, add any new ones
for c in new_cookies:
key = (c['domain'], c['name'], c.get('path', '/'))
existing[key] = c
state['cookies'] = list(existing.values())
with open('~/.claude/browser-sessions.json', 'w') as f:
json.dump(state, f, indent=2)
Close and reopen the isolated browser to load the updated cookies:
mcp__isolated-browser__browser_closemcp__isolated-browser__browser_navigate to the target URLUse this to refresh all cookies from the user's real Chrome session (via playwright-extension). This replaces all cookies in the file.
// Call via mcp__playwright-extension__browser_run_code
async (page) => {
const cookies = await page.context().cookies();
return JSON.stringify(cookies);
}
import json
# Parse the exported cookies from the MCP result
# (handle the escaped JSON string from ### Result section)
new_cookies = ... # parsed cookie array
with open('~/.claude/browser-sessions.json') as f:
state = json.load(f)
state['cookies'] = new_cookies
with open('~/.claude/browser-sessions.json', 'w') as f:
json.dump(state, f, indent=2)
IMPORTANT: When you finish a browser task that involved any login, form submission, or authentication in the isolated browser, always run Workflow 1 before closing/leaving. This ensures the next isolated browser session has the updated cookies.
browser-sessions.json. Saving from one agent updates cookies for all of them.user_session). These require re-login per session.tools
Design web-like user interfaces in the terminal and inside tmux with a cell-grid Canvas, CSS-like box model, flexbox/grid layout, and 15 reusable widgets such as Panel, Table, Card, ProgressBar, Meter, Tabs, Tree, Badge, Banner, and a braille line chart. Use when an agent needs a dashboard, panel, table, status page, TUI layout, tmux dashboard, screenshot-driven CLI/TUI replica, ANSI frame, truecolor render, pyte PNG screenshot smoke test, wide-character alignment, or a new terminal widget.
tools
Drive interactive terminal (TUI) programs — CLIs, REPLs, installers, menu apps, agent CLIs, and editors like vim — through a PTY, reading semantic screen snapshots. A pattern library classifies a screen (REPL, menu, pager, fzf search, confirm dialog, form, spinner, wizard) and drives it with a ready recipe. Use when a program expects a live terminal (arrow-key menus, prompts, spinners, password fields, curses UIs), or when a piped command hangs or prints nothing.
tools
Design and render terminal/CMD visual effects and ASCII art from a one-line request via the pluggable `fx` engine (18 hot-swappable, themeable effects plus scripted shows). Effects include donut, matrix rain, plasma, fire, a spinning 3D ball, Game of Life, wireframe cube, 3D text banners, rainbow/lolcat gradient text, starfield, tunnel, fireworks, image-to-ASCII, and more. Use when the request is for a terminal animation, ANSI/CLI art, or a new console effect. Pure Python stdlib; truecolor.
tools
# X Twitter Scraper Use Xquik for X/Twitter tweet search, user lookup, profile tweets, follower export, media download, monitors, webhooks, posting workflows, and MCP-backed API exploration. ## Prerequisites - A Xquik API key in `XQUIK_API_KEY`. - Internet access to `https://xquik.com/api/v1`, `https://xquik.com/mcp`, and `https://docs.xquik.com`. - A clear user request that identifies the target tweets, users, accounts, keywords, media, monitor, webhook, or write action. ## Source Truth -