[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-weights-and-biases-weave-install":3,"mdc-z7f5py-key":36,"related-repo-weights-and-biases-weave-install":1685,"related-org-weights-and-biases-weave-install":1716},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"weave-install","install and configure Weave observability","This skill should be used when the user wants to \"install the weave plugin\", \"set up weave\", \"install weave-claude-code\", \"configure weave for the first time\", \"get started with weave tracing\", or needs to complete the initial setup of the Weave Claude Code plugin including dependency installation and project configuration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"weights-and-biases","Weights & Biases","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fweights-and-biases.png","wandb",[13,17,20,22],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Configuration","configuration",{"name":9,"slug":21,"type":16},"weights-biases",{"name":23,"slug":24,"type":16},"Claude Code","claude-code",9,"https:\u002F\u002Fgithub.com\u002Fwandb\u002Fweave-claude-code","2026-07-17T06:06:35.660384",null,0,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Claude Code plugin that traces sessions, tool calls, and subagents to W&B Weave for observability and debugging.","https:\u002F\u002Fgithub.com\u002Fwandb\u002Fweave-claude-code\u002Ftree\u002FHEAD\u002Fskills\u002Fweave-install","---\nname: weave-install\ndescription: This skill should be used when the user wants to \"install the weave plugin\", \"set up weave\", \"install weave-claude-code\", \"configure weave for the first time\", \"get started with weave tracing\", or needs to complete the initial setup of the Weave Claude Code plugin including dependency installation and project configuration.\n---\n\n# Weave Claude Code Plugin — Install\n\nComplete the full installation and initial configuration of the Weave Claude Code plugin.\n\n## Step 0 — Detect prior install state\n\nBefore installing or upgrading, find out what's already on the system. Run these four checks in parallel:\n\n```bash\nwhich weave-claude-code\nwhich weave-claude-plugin\ntest -d ~\u002F.weave_claude_plugin && echo legacy_dir_present || echo legacy_dir_absent\njq -e '.[\"weave-claude-plugin\"]' ~\u002F.claude\u002Fplugins\u002Fknown_marketplaces.json 2>\u002Fdev\u002Fnull && echo legacy_marketplace_present || echo legacy_marketplace_absent\n```\n\nDecide based on the results:\n\n- **Nothing found** (no binary on PATH, no legacy dir, no legacy marketplace) → **Fresh install**. Continue with Step 1.\n- **`weave-claude-code` found, all legacy checks absent** → **Already installed or being upgraded**. Continue with Step 2 — re-running `install` is the path for both \"refresh after npm upgrade\" (drift detection fires automatically) and \"no-op idempotent re-validate.\" Skip Step 1.\n- **Any legacy artifact present** (`weave-claude-plugin` binary, `~\u002F.weave_claude_plugin\u002F`, or `weave-claude-plugin` in `known_marketplaces.json`) → **Cross-rename migration required**. Jump to \"Migrating from `weave-claude-plugin`\" below — it covers npm install + `install` itself — then come back to Step 3.\n\n## Step 1 — Install the CLI (fresh install only)\n\n```bash\nnpm install -g weave-claude-code\n```\n\nIf it fails with a permission error (EACCES on a system Node install), confirm with the user before retrying with `sudo npm install -g weave-claude-code`.\n\nVerify:\n```bash\nwhich weave-claude-code\n```\n\nDo not proceed until this prints a path.\n\n## Step 2 — Run install\n\n```bash\nweave-claude-code install\n```\n\nThis creates `~\u002F.weave-claude-code\u002Fsettings.json`, registers the marketplace in Claude Code, and installs the `weave` plugin at user scope.\n\nThe output will include one of:\n- `✓ Marketplace registered (vX.Y.Z)` — first time on this machine.\n- `✓ Marketplace already registered (vX.Y.Z)` — fully idempotent re-run.\n- `✓ Marketplace refreshed (vOLD → vNEW)` followed by `✓ Plugin updated — restart Claude Code to apply` — the binary was upgraded since last run; drift detection refreshed the pin and upgraded the loaded plugin.\n\nIf `--force` is needed (e.g., rebuilding a corrupted settings.json), run `weave-claude-code install --force`.\n\n## Step 3 — Configure Weave Project\n\nCheck if `weave_project` is already set:\n```bash\nweave-claude-code config get weave_project\n```\n\nIf it returns `(not set)`, ask the user for `entity\u002Fproject` and set it:\n```bash\nweave-claude-code config set weave_project ENTITY\u002FPROJECT\n```\n\n## Step 4 — Configure API Key\n\nCheck current state:\n```bash\nweave-claude-code config show\n```\n\nIf `wandb_api_key` shows `(not set)` and no `WANDB_API_KEY` env var is active, ask the user for their key (https:\u002F\u002Fwandb.ai\u002Fauthorize) and set it:\n```bash\nweave-claude-code config set wandb_api_key API_KEY\n```\n\n## Step 5 - (Optional) Custom Agent Name\n\nTraces appear under the agent name `claude-code` in Weave's Agents view by default. If the user wants a custom name (e.g. to distinguish teams or projects), set it:\n```bash\nweave-claude-code config set agent_name CUSTOM_NAME\n```\nSkip this step unless the user asks; the default is fine for most users.\n\n## Step 6 - Verify\n\n```bash\nweave-claude-code status\n```\n\nAll items should show `✓`. If anything shows `✗`, diagnose and fix before reporting success.\n\nOn success, tell the user Claude Code sessions will now be traced to their Weave project starting from the next session. If a `Plugin updated` or `Marketplace refreshed` line appeared in Step 2, remind them to run `\u002Freload-plugins` (or restart Claude Code) so the running session picks up the new code.\n\n---\n\n## Migrating from `weave-claude-plugin`\n\nThe package was renamed in #63 (v0.2.3). Users on v0.2.0–v0.2.2 installed the old `weave-claude-plugin` package and need a one-time migration. **Do this BEFORE running `weave-claude-code install`** — otherwise you end up with two `weave` plugins (`weave@weave-claude-plugin` and `weave@weave-claude-code`) firing hooks in parallel.\n\n### Step 1 — Capture the user's existing settings\n\nThe legacy `~\u002F.weave_claude_plugin\u002Fsettings.json` likely contains the user's configured `weave_project` and `wandb_api_key`. Capture them into shell variables so they survive the cleanup and can be re-applied to the new install.\n\nUse this exact pattern so the API key never appears in your tool output:\n\n```bash\nLEGACY_WEAVE_PROJECT=\"$(jq -r 'if .weave_project == null then \"\" else .weave_project end' ~\u002F.weave_claude_plugin\u002Fsettings.json 2>\u002Fdev\u002Fnull || echo \"\")\"\nLEGACY_WANDB_API_KEY=\"$(jq -r 'if .wandb_api_key == null then \"\" else .wandb_api_key end' ~\u002F.weave_claude_plugin\u002Fsettings.json 2>\u002Fdev\u002Fnull || echo \"\")\"\necho \"captured weave_project=${LEGACY_WEAVE_PROJECT:-\u003Cempty>}, wandb_api_key length=${#LEGACY_WANDB_API_KEY}\"\n```\n\nOnly the length of the API key is echoed — never the value itself.\n\nIf `~\u002F.weave_claude_plugin\u002Fsettings.json` doesn't exist, both variables stay empty and the rest of this section still applies.\n\n### Step 2 — Remove the legacy marketplace from Claude Code\n\n```bash\nclaude plugin marketplace remove weave-claude-plugin\n```\n\nThis is the **load-bearing step**. Claude Code couples plugins to their marketplace: removing the `weave-claude-plugin` marketplace also uninstalls the `weave@weave-claude-plugin` plugin. If the marketplace was already absent (the binary was installed via npm but `install` was never run), the CLI will print `No configured marketplace named \"weave-claude-plugin\"` — that's fine, continue.\n\n### Step 3 — Install the new package\n\n```bash\nnpm install -g weave-claude-code@latest\nwhich weave-claude-code\n```\n\nRetry with `sudo` if the install fails with EACCES — but only after confirming with the user.\n\n### Step 4 — Run the new install\n\nDo not use `--non-interactive` here unless the user explicitly asked for it; the install command is harmless to re-run, and TTY output is more informative.\n\n```bash\nweave-claude-code install\n```\n\nIf the prompts for `weave_project` \u002F `wandb_api_key` come up, skip them with blank input — Step 5 below re-applies the captured values without needing user retyping.\n\n### Step 5 — Re-apply the captured settings\n\nOnly set values that were actually captured (skip blanks):\n\n```bash\n[ -n \"$LEGACY_WEAVE_PROJECT\" ] && weave-claude-code config set weave_project \"$LEGACY_WEAVE_PROJECT\"\n[ -n \"$LEGACY_WANDB_API_KEY\" ] && weave-claude-code config set wandb_api_key \"$LEGACY_WANDB_API_KEY\"\n```\n\nThe shell substitution keeps the API key out of your tool transcript; `config set` itself only echoes the first four characters.\n\n### Step 6 — Remove the legacy config dir\n\n```bash\nrm -rf ~\u002F.weave_claude_plugin\n```\n\nDon't do this before Step 1 — the settings live in there.\n\n### Step 7 — Uninstall the legacy npm package\n\n```bash\nnpm uninstall -g weave-claude-plugin\n```\n\nIf this fails with EACCES, confirm with the user before retrying with `sudo`. If the user declines, that's fine — leaving the old binary on PATH is harmless once the marketplace and config dir are gone (the hooks no longer reference it). Note in your final report that they should remove it themselves when convenient.\n\n### Step 8 — Resume the main install flow\n\nThe migration is complete. Jump back to the main install flow above at **Step 3 (Configure Weave Project)** to validate that the carried-forward settings landed correctly, then proceed through the main flow's Steps 4 and 5.\n\nIn the main flow's Step 5 final report, mention that the user is now on `weave-claude-code` (rename from `weave-claude-plugin`) and remind them to run `\u002Freload-plugins` or restart Claude Code so the new plugin code is loaded.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,63,68,231,236,352,358,387,400,405,423,428,434,453,474,479,523,543,549,562,591,612,645,651,656,679,716,748,754,766,798,803,809,828,849,878,882,893,941,948,974,979,1188,1193,1204,1210,1244,1285,1291,1329,1342,1348,1361,1378,1397,1403,1408,1541,1554,1560,1585,1590,1596,1623,1635,1641,1653,1679],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"weave-claude-code-plugin-install",[47],{"type":48,"value":49},"text","Weave Claude Code Plugin — Install",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Complete the full installation and initial configuration of the Weave Claude Code plugin.",{"type":42,"tag":57,"props":58,"children":60},"h2",{"id":59},"step-0-detect-prior-install-state",[61],{"type":48,"value":62},"Step 0 — Detect prior install state",{"type":42,"tag":51,"props":64,"children":65},{},[66],{"type":48,"value":67},"Before installing or upgrading, find out what's already on the system. Run these four checks in parallel:",{"type":42,"tag":69,"props":70,"children":75},"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","which weave-claude-code\nwhich weave-claude-plugin\ntest -d ~\u002F.weave_claude_plugin && echo legacy_dir_present || echo legacy_dir_absent\njq -e '.[\"weave-claude-plugin\"]' ~\u002F.claude\u002Fplugins\u002Fknown_marketplaces.json 2>\u002Fdev\u002Fnull && echo legacy_marketplace_present || echo legacy_marketplace_absent\n","bash","",[76],{"type":42,"tag":77,"props":78,"children":79},"code",{"__ignoreMap":74},[80,98,111,160],{"type":42,"tag":81,"props":82,"children":85},"span",{"class":83,"line":84},"line",1,[86,92],{"type":42,"tag":81,"props":87,"children":89},{"style":88},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[90],{"type":48,"value":91},"which",{"type":42,"tag":81,"props":93,"children":95},{"style":94},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[96],{"type":48,"value":97}," weave-claude-code\n",{"type":42,"tag":81,"props":99,"children":101},{"class":83,"line":100},2,[102,106],{"type":42,"tag":81,"props":103,"children":104},{"style":88},[105],{"type":48,"value":91},{"type":42,"tag":81,"props":107,"children":108},{"style":94},[109],{"type":48,"value":110}," weave-claude-plugin\n",{"type":42,"tag":81,"props":112,"children":114},{"class":83,"line":113},3,[115,120,125,130,136,141,146,151,155],{"type":42,"tag":81,"props":116,"children":117},{"style":88},[118],{"type":48,"value":119},"test",{"type":42,"tag":81,"props":121,"children":122},{"style":94},[123],{"type":48,"value":124}," -d",{"type":42,"tag":81,"props":126,"children":127},{"style":94},[128],{"type":48,"value":129}," ~\u002F.weave_claude_plugin",{"type":42,"tag":81,"props":131,"children":133},{"style":132},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[134],{"type":48,"value":135}," &&",{"type":42,"tag":81,"props":137,"children":138},{"style":88},[139],{"type":48,"value":140}," echo",{"type":42,"tag":81,"props":142,"children":143},{"style":94},[144],{"type":48,"value":145}," legacy_dir_present",{"type":42,"tag":81,"props":147,"children":148},{"style":132},[149],{"type":48,"value":150}," ||",{"type":42,"tag":81,"props":152,"children":153},{"style":88},[154],{"type":48,"value":140},{"type":42,"tag":81,"props":156,"children":157},{"style":94},[158],{"type":48,"value":159}," legacy_dir_absent\n",{"type":42,"tag":81,"props":161,"children":163},{"class":83,"line":162},4,[164,170,175,180,185,190,195,200,205,209,213,218,222,226],{"type":42,"tag":81,"props":165,"children":167},{"style":166},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[168],{"type":48,"value":169},"jq",{"type":42,"tag":81,"props":171,"children":172},{"style":94},[173],{"type":48,"value":174}," -e",{"type":42,"tag":81,"props":176,"children":177},{"style":132},[178],{"type":48,"value":179}," '",{"type":42,"tag":81,"props":181,"children":182},{"style":94},[183],{"type":48,"value":184},".[\"weave-claude-plugin\"]",{"type":42,"tag":81,"props":186,"children":187},{"style":132},[188],{"type":48,"value":189},"'",{"type":42,"tag":81,"props":191,"children":192},{"style":94},[193],{"type":48,"value":194}," ~\u002F.claude\u002Fplugins\u002Fknown_marketplaces.json",{"type":42,"tag":81,"props":196,"children":197},{"style":132},[198],{"type":48,"value":199}," 2>",{"type":42,"tag":81,"props":201,"children":202},{"style":94},[203],{"type":48,"value":204},"\u002Fdev\u002Fnull",{"type":42,"tag":81,"props":206,"children":207},{"style":132},[208],{"type":48,"value":135},{"type":42,"tag":81,"props":210,"children":211},{"style":88},[212],{"type":48,"value":140},{"type":42,"tag":81,"props":214,"children":215},{"style":94},[216],{"type":48,"value":217}," legacy_marketplace_present",{"type":42,"tag":81,"props":219,"children":220},{"style":132},[221],{"type":48,"value":150},{"type":42,"tag":81,"props":223,"children":224},{"style":88},[225],{"type":48,"value":140},{"type":42,"tag":81,"props":227,"children":228},{"style":94},[229],{"type":48,"value":230}," legacy_marketplace_absent\n",{"type":42,"tag":51,"props":232,"children":233},{},[234],{"type":48,"value":235},"Decide based on the results:",{"type":42,"tag":237,"props":238,"children":239},"ul",{},[240,259,290],{"type":42,"tag":241,"props":242,"children":243},"li",{},[244,250,252,257],{"type":42,"tag":245,"props":246,"children":247},"strong",{},[248],{"type":48,"value":249},"Nothing found",{"type":48,"value":251}," (no binary on PATH, no legacy dir, no legacy marketplace) → ",{"type":42,"tag":245,"props":253,"children":254},{},[255],{"type":48,"value":256},"Fresh install",{"type":48,"value":258},". Continue with Step 1.",{"type":42,"tag":241,"props":260,"children":261},{},[262,273,275,280,282,288],{"type":42,"tag":245,"props":263,"children":264},{},[265,271],{"type":42,"tag":77,"props":266,"children":268},{"className":267},[],[269],{"type":48,"value":270},"weave-claude-code",{"type":48,"value":272}," found, all legacy checks absent",{"type":48,"value":274}," → ",{"type":42,"tag":245,"props":276,"children":277},{},[278],{"type":48,"value":279},"Already installed or being upgraded",{"type":48,"value":281},". Continue with Step 2 — re-running ",{"type":42,"tag":77,"props":283,"children":285},{"className":284},[],[286],{"type":48,"value":287},"install",{"type":48,"value":289}," is the path for both \"refresh after npm upgrade\" (drift detection fires automatically) and \"no-op idempotent re-validate.\" Skip Step 1.",{"type":42,"tag":241,"props":291,"children":292},{},[293,298,300,306,308,314,316,321,323,329,331,336,338,343,345,350],{"type":42,"tag":245,"props":294,"children":295},{},[296],{"type":48,"value":297},"Any legacy artifact present",{"type":48,"value":299}," (",{"type":42,"tag":77,"props":301,"children":303},{"className":302},[],[304],{"type":48,"value":305},"weave-claude-plugin",{"type":48,"value":307}," binary, ",{"type":42,"tag":77,"props":309,"children":311},{"className":310},[],[312],{"type":48,"value":313},"~\u002F.weave_claude_plugin\u002F",{"type":48,"value":315},", or ",{"type":42,"tag":77,"props":317,"children":319},{"className":318},[],[320],{"type":48,"value":305},{"type":48,"value":322}," in ",{"type":42,"tag":77,"props":324,"children":326},{"className":325},[],[327],{"type":48,"value":328},"known_marketplaces.json",{"type":48,"value":330},") → ",{"type":42,"tag":245,"props":332,"children":333},{},[334],{"type":48,"value":335},"Cross-rename migration required",{"type":48,"value":337},". Jump to \"Migrating from ",{"type":42,"tag":77,"props":339,"children":341},{"className":340},[],[342],{"type":48,"value":305},{"type":48,"value":344},"\" below — it covers npm install + ",{"type":42,"tag":77,"props":346,"children":348},{"className":347},[],[349],{"type":48,"value":287},{"type":48,"value":351}," itself — then come back to Step 3.",{"type":42,"tag":57,"props":353,"children":355},{"id":354},"step-1-install-the-cli-fresh-install-only",[356],{"type":48,"value":357},"Step 1 — Install the CLI (fresh install only)",{"type":42,"tag":69,"props":359,"children":361},{"className":71,"code":360,"language":73,"meta":74,"style":74},"npm install -g weave-claude-code\n",[362],{"type":42,"tag":77,"props":363,"children":364},{"__ignoreMap":74},[365],{"type":42,"tag":81,"props":366,"children":367},{"class":83,"line":84},[368,373,378,383],{"type":42,"tag":81,"props":369,"children":370},{"style":166},[371],{"type":48,"value":372},"npm",{"type":42,"tag":81,"props":374,"children":375},{"style":94},[376],{"type":48,"value":377}," install",{"type":42,"tag":81,"props":379,"children":380},{"style":94},[381],{"type":48,"value":382}," -g",{"type":42,"tag":81,"props":384,"children":385},{"style":94},[386],{"type":48,"value":97},{"type":42,"tag":51,"props":388,"children":389},{},[390,392,398],{"type":48,"value":391},"If it fails with a permission error (EACCES on a system Node install), confirm with the user before retrying with ",{"type":42,"tag":77,"props":393,"children":395},{"className":394},[],[396],{"type":48,"value":397},"sudo npm install -g weave-claude-code",{"type":48,"value":399},".",{"type":42,"tag":51,"props":401,"children":402},{},[403],{"type":48,"value":404},"Verify:",{"type":42,"tag":69,"props":406,"children":408},{"className":71,"code":407,"language":73,"meta":74,"style":74},"which weave-claude-code\n",[409],{"type":42,"tag":77,"props":410,"children":411},{"__ignoreMap":74},[412],{"type":42,"tag":81,"props":413,"children":414},{"class":83,"line":84},[415,419],{"type":42,"tag":81,"props":416,"children":417},{"style":88},[418],{"type":48,"value":91},{"type":42,"tag":81,"props":420,"children":421},{"style":94},[422],{"type":48,"value":97},{"type":42,"tag":51,"props":424,"children":425},{},[426],{"type":48,"value":427},"Do not proceed until this prints a path.",{"type":42,"tag":57,"props":429,"children":431},{"id":430},"step-2-run-install",[432],{"type":48,"value":433},"Step 2 — Run install",{"type":42,"tag":69,"props":435,"children":437},{"className":71,"code":436,"language":73,"meta":74,"style":74},"weave-claude-code install\n",[438],{"type":42,"tag":77,"props":439,"children":440},{"__ignoreMap":74},[441],{"type":42,"tag":81,"props":442,"children":443},{"class":83,"line":84},[444,448],{"type":42,"tag":81,"props":445,"children":446},{"style":166},[447],{"type":48,"value":270},{"type":42,"tag":81,"props":449,"children":450},{"style":94},[451],{"type":48,"value":452}," install\n",{"type":42,"tag":51,"props":454,"children":455},{},[456,458,464,466,472],{"type":48,"value":457},"This creates ",{"type":42,"tag":77,"props":459,"children":461},{"className":460},[],[462],{"type":48,"value":463},"~\u002F.weave-claude-code\u002Fsettings.json",{"type":48,"value":465},", registers the marketplace in Claude Code, and installs the ",{"type":42,"tag":77,"props":467,"children":469},{"className":468},[],[470],{"type":48,"value":471},"weave",{"type":48,"value":473}," plugin at user scope.",{"type":42,"tag":51,"props":475,"children":476},{},[477],{"type":48,"value":478},"The output will include one of:",{"type":42,"tag":237,"props":480,"children":481},{},[482,493,504],{"type":42,"tag":241,"props":483,"children":484},{},[485,491],{"type":42,"tag":77,"props":486,"children":488},{"className":487},[],[489],{"type":48,"value":490},"✓ Marketplace registered (vX.Y.Z)",{"type":48,"value":492}," — first time on this machine.",{"type":42,"tag":241,"props":494,"children":495},{},[496,502],{"type":42,"tag":77,"props":497,"children":499},{"className":498},[],[500],{"type":48,"value":501},"✓ Marketplace already registered (vX.Y.Z)",{"type":48,"value":503}," — fully idempotent re-run.",{"type":42,"tag":241,"props":505,"children":506},{},[507,513,515,521],{"type":42,"tag":77,"props":508,"children":510},{"className":509},[],[511],{"type":48,"value":512},"✓ Marketplace refreshed (vOLD → vNEW)",{"type":48,"value":514}," followed by ",{"type":42,"tag":77,"props":516,"children":518},{"className":517},[],[519],{"type":48,"value":520},"✓ Plugin updated — restart Claude Code to apply",{"type":48,"value":522}," — the binary was upgraded since last run; drift detection refreshed the pin and upgraded the loaded plugin.",{"type":42,"tag":51,"props":524,"children":525},{},[526,528,534,536,542],{"type":48,"value":527},"If ",{"type":42,"tag":77,"props":529,"children":531},{"className":530},[],[532],{"type":48,"value":533},"--force",{"type":48,"value":535}," is needed (e.g., rebuilding a corrupted settings.json), run ",{"type":42,"tag":77,"props":537,"children":539},{"className":538},[],[540],{"type":48,"value":541},"weave-claude-code install --force",{"type":48,"value":399},{"type":42,"tag":57,"props":544,"children":546},{"id":545},"step-3-configure-weave-project",[547],{"type":48,"value":548},"Step 3 — Configure Weave Project",{"type":42,"tag":51,"props":550,"children":551},{},[552,554,560],{"type":48,"value":553},"Check if ",{"type":42,"tag":77,"props":555,"children":557},{"className":556},[],[558],{"type":48,"value":559},"weave_project",{"type":48,"value":561}," is already set:",{"type":42,"tag":69,"props":563,"children":565},{"className":71,"code":564,"language":73,"meta":74,"style":74},"weave-claude-code config get weave_project\n",[566],{"type":42,"tag":77,"props":567,"children":568},{"__ignoreMap":74},[569],{"type":42,"tag":81,"props":570,"children":571},{"class":83,"line":84},[572,576,581,586],{"type":42,"tag":81,"props":573,"children":574},{"style":166},[575],{"type":48,"value":270},{"type":42,"tag":81,"props":577,"children":578},{"style":94},[579],{"type":48,"value":580}," config",{"type":42,"tag":81,"props":582,"children":583},{"style":94},[584],{"type":48,"value":585}," get",{"type":42,"tag":81,"props":587,"children":588},{"style":94},[589],{"type":48,"value":590}," weave_project\n",{"type":42,"tag":51,"props":592,"children":593},{},[594,596,602,604,610],{"type":48,"value":595},"If it returns ",{"type":42,"tag":77,"props":597,"children":599},{"className":598},[],[600],{"type":48,"value":601},"(not set)",{"type":48,"value":603},", ask the user for ",{"type":42,"tag":77,"props":605,"children":607},{"className":606},[],[608],{"type":48,"value":609},"entity\u002Fproject",{"type":48,"value":611}," and set it:",{"type":42,"tag":69,"props":613,"children":615},{"className":71,"code":614,"language":73,"meta":74,"style":74},"weave-claude-code config set weave_project ENTITY\u002FPROJECT\n",[616],{"type":42,"tag":77,"props":617,"children":618},{"__ignoreMap":74},[619],{"type":42,"tag":81,"props":620,"children":621},{"class":83,"line":84},[622,626,630,635,640],{"type":42,"tag":81,"props":623,"children":624},{"style":166},[625],{"type":48,"value":270},{"type":42,"tag":81,"props":627,"children":628},{"style":94},[629],{"type":48,"value":580},{"type":42,"tag":81,"props":631,"children":632},{"style":94},[633],{"type":48,"value":634}," set",{"type":42,"tag":81,"props":636,"children":637},{"style":94},[638],{"type":48,"value":639}," weave_project",{"type":42,"tag":81,"props":641,"children":642},{"style":94},[643],{"type":48,"value":644}," ENTITY\u002FPROJECT\n",{"type":42,"tag":57,"props":646,"children":648},{"id":647},"step-4-configure-api-key",[649],{"type":48,"value":650},"Step 4 — Configure API Key",{"type":42,"tag":51,"props":652,"children":653},{},[654],{"type":48,"value":655},"Check current state:",{"type":42,"tag":69,"props":657,"children":659},{"className":71,"code":658,"language":73,"meta":74,"style":74},"weave-claude-code config show\n",[660],{"type":42,"tag":77,"props":661,"children":662},{"__ignoreMap":74},[663],{"type":42,"tag":81,"props":664,"children":665},{"class":83,"line":84},[666,670,674],{"type":42,"tag":81,"props":667,"children":668},{"style":166},[669],{"type":48,"value":270},{"type":42,"tag":81,"props":671,"children":672},{"style":94},[673],{"type":48,"value":580},{"type":42,"tag":81,"props":675,"children":676},{"style":94},[677],{"type":48,"value":678}," show\n",{"type":42,"tag":51,"props":680,"children":681},{},[682,683,689,691,696,698,704,706,714],{"type":48,"value":527},{"type":42,"tag":77,"props":684,"children":686},{"className":685},[],[687],{"type":48,"value":688},"wandb_api_key",{"type":48,"value":690}," shows ",{"type":42,"tag":77,"props":692,"children":694},{"className":693},[],[695],{"type":48,"value":601},{"type":48,"value":697}," and no ",{"type":42,"tag":77,"props":699,"children":701},{"className":700},[],[702],{"type":48,"value":703},"WANDB_API_KEY",{"type":48,"value":705}," env var is active, ask the user for their key (",{"type":42,"tag":707,"props":708,"children":712},"a",{"href":709,"rel":710},"https:\u002F\u002Fwandb.ai\u002Fauthorize",[711],"nofollow",[713],{"type":48,"value":709},{"type":48,"value":715},") and set it:",{"type":42,"tag":69,"props":717,"children":719},{"className":71,"code":718,"language":73,"meta":74,"style":74},"weave-claude-code config set wandb_api_key API_KEY\n",[720],{"type":42,"tag":77,"props":721,"children":722},{"__ignoreMap":74},[723],{"type":42,"tag":81,"props":724,"children":725},{"class":83,"line":84},[726,730,734,738,743],{"type":42,"tag":81,"props":727,"children":728},{"style":166},[729],{"type":48,"value":270},{"type":42,"tag":81,"props":731,"children":732},{"style":94},[733],{"type":48,"value":580},{"type":42,"tag":81,"props":735,"children":736},{"style":94},[737],{"type":48,"value":634},{"type":42,"tag":81,"props":739,"children":740},{"style":94},[741],{"type":48,"value":742}," wandb_api_key",{"type":42,"tag":81,"props":744,"children":745},{"style":94},[746],{"type":48,"value":747}," API_KEY\n",{"type":42,"tag":57,"props":749,"children":751},{"id":750},"step-5-optional-custom-agent-name",[752],{"type":48,"value":753},"Step 5 - (Optional) Custom Agent Name",{"type":42,"tag":51,"props":755,"children":756},{},[757,759,764],{"type":48,"value":758},"Traces appear under the agent name ",{"type":42,"tag":77,"props":760,"children":762},{"className":761},[],[763],{"type":48,"value":24},{"type":48,"value":765}," in Weave's Agents view by default. If the user wants a custom name (e.g. to distinguish teams or projects), set it:",{"type":42,"tag":69,"props":767,"children":769},{"className":71,"code":768,"language":73,"meta":74,"style":74},"weave-claude-code config set agent_name CUSTOM_NAME\n",[770],{"type":42,"tag":77,"props":771,"children":772},{"__ignoreMap":74},[773],{"type":42,"tag":81,"props":774,"children":775},{"class":83,"line":84},[776,780,784,788,793],{"type":42,"tag":81,"props":777,"children":778},{"style":166},[779],{"type":48,"value":270},{"type":42,"tag":81,"props":781,"children":782},{"style":94},[783],{"type":48,"value":580},{"type":42,"tag":81,"props":785,"children":786},{"style":94},[787],{"type":48,"value":634},{"type":42,"tag":81,"props":789,"children":790},{"style":94},[791],{"type":48,"value":792}," agent_name",{"type":42,"tag":81,"props":794,"children":795},{"style":94},[796],{"type":48,"value":797}," CUSTOM_NAME\n",{"type":42,"tag":51,"props":799,"children":800},{},[801],{"type":48,"value":802},"Skip this step unless the user asks; the default is fine for most users.",{"type":42,"tag":57,"props":804,"children":806},{"id":805},"step-6-verify",[807],{"type":48,"value":808},"Step 6 - Verify",{"type":42,"tag":69,"props":810,"children":812},{"className":71,"code":811,"language":73,"meta":74,"style":74},"weave-claude-code status\n",[813],{"type":42,"tag":77,"props":814,"children":815},{"__ignoreMap":74},[816],{"type":42,"tag":81,"props":817,"children":818},{"class":83,"line":84},[819,823],{"type":42,"tag":81,"props":820,"children":821},{"style":166},[822],{"type":48,"value":270},{"type":42,"tag":81,"props":824,"children":825},{"style":94},[826],{"type":48,"value":827}," status\n",{"type":42,"tag":51,"props":829,"children":830},{},[831,833,839,841,847],{"type":48,"value":832},"All items should show ",{"type":42,"tag":77,"props":834,"children":836},{"className":835},[],[837],{"type":48,"value":838},"✓",{"type":48,"value":840},". If anything shows ",{"type":42,"tag":77,"props":842,"children":844},{"className":843},[],[845],{"type":48,"value":846},"✗",{"type":48,"value":848},", diagnose and fix before reporting success.",{"type":42,"tag":51,"props":850,"children":851},{},[852,854,860,862,868,870,876],{"type":48,"value":853},"On success, tell the user Claude Code sessions will now be traced to their Weave project starting from the next session. If a ",{"type":42,"tag":77,"props":855,"children":857},{"className":856},[],[858],{"type":48,"value":859},"Plugin updated",{"type":48,"value":861}," or ",{"type":42,"tag":77,"props":863,"children":865},{"className":864},[],[866],{"type":48,"value":867},"Marketplace refreshed",{"type":48,"value":869}," line appeared in Step 2, remind them to run ",{"type":42,"tag":77,"props":871,"children":873},{"className":872},[],[874],{"type":48,"value":875},"\u002Freload-plugins",{"type":48,"value":877}," (or restart Claude Code) so the running session picks up the new code.",{"type":42,"tag":879,"props":880,"children":881},"hr",{},[],{"type":42,"tag":57,"props":883,"children":885},{"id":884},"migrating-from-weave-claude-plugin",[886,888],{"type":48,"value":887},"Migrating from ",{"type":42,"tag":77,"props":889,"children":891},{"className":890},[],[892],{"type":48,"value":305},{"type":42,"tag":51,"props":894,"children":895},{},[896,898,903,905,916,918,923,925,931,933,939],{"type":48,"value":897},"The package was renamed in #63 (v0.2.3). Users on v0.2.0–v0.2.2 installed the old ",{"type":42,"tag":77,"props":899,"children":901},{"className":900},[],[902],{"type":48,"value":305},{"type":48,"value":904}," package and need a one-time migration. ",{"type":42,"tag":245,"props":906,"children":907},{},[908,910],{"type":48,"value":909},"Do this BEFORE running ",{"type":42,"tag":77,"props":911,"children":913},{"className":912},[],[914],{"type":48,"value":915},"weave-claude-code install",{"type":48,"value":917}," — otherwise you end up with two ",{"type":42,"tag":77,"props":919,"children":921},{"className":920},[],[922],{"type":48,"value":471},{"type":48,"value":924}," plugins (",{"type":42,"tag":77,"props":926,"children":928},{"className":927},[],[929],{"type":48,"value":930},"weave@weave-claude-plugin",{"type":48,"value":932}," and ",{"type":42,"tag":77,"props":934,"children":936},{"className":935},[],[937],{"type":48,"value":938},"weave@weave-claude-code",{"type":48,"value":940},") firing hooks in parallel.",{"type":42,"tag":942,"props":943,"children":945},"h3",{"id":944},"step-1-capture-the-users-existing-settings",[946],{"type":48,"value":947},"Step 1 — Capture the user's existing settings",{"type":42,"tag":51,"props":949,"children":950},{},[951,953,959,961,966,967,972],{"type":48,"value":952},"The legacy ",{"type":42,"tag":77,"props":954,"children":956},{"className":955},[],[957],{"type":48,"value":958},"~\u002F.weave_claude_plugin\u002Fsettings.json",{"type":48,"value":960}," likely contains the user's configured ",{"type":42,"tag":77,"props":962,"children":964},{"className":963},[],[965],{"type":48,"value":559},{"type":48,"value":932},{"type":42,"tag":77,"props":968,"children":970},{"className":969},[],[971],{"type":48,"value":688},{"type":48,"value":973},". Capture them into shell variables so they survive the cleanup and can be re-applied to the new install.",{"type":42,"tag":51,"props":975,"children":976},{},[977],{"type":48,"value":978},"Use this exact pattern so the API key never appears in your tool output:",{"type":42,"tag":69,"props":980,"children":982},{"className":71,"code":981,"language":73,"meta":74,"style":74},"LEGACY_WEAVE_PROJECT=\"$(jq -r 'if .weave_project == null then \"\" else .weave_project end' ~\u002F.weave_claude_plugin\u002Fsettings.json 2>\u002Fdev\u002Fnull || echo \"\")\"\nLEGACY_WANDB_API_KEY=\"$(jq -r 'if .wandb_api_key == null then \"\" else .wandb_api_key end' ~\u002F.weave_claude_plugin\u002Fsettings.json 2>\u002Fdev\u002Fnull || echo \"\")\"\necho \"captured weave_project=${LEGACY_WEAVE_PROJECT:-\u003Cempty>}, wandb_api_key length=${#LEGACY_WANDB_API_KEY}\"\n",[983],{"type":42,"tag":77,"props":984,"children":985},{"__ignoreMap":74},[986,1056,1117],{"type":42,"tag":81,"props":987,"children":988},{"class":83,"line":84},[989,995,1000,1005,1009,1014,1018,1023,1027,1032,1037,1042,1047,1051],{"type":42,"tag":81,"props":990,"children":992},{"style":991},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[993],{"type":48,"value":994},"LEGACY_WEAVE_PROJECT",{"type":42,"tag":81,"props":996,"children":997},{"style":132},[998],{"type":48,"value":999},"=",{"type":42,"tag":81,"props":1001,"children":1002},{"style":132},[1003],{"type":48,"value":1004},"\"$(",{"type":42,"tag":81,"props":1006,"children":1007},{"style":166},[1008],{"type":48,"value":169},{"type":42,"tag":81,"props":1010,"children":1011},{"style":94},[1012],{"type":48,"value":1013}," -r ",{"type":42,"tag":81,"props":1015,"children":1016},{"style":132},[1017],{"type":48,"value":189},{"type":42,"tag":81,"props":1019,"children":1020},{"style":94},[1021],{"type":48,"value":1022},"if .weave_project == null then \"\" else .weave_project end",{"type":42,"tag":81,"props":1024,"children":1025},{"style":132},[1026],{"type":48,"value":189},{"type":42,"tag":81,"props":1028,"children":1029},{"style":94},[1030],{"type":48,"value":1031}," ~\u002F.weave_claude_plugin\u002Fsettings.json ",{"type":42,"tag":81,"props":1033,"children":1034},{"style":132},[1035],{"type":48,"value":1036},"2>",{"type":42,"tag":81,"props":1038,"children":1039},{"style":94},[1040],{"type":48,"value":1041},"\u002Fdev\u002Fnull ",{"type":42,"tag":81,"props":1043,"children":1044},{"style":132},[1045],{"type":48,"value":1046},"||",{"type":42,"tag":81,"props":1048,"children":1049},{"style":88},[1050],{"type":48,"value":140},{"type":42,"tag":81,"props":1052,"children":1053},{"style":132},[1054],{"type":48,"value":1055}," \"\")\"\n",{"type":42,"tag":81,"props":1057,"children":1058},{"class":83,"line":100},[1059,1064,1068,1072,1076,1080,1084,1089,1093,1097,1101,1105,1109,1113],{"type":42,"tag":81,"props":1060,"children":1061},{"style":991},[1062],{"type":48,"value":1063},"LEGACY_WANDB_API_KEY",{"type":42,"tag":81,"props":1065,"children":1066},{"style":132},[1067],{"type":48,"value":999},{"type":42,"tag":81,"props":1069,"children":1070},{"style":132},[1071],{"type":48,"value":1004},{"type":42,"tag":81,"props":1073,"children":1074},{"style":166},[1075],{"type":48,"value":169},{"type":42,"tag":81,"props":1077,"children":1078},{"style":94},[1079],{"type":48,"value":1013},{"type":42,"tag":81,"props":1081,"children":1082},{"style":132},[1083],{"type":48,"value":189},{"type":42,"tag":81,"props":1085,"children":1086},{"style":94},[1087],{"type":48,"value":1088},"if .wandb_api_key == null then \"\" else .wandb_api_key end",{"type":42,"tag":81,"props":1090,"children":1091},{"style":132},[1092],{"type":48,"value":189},{"type":42,"tag":81,"props":1094,"children":1095},{"style":94},[1096],{"type":48,"value":1031},{"type":42,"tag":81,"props":1098,"children":1099},{"style":132},[1100],{"type":48,"value":1036},{"type":42,"tag":81,"props":1102,"children":1103},{"style":94},[1104],{"type":48,"value":1041},{"type":42,"tag":81,"props":1106,"children":1107},{"style":132},[1108],{"type":48,"value":1046},{"type":42,"tag":81,"props":1110,"children":1111},{"style":88},[1112],{"type":48,"value":140},{"type":42,"tag":81,"props":1114,"children":1115},{"style":132},[1116],{"type":48,"value":1055},{"type":42,"tag":81,"props":1118,"children":1119},{"class":83,"line":113},[1120,1125,1130,1135,1140,1144,1149,1154,1159,1164,1169,1174,1179,1183],{"type":42,"tag":81,"props":1121,"children":1122},{"style":88},[1123],{"type":48,"value":1124},"echo",{"type":42,"tag":81,"props":1126,"children":1127},{"style":132},[1128],{"type":48,"value":1129}," \"",{"type":42,"tag":81,"props":1131,"children":1132},{"style":94},[1133],{"type":48,"value":1134},"captured weave_project=",{"type":42,"tag":81,"props":1136,"children":1137},{"style":132},[1138],{"type":48,"value":1139},"${",{"type":42,"tag":81,"props":1141,"children":1142},{"style":991},[1143],{"type":48,"value":994},{"type":42,"tag":81,"props":1145,"children":1146},{"style":132},[1147],{"type":48,"value":1148},":-",{"type":42,"tag":81,"props":1150,"children":1151},{"style":94},[1152],{"type":48,"value":1153},"\u003C",{"type":42,"tag":81,"props":1155,"children":1156},{"style":991},[1157],{"type":48,"value":1158},"empty",{"type":42,"tag":81,"props":1160,"children":1161},{"style":94},[1162],{"type":48,"value":1163},">",{"type":42,"tag":81,"props":1165,"children":1166},{"style":132},[1167],{"type":48,"value":1168},"}",{"type":42,"tag":81,"props":1170,"children":1171},{"style":94},[1172],{"type":48,"value":1173},", wandb_api_key length=",{"type":42,"tag":81,"props":1175,"children":1176},{"style":132},[1177],{"type":48,"value":1178},"${#",{"type":42,"tag":81,"props":1180,"children":1181},{"style":991},[1182],{"type":48,"value":1063},{"type":42,"tag":81,"props":1184,"children":1185},{"style":132},[1186],{"type":48,"value":1187},"}\"\n",{"type":42,"tag":51,"props":1189,"children":1190},{},[1191],{"type":48,"value":1192},"Only the length of the API key is echoed — never the value itself.",{"type":42,"tag":51,"props":1194,"children":1195},{},[1196,1197,1202],{"type":48,"value":527},{"type":42,"tag":77,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":48,"value":958},{"type":48,"value":1203}," doesn't exist, both variables stay empty and the rest of this section still applies.",{"type":42,"tag":942,"props":1205,"children":1207},{"id":1206},"step-2-remove-the-legacy-marketplace-from-claude-code",[1208],{"type":48,"value":1209},"Step 2 — Remove the legacy marketplace from Claude Code",{"type":42,"tag":69,"props":1211,"children":1213},{"className":71,"code":1212,"language":73,"meta":74,"style":74},"claude plugin marketplace remove weave-claude-plugin\n",[1214],{"type":42,"tag":77,"props":1215,"children":1216},{"__ignoreMap":74},[1217],{"type":42,"tag":81,"props":1218,"children":1219},{"class":83,"line":84},[1220,1225,1230,1235,1240],{"type":42,"tag":81,"props":1221,"children":1222},{"style":166},[1223],{"type":48,"value":1224},"claude",{"type":42,"tag":81,"props":1226,"children":1227},{"style":94},[1228],{"type":48,"value":1229}," plugin",{"type":42,"tag":81,"props":1231,"children":1232},{"style":94},[1233],{"type":48,"value":1234}," marketplace",{"type":42,"tag":81,"props":1236,"children":1237},{"style":94},[1238],{"type":48,"value":1239}," remove",{"type":42,"tag":81,"props":1241,"children":1242},{"style":94},[1243],{"type":48,"value":110},{"type":42,"tag":51,"props":1245,"children":1246},{},[1247,1249,1254,1256,1261,1263,1268,1270,1275,1277,1283],{"type":48,"value":1248},"This is the ",{"type":42,"tag":245,"props":1250,"children":1251},{},[1252],{"type":48,"value":1253},"load-bearing step",{"type":48,"value":1255},". Claude Code couples plugins to their marketplace: removing the ",{"type":42,"tag":77,"props":1257,"children":1259},{"className":1258},[],[1260],{"type":48,"value":305},{"type":48,"value":1262}," marketplace also uninstalls the ",{"type":42,"tag":77,"props":1264,"children":1266},{"className":1265},[],[1267],{"type":48,"value":930},{"type":48,"value":1269}," plugin. If the marketplace was already absent (the binary was installed via npm but ",{"type":42,"tag":77,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":48,"value":287},{"type":48,"value":1276}," was never run), the CLI will print ",{"type":42,"tag":77,"props":1278,"children":1280},{"className":1279},[],[1281],{"type":48,"value":1282},"No configured marketplace named \"weave-claude-plugin\"",{"type":48,"value":1284}," — that's fine, continue.",{"type":42,"tag":942,"props":1286,"children":1288},{"id":1287},"step-3-install-the-new-package",[1289],{"type":48,"value":1290},"Step 3 — Install the new package",{"type":42,"tag":69,"props":1292,"children":1294},{"className":71,"code":1293,"language":73,"meta":74,"style":74},"npm install -g weave-claude-code@latest\nwhich weave-claude-code\n",[1295],{"type":42,"tag":77,"props":1296,"children":1297},{"__ignoreMap":74},[1298,1318],{"type":42,"tag":81,"props":1299,"children":1300},{"class":83,"line":84},[1301,1305,1309,1313],{"type":42,"tag":81,"props":1302,"children":1303},{"style":166},[1304],{"type":48,"value":372},{"type":42,"tag":81,"props":1306,"children":1307},{"style":94},[1308],{"type":48,"value":377},{"type":42,"tag":81,"props":1310,"children":1311},{"style":94},[1312],{"type":48,"value":382},{"type":42,"tag":81,"props":1314,"children":1315},{"style":94},[1316],{"type":48,"value":1317}," weave-claude-code@latest\n",{"type":42,"tag":81,"props":1319,"children":1320},{"class":83,"line":100},[1321,1325],{"type":42,"tag":81,"props":1322,"children":1323},{"style":88},[1324],{"type":48,"value":91},{"type":42,"tag":81,"props":1326,"children":1327},{"style":94},[1328],{"type":48,"value":97},{"type":42,"tag":51,"props":1330,"children":1331},{},[1332,1334,1340],{"type":48,"value":1333},"Retry with ",{"type":42,"tag":77,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":48,"value":1339},"sudo",{"type":48,"value":1341}," if the install fails with EACCES — but only after confirming with the user.",{"type":42,"tag":942,"props":1343,"children":1345},{"id":1344},"step-4-run-the-new-install",[1346],{"type":48,"value":1347},"Step 4 — Run the new install",{"type":42,"tag":51,"props":1349,"children":1350},{},[1351,1353,1359],{"type":48,"value":1352},"Do not use ",{"type":42,"tag":77,"props":1354,"children":1356},{"className":1355},[],[1357],{"type":48,"value":1358},"--non-interactive",{"type":48,"value":1360}," here unless the user explicitly asked for it; the install command is harmless to re-run, and TTY output is more informative.",{"type":42,"tag":69,"props":1362,"children":1363},{"className":71,"code":436,"language":73,"meta":74,"style":74},[1364],{"type":42,"tag":77,"props":1365,"children":1366},{"__ignoreMap":74},[1367],{"type":42,"tag":81,"props":1368,"children":1369},{"class":83,"line":84},[1370,1374],{"type":42,"tag":81,"props":1371,"children":1372},{"style":166},[1373],{"type":48,"value":270},{"type":42,"tag":81,"props":1375,"children":1376},{"style":94},[1377],{"type":48,"value":452},{"type":42,"tag":51,"props":1379,"children":1380},{},[1381,1383,1388,1390,1395],{"type":48,"value":1382},"If the prompts for ",{"type":42,"tag":77,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":48,"value":559},{"type":48,"value":1389}," \u002F ",{"type":42,"tag":77,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":48,"value":688},{"type":48,"value":1396}," come up, skip them with blank input — Step 5 below re-applies the captured values without needing user retyping.",{"type":42,"tag":942,"props":1398,"children":1400},{"id":1399},"step-5-re-apply-the-captured-settings",[1401],{"type":48,"value":1402},"Step 5 — Re-apply the captured settings",{"type":42,"tag":51,"props":1404,"children":1405},{},[1406],{"type":48,"value":1407},"Only set values that were actually captured (skip blanks):",{"type":42,"tag":69,"props":1409,"children":1411},{"className":71,"code":1410,"language":73,"meta":74,"style":74},"[ -n \"$LEGACY_WEAVE_PROJECT\" ] && weave-claude-code config set weave_project \"$LEGACY_WEAVE_PROJECT\"\n[ -n \"$LEGACY_WANDB_API_KEY\" ] && weave-claude-code config set wandb_api_key \"$LEGACY_WANDB_API_KEY\"\n",[1412],{"type":42,"tag":77,"props":1413,"children":1414},{"__ignoreMap":74},[1415,1481],{"type":42,"tag":81,"props":1416,"children":1417},{"class":83,"line":84},[1418,1423,1428,1432,1437,1442,1447,1451,1456,1460,1464,1468,1472,1476],{"type":42,"tag":81,"props":1419,"children":1420},{"style":132},[1421],{"type":48,"value":1422},"[",{"type":42,"tag":81,"props":1424,"children":1425},{"style":132},[1426],{"type":48,"value":1427}," -n",{"type":42,"tag":81,"props":1429,"children":1430},{"style":132},[1431],{"type":48,"value":1129},{"type":42,"tag":81,"props":1433,"children":1434},{"style":991},[1435],{"type":48,"value":1436},"$LEGACY_WEAVE_PROJECT",{"type":42,"tag":81,"props":1438,"children":1439},{"style":132},[1440],{"type":48,"value":1441},"\"",{"type":42,"tag":81,"props":1443,"children":1444},{"style":132},[1445],{"type":48,"value":1446}," ]",{"type":42,"tag":81,"props":1448,"children":1449},{"style":132},[1450],{"type":48,"value":135},{"type":42,"tag":81,"props":1452,"children":1453},{"style":166},[1454],{"type":48,"value":1455}," weave-claude-code",{"type":42,"tag":81,"props":1457,"children":1458},{"style":94},[1459],{"type":48,"value":580},{"type":42,"tag":81,"props":1461,"children":1462},{"style":94},[1463],{"type":48,"value":634},{"type":42,"tag":81,"props":1465,"children":1466},{"style":94},[1467],{"type":48,"value":639},{"type":42,"tag":81,"props":1469,"children":1470},{"style":132},[1471],{"type":48,"value":1129},{"type":42,"tag":81,"props":1473,"children":1474},{"style":991},[1475],{"type":48,"value":1436},{"type":42,"tag":81,"props":1477,"children":1478},{"style":132},[1479],{"type":48,"value":1480},"\"\n",{"type":42,"tag":81,"props":1482,"children":1483},{"class":83,"line":100},[1484,1488,1492,1496,1501,1505,1509,1513,1517,1521,1525,1529,1533,1537],{"type":42,"tag":81,"props":1485,"children":1486},{"style":132},[1487],{"type":48,"value":1422},{"type":42,"tag":81,"props":1489,"children":1490},{"style":132},[1491],{"type":48,"value":1427},{"type":42,"tag":81,"props":1493,"children":1494},{"style":132},[1495],{"type":48,"value":1129},{"type":42,"tag":81,"props":1497,"children":1498},{"style":991},[1499],{"type":48,"value":1500},"$LEGACY_WANDB_API_KEY",{"type":42,"tag":81,"props":1502,"children":1503},{"style":132},[1504],{"type":48,"value":1441},{"type":42,"tag":81,"props":1506,"children":1507},{"style":132},[1508],{"type":48,"value":1446},{"type":42,"tag":81,"props":1510,"children":1511},{"style":132},[1512],{"type":48,"value":135},{"type":42,"tag":81,"props":1514,"children":1515},{"style":166},[1516],{"type":48,"value":1455},{"type":42,"tag":81,"props":1518,"children":1519},{"style":94},[1520],{"type":48,"value":580},{"type":42,"tag":81,"props":1522,"children":1523},{"style":94},[1524],{"type":48,"value":634},{"type":42,"tag":81,"props":1526,"children":1527},{"style":94},[1528],{"type":48,"value":742},{"type":42,"tag":81,"props":1530,"children":1531},{"style":132},[1532],{"type":48,"value":1129},{"type":42,"tag":81,"props":1534,"children":1535},{"style":991},[1536],{"type":48,"value":1500},{"type":42,"tag":81,"props":1538,"children":1539},{"style":132},[1540],{"type":48,"value":1480},{"type":42,"tag":51,"props":1542,"children":1543},{},[1544,1546,1552],{"type":48,"value":1545},"The shell substitution keeps the API key out of your tool transcript; ",{"type":42,"tag":77,"props":1547,"children":1549},{"className":1548},[],[1550],{"type":48,"value":1551},"config set",{"type":48,"value":1553}," itself only echoes the first four characters.",{"type":42,"tag":942,"props":1555,"children":1557},{"id":1556},"step-6-remove-the-legacy-config-dir",[1558],{"type":48,"value":1559},"Step 6 — Remove the legacy config dir",{"type":42,"tag":69,"props":1561,"children":1563},{"className":71,"code":1562,"language":73,"meta":74,"style":74},"rm -rf ~\u002F.weave_claude_plugin\n",[1564],{"type":42,"tag":77,"props":1565,"children":1566},{"__ignoreMap":74},[1567],{"type":42,"tag":81,"props":1568,"children":1569},{"class":83,"line":84},[1570,1575,1580],{"type":42,"tag":81,"props":1571,"children":1572},{"style":166},[1573],{"type":48,"value":1574},"rm",{"type":42,"tag":81,"props":1576,"children":1577},{"style":94},[1578],{"type":48,"value":1579}," -rf",{"type":42,"tag":81,"props":1581,"children":1582},{"style":94},[1583],{"type":48,"value":1584}," ~\u002F.weave_claude_plugin\n",{"type":42,"tag":51,"props":1586,"children":1587},{},[1588],{"type":48,"value":1589},"Don't do this before Step 1 — the settings live in there.",{"type":42,"tag":942,"props":1591,"children":1593},{"id":1592},"step-7-uninstall-the-legacy-npm-package",[1594],{"type":48,"value":1595},"Step 7 — Uninstall the legacy npm package",{"type":42,"tag":69,"props":1597,"children":1599},{"className":71,"code":1598,"language":73,"meta":74,"style":74},"npm uninstall -g weave-claude-plugin\n",[1600],{"type":42,"tag":77,"props":1601,"children":1602},{"__ignoreMap":74},[1603],{"type":42,"tag":81,"props":1604,"children":1605},{"class":83,"line":84},[1606,1610,1615,1619],{"type":42,"tag":81,"props":1607,"children":1608},{"style":166},[1609],{"type":48,"value":372},{"type":42,"tag":81,"props":1611,"children":1612},{"style":94},[1613],{"type":48,"value":1614}," uninstall",{"type":42,"tag":81,"props":1616,"children":1617},{"style":94},[1618],{"type":48,"value":382},{"type":42,"tag":81,"props":1620,"children":1621},{"style":94},[1622],{"type":48,"value":110},{"type":42,"tag":51,"props":1624,"children":1625},{},[1626,1628,1633],{"type":48,"value":1627},"If this fails with EACCES, confirm with the user before retrying with ",{"type":42,"tag":77,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":48,"value":1339},{"type":48,"value":1634},". If the user declines, that's fine — leaving the old binary on PATH is harmless once the marketplace and config dir are gone (the hooks no longer reference it). Note in your final report that they should remove it themselves when convenient.",{"type":42,"tag":942,"props":1636,"children":1638},{"id":1637},"step-8-resume-the-main-install-flow",[1639],{"type":48,"value":1640},"Step 8 — Resume the main install flow",{"type":42,"tag":51,"props":1642,"children":1643},{},[1644,1646,1651],{"type":48,"value":1645},"The migration is complete. Jump back to the main install flow above at ",{"type":42,"tag":245,"props":1647,"children":1648},{},[1649],{"type":48,"value":1650},"Step 3 (Configure Weave Project)",{"type":48,"value":1652}," to validate that the carried-forward settings landed correctly, then proceed through the main flow's Steps 4 and 5.",{"type":42,"tag":51,"props":1654,"children":1655},{},[1656,1658,1663,1665,1670,1672,1677],{"type":48,"value":1657},"In the main flow's Step 5 final report, mention that the user is now on ",{"type":42,"tag":77,"props":1659,"children":1661},{"className":1660},[],[1662],{"type":48,"value":270},{"type":48,"value":1664}," (rename from ",{"type":42,"tag":77,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":48,"value":305},{"type":48,"value":1671},") and remind them to run ",{"type":42,"tag":77,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":48,"value":875},{"type":48,"value":1678}," or restart Claude Code so the new plugin code is loaded.",{"type":42,"tag":1680,"props":1681,"children":1682},"style",{},[1683],{"type":48,"value":1684},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1686,"total":113},[1687,1697,1704],{"slug":1688,"name":1688,"fn":1689,"description":1690,"org":1691,"tags":1692,"stars":25,"repoUrl":26,"updatedAt":1696},"weave-config","configure Weave project and settings","This skill should be used when the user wants to \"configure weave\", \"set weave project\", \"change weave project\", \"set wandb api key\", \"update weave settings\", \"show weave config\", \"change weave configuration\", \"restart the weave daemon\", \"apply weave config changes\", \"restart weave to pick up changes\", or needs to read or update any Weave Claude Code plugin settings.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1693,1694,1695],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},"2026-07-17T06:07:38.107392",{"slug":4,"name":4,"fn":5,"description":6,"org":1698,"tags":1699,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1700,1701,1702,1703],{"name":23,"slug":24,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},{"slug":1705,"name":1705,"fn":1706,"description":1707,"org":1708,"tags":1709,"stars":25,"repoUrl":26,"updatedAt":1715},"weave-status","verify Weave plugin status and health","This skill should be used when the user wants to \"check weave status\", \"verify the weave plugin is running\", \"see if weave is set up correctly\", \"check weave configuration\", \"is weave working\", \"weave is running an older config\", \"the daemon is on an old config\", or needs to diagnose why Claude Code sessions are not appearing in Weave.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1710,1713,1714],{"name":1711,"slug":1712,"type":16},"Monitoring","monitoring",{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},"2026-07-17T06:07:58.961737",{"items":1717,"total":25},[1718,1735,1757,1763,1770,1776,1790,1803,1814],{"slug":1719,"name":1719,"fn":1720,"description":1721,"org":1722,"tags":1723,"stars":1732,"repoUrl":1733,"updatedAt":1734},"weave-instrument","instrument LLM codebases with Weave","Add Weave (Weights & Biases) observability to an LLM or agent codebase. This covers calling `weave.init()`, setting up authentication, and choosing between OTEL auto-instrumentation and the explicit Session SDK agent-logging APIs (Turn, LLM, Tool, SubAgent), based on the libraries the code already uses. Works for Python and TypeScript\u002FNode. Use this whenever the user wants to instrument, trace, or add observability, logging, or monitoring to an agent, chatbot, RAG pipeline, or LLM app. This includes phrasings like \"log my agent to weave\", \"add agent tracing\", \"get my agent into the Weave Agents tab\", \"instrument this with the weave session sdk\", \"trace my tool calls\", or \"set up weave logging\", even when the user does not name a specific API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1724,1727,1730,1731],{"name":1725,"slug":1726,"type":16},"Agents","agents",{"name":1728,"slug":1729,"type":16},"LLM","llm",{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},1104,"https:\u002F\u002Fgithub.com\u002Fwandb\u002Fweave","2026-07-17T06:07:25.81154",{"slug":1736,"name":1736,"fn":1737,"description":1738,"org":1739,"tags":1740,"stars":1754,"repoUrl":1755,"updatedAt":1756},"wandb-primary","manage Weights & Biases projects and runs","Primary W&B skill for broad or mixed Weights & Biases work: project overviews, W&B runs and artifacts, Weave traces and evaluations, Reports, and Launch workflows. Use when the task spans multiple W&B surfaces or the user asks generally what is happening in a W&B project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1741,1744,1747,1750,1751],{"name":1742,"slug":1743,"type":16},"Data Analysis","data-analysis",{"name":1745,"slug":1746,"type":16},"Evals","evals",{"name":1748,"slug":1749,"type":16},"MLOps","mlops",{"name":1711,"slug":1712,"type":16},{"name":1752,"slug":1753,"type":16},"Tracing","tracing",60,"https:\u002F\u002Fgithub.com\u002Fwandb\u002Fskills","2026-07-17T06:06:35.194929",{"slug":1688,"name":1688,"fn":1689,"description":1690,"org":1758,"tags":1759,"stars":25,"repoUrl":26,"updatedAt":1696},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1760,1761,1762],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":1764,"tags":1765,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1766,1767,1768,1769],{"name":23,"slug":24,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},{"slug":1705,"name":1705,"fn":1706,"description":1707,"org":1771,"tags":1772,"stars":25,"repoUrl":26,"updatedAt":1715},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1773,1774,1775],{"name":1711,"slug":1712,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":21,"type":16},{"slug":1777,"name":1777,"fn":1778,"description":1779,"org":1780,"tags":1781,"stars":100,"repoUrl":1788,"updatedAt":1789},"annotation-improvement","improve prompts using Weave research traces","Guides coding agents through Discovery Forge prompt improvement after selecting the `wandb-primary` skill. Use `wandb-primary` to fetch W&B Weave research_run traces, human annotations, runnable feedback, and evaluations, then use this workflow when improving researcher.md from annotation queues, reviewed research traces, or human feedback.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1782,1783,1784,1787],{"name":1725,"slug":1726,"type":16},{"name":1745,"slug":1746,"type":16},{"name":1785,"slug":1786,"type":16},"Prompt Engineering","prompt-engineering",{"name":9,"slug":21,"type":16},"https:\u002F\u002Fgithub.com\u002Fwandb\u002Fdiscovery-forge","2026-07-17T06:06:36.008062",{"slug":1791,"name":1791,"fn":1792,"description":1793,"org":1794,"tags":1795,"stars":100,"repoUrl":1788,"updatedAt":1802},"build-verdict-dataset","build verdict datasets from Weave annotations","Guides coding agents through building the verdict_quality_dataset from W&B Weave research_annotation evidence — querying annotated research_run calls, mapping human QualitySelector verdicts to gold labels, refining row inputs per the rubric, and publishing a new versioned Weave Dataset. Use when the user asks to (re)generate the verdict dataset from annotations, seed a new eval dataset version, or rebuild verdict_quality_dataset.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1796,1797,1800,1801],{"name":1742,"slug":1743,"type":16},{"name":1798,"slug":1799,"type":16},"Datasets","datasets",{"name":1745,"slug":1746,"type":16},{"name":9,"slug":21,"type":16},"2026-07-17T06:07:59.30763",{"slug":1804,"name":1804,"fn":1805,"description":1806,"org":1807,"tags":1808,"stars":100,"repoUrl":1788,"updatedAt":1813},"offline-eval-improvement","improve prompts using offline evaluation baselines","Guides coding agents through Discovery Forge prompt improvement from a specified Weave offline evaluation baseline. Use `wandb-primary` to fetch evaluation results, failed eval rows, dataset refs, prompt refs, and scorer evidence, then use this workflow when improving researcher.md from failed evaluation rows, comparing eval runs, or iterating on a fixed dataset.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1809,1810,1811,1812],{"name":1725,"slug":1726,"type":16},{"name":1798,"slug":1799,"type":16},{"name":1745,"slug":1746,"type":16},{"name":9,"slug":21,"type":16},"2026-07-17T06:07:26.501045",{"slug":1815,"name":1815,"fn":1816,"description":1817,"org":1818,"tags":1819,"stars":100,"repoUrl":1826,"updatedAt":1827},"weave-integration","integrate Weave into applications","Comprehensive skill for adding W&B Weave to existing applications. Covers trace-first instrumentation, evaluation only after trace verification, documentation-first implementation, CLI-based Weave data access, and validation workflows. Activate this skill only when the user explicitly mentions the skill by name, such as `weave-integration`, `@skills weave-integration`, or another direct skill reference. Do not auto-trigger from generic Weave or W&B questions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1820,1823,1824,1825],{"name":1821,"slug":1822,"type":16},"Instrumentation","instrumentation",{"name":14,"slug":15,"type":16},{"name":1752,"slug":1753,"type":16},{"name":9,"slug":21,"type":16},"https:\u002F\u002Fgithub.com\u002Fwandb\u002Fweave-integration-skills","2026-07-17T06:07:59.666449"]