SpyBara
Go Premium

quickstart.md 2026-04-13 21:14 UTC to 2026-04-14 21:14 UTC

1 added, 11 removed.

2026
Wed 29 21:21 Tue 28 21:21 Mon 27 21:20 Sun 26 04:08 Sat 25 21:10 Fri 24 18:11 Thu 23 18:19 Wed 22 21:15 Tue 21 21:14 Mon 20 21:14 Sat 18 18:09 Fri 17 21:13 Thu 16 21:13 Wed 15 18:20 Tue 14 21:14 Mon 13 21:14 Sat 11 00:11 Fri 10 21:09 Thu 9 21:14 Wed 8 21:13 Tue 7 21:14 Sat 4 18:05 Fri 3 21:07 Thu 2 21:08 Wed 1 21:12

Quickstart

Welcome to Claude Code!

export const InstallConfigurator = () => { const TERM = { mac: { label: 'macOS / Linux', cmd: 'curl -fsSL https://claude.ai/install.sh | bash' }, win: { label: 'Windows' }, brew: { label: 'Homebrew', cmd: 'brew install --cask claude-code' }, winget: { label: 'WinGet', cmd: 'winget install Anthropic.ClaudeCode' } }; const WIN_VARIANTS = { ps: 'irm https://claude.ai/install.ps1 | iex', cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd' }; const TABS = [{ key: 'terminal', label: 'Terminal' }, { key: 'desktop', label: 'Desktop' }, { key: 'vscode', label: 'VS Code' }, { key: 'jetbrains', label: 'JetBrains' }]; const ALT_TARGETS = { desktop: { name: 'Desktop', installLabel: 'Download the app', installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download', guideHref: '/en/desktop-quickstart' }, vscode: { name: 'VS Code', installLabel: 'Install from Marketplace', installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code', altCmd: 'code --install-extension anthropic.claude-code', guideHref: '/en/vs-code' }, jetbrains: { name: 'JetBrains', installLabel: 'Install from Marketplace', installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-', guideHref: '/en/jetbrains' } }; const PROVIDERS = [{ key: 'anthropic', label: 'Anthropic' }, { key: 'bedrock', label: 'Amazon Bedrock' }, { key: 'foundry', label: 'Microsoft Foundry' }, { key: 'vertex', label: 'Google Vertex AI' }]; const PROVIDER_NOTICE = { bedrock: <> Configure your AWS account first. Running on Bedrock requires model access enabled in the AWS console and IAM credentials.{' '} Bedrock setup guide → </>, vertex: <> Configure your GCP project first. Running on Vertex AI requires the Vertex API enabled and a service account with the right permissions.{' '} Vertex setup guide → </>, foundry: <> Configure your Azure resources first. Running on Microsoft Foundry requires an Azure subscription with a Foundry resource and model deployments provisioned.{' '} Foundry setup guide → </> }; const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"> ; const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"> ; const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"> ; const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"> ; const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"> ; const [target, setTarget] = useState('terminal'); const [team, setTeam] = useState(false); const [provider, setProvider] = useState('anthropic'); const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac'); const [winCmd, setWinCmd] = useState(false); const [copied, setCopied] = useState(null); const copyTimer = useRef(null); const handleCopy = async (text, key) => { try { await navigator.clipboard.writeText(text); } catch { const ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); } clearTimeout(copyTimer.current); setCopied(key); copyTimer.current = setTimeout(() => setCopied(null), 1800); }; const cardBodyCmd = (cmd, prompt) => { const on = copied === 'term'; return <div className="cc-ic-card-body"> <span className="cc-ic-prompt">{prompt || '$'} <div className="cc-ic-cmd">{cmd}

<button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}> {on ? iconCheck(13) : iconCopy(13)} {on ? 'Copied' : 'Copy'}
; }; const isWinInstaller = pkg === 'win'; const isWinPrompt = pkg === 'win' || pkg === 'winget'; const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd; const alt = ALT_TARGETS[target]; const showNotice = team && provider !== 'anthropic'; const STYLES = ` .cc-ic { --ic-slate: #141413; --ic-clay: #d97757; --ic-clay-deep: #c6613f; --ic-gray-000: #ffffff; --ic-gray-150: #f0eee6; --ic-gray-550: #73726c; --ic-gray-700: #3d3d3a; --ic-border-subtle: rgba(31, 30, 29, 0.08); --ic-border-default: rgba(31, 30, 29, 0.15); --ic-border-strong: rgba(31, 30, 29, 0.3); --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace; font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 14px; line-height: 1.5; color: var(--ic-slate); margin: 8px 0 32px; } .dark .cc-ic { --ic-slate: #f0eee6; --ic-gray-000: #262624; --ic-gray-150: #1f1e1d; --ic-gray-550: #91908a; --ic-gray-700: #bfbdb4; --ic-border-subtle: rgba(240, 238, 230, 0.08); --ic-border-default: rgba(240, 238, 230, 0.14); --ic-border-strong: rgba(240, 238, 230, 0.28); } .dark .cc-ic-check { background: transparent; } .dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); } .dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; } .cc-ic a { text-decoration: none; } .cc-ic a:not([class]) { color: inherit; } .cc-ic button { font-family: inherit; cursor: pointer; }

.cc-ic-tab-strip { display: inline-flex; gap: 2px; padding: 4px; background: var(--ic-gray-150); border-radius: 10px; overflow-x: auto; max-width: 100%; } .cc-ic-tab { appearance: none; background: none; border: none; padding: 10px 18px; font-size: 15px; font-weight: 430; color: var(--ic-gray-550); border-radius: 7px; white-space: nowrap; transition: color 0.12s, background-color 0.12s; } .cc-ic-tab:hover { color: var(--ic-gray-700); } .cc-ic-tab.cc-ic-active { color: var(--ic-slate); font-weight: 500; background: var(--ic-gray-000); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } .dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

.cc-ic-team-wrap { padding: 16px 0 20px; } .cc-ic-team-toggle { display: flex; align-items: center; gap: 12px; font-family: inherit; padding: 12px 16px; font-size: 14px; font-weight: 430; color: var(--ic-gray-700); cursor: pointer; user-select: none; width: fit-content; background: var(--ic-gray-150); border: 0.5px solid var(--ic-border-subtle); border-radius: 8px; transition: border-color 0.15s; } .cc-ic-team-toggle:hover { border-color: var(--ic-border-default); } .cc-ic-team-toggle.cc-ic-checked { background: rgba(217, 119, 87, 0.08); border-color: rgba(217, 119, 87, 0.25); } .cc-ic-check { width: 16px; height: 16px; border: 1px solid var(--ic-border-strong); border-radius: 4px; background: var(--ic-gray-000); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .cc-ic-check svg { color: #fff; display: none; } .cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); } .cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; } .cc-ic-sales { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default); border-radius: 8px; flex-wrap: wrap; } .cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; } .cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); } .cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } .cc-ic-btn-clay { display: inline-flex; align-items: center; gap: 8px; background: var(--ic-clay-deep); color: #fff; border: none; border-radius: 8px; padding: 8px 14px; font-size: 13px; font-weight: 500; transition: background-color 0.15s; white-space: nowrap; } .cc-ic-btn-clay:hover { background: var(--ic-clay); } .cc-ic-btn-ghost { display: inline-flex; align-items: center; gap: 8px; background: transparent; color: var(--ic-gray-700); border: 0.5px solid var(--ic-border-default); border-radius: 8px; padding: 8px 14px; font-size: 13px; font-weight: 500; } .cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

.cc-ic-provider-bar { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: var(--ic-gray-150); border-radius: 8px; font-size: 13px; flex-wrap: wrap; } .cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; } .cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; } .cc-ic-p-pill { appearance: none; border: none; background: transparent; padding: 6px 12px; border-radius: 6px; font-size: 13px; font-weight: 430; color: var(--ic-gray-700); white-space: nowrap; } .cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); } .cc-ic-p-pill.cc-ic-active { background: var(--ic-gray-000); color: var(--ic-slate); font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .cc-ic-provider-notice { display: flex; padding: 16px 18px; background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default); border-radius: 8px; gap: 14px; align-items: flex-start; } .cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; } .cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); } .cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); } .cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; } .cc-ic-provider-notice-body a:hover { text-decoration: underline; }

.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; } .cc-ic-subtabs { display: flex; align-items: center; background: #1a1918; border-bottom: 0.5px solid rgba(255, 255, 255, 0.08); padding: 0 8px; overflow-x: auto; } .cc-ic-subtab-spacer { flex: 1; } .cc-ic-subtab { appearance: none; background: none; border: none; padding: 12px 16px; font-size: 12px; color: rgba(255, 255, 255, 0.5); position: relative; white-space: nowrap; } .cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); } .cc-ic-subtab.cc-ic-active { color: #fff; } .cc-ic-subtab.cc-ic-active::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: -0.5px; height: 2px; background: var(--ic-clay); } .cc-ic-cmd-toggle { display: flex; align-items: center; gap: 8px; font-family: inherit; background: none; border: none; padding: 0 12px; font-size: 11px; color: rgba(255, 255, 255, 0.5); cursor: pointer; user-select: none; white-space: nowrap; } .cc-ic-cmd-toggle:hover { color: rgba(255, 255, 255, 0.75); } .cc-ic-mini-check { width: 12px; height: 12px; border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 3px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .cc-ic-mini-check svg { color: #fff; display: none; } .cc-ic-cmd-toggle.cc-ic-checked .cc-ic-mini-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); } .cc-ic-cmd-toggle.cc-ic-checked .cc-ic-mini-check svg { display: block; }

.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; } .cc-ic-prompt { color: var(--ic-clay); font-family: var(--ic-font-mono); font-size: 17px; user-select: none; padding-top: 2px; } .cc-ic-cmd { flex: 1; font-family: var(--ic-font-mono); font-size: 17px; color: #f0eee6; line-height: 1.55; white-space: pre-wrap; word-break: break-word; } .cc-ic-copy { display: inline-flex; align-items: center; gap: 6px; background: rgba(255, 255, 255, 0.08); border: 0.5px solid rgba(255, 255, 255, 0.12); color: rgba(255, 255, 255, 0.85); padding: 7px 13px; border-radius: 8px; font-size: 13px; font-weight: 500; flex-shrink: 0; } .cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); } .cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

.cc-ic-below { margin-top: 12px; font-size: 13px; color: var(--ic-gray-550); display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline; } .cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); } .cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); } .cc-ic-handoff { padding: 20px 22px; background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default); border-radius: 12px; } .cc-ic-handoff-head { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); margin-bottom: 14px; } .cc-ic-handoff-head strong { font-weight: 550; color: var(--ic-slate); } .cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; } .cc-ic-handoff-alt { margin-top: 12px; font-size: 12px; color: var(--ic-gray-550); } .cc-ic-handoff-alt code { font-family: var(--ic-font-mono); font-size: 11px; background: var(--ic-gray-150); padding: 2px 6px; border-radius: 4px; color: var(--ic-gray-700); } .cc-ic-copy-sm { appearance: none; border: none; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-left: 4px; vertical-align: middle; background: var(--ic-gray-150); color: var(--ic-gray-550); border-radius: 4px; transition: color 0.1s, background-color 0.1s; } .cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); } .cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

@media (max-width: 720px) { .cc-ic-tab { padding: 12px 14px; font-size: 14px; } .cc-ic-sales-actions { width: 100%; } .cc-ic-card-body { padding: 20px; } .cc-ic-cmd { font-size: 15px; } } `; return <div className="cc-ic not-prose">

  {}
  <div className="cc-ic-tab-strip" role="tablist">
    {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>
        {t.label}
      </button>)}
  </div>

  {}
  <div className="cc-ic-team-wrap">
    <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>
      <span className="cc-ic-check">{iconCheck(11)}</span>
      <span>
        I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)
      </span>
    </button>
  </div>

  {}
  {team && <div className="cc-ic-team-reveal">
      <div className="cc-ic-sales">
        <div className="cc-ic-sales-text">
          <strong>Set up your team:</strong> self-serve or talk to sales.
        </div>
        <div className="cc-ic-sales-actions">
          <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">
            Get started
          </a>
          <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">
            Contact sales {iconArrowRight()}
          </a>
        </div>
      </div>

      <div className="cc-ic-provider-bar">
        <span className="cc-ic-label">Run on</span>
        <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">
          {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>
              {p.label}
            </button>)}
        </div>
      </div>

      {showNotice && <div className="cc-ic-provider-notice">
          {iconInfo()}
          <div className="cc-ic-provider-notice-body">
            {PROVIDER_NOTICE[provider]}
          </div>
        </div>}
    </div>}

  {}
  {target === 'terminal' && <div className="cc-ic-card">
      <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">
        {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>
            {TERM[k].label}
          </button>)}
        <span className="cc-ic-subtab-spacer" />
        {isWinInstaller && <button type="button" role="switch" aria-checked={winCmd} className={'cc-ic-cmd-toggle' + (winCmd ? ' cc-ic-checked' : '')} onClick={() => setWinCmd(!winCmd)}>
            <span className="cc-ic-mini-check">{iconCheck(9)}</span>
            <span>CMD instead of PowerShell</span>
          </button>}
      </div>
      {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}
    </div>}

  {}
  {target === 'terminal' && <div className="cc-ic-below">
      {isWinInstaller && <span>
          Requires{' '}
          <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">
            Git for Windows
          </a>.
        </span>}
      {(pkg === 'brew' || pkg === 'winget') && <span>
          Does not auto-update. Run{' '}
          <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}
          periodically.
        </span>}
      <a href="/anthropic/claude-code/history/docs/en/2026-04-13-2114..2026-04-14-2114/troubleshooting/">Troubleshooting</a>
    </div>}

  {alt && <div className="cc-ic-handoff">
      <div className="cc-ic-handoff-head">
        <strong>The steps below use the command line.</strong>{' '}
        Prefer {alt.name}? Install here, then follow the {alt.name} guide instead.
      </div>
      <div className="cc-ic-handoff-actions">
        <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {
target: '_blank',
rel: 'noopener'

} : {}}> {alt.installLabel} {iconArrowUpRight(13)} <a href={alt.guideHref} className="cc-ic-btn-ghost"> {alt.name} guide {iconArrowRight(12)}

{alt.altCmd && <div className="cc-ic-handoff-alt"> or run {alt.altCmd} <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command"> {copied === 'alt' ? iconCheck(11) : iconCopy(11)} } } ; };

export const Experiment = ({flag, treatment, children}) => { const VID_KEY = 'exp_vid'; const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']); const fnv1a = s => { let h = 0x811c9dc5; for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24); } return h >>> 0; }; const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment'; const [decision] = useState(() => { const params = new URLSearchParams(location.search); const force = params.get('gb-force'); if (force) { for (const p of force.split(',')) { const [k, v] = p.split(':'); if (k === flag) return { variant: v || 'treatment', track: false }; } } if (navigator.globalPrivacyControl) { return { variant: 'control', track: false }; } const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/); if (prefsMatch) { try { if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) { return { variant: 'control', track: false }; } } catch { return { variant: 'control', track: false }; } } else { const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1]; if (!country || CONSENT_COUNTRIES.has(country)) { return { variant: 'control', track: false }; } } let vid; try { const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/); if (ajsMatch) { vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, ''); } else { vid = localStorage.getItem(VID_KEY); if (!vid) { vid = crypto.randomUUID(); } document.cookie = ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000; } try { localStorage.setItem(VID_KEY, vid); } catch {} } catch { return { variant: 'control', track: false }; } return { variant: bucket(flag, vid), track: true, vid }; }); useEffect(() => { if (!decision.track) return; fetch('https://api.anthropic.com/api/event_logging/v2/batch', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-service-name': 'claude_code_docs' }, body: JSON.stringify({ events: [{ event_type: 'GrowthbookExperimentEvent', event_data: { device_id: decision.vid, anonymous_id: decision.vid, timestamp: new Date().toISOString(), experiment_id: flag, variation_id: decision.variant === 'treatment' ? 1 : 0, environment: 'production' } }] }), keepalive: true }).catch(() => {}); }, []); return decision.variant === 'treatment' ? treatment : children; };

This quickstart guide will have you using AI-powered coding assistance in a few minutes. By the end, you'll understand how to use Claude Code for common development tasks.

<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

Before you begin

Make sure you have:

Step 1: Install Claude Code

To install Claude Code, use one of the following methods:

macOS, Linux, WSL:

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex

Windows CMD:

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

If you see The token '&&' is not a valid statement separator, you're in PowerShell, not CMD. Use the PowerShell command above instead. Your prompt shows PS C:\ when you're in PowerShell.

Native Windows setups require Git for Windows. Install it first if you don't have it. WSL setups do not need it.

Step 2: Log in to your account

Claude Code requires an account to use. When you start an interactive session with the claude command, you'll need to log in:

claude
# You'll be prompted to log in on first use
/login
# Follow the prompts to log in with your account

You can log in using any of these account types:

Once logged in, your credentials are stored and you won't need to log in again. To switch accounts later, use the /login command.

Step 3: Start your first session

Open your terminal in any project directory and start Claude Code:

cd /path/to/your/project
claude

You'll see the Claude Code welcome screen with your session information, recent conversations, and latest updates. Type /help for available commands or /resume to continue a previous conversation.

Step 4: Ask your first question

Let's start with understanding your codebase. Try one of these commands:

what does this project do?

Claude will analyze your files and provide a summary. You can also ask more specific questions:

what technologies does this project use?
where is the main entry point?
explain the folder structure

You can also ask Claude about its own capabilities:

what can Claude Code do?
how do I create custom skills in Claude Code?
can Claude Code work with Docker?

Step 5: Make your first code change

Now let's make Claude Code do some actual coding. Try a simple task:

add a hello world function to the main file

Claude Code will:

  1. Find the appropriate file
  2. Show you the proposed changes
  3. Ask for your approval
  4. Make the edit

Step 6: Use Git with Claude Code

Claude Code makes Git operations conversational:

what files have I changed?
commit my changes with a descriptive message

You can also prompt for more complex Git operations:

create a new branch called feature/quickstart
show me the last 5 commits
help me resolve merge conflicts

Step 7: Fix a bug or add a feature

Claude is proficient at debugging and feature implementation.

Describe what you want in natural language:

add input validation to the user registration form

Or fix existing issues:

there's a bug where users can submit empty forms - fix it

Claude Code will:

Step 8: Test out other common workflows

There are a number of ways to work with Claude:

Refactor code

refactor the authentication module to use async/await instead of callbacks

Write tests

write unit tests for the calculator functions

Update documentation

update the README with installation instructions

Code review

review my changes and suggest improvements

Essential commands

Here are the most important commands for daily use:

Command What it does Example
claude Start interactive mode claude
claude "task" Run a one-time task claude "fix the build error"
claude -p "query" Run one-off query, then exit claude -p "explain this function"
claude -c Continue most recent conversation in current directory claude -c
claude -r Resume a previous conversation claude -r
/clear Clear conversation history /clear
/help Show available commands /help
exit or Ctrl+D Exit Claude Code exit

See the CLI reference for a complete list of commands.

Pro tips for beginners

For more, see best practices and common workflows.

Instead of: "fix the bug"
Try: "fix the login bug where users see a blank screen after entering wrong credentials"
Use step-by-step instructions

Break complex tasks into steps:

1. create a new database table for user profiles
2. create an API endpoint to get and update user profiles
3. build a webpage that allows users to see and edit their information
Let Claude explore first

Before making changes, let Claude understand your code:

analyze the database schema
build a dashboard showing products that are most frequently returned by our UK customers
Save time with shortcuts
  • Press ? to see all available keyboard shortcuts
  • Use Tab for command completion
  • Press ↑ for command history
  • Type / to see all commands and skills

What's next?

Now that you've learned the basics, explore more advanced features:

microchip How Claude Code works

Understand the agentic loop, built-in tools, and how Claude Code interacts with your project

star Best practices

Get better results with effective prompting and project setup

graduation-cap Common workflows

Step-by-step guides for common tasks

puzzle-piece Extend Claude Code

Customize with CLAUDE.md, skills, hooks, MCP, and more

Getting help