Skip to content
cccskills
FreePublished on GitHub

cookie-copy

Copy authorized Google or ChatGPT/OpenAI cookies between Chrome profiles on the same Mac. The workflow preserves destination backups and can verify that a ChatGPT profile is signed in to the expected account.

OriginalShow the original description

Copies selected-site cookies between local profiles of the same macOS Chrome. Use for cookie copy, 复制 Cookie, 搬登录态 or reusing an existing ChatGPT session in an isolated profile. Supports Google and ChatGPT/OpenAI site selections, destination backups and restore, and expected-account verification for ChatGPT.

daymade/claude-code-skills1,503 stars(GitHub 1,503 + cccskills 0)
Works withOpenAI

Run score Not tested

See how to install

Good for

  • Reuse an authorized ChatGPT session in an isolated Chrome profile
  • Move Google cookies to another local Chrome profile
  • Verify which account a copied ChatGPT profile uses

Files included (5)

  • SKILL.md5.0 KB
  • scripts/copy-cookies.py9.1 KB
  • scripts/verify-chatgpt-profile.mjs7.8 KB
  • tests/test_cookie_migration.py6.7 KB
  • tests/test_profile_verification.mjs2.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Cookie Copy

Copy only an authorized source login state into an explicitly selected destination. Keep backups and browser profiles outside the Skill and Git.

Select the supported job

  • Use the same macOS machine, OS user and Google Chrome installation. Do not use this workflow for cross-machine or cross-browser encrypted-cookie conversion.
  • Select --site chatgpt for chatgpt.com and openai.com, or --site google for google.com. The CLI defaults to Google. Do not substitute another site.
  • Copy encrypted rows without decrypting them or reading Keychain secrets. Keep source Chrome running if needed; require the destination Chrome to be stopped.
  • Preserve the existing Google merge behavior. Replace the ChatGPT/OpenAI set together, including every session-token chunk, so stale chunks do not survive.
  • Keep quota queries and reset decisions with tibo-reset-codex; login verification here does not call a quota endpoint or prove a downstream business operation.

Prepare and resume

  1. Fix the expected account, source database and task-owned isolated destination. Use Python 3.10+, Node.js 22+ and installed Google Chrome. Resolve missing tools through their existing installation owner; do not install Playwright or another browser for this workflow. Respect host restrictions on external browsers.
  2. For ChatGPT, verify an existing destination first. If the expected identity is already authenticated, return it to the caller without copying again.
  3. Initialize only a nonexistent destination with the command below. It refuses an existing root. If initialization was interrupted, inspect that exact root before resuming; do not overwrite it or silently choose a new account/directory.
  4. Locate a different source profile with --source-cookie-db when the default daily Chrome Default/Cookies does not contain the authorized session. Do not retrieve credentials from conversation history. If no valid session exists, return to normal login with the caller's existing authorization boundary.

Run these commands from this Skill directory, one at a time; inspect each exit:

: "${MIGRATION_PROFILE:?set the isolated Chrome directory}"
: "${EXPECTED_EMAIL:?set the expected account email}"
node scripts/verify-chatgpt-profile.mjs --profile-dir "$MIGRATION_PROFILE" --initialize
python3 scripts/copy-cookies.py --site chatgpt --destination "$MIGRATION_PROFILE" --yes
node scripts/verify-chatgpt-profile.mjs --profile-dir "$MIGRATION_PROFILE" --expected-email "$EXPECTED_EMAIL"

Run initialization only when required. Use --yes only for an already authorized write. For Google, use the copy command with --site google and an initialized, stopped destination; verify the expected signed-in account through an authenticated Google account view. An account-chooser memory is not a live session.

Verify and recover

Treat copy exit 0 as a database transfer result. For ChatGPT, require the reopened browser's email to match the expected account and status=verified with login_verified=true. The verifier uses the current system HTTPS proxy or explicit --proxy; --headless is optional. Treat a challenge as unconfirmed, not proof of logout. Return 2 for unconfirmed and 1 for a tool error. initialized proves only directory preparation. Report a downstream application's result separately.

Use the exact backup printed by the copier to restore a stopped destination:

: "${COOKIE_BACKUP:?set the exact backup path printed by the copier}"
python3 scripts/copy-cookies.py --destination "$MIGRATION_PROFILE" --restore-backup "$COOKIE_BACKUP" --yes

Check that this target still belongs to the task and contains no later human login or new work before restoring. Restore backs up the current target first. Verify the expected prior website state afterward; an existing backup is not login proof.

Keep the source read-only. Use one committed SQLite snapshot, including WAL; release the source read transaction before requesting human approval. Require exact cookie schema equality. Back up the complete destination with mode 0600, then write one transaction; roll back failed writes. Preserve unrelated sites. Stop on an active target or unresolved browser lock, and never terminate another session's browser. The verifier closes only its own Chrome child. Yield on actual user takeover, security prompts or host denial. Do not retry inputs or change channels around them.

Do not migrate history, bookmarks, extensions or password stores. Do not log cookie values, session tokens or backup contents. Keep the exact missing prerequisite or unconfirmed identity visible when handing the target back to its caller.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Diagnoses why an agent’s built-in web search returns empty results through a relay or unsupported backend, disables only the tools confirmed broken, and configures a working replacement. It then checks that the replacement can search and open current pages.

  • Troubleshooting empty web search results
  • Checking search through a third-party relay
  • Replacing broken search and fetch tools
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

app-evolver

FreeSummary

Improve an existing application by comparing its code and product contract with authorized work history and competitor evidence. Select changes that fit the app, implement the approved increment, and verify the result through the surface users actually use.

  • Adapting a competitor mechanism to an existing app
  • Turning successful or failed prior work into an app improvement
  • Implementing and verifying an authorized product change
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

Gather public Chinese financial news, policy announcements, and Eastmoney forum sentiment related to China A-shares. Filter by stock codes or keywords and return structured JSON or readable Markdown for later review; the output is an information roundup, not market data or investment advice.

  • Collect recent news about selected A-share codes
  • Gather policy and regulatory announcements
  • Review Eastmoney forum sentiment for a stock
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

Transcribe audio or video into timestamped text labeled by speaker, using local Apple Silicon MLX or a remote service. It can also prepare audio without transcribing, including format conversion, 16 kHz downsampling, segment merging, compression, and speed adjustment. The supplied instructions are incomplete beyond their first section.

  • Create a speaker-labeled transcript from a recording
  • Prepare audio for an ASR service without transcribing
  • Merge recorder segments before transcription
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

audio-router

FreeSummary

Route requests to the appropriate bundled audio specialist: StepFun speech recognition or voice synthesis, or meeting-minutes creation and review from an existing transcript. General transcription and transcript correction remain with their separate skills.

  • Choosing a specialist for StepFun audio transcription
  • Creating voiceover with StepFun speech synthesis
  • Turning an existing transcript into meeting minutes
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

auto-repo-setup

FreeSummary

Diagnose repository setup problems and guarded Git workflows for Claude Code or Codex. Identify missing environment requirements, check startup sync and hooks, and prepare practical onboarding handoffs so a project can run and collaborators can work consistently.

  • Fixing a repository that will not run on a new machine
  • Checking duplicate or unexpected hook output
  • Preparing setup instructions for a teammate
daymade/claude-code-skills1.5KUpdated Oct 30, 2026

See all skills by daymade

Report a problem with this skill