Category: Guides & Manuals

Step-by-step setup guides and quick-scan prompt cheat sheets.

  • Stop Copy-Pasting Issues and PRs Into Claude Code: GitHub MCP Gives It Direct Repo and CI Access in 3 Minutes

    Stop Copy-Pasting Issues and PRs Into Claude Code: GitHub MCP Gives It Direct Repo and CI Access in 3 Minutes

    Last Verified: September 2026 — commands and maintenance status checked against live GitHub sources

    A CI run fails, and you’re back to being the messenger: check which job failed, copy the details into Claude Code, then go fetch the issue it relates to and the PR that touched that file. Every piece of context has to pass through your clipboard.

    The GitHub MCP server cuts that out. It gives Claude Code direct access to your repositories — issues, pull requests, commits, CI status, and code search. GitHub maintains an official remote server, so there’s nothing to build or run locally: you authenticate once with a personal access token and Claude Code talks to it over HTTP. Setup takes about 3 minutes, including creating the token.

    Quick Start

    Connect the official remote server with one command, once you have a token (see Step 1 below if you don’t have one yet):

    claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer YOUR_GITHUB_PAT"

    Restart Claude Code, then run /mcp to confirm it shows as connected. Total time: about 3 minutes, including creating the token.

    ⚡ Copy This Prompt: Let Claude Code Install and Verify It For You

    Once you have a token, skip the manual steps below and hand the rest to the agent:

    You have access to the `claude mcp` CLI in this project. Do the following and report back — do not tell me it's done unless step 3 actually confirms it:
    
    1. Run `claude mcp list` to see what's already configured.
    2. Add the GitHub MCP server: `claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer [MY GITHUB PAT]"` (I'll paste my actual token in place of the bracket).
    3. Run `claude mcp list` again and confirm github shows as Connected.
    4. Prove it works: list the open issues in this repository using the GitHub MCP tools. If step 3 or 4 fails, tell me the exact error and the most likely cause (bad token, missing scope, wrong URL) instead of reporting success.

    This works because Claude Code can run its own claude mcp commands and then immediately call the newly connected server — so it proves real repo access instead of just confirming a config entry exists.

    What You’ll Need

    Requirement Why You Need It Time
    Claude Code installed Provides the claude mcp command used to register the server 0 min
    A GitHub personal access token (PAT) Authenticates every request — the remote server has no browser-based OAuth login yet ~2 min
    Repo access on that token The token needs to actually see the repos you want Claude Code to work with included above

    Step-by-Step Setup

    Prefer to do it by hand instead of delegating to the agent? Here’s the manual version.

    Step 1 — Create a GitHub personal access token

    ~2 min

    In GitHub, go to Settings → Developer settings → Personal access tokens → Fine-grained tokens, and generate one scoped to the specific repositories you want Claude Code to access (avoid granting it every repo on your account unless you actually need that).

    Step 2 — Add the remote server

    ~1 min

    Note the trailing slash on the URL — leaving it off is a common source of connection errors:

    claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer YOUR_GITHUB_PAT"

    Step 3 — Or run the local Docker version instead

    ~2 min

    If you’d rather not send requests to GitHub’s hosted endpoint, GitHub also publishes an official Docker image you can run locally:

    claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=YOUR_GITHUB_PAT \
      -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

    The remote version above is faster to set up and updates automatically, so it’s the better default unless you have a specific reason to self-host.

    Step 4 — Restart and approve

    ~1 min

    Run claude to start a fresh session. Newly added servers need a restart (or the /mcp panel refresh) before Claude Code can see their tools.

    What Each Piece Does

    Piece What It Does
    Remote HTTP endpoint GitHub-hosted server at api.githubcopilot.com/mcp/ — no local process, always up to date
    Authorization: Bearer header Passes your PAT with every request — this is what scopes what Claude Code can actually see and do
    Fine-grained token scope Limits access to specific repos instead of your whole account — the safer default
    Local Docker alternative Same tools, but self-hosted — useful if you can’t send traffic to GitHub’s hosted endpoint

    Verify the Connection

    claude mcp list
    ✔ github    Connected
    ! github    Needs authentication
    ✘ github    Failed to connect

    A “Connected” status only confirms the handshake, not that the token can actually see your repos. Confirm real access with an in-session prompt:

    Using the GitHub MCP tools, list the 5 most recently updated issues in [owner/repo].

    If it comes back with real issue titles instead of an auth or permissions error, the token and scope are both working.

    Common Mistakes to Avoid

    • Dropping the trailing slash on the URL. /mcp without the final / is a frequent cause of connection failures on the remote endpoint.
    • Granting a classic token full account access. Use a fine-grained token scoped to only the repos Claude Code actually needs to touch.
    • Hardcoding the token directly in a committed .mcp.json. Keep it in an environment variable or add the server at user scope instead of project scope if the config would otherwise be shared.
    • Assuming “Connected” means full repo access. The handshake can succeed while the token still lacks scope for a specific repo — test with a real query, not just claude mcp list.
    • Not restarting after adding the server. Claude Code needs a fresh session or an /mcp panel refresh to pick up a newly added server.

    Q&A

    Can I use browser-based OAuth instead of a token?

    Not yet for GitHub’s remote server — unlike some other MCP servers, it currently requires a personal access token rather than a one-click OAuth login inside Claude Code.

    Should I use the remote server or the Docker version?

    Remote is the better default — it’s faster to set up, needs no local process, and updates automatically. Use Docker only if you specifically can’t send traffic to GitHub’s hosted endpoint.

    What can Claude Code actually do with this connected?

    Read and search code, open and comment on issues and pull requests, check CI/workflow status, and browse commit history — scoped to whatever your token can access.

    Why does it show “Needs authentication”?

    Usually a missing, expired, or incorrectly scoped token. Regenerate it in GitHub settings and re-run the claude mcp add command with the new value.

    Can I remove it later?

    Yes — claude mcp remove github deletes it from the config.

    Official Resources

  • Stop Describing Web Pages to Claude Code: Playwright MCP Lets It Open a Real Browser, Click Through Flows, and Read the Page (2-Minute Setup)

    Stop Describing Web Pages to Claude Code: Playwright MCP Lets It Open a Real Browser, Click Through Flows, and Read the Page (2-Minute Setup)

    Last Verified: September 2026 — commands and maintenance status checked against live GitHub sources

    You ask Claude Code why the signup flow breaks, and it can only guess from the source. So you open the page, click through it yourself, copy what you see, and describe it back in words. The agent is working from your summary, not the page.

    Playwright MCP takes you out of that loop. It’s Microsoft’s official browser automation server: it lets Claude Code open a real browser, click through a page, read the actual rendered text, and fill in forms, using accessibility snapshots instead of pixel screenshots. It’s become one of the most-installed MCP servers because it turns “describe this page to me” from a guess into an actual read. Setup takes about 2 minutes.

    Quick Start

    Add it as a local stdio server — no separate install step, npx handles it on first run.

    claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

    Restart Claude Code, then run /mcp inside a session to confirm it shows as connected. Total time: about 2 minutes.

    ⚡ Copy This Prompt: Let Claude Code Install and Verify It For You

    Skip Steps 1-4 below and hand the whole thing to the agent instead:

    You have access to the `claude mcp` CLI in this project. Do the following and report back — do not tell me it's done unless step 4 actually confirms it:
    
    1. Run `claude mcp list` to see what's already configured.
    2. Add the Playwright MCP server: `claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest`
    3. Run `claude mcp list` again and confirm playwright shows as Connected.
    4. Open a real page to prove it works: navigate to https://example.com and read back the page's main heading text. If step 4 fails, tell me the exact error instead of reporting success.

    This works because Claude Code can run its own CLI commands and then immediately use the newly connected server — so the agent proves the browser actually works instead of just confirming the config exists.

    What You’ll Need

    Requirement Why You Need It Time
    Claude Code installed Provides the claude mcp command used to register the server 0 min
    Node.js Playwright MCP runs via npx — no separate download needed beyond this ~5 min if missing
    ~300MB free disk space First run downloads a Chromium build for Playwright to drive ~1 min

    Step-by-Step Setup

    Prefer to do it by hand instead of delegating to the agent? Here’s the manual version.

    Step 1 — Add the server

    ~1 min

    The -- separates Claude’s own flags from the command that launches the server:

    claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

    Step 2 — Run it headless (optional, faster in CI or background use)

    ~1 min

    By default the browser runs headed (a visible window). For faster, invisible runs — especially useful when Claude Code is doing background verification work — add --headless and --isolated so each session starts from a clean profile instead of reusing saved cookies:

    claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest --headless --isolated

    Step 3 — Pick a specific browser engine (optional)

    ~1 min

    Defaults to Chromium. To test against Firefox or WebKit instead, pass --browser:

    claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest --browser firefox

    Step 4 — Restart and approve

    ~1 min

    Run claude to start a fresh session. Newly added servers need a restart (or the /mcp panel refresh) before Claude Code can see their tools.

    What Each Flag Does

    Flag What It Does
    --headless Runs the browser with no visible window — headed (visible) is the default
    --isolated Keeps the browser profile in memory only, so every session starts fresh instead of reusing saved logins/cookies
    --browser Chooses the engine: chromium, firefox, webkit, or msedge
    --vision Switches from accessibility snapshots to actual screenshots — slower and less reliable, only use it if a page genuinely needs visual inspection
    --device Emulates a specific device, e.g. "iPhone 15", for responsive/mobile testing

    Verify the Connection

    Check that it’s registered and healthy:

    claude mcp list
    ✔ playwright    Connected
    ✘ playwright    Failed to connect

    A config entry showing up is not the same as it working — the real test is asking Claude Code to actually drive the browser. In a session, ask it to navigate to a real page and read something back:

    Navigate to https://example.com using the playwright MCP tools and tell me the exact text of the page's main heading.

    If it comes back with the actual heading text (“Example Domain”), the browser is genuinely working end to end — not just listed as connected.

    Common Mistakes to Avoid

    • Forgetting the -- separator. Without it, Claude Code can’t tell where its own flags end and the server’s launch command begins.
    • Assuming “Connected” means the browser itself works. The MCP handshake can succeed even if the first real navigation later fails — always test with an actual page load, not just claude mcp list.
    • Running headed by default in a CI or background context. If there’s no display available, add --headless or the browser launch will fail.
    • Reaching for --vision by default. Accessibility snapshots (the default) are faster and more reliable than screenshots for almost every task — only switch to --vision when a page’s layout genuinely can’t be understood from its accessibility tree.
    • Not restarting after adding the server. Claude Code needs a fresh session or an /mcp panel refresh to pick up a newly added server.

    Q&A

    Does this take screenshots of every page?

    No, by default it reads the page’s accessibility tree (an accessibility snapshot) rather than capturing pixels — that’s faster and lets Claude read actual text and structure instead of interpreting an image. Screenshots are only used if you pass --vision.

    Will this affect my regular browser’s saved logins?

    Not if you use --isolated — that keeps each session’s profile in memory only. Without it, Playwright MCP uses a persistent profile stored in a separate cache directory, not your regular browser’s profile.

    Can I have the agent test my own site with this?

    Yes — that’s one of the most common uses: ask Claude Code to navigate your local dev server or a staging URL, click through a flow, and report back what it actually saw rendered.

    Why does it fail in a CI environment?

    Usually a missing display for headed mode — add --headless, and if Chromium itself is missing in the CI image, its first-run download step needs network access.

    Can I remove it later?

    Yes — claude mcp remove playwright deletes it from the config.

    Official Resources

  • Stop Re-Explaining the Same Rules Every Session: Build a Claude Code Skill That Loads Itself (5-Minute Setup)

    Stop Re-Explaining the Same Rules Every Session: Build a Claude Code Skill That Loads Itself (5-Minute Setup)

    Last Verified: September 2026 — commands and maintenance status checked against live GitHub sources

    Every new session starts the same way: you paste your code review checklist again, re-explain your team’s API conventions again, walk the agent through the release process again. Forget once, and Claude Code falls back to generic habits.

    A Skill ends the repetition. It’s a folder with one SKILL.md file that teaches Claude Code a repeatable task or a piece of standing knowledge. Claude reads the description and pulls the skill in automatically whenever it’s relevant, no manual invocation needed. This guide builds one from scratch in about 5 minutes.

    Quick Start

    Create a personal skill that works across every project on your machine:

    mkdir -p ~/.claude/skills/api-conventions

    Then create ~/.claude/skills/api-conventions/SKILL.md with a frontmatter block and instructions (see Step 2 below). Claude Code picks it up on its next session start — no restart command needed. Total time: about 5 minutes.

    ⚡ Copy This Prompt: Let Claude Code Build the Skill For You

    Skip Steps 1-4 below entirely and hand the whole thing to the agent instead — Claude Code can create the folder, write the SKILL.md, and validate it in one session:

    You have file access in this project. Do the following and report back — do not tell me it's done unless step 4 actually confirms it:
    
    1. Ask me what recurring task or piece of knowledge this skill should cover, and whether it should be personal (~/.claude/skills/) or project-scoped (.claude/skills/).
    2. Create the skill folder and a SKILL.md file at the right path.
    3. Write the frontmatter (name, and a description phrased the way I'd naturally ask for this task) plus the instructions body, based on what I told you.
    4. Run `ls .claude/skills/*/SKILL.md` (or the personal-path equivalent) to confirm the file exists, then run `claude plugin validate .claude/skills` to confirm the frontmatter parses cleanly.
    5. If validation fails, do not report success — tell me the exact error and fix it.

    The agent writes the file, then re-checks it exists and parses cleanly before telling you it’s done — instead of you writing the frontmatter by hand.

    What You’ll Need

    RequirementWhy You Need ItTime
    Claude Code installedSkills are a built-in feature — no extra package to add0 min
    A text editorTo write the SKILL.md file’s frontmatter and instructions0 min
    A recurring task in mindSkills are worth building for anything you’d otherwise re-explain repeatedly~2 min to define

    Step-by-Step Setup

    Prefer to do it by hand instead of delegating to the agent? Here’s the manual version of the same steps.

    Step 1 — Choose personal or project scope

    ~1 min

    Personal skills live in ~/.claude/skills/ and apply to every project you open. Project skills live in .claude/skills/ at your repo root and are loaded for anyone working in that repo (and its subdirectories, all the way down). Use project scope for team conventions, personal scope for your own habits.

    Step 2 — Create the skill folder and file

    ~1 min

    Each skill gets its own folder containing exactly one SKILL.md:

    mkdir -p .claude/skills/api-conventions
    touch .claude/skills/api-conventions/SKILL.md

    Step 3 — Write the frontmatter and instructions

    ~2 min

    The opening --- must be the very first line of the file for the frontmatter to parse. description is what Claude matches against your requests, so write it the way you’d naturally ask for the task:

    ---
    name: api-conventions
    description: REST API design conventions for our services
    ---
    # API Conventions
    - Use kebab-case for URL paths
    - Use camelCase for JSON properties
    - Always include pagination for list endpoints
    - Version APIs in the URL path (/v1/, /v2/)

    Optional frontmatter fields: disable-model-invocation: true makes it callable only via /api-conventions, never triggered automatically; allowed-tools restricts which tools Claude can use while the skill is active.

    Step 4 — Test it

    ~1 min

    Start (or restart) a Claude Code session in the project, then ask a question that matches the description naturally — Claude should pull the skill in on its own. To force it regardless of description matching, call it directly:

    /api-conventions

    What Each Piece Does

    PieceWhat It Does
    nameSets the skill’s invocation name; without it, Claude falls back to the folder name
    descriptionWhat Claude matches against your requests to decide when to auto-trigger the skill
    disable-model-invocationTurns off automatic triggering, leaving only manual /name invocation
    allowed-toolsLimits which tools are available while this skill’s instructions are active
    Skill body (below frontmatter)The actual instructions Claude follows once the skill is loaded

    Verify the Installation

    Confirm the file exists and the frontmatter parses cleanly:

    $ ls .claude/skills/*/SKILL.md
    .claude/skills/api-conventions/SKILL.md

    $ claude plugin validate .claude/skills
    ✔ api-conventions: valid

    Run the same two commands yourself:

    ls .claude/skills/*/SKILL.md
    ls ~/.claude/skills/*/SKILL.md
    claude plugin validate .claude/skills

    Inside a Claude Code session, ask “What skills are available?” — your skill should appear in the list. If the frontmatter has a YAML syntax error, the skill still loads but with no description to match against, so it’ll only work via manual /name invocation.

    Common Mistakes to Avoid

    • Opening --- isn’t on line 1. Any blank line or comment before it means the frontmatter won’t parse at all.
    • Vague description. “Helps with APIs” won’t match much. Write it the way you’d phrase the actual request, with the keywords you’d naturally use.
    • More than one SKILL.md per folder. Each skill needs its own dedicated folder — don’t stack multiple skills’ instructions into one file.
    • Expecting a skill below your working directory to load automatically. Claude Code loads project skills from where you started up through parent directories to the repo root — not from subdirectories below that, unless you explicitly add that directory to the session.
    • Assuming /name working means the description-matching works too. A skill with a broken frontmatter is still manually callable, which can mask the real problem — run the validator instead of just testing the slash command.

    Q&A

    Do I need to restart Claude Code after adding a skill?

    Personal and project skills are picked up on the next session start. Skills in directories added mid-session (via /add-dir) also load at that point without a full restart.

    Can I just have the agent build the skill for me?

    Yes — that’s what the copy-paste prompt above is for. Claude Code can create the folder, write the SKILL.md, and run the validator itself instead of you writing the frontmatter by hand.

    Can a skill call other tools automatically?

    Yes, unless allowed-tools restricts it — by default a skill’s instructions run with the same tool access as the rest of the session.

    What’s the difference between a skill and a slash command?

    A skill can trigger automatically based on its description matching your request. A plain slash command only runs when you type it explicitly — skills with disable-model-invocation: true behave like slash commands.

    Can I share a skill with my team?

    Yes — put it under .claude/skills/ in the repo and commit it. Anyone who clones the repo gets it automatically.

    Official Resources

  • Stop Hand-Editing JSON Config Files: Connect Any MCP Server to Claude Code in 2 Minutes With One Command

    Stop Hand-Editing JSON Config Files: Connect Any MCP Server to Claude Code in 2 Minutes With One Command

    Last Verified: September 2026 — commands and maintenance status checked against live GitHub sources

    You find an MCP server that would save you hours, then the setup instructions send you hunting for the right config file to hand-edit JSON and guess which scope it belongs in. One typo and the server doesn’t load, and you’re left guessing why.

    You don’t need to touch that file. MCP (Model Context Protocol) servers give Claude Code access to outside tools and data — a Notion workspace, a Playwright browser, a private API — and Claude Code’s built-in claude mcp command adds, checks, and removes them for you. This guide walks through both connection types and how to confirm one actually works, in about 2 minutes.

    Quick Start

    Connect a remote HTTP-based MCP server in one line — no local install, no package to run.

    claude mcp add --transport http notion https://mcp.notion.com/mcp

    Restart Claude Code, then run /mcp inside a session to see it listed as connected. Total time: about 2 minutes.

    ⚡ Copy This Prompt: Let Claude Code Install and Verify It For You

    Skip Steps 1-5 below entirely and hand the whole thing to the agent instead. Fill in the bracketed line with the server you want, paste the rest as-is:

    You have access to the `claude mcp` CLI in this project. Do the following and report back — do not tell me it's done unless step 3 actually confirms it:
    
    1. Run `claude mcp list` to see what's already configured.
    2. Add this MCP server: [PASTE THE SERVER'S NAME, URL/PACKAGE, AND TRANSPORT TYPE HERE — e.g. "notion, https://mcp.notion.com/mcp, http" or "airtable, npx -y airtable-mcp-server, stdio with AIRTABLE_API_KEY=..."]
    3. Run `claude mcp list` again and confirm the server shows as Connected.
    4. If it does NOT show Connected, do not report success. Tell me: the exact status shown, the most likely cause (missing auth, wrong URL/package name, missing prerequisite), and the specific command to fix it.

    This works because Claude Code can run its own CLI commands in a session — it adds the server, re-checks the connection, and only tells you it’s done once claude mcp list actually agrees.

    What You’ll Need

    RequirementWhy You Need ItTime
    Claude Code installedThe claude mcp command ships with it — nothing extra to install0 min
    An MCP server URL or package nameWhat you’re actually connecting to (remote HTTP endpoint or local npm package)~1 min to find
    Node.js (for local servers only)Most stdio MCP servers run via npx~5 min if missing
    API key or token (some servers)Private servers need auth headers or env vars to connect~2 min

    Step-by-Step Setup

    Prefer to do it by hand instead of delegating to the agent? Here’s the manual version of the same steps.

    Step 1 — Pick a connection type

    ~1 min

    Remote HTTP is the recommended default — the server runs elsewhere and Claude Code just connects over the network. Local stdio runs the server as a process on your own machine, usually via npx. Use HTTP whenever the tool offers it; fall back to stdio for local-only tools like a filesystem or browser server.

    Step 2 — Add a remote HTTP server

    ~1 min

    Basic syntax, plus a real example connecting to Notion:

    claude mcp add --transport http notion https://mcp.notion.com/mcp

    If the server needs a bearer token, pass it with --header:

    claude mcp add --transport http secure-api https://api.example.com/mcp \
      --header "Authorization: Bearer your-token"

    Step 3 — Or add a local stdio server

    ~2 min

    Use -- to separate Claude’s own options from the command that launches the server. Example: adding the Airtable server with an API key passed as an environment variable:

    claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
      -- npx -y airtable-mcp-server

    Step 4 — Choose a scope

    ~1 min

    User scope makes the server available across every project on your machine. Project scope writes the server definition into a .mcp.json file in the project root, so it can be committed and shared with teammates:

    claude mcp add --scope user --transport http claude-code-docs https://code.claude.com/docs/mcp
    claude mcp add --scope project --transport http claude-code-docs https://code.claude.com/docs/mcp

    A project-scoped server can also be defined directly in .mcp.json:

    {
      "mcpServers": {
        "claude-code-docs": { "type": "http", "url": "https://code.claude.com/docs/mcp" },
        "playwright": { "type": "stdio", "command": "npx", "args": ["-y", "@playwright/mcp@latest"] }
      }
    }

    Step 5 — Approve and start using it

    ~1 min

    Run claude to start an interactive session. On first launch, project-scoped servers from .mcp.json show a one-time approval prompt — accept it, and the server’s tools become available in that session.

    What Each Piece Does

    PieceWhat It Does
    Transport (http / stdio)How Claude Code talks to the server — over the network, or as a local process
    Scope (user / project / local)Who can see the server — just you everywhere, or a shared project team
    .mcp.jsonThe project-level config file that lists shared servers, meant to be committed
    --header / --envPasses auth tokens or API keys to the server without hardcoding them in the command
    /mcp panelIn-session view of every connected server and its live status

    Verify the Connection

    List every configured server and its health at a glance:

    claude mcp list

    Here’s what the status column actually looks like, and what each one means:

    ✔ notion    Connected
    ! secure-api    Needs authentication
    ✘ airtable    Failed to connect
    ⏸ claude-code-docs    Pending approval (run claude to approve)

    ✔ Connected is the only state that means “working.” Everything else needs action: ! Needs authentication (add the missing token), ✘ Failed to connect (check the URL or package name), ⏸ Pending approval (run claude interactively and accept it). For one server’s full detail:

    claude mcp get notion

    Common Mistakes to Avoid

    • Forgetting the -- separator on stdio servers. Without it, Claude Code can’t tell where its own flags end and the server’s launch command begins.
    • Hardcoding API keys directly in the URL or command. Use --header or --env instead, so secrets aren’t sitting in your shell history or a committed .mcp.json.
    • Assuming a listed server is actually working. A server appears in claude mcp list as soon as it’s configured — always check the status column, don’t assume “listed” means “connected.”
    • Not restarting after adding a server. Claude Code needs a fresh session (or the /mcp panel refresh) to pick up a newly added server.
    • Ignoring a pending-approval status. Project-scoped servers from a teammate’s .mcp.json sit unapproved until you run claude interactively and accept the prompt.

    Q&A

    What’s the difference between user scope and project scope?

    User scope is private to you and active in every project. Project scope lives in .mcp.json in the repo, so it’s shared with anyone who clones it — useful for team-standard tools.

    Do I need to know how to code to use MCP servers?

    No. Adding one is a single CLI command, and once connected, Claude Code calls its tools automatically when relevant — no manual invocation required.

    Can I just have the agent do the whole setup?

    Yes — that’s what the copy-paste prompt above is for. Claude Code can run its own claude mcp commands in a session, so it can add a server and re-check the connection itself instead of you typing each command.

    Can I remove a server later?

    Yes — claude mcp remove <name> deletes it from config, and for remote servers it also clears any stored OAuth tokens.

    Why does a server show “Failed to connect”?

    Usually a wrong URL, a missing auth header, or the local package failing to start. Run claude mcp get <name> for the specific error before troubleshooting further.

    Official Resources

  • Stop Doing the Same Busywork by Hand: Install n8n and Run Your First Automated Workflow in About 10 Minutes

    Stop Doing the Same Busywork by Hand: Install n8n and Run Your First Automated Workflow in About 10 Minutes

    Last Verified: September 2026 — commands and maintenance status checked against live GitHub sources

    You copy a form submission into a spreadsheet, ping Slack, update the CRM, and tomorrow you do it all again. None of it is hard, but it eats time every week and breaks the moment you forget a step.

    n8n takes that work off your plate. It’s a self-hostable workflow automation tool that connects apps, APIs, and AI models so repetitive tasks run on their own. This guide gets you from a clean machine to a running n8n instance with your first working automation in about 10 minutes, using the same install path n8n’s own team recommends.

    Quick Start

    If you already have Docker installed, this single official script sets everything up — instance, config files, and a local data folder — in one run.

    curl -fsSL https://get.n8n.io | sh

    Then open http://localhost:5678 in your browser. Total time: about 10 minutes, most of it spent waiting on the Docker image download.

    ⚡ Copy This Prompt: Let Claude Code Install and Verify It For You

    Skip Steps 1-5 below entirely and hand the whole install to the agent instead — Claude Code can run Docker and curl commands directly in a session:

    You have terminal access in this project. Do the following and report back — do not tell me it's done unless step 3 actually confirms it:
    
    1. Check Docker is installed and running: `docker --version` and `docker ps`.
    2. If Docker is running, install n8n with the official script: `curl -fsSL https://get.n8n.io | sh`.
    3. Confirm it worked: `docker ps` should list an n8n container as `Up`, and `curl -I http://localhost:5678` should return an HTTP 200 or redirect.
    4. If anything fails, do not report success. Tell me the exact error, the most likely cause (Docker not running, port conflict, permissions), and the specific fix.

    The agent installs, re-checks with the same commands you’d run by hand, and only tells you it’s done once the container actually shows Up.

    What You’ll Need

    RequirementWhy You Need ItTime
    Docker DesktopRuns n8n in an isolated container — no dependency conflicts on your machine~5 min
    Terminal accessTo run the setup script and check on the container0 min
    A web browserThe n8n editor runs entirely in-browser once it’s started0 min
    Node.js 22+ (optional)Only needed if you choose the npm install method instead of Docker~5 min

    Step-by-Step Installation

    Prefer to do it by hand instead of delegating to the agent? Here’s the manual version of the same steps.

    Step 1 — Install Docker

    ~5 min

    Download Docker Desktop from docker.com and install it like any other app. Open it once so the Docker engine is running in the background before you continue.

    Step 2 — Run the official setup script

    ~3 min

    Open a terminal in the folder where you want n8n’s data to live, then run:

    curl -fsSL https://get.n8n.io | sh

    This checks for Docker and Docker Compose, generates a ./n8n folder with a compose.yml and a .env file (with a unique encryption key), then pulls the images and starts the container. It’s safe to run more than once — it won’t overwrite an existing setup.

    Step 3 — Create your owner account

    ~1 min

    Visit http://localhost:5678 in your browser. n8n will ask you to create the instance owner account on first load — this is a local account stored in your own instance, not a cloud sign-up.

    Step 4 — Build your first workflow

    ~5 min

    In the editor, click Add first step and choose a trigger — Schedule Trigger is the easiest to test with. Add a second node (an HTTP Request node is a good first test), connect the two, then click Execute Workflow to run it manually before you turn on scheduling.

    Step 5 — Install a community node (optional)

    ~2 min

    Go to Settings → Community Nodes → Install, then enter the npm package name of the integration you want (community nodes extend n8n beyond its built-in app list). This option only appears on self-hosted instances, not on n8n Cloud.

    What Each Piece Does

    PieceWhat It Does
    Trigger nodesStart a workflow — on a schedule, a webhook call, or a manual click
    Action nodesDo the actual work — call an API, send a message, write to a sheet
    Community nodesThird-party integrations installed separately from npm, for apps not built in
    CredentialsStores your API keys and logins so nodes can connect without exposing secrets
    Executions logA history of every run, so you can see exactly what happened and why

    Verify the Installation

    Confirm the container is actually running, and that the web server responds:

    $ docker ps
    CONTAINER ID   IMAGE    STATUS
    a1b2c3d4e5f6   n8nio/n8n   Up 2 minutes

    $ curl -I http://localhost:5678
    HTTP/1.1 200 OK

    An Up status plus a 200 OK means n8n is live and reachable. Run the same two commands yourself:

    docker ps
    curl -I http://localhost:5678

    Common Mistakes to Avoid

    • Running the script from a different folder each time. This creates a second, separate ./n8n instance instead of reusing your existing one. Always run it from the same directory.
    • Starting the script before Docker is actually running. Open Docker Desktop first and wait for it to fully load.
    • Losing the .env file. It holds the unique encryption key for your stored credentials — without it, saved logins become unreadable, even if you still have the rest of the data.
    • Trying to install a community node on n8n Cloud. Unverified community nodes only work on self-hosted instances.
    • Turning on a schedule before testing manually. Always run a new workflow once with Execute Workflow first so you can see errors before they run unattended.

    Q&A

    Is n8n free?

    Self-hosting n8n is free under its fair-code license, with no cap on workflows or executions. n8n Cloud is a separate, paid hosted option if you’d rather not manage the server yourself.

    Do I need to know how to code?

    No. Most workflows are built by connecting nodes visually. Code only comes in if you use the optional Code node for custom logic.

    Can I just have the agent install it for me?

    Yes — that’s what the copy-paste prompt above is for. Claude Code can run Docker and curl commands directly, so it can install n8n and re-check the container status itself.

    Where is my data stored?

    Locally, in the ./n8n folder created by the setup script (backed by a Docker volume). Nothing leaves your machine unless a node explicitly calls an external API.

    Can I move to n8n Cloud later?

    Yes — workflows can be exported and imported, so switching between self-hosted and Cloud later doesn’t mean starting over.

    Official Resources

  • 10 ChatGPT Photo Editing Prompts That Won’t Wreck the Face

    10 ChatGPT Photo Editing Prompts That Won’t Wreck the Face

    Last Verified: September 2026 — Quick-scan cheat sheet: copy a prompt, fill the brackets, go

    Type “fix this photo” into ChatGPT and you’ll often get a face that looks airbrushed into someone else. That’s a missing instruction, not a limit of the model. Anything you don’t explicitly protect is fair game, skin included. Every prompt below has two parts: what to change, and what to leave alone.

    TL;DR

    • Upload the photo first, then paste the prompt that matches your edit.
    • Every prompt ends with a “keep unchanged” clause. Don’t delete it.
    • If something drifts, name the drift in your next message instead of rewriting the whole prompt.

    Cheat Sheet at a Glance

    EditPrompt #
    Everyday retouch1
    Remove an object or person2
    Swap the background3
    Sharpen a blurry shot4
    Change the outfit5
    Expand the canvas6
    Change time of day7
    Open closed eyes8
    Smooth wrinkled clothing9
    Color grade10

    The Prompts

    1. Professional retouch

    Use it for: Portraits that need cleanup, not a makeover.

    Retouch this photo professionally: even out skin tone, reduce blemishes, sharpen focus, and balance lighting and color. Do not change the person's face shape, features, proportions, hairstyle, or expression. Keep the result looking like a real, unedited photo of the same person.

    2. Remove an unwanted object or person

    Use it for: Photobombers and clutter.

    Remove [describe the object or person] from this photo and rebuild what's behind it. Match the existing lighting, shadows, texture, and perspective. Leave everything else unchanged.

    3. Swap the background

    Use it for: New setting without a reshoot.

    Replace the background with [describe the new background] and keep the subject exactly as they are: same pose, face, hair, clothing, and proportions. Adjust the lighting on the subject so they look photographed in the new setting.

    4. Sharpen without losing realism

    Use it for: Blurry or poorly lit shots.

    Sharpen and clean up this photo: reduce blur and correct exposure while keeping the composition, subject, and every detail exactly as they are. Avoid any over-processed look.

    5. Change the outfit

    Use it for: Trying a different look.

    Change the outfit to [describe the new outfit], fitted naturally to the body. Keep the person's face, hair, pose, hands, skin tone, and background unchanged.

    6. Expand the canvas

    Use it for: Tight crop to wider shot.

    Extend this photo to a [aspect ratio] canvas by continuing the existing background naturally in every direction. Do not alter anything currently inside the frame.

    7. Shift the time of day

    Use it for: Flat afternoon to golden hour.

    Change the lighting in this photo from [current time of day] to [golden hour / blue hour / night], adjusting the sky, shadows, and color temperature to match, without changing the subject or composition.

    8. Open closed or squinting eyes

    Use it for: The one blink in a group shot.

    Fix the person's closed or squinting eyes so they appear naturally open, matching their gaze direction and expression. Keep every other part of the face and photo unchanged.

    9. Smooth wrinkled clothing

    Use it for: Creased shirts in a good shot.

    Smooth the wrinkles and creases in the clothing while keeping the fabric's texture, fit, and natural folds. Leave the rest of the photo untouched.

    10. Apply a cinematic color grade

    Use it for: A finished, intentional look.

    Apply a cinematic color grade: balance highlights and shadows, and adjust contrast and saturation for a polished, consistent tone. Keep skin tones natural and leave the subject and composition unchanged.

    Common Mistakes to Avoid

    • Dropping the “keep unchanged” half. That’s what causes faces to drift and skin to over-smooth.
    • Rewriting the whole prompt after a bad result. Name the specific problem: “skin looks too smooth, keep natural texture”.
    • Editing photos of other people without consent. Get permission before editing and sharing someone else’s image.

    Q&A

    Does this work on ChatGPT Free?

    Yes, with limits. OpenAI’s pricing page lists limited and slower image generation on Free, with more on paid plans.

    Why does the face still change a little?

    The edit regenerates the image, so small changes can happen. Compare side by side and name what drifted in a follow-up.

    Related Guides

  • 6 Prompts to Stop AI Writing From Sounding Robotic (Structure Fixes, Not Word Swaps)

    6 Prompts to Stop AI Writing From Sounding Robotic (Structure Fixes, Not Word Swaps)

    Last Verified: September 2026 — Quick-scan cheat sheet: copy a prompt, fill the brackets, go

    AI writing usually gets called out for rhythm and structure, not word choice: the same three-part lists, the hedge-then-hedge-again sentences, the tidy “in conclusion” wrap-up. Swapping a few words doesn’t fix that. These prompts target the structure.

    TL;DR

    • Run these as edits on a draft you already have, one or two at a time.
    • Prompt 5 (voice sample) has the biggest effect. Feed it something you actually wrote.
    • Finish with the read-aloud test (Prompt 6).

    Cheat Sheet at a Glance

    TellWhat it looks likePrompt
    List-itisEverything in bullets or threes#1
    Fence-sitting“On one hand… on the other”#2
    Flat rhythmEvery sentence the same length#3
    Throat-clearing“In today’s fast-paced world…”#4
    No voiceCould be anyone’s writing#5

    The Prompts

    1. Ban the list-itis

    Rewrite this as flowing paragraphs, not bullet points or numbered lists, unless a list is genuinely the clearest way to present it. Avoid grouping things in threes: [paste text]

    2. Force one clear position

    Take a clear position on this instead of presenting both sides equally. State your recommendation in the first sentence, then give the strongest reason: [paste topic or draft]

    3. Vary sentence length on purpose

    Rewrite this so sentence length varies noticeably. Mix short, punchy sentences with longer ones. No more than two sentences in a row of similar length: [paste text]

    4. Cut the throat-clearing opener

    Delete any opening sentence that doesn't contain new information. Start with the actual point. Also remove any closing sentence that only restates what was already said: [paste text]

    5. Feed it your real voice

    Here's a sample of how I actually write: [paste 200+ words of your own writing]. Match its tone, sentence rhythm, and vocabulary level when you rewrite the following: [paste text]

    Why it works: A real sample beats any adjective like “conversational”.

    6. Run the read-aloud test

    Flag any sentence in this that a real person wouldn't naturally say out loud, and rewrite just those. Leave the rest untouched: [paste text]

    Common Mistakes to Avoid

    • Asking it to “sound more human”. Too vague. Name the specific tell you want removed.
    • Running all six at once. Stacking every instruction produces a new kind of sameness. Apply them in passes.

    Q&A

    Will this get past AI detectors?

    That’s not the goal, and detectors are unreliable. The goal is writing that reads well to people.

    Which model is best at this?

    Results vary by model and draft. Prompt 5 matters more than the model.

    Related Guides

  • Turn Any Tutorial Video Into a Step-by-Step AI Checklist (4-Prompt Workflow)

    Turn Any Tutorial Video Into a Step-by-Step AI Checklist (4-Prompt Workflow)

    Last Verified: September 2026 — Quick-scan cheat sheet: copy a prompt, fill the brackets, go

    You watch a 20-minute tutorial, nod along, and five minutes later can’t remember the order of the steps. Rewatching isn’t the fix. Turning the transcript into a checklist once is. This is a four-prompt chain: extract, sharpen, add failure points, and make it reusable.

    TL;DR

    • On YouTube (desktop): expand the video description, click Show transcript, and copy the text.
    • Run the four prompts below in order, in the same chat.
    • Works with ChatGPT, Claude, or Gemini. No video upload needed.

    Cheat Sheet at a Glance

    StepWhat it doesTime
    Get the transcriptCopies the spoken text1 min
    Prompt 1: extractPulls only actionable steps, in order30 sec
    Prompt 2: sharpenRewrites vague steps as precise ones30 sec
    Prompt 3: failure pointsAdds likely mistakes per stage30 sec
    Prompt 4: templateReplaces specific values with blanks30 sec

    The Prompts

    Prompt 1: Extract the actionable steps

    Use it for: Right after pasting the transcript.

    Here is a transcript of a tutorial: [paste transcript]. Extract only the actionable steps in the exact order they should be performed, numbered, one sentence each. Skip explanations, tangents, and sponsor segments.

    Prompt 2: Make vague steps precise

    Use it for: When steps say things like “configure the settings”.

    Some of these steps are vague. Rewrite each one to be specific enough that someone with no prior context could follow it exactly. If the transcript doesn't say, write [not specified in video] instead of guessing.

    Why it works: The “not specified” rule keeps the AI from inventing settings the video never mentioned.

    Prompt 3: Add what could go wrong

    Use it for: Before you actually do the task.

    For this checklist, add a short section after each stage listing the most likely mistake someone would make and how to catch it.

    Prompt 4: Turn it into a reusable template

    Use it for: For workflows you’ll repeat.

    Make a version of this checklist with blanks in place of the specific values used in the video (names, numbers, file paths), so I can reuse it next time with different inputs.

    Common Mistakes to Avoid

    • Trusting auto-generated captions blindly. Auto captions mishear product names and numbers. Spot-check the steps that include them.
    • Skipping Prompt 2. The extracted steps often read fine until you’re mid-task. Sharpen them before you need them.

    Q&A

    What if the video has no transcript?

    Show transcript only appears when the video has captions. Without captions, you’ll need a separate transcription tool first.

    Can I just paste the video link?

    Some assistants can read YouTube links, but results vary. Pasting the transcript works everywhere and lets you check what the AI saw.

    Related Guides

  • Midjourney Prompt Formulas for Consistent Brand Visuals (V8 Reference)

    Midjourney Prompt Formulas for Consistent Brand Visuals (V8 Reference)

    Last Verified: September 2026 — Quick-scan cheat sheet: copy a prompt, fill the brackets, go

    If every image for the same brand looks like it came from a different artist, that’s a prompt-structure problem, not bad luck. Consistency comes from locking the parts of the prompt that shouldn’t change. This is the advanced reference. New to Midjourney? Start with the beginner cheat sheet.

    TL;DR

    • Lock a style suffix and reuse it word for word.
    • Use --sref with an approved image to match style; tune strength with --sw.
    • For the same person or product across images in V8.x, use the Edit Model (--edit). It replaced Omni Reference (--oref), and the old --cref belongs to older models.

    Cheat Sheet at a Glance

    GoalToolSyntax
    Same look across a setLocked style suffix…, [suffix] –ar 4:5 –raw
    Match an approved image’s styleStyle Reference–sref [image URL] –sw [weight]
    Same subject in new scenes (V8.x)Edit Model–edit with up to 4 reference images
    Your house aestheticPersonalization–p [profile]
    Test one change at a timeSeed–seed 12345

    The Prompts

    1. Build a reusable style suffix

    Use it for: The base of every prompt in the set.

    [your subject description], soft studio lighting, muted earth-tone palette, shot on 50mm lens, shallow depth of field, minimalist composition --ar 4:5 --raw

    Why it works: Keep everything after the subject identical. That’s what creates the same-photographer feel.

    2. Match an approved image with –sref

    Use it for: Once you have one image you love.

    [new subject description], [your style suffix] --sref [URL of approved image] --sw 200

    Why it works: –sref matches style (color, texture, mood), not the exact subject. Raise or lower –sw to change how strongly it applies.

    3. Keep the same subject with the Edit Model

    Use it for: Recurring product, mascot, or person in V8.x.

    Place this product on a marble kitchen counter in morning window light, keep the label and shape exactly the same --edit

    Why it works: Midjourney’s docs say Omni Reference was replaced by the Edit Model in V8.x. Attach up to four reference images and describe the change in plain language.

    4. Test variations with a fixed seed

    Use it for: Comparing one wording change.

    [your prompt] --seed 12345

    Why it works: Same seed plus a small edit gives comparable results, so you can see what the edit actually changed.

    Common Mistakes to Avoid

    • Swapping synonyms between generations. “Soft light” one time and “diffused light” the next is enough to break consistency. Reuse exact wording.
    • Following old tutorials that use –cref. It targets older models. In V8.x, use –edit for subjects and –sref for style.
    • Rebuilding parameters from memory. Save the working suffix and parameter block in a note and paste it.

    Q&A

    Which version am I on?

    New prompts use the current default model unless you add –v. Check your settings, or add –v explicitly to lock a version for a whole set.

    –sref or –edit?

    –sref for “make it look like this”; –edit for “use this exact thing”.

    Related Guides

    Official Resources

  • Gemini Prompts for Gmail, Docs, and Sheets: A Beginner’s Starter Kit

    Gemini Prompts for Gmail, Docs, and Sheets: A Beginner’s Starter Kit

    Last Verified: September 2026 — Quick-scan cheat sheet: copy a prompt, fill the brackets, go

    Gemini now sits inside Gmail, Docs, and Sheets for a lot of people, but most only ever click the default suggestion. The side panel will do a lot more if you give it a specific job. These prompts are written for the Gemini side panel, where it can already see the email or document you have open.

    TL;DR

    • Open the Gemini side panel in the app you’re using, then paste the prompt. It already sees the open email or doc.
    • Which features you get depends on your plan. Google AI Pro includes Gemini in Gmail, Docs, and Sheets; AI Plus includes proofreading in Gmail.
    • Work and school accounts get Gemini through their Workspace edition, if the admin has turned it on.

    Cheat Sheet at a Glance

    AppBest job for GeminiPrompt below
    GmailSummarize threads, draft replies#1, #2
    DocsFirst drafts from outlines, tightening#3, #4
    SheetsCleaning messy columns, formulas#5, #6
    SlidesOutlines from notes#7

    The Prompts

    1. Gmail: summarize a thread before replying

    Use it for: Long threads you were cc’d into.

    Summarize this email thread in 3 bullets: what's being asked, what's already been agreed, and what's still open. Then draft a reply that addresses only the open item.

    2. Gmail: reply in the thread’s tone

    Use it for: Replies to people with a set style.

    Match the tone and formality of this email thread. Draft a reply that confirms [detail] and asks about [detail], in 4 sentences or fewer.

    3. Docs: outline to first draft

    Use it for: Turning bullets into prose.

    Here's my outline: [paste bullets]. Expand it into a full first draft, keeping each section under 150 words, in a [formal / casual] tone. Don't add sections that aren't in the outline.

    Why it works: “Don’t add sections” stops Gemini padding the draft with a generic intro and conclusion.

    4. Docs: tighten what you wrote

    Use it for: Editing your own draft.

    Cut this document by about 30% without removing any facts, numbers, or decisions. Flag any sentence you weren't sure about cutting.

    5. Sheets: standardize a messy column

    Use it for: Imported or hand-typed data.

    Column [letter] has inconsistent formatting: mixed date formats, extra spaces, inconsistent capitalization. Standardize it to [format] and flag any rows that look like errors instead of guessing.

    6. Sheets: get a formula explained

    Use it for: Inherited spreadsheets.

    Write a formula for column [letter] that [what it should calculate]. Then explain in one sentence what each part does, so I can adjust it later.

    7. Slides: notes to deck outline

    Use it for: After a meeting or brainstorm.

    Turn these notes into a 6-slide outline: one title per slide, 3 bullet points max per slide, ordered so the conclusion comes last: [paste notes]

    Common Mistakes to Avoid

    • Clicking the default suggestion only. The generic “help me write” gives generic results. Give it a specific job.
    • Assuming every feature is on your plan. Features roll out by plan and region. If a button is missing, check your plan before troubleshooting.
    • Letting it guess on data. In Sheets, ask it to flag questionable rows instead of silently “fixing” them.

    Q&A

    Which plan do I need?

    Google’s plans page (September 2026) lists Gemini proofreading in Gmail on AI Plus ($4.99/month), and Gemini in Gmail, Docs, and Sheets on AI Pro ($19.99/month) and AI Ultra (from $99.99/month). Workspace business editions include it depending on the edition.

    Does Gemini see my whole Drive?

    In the side panel it works with the file or email you have open, and can pull from other files when you reference them. Check your admin’s settings on a work account.

    Related Guides

    Official Resources