Skip to content

Repository files navigation

ContextZero

VS Code Marketplace Install Stars Issues License: MIT

One place to see and manage what every AI coding agent knows — across all your projects.

A VS Code extension that gives you one sidebar, split into Context, Prompts, and Templates panels, for the memory, rules, and skills used by Claude Code, Cursor, Kiro, Antigravity, and the shared AGENTS.md standard, for every project on your machine — including monorepos, where sub-projects nest under their parent — plus safe recovery of Claude Code memory and chat history when you rename or move a project folder.

Built by Tahir Nazirits-tahir.com


Why this exists

If you use more than one AI coding tool, each one keeps its own rules, memory, and knowledge files — scattered across your home directory and every project folder, with no shared view. There's no single place to see what Claude Code, Cursor, Kiro, Antigravity, and the tool-neutral AGENTS.md standard each know about a project, or what your global rules say for each of them.

Claude Code adds a second, separate problem on top of that: it stores per-project data under ~/.claude/projects/<slug>/, where the slug is derived from your project folder's path. Rename or move a project folder and Claude starts fresh — your chat history and memory sit orphaned under the old slug.

ContextZero solves both. It gives you one project-first sidebar tree spanning all five tools — nesting monorepo sub-projects under their parent — and — specific to Claude Code — it can safely relink a renamed project and recover its memory and chat history, all under a strict safety model: it never deletes a single file, and rewrites exactly one kind of file — an MCP config you asked it to add a server to (details). It also ships a library of reusable prompts and rule/skill templates you can copy or apply to any project, and a per-project readiness check.

Features

Feature What it does
Multi-tool sidebar tree One tree, grouped by project, showing every tool's rules, memory, steering, and knowledge files side by side. Click any file to open it in the editor. Monorepos nest — a repo's sub-projects appear under their parent, each with its own tools' context.
Global rules & settings Claude Code global rules/settings/skills, Kiro global steering, and Antigravity global knowledge all appear under Global — one click creates the starter file where a tool supports one. An installed tool with nothing there yet (e.g. ~/.kiro/ present but empty) still shows up, so its create action stays reachable.
New context file Right-click any section — Cursor rules, Kiro steering, Antigravity rules, Claude memory, and more — to create a properly formatted file (with frontmatter where the tool needs it) that opens straight in the editor. Every creatable section has a + button on hover (and a right-click entry); empty sections also show a Create… row. A project row's own + (or right-click Add Context File…) offers every creatable file for that project, including tools it doesn't use yet.
Search Search across every tool's memory, rules, and steering files at once; results open at the matching line.
Orphan detection & relink (Claude Code) Projects whose folder no longer exists show a ⚠ "(folder missing)" badge; Relink to Folder… copies chat history and memory to the renamed folder's new slug, keeping the old data as a timestamped backup.
Copy memory (Claude Code) Copy one project's memory files into another project, conflict-safe.
Readiness check Each project row starts with a Readiness (n/4) line showing which of CLAUDE.md, AGENTS.md, GEMINI.md, and memory it has, with a one-click + to create most missing files (GEMINI.md is shown for awareness only). A missing file that has a sibling already present (e.g. CLAUDE.md exists, AGENTS.md doesn't) offers Mirror from… instead of starting blank. See Mirroring rules files below.
Prompt & template library Two more panels — built-in and custom prompts you copy to the clipboard, and rule/skill templates you apply straight into a project. Prompts can carry placeholders filled in from your editor at copy time, and install straight into an agent's own command folder as a real slash command. See Library below.
Team library sources & skill install Add a shared folder or git repo as a library source; browse skill catalogues (even ~2,000-skill ones) grouped A–Z; search names and descriptions across every source; install a skill into Antigravity or Claude Code at project or global scope; bootstrap a whole project to a team standard. See Team library sources below.
Featured libraries A curated Featured section in the Templates panel lists known-good skill libraries as dimmed "click to get" rows, so a new user never has to find and paste a git URL. Refreshes from a remote catalog on startup (one small HTTPS GET, no telemetry); falls back to the bundled list if that fails. No repository is ever cloned without a click and a confirm.
Update Skill… An installed skill whose files differ from its source shows an update available badge in the Context tree. Update Skill… backs it up and replaces it with a fresh copy; Show what changed diffs the installed SKILL.md against the source's.
Context Health A per-project Context Health line reports duplicated rules blocks, global/project overlap ("sent twice on every turn"), stale mirrors, and oversized rules files — click a finding to jump straight to it. See Context Health below.
MCP servers A MCP Servers section (Global and per project) lists every configured server across Claude Code, Cursor, VS Code, and Antigravity — name, transport, and command/host only, values never shown. Copy to… translates a server into another tool's config format, since they don't agree on the config's root JSON key. See MCP servers below.
MCP Library & Featured MCP A Featured MCP shortlist (14 hand-verified official servers) plus Search all servers… against the official registry, in the Templates panel. Featured MCP refreshes from a remote catalog the same way Featured libraries do — replace, never merge, silent fallback to bundled. Required credentials are always written as empty values for you to fill in, never asked for or stored; after install the file opens with the first one already selected. See MCP Library below.
MCP Gaps A per-project (and Global) MCP Gaps row flags servers missing from another tool's config, servers with empty environment variables, and servers that only exist in a read-only config — names and counts only, never values. See MCP Gaps below.
Export Context Pack Bundle a project's rules, Claude memory, and (opt-in) skill folders into a timestamped folder with a manifest, ready to hand to a teammate — MCP config bodies and credentials are hard-excluded. See Export Context Pack below.
Context Gaps A per-project Context Gaps row flags a missing AGENTS.md/Cursor-rules sibling and enabled tools with zero project context — separate from Context Health. See Context Gaps below.
Get started tips An empty Context tree (no projects, no global files yet) shows a Get started section with one-click next steps instead of a blank panel. Disappears once you have anything, or you click a row. See Get started tips below.

Platform support. Project folder decoding — which drives the ⚠ "(folder missing)" badge and the relink flow — works with both Windows (d--dev-project) and macOS/Linux (-Users-you-dev-project) path formats. Windows is the platform ContextZero is developed and manually tested on; macOS and Linux decoding is covered by unit tests but has not yet been exercised on real hardware. If you hit something wrong on either, please open an issue — that feedback is genuinely useful.

Library

Two extra panels under the ContextZero icon:

  • Prompts — built-in starter prompts (onboard a codebase, systematic debug, new-feature kickoff, write tests, code review) plus your own. Click the copy button to put a prompt on the clipboard, ready to paste into any agent. Copy to My Library forks a built-in into ~/.contextzero/prompts/ so you can customise it.
  • Templates — rule templates (Frontend, Backend, Code quality) and a skill template (Systematic debugging). Apply to Project… writes the rules into a project as AGENTS.md, GEMINI.md, or CLAUDE.md (never overwriting), or for a skill template, asks where to install it (Antigravity or Claude Code, project or global — the same destination picker as Install Skill…).

Your custom prompts and templates live in ~/.contextzero/ as plain Markdown.

Prompt placeholders

A prompt can reference the file you're working in, your selection, the workspace folder, or a live git diff — filled in only at copy/install time, never baked into the saved prompt itself:

Placeholder Filled with
{{file}} The active editor's path, relative to its workspace folder.
{{selection}} The active editor's selected text, or the whole document when nothing is selected.
{{project}} The active (or first open) workspace folder's name.
{{diff}} git diff run in that project — only when the prompt actually contains {{diff}} — truncated past ~12,000 characters.
{{args}} Install-time only, see Install as Command… below; never filled by Copy Prompt.

Copy Prompt fills every placeholder it can and copies the result to the clipboard. Anything it can't resolve — no active editor, no git repository — is left in the copied text exactly as written ({{diff}}, never an empty string) and named in the confirmation message.

Install as Command… turns a prompt into a real slash command inside an agent's own command folder:

Target Destination
Claude Code — this project <project>/.claude/commands/<id>.md
Claude Code — global ~/.claude/commands/<id>.md
Cursor — this project <project>/.cursor/commands/<id>.md
Cursor — global ~/.cursor/commands/<id>.md
Antigravity — this project <project>/.agents/workflows/<id>.md (or .agent/workflows/ if that's the folder already there)

Antigravity has no global workflows directory, so it only ever offers a project destination. {{args}} maps to that agent's own argument syntax ($ARGUMENTS for Claude Code, left as-is for Cursor, and Antigravity gets a required description frontmatter block added automatically if the prompt doesn't already have one). Editor-context placeholders ({{file}}, {{selection}}, {{diff}}, {{project}}) can't be represented in a file that has to work for every future run — installing still proceeds, but warns you first which of them will reach the agent literally, unfilled. Like everything else in ContextZero, an existing command file is never overwritten; you're told and it opens instead.

Mirroring rules files

Each project in the Context panel also shows a Readiness line — which of CLAUDE.md, AGENTS.md, GEMINI.md, and memory it has — with a one-click + to create most missing files (GEMINI.md is shown for awareness only). When a missing file has a sibling that already exists in the same project, the row offers Mirror from… instead: it copies that sibling's content into the missing file, prefixed with a provenance comment (<!-- Generated by ContextZero from CLAUDE.md on 2026-07-23. -->) so Context Health can tell a mirror apart from a genuine duplicate and flag it if the source changes afterwards. Mirroring never overwrites an existing file.

Team library sources

Point ContextZero at libraries your whole team shares:

Setting What it does
contextZero.libraryPaths Folders holding shared prompts/templates/skills — a cloned repo or a synced drive.
contextZero.librarySources Git repos ContextZero clones into ~/.contextzero/sources/ and refreshes daily.
contextZero.autoUpdateSources Daily background refresh (on by default).
contextZero.showFeaturedLibraries Show the Featured section of curated libraries in the Templates panel (on by default). Set to false to hide it entirely.
contextZero.featuredCatalogUrl Override the remote catalog URL Featured libraries refresh from — point it at your own company catalog instead of the built-in one.

Featured libraries

On first launch, the Templates panel shows a Featured section above your own sources — a curated list of known-good skill libraries, dimmed as "click to get" rows, so you never have to go find and paste a git URL yourself. The bundled list ships three entries:

Library Repo License Skills
Agentic Awesome Skills sickn33/agentic-awesome-skills MIT ~1,987
Anthropic Skills anthropics/skills Apache-2.0 (document skills are source-available, not open source) official Anthropic skills
Superpowers obra/superpowers MIT process skills — brainstorming, TDD, systematic debugging, writing plans

Clicking a Featured row shows the exact same confirmation dialog as Add Library Source… below — naming the real URL and target directory — then clones it; the row then moves out of Featured and into your own sources.

The list also refreshes from a remote catalog (contextZero.featuredCatalogUrl) so entries can be added or withdrawn without an extension update. That is one HTTPS GET of a small JSON file when the extension starts — no personal data, no telemetry, and it happens without prompting you. If it fails for any reason, the cached and then bundled list is used and nothing is reported to you. No repository is ever cloned without you clicking a row and confirming the dialog. Set contextZero.showFeaturedLibraries to false to skip the fetch and hide the section entirely, or contextZero.featuredCatalogUrl to "" to keep the section but never fetch.

Add Library Source… on the Templates panel clones a repo (shallow, and narrowed to the library folders). Big catalogs — such as agentic-awesome-skills with ~1,969 skills — appear as one row grouped A–Z, and descriptions are read only when you expand a letter.

If a clone or pull fails (no git, a private repo, a timeout, no network), the source still appears in the tree with a ⚠ not downloaded — use Update row instead of silently vanishing — retry with its Update Source button once the problem is fixed. Right-click a git source for Remove Library Source… to drop it from contextZero.librarySources and delete its managed clone.

ContextZero: Search Skills searches skill names and descriptions — descriptions become searchable once that source's index has finished building in the background after a clone or pull — across every source. It does not search prompts or rule templates.

Install Skill… copies a whole skill folder (its SKILL.md plus any scripts/, examples/) into:

Target Destination
Antigravity — this project <project>/.agents/skills/<id>/
Antigravity — global ~/.gemini/config/skills/<id>/
Claude Code — this project <project>/.claude/skills/<id>/
Claude Code — global ~/.claude/skills/<id>/

Files that already exist are skipped and reported, never overwritten — there is no confirmation dialog for this one; it goes straight to a destination picker.

Skills come from library sources you or your team point ContextZero at — often third-party repos — and may include scripts/. Installing a skill places that content where your agent can read and run it, same as any file in your project. Only add sources you trust.

An installed skill used to stay frozen forever: pulling its source repo refreshed the clone but never the copy you'd already installed, with nothing in the UI to say so. Now, once an installed skill's files differ from its source, it shows an update available badge in the Context tree. Right-click it for:

  • Update Skill… — moves the installed folder to ~/.contextzero/backups/<timestamp>/<id>/ and copies the source folder fresh — nothing is deleted and nothing is written over. The backup lands in ContextZero's own folder on purpose: a <id>.backup-<timestamp>/ left beside the skill would still contain a SKILL.md, and your agent would load it as a second copy of the skill you just updated. If a backup of that exact path already exists, the update aborts and leaves the installed skill untouched rather than overwrite it.
  • Show what changed — opens a diff of the installed SKILL.md against the source's.

Bootstrap Project… on a project applies a team standard defined in a bootstrap.json inside any library source, so the standard is versioned with your team's library:

{ "profiles": [ { "name": "Backend service",
  "rules": [{ "template": "backend", "target": "AGENTS.md" }],
  "skills": ["systematic-debugging"] } ] }

ContextZero manages ~/.contextzero/sources/ (clones and the search index) and may delete or re-create what's under it. See Safety model for the full boundary.

Context Health

Each project in the Context panel gets a Context Health row, next to Readiness, that reports:

  • Duplicated rules — the same block of at least 3 lines repeated across two or more of a project's own rules files.
  • Global/project overlap — a rule present in both your global Claude Code CLAUDE.md and this project's copy — called out as "sent twice on every turn" specifically when it's the same file name in both scopes.
  • Mirror drift — a file created by Mirror from… whose source has changed since, so the mirror is now stale.
  • Oversized files — a rules file estimated at 4,000+ tokens (roughly four characters per token), sent to the agent in full on every turn.

Click any finding to open the file at the offending line. The analysis is deferred — it never runs during project discovery, a background scan, or a refresh. It runs when you expand a project, because the collapsed Context Health row's own label has to say how many issues there are; the result is then cached per project until the next refresh. Per file, it examines only the first 1,500 normalised lines (blank lines, headings, and fenced code don't count against that limit). A file past that size shows a note saying analysis stopped there, rather than a clean result you could mistake for "the whole file was checked." Hide the section entirely with contextZero.contextHealth: false.

MCP servers

Each project (and Global) gets an MCP Servers row listing every configured server across the tools that support them:

Config Scope Path Writable
Claude Code Global ~/.claude.json No — see below
Claude Code Project <project>/.mcp.json Yes
Cursor Global ~/.cursor/mcp.json Yes
Cursor Project <project>/.cursor/mcp.json Yes
VS Code Project <project>/.vscode/mcp.json Yes
Antigravity Global ~/.gemini/settings.json No — see below

Reading is lazy: nothing is opened until you expand the row, and the result is cached until the next refresh. A missing config file just shows "none configured" — it's not an error.

Values are never shown. A server's row displays only its name, transport (stdio/http), and either its command or its host — plus a count like "2 env vars" when it has environment variables. No API key, token, or other credential value is ever rendered, logged, or copied.

~/.claude.json is read-only. It's ~69 KB of unrelated Claude Code state (project history, settings) alongside its MCP servers, and re-serialising the whole file to insert one entry risks damaging data this feature has no business touching. Antigravity's global settings.json is read-only for the same reason — MCP servers are one section of a larger settings file. ContextZero only ever reads either file.

Copy to…, on a server row, translates that server into another tool's config format — the tools disagree on the root JSON key (mcpServers for Claude Code and Cursor, servers for VS Code), so a config block copy-pasted directly between them doesn't work. Pick a destination from any writable config (global or any project); the server is inserted under its new tool's key. No existing server is ever overwritten — if a server of that name already exists at the destination, nothing is written and the file opens so you can look. Environment variable names and any credential-bearing command-line arguments are copied with empty values; the confirmation message names exactly which ones you need to fill in before the copied server will work.

For an HTTP server, the row displays only the scheme and host, but the copied config keeps the full pathhttps://mcp.notion.com/mcp copies as https://mcp.notion.com/mcp, not as a dead https://mcp.notion.com. What is stripped is the part of a URL that actually carries credentials: the query string (?token=…) and any user:password@ in front of the host. If either was present, the notification tells you the URL was changed so you can check it.

.vscode/mcp.json may legally contain comments (VS Code writes them itself), and ContextZero reads them fine. Adding a server to such a file rewrites it as plain JSON, so the comments in that one file are not preserved — you're told before and after it happens.

Hide the whole MCP feature — this section and the MCP Library — with contextZero.showMcpServers: false.

MCP Library

The Templates panel has an MCP Library section for the other side of MCP: finding and installing a server, instead of managing ones you already have.

Featured MCP

It leads with a Featured MCP list — a 14-entry, hand-verified shortlist of official servers (GitHub, Sentry, Stripe, Notion, MongoDB, Supabase, Vercel, Linear, Playwright, Figma, Atlassian, Airtable, Cloudflare, Neon) as rows you can click to install directly. Below it, Search all servers… searches the official MCP registry live for anything else.

Featured MCP refreshes the same way Featured libraries does: on startup, ContextZero fetches contextZero.mcpCatalogUrl (a small JSON file) and, if it parses and has usable entries, replaces the list and caches it to ~/.contextzero/mcp-catalog.json; a failed or empty fetch falls back to that cache and then the bundled shortlist, silently — nothing is ever merged, and nothing is reported to you either way. Set contextZero.mcpCatalogUrl to "" to rely only on the bundled/cached list.

Search results always show the full namespaced publisher name alongside the title — e.g. Playwright — ai.smithery/playwright — never just a friendly title. The registry is dominated by aggregator re-publishers: a live search for "playwright" returned six servers from four different publishers, so the publisher is the only way to tell them apart. Only the exact server already in the active Featured MCP list (same package or same URL) is filtered out of the results — searching "github" still shows every other publisher's GitHub server.

Clicking a row (bundled or search result) walks you through:

  1. Pick which config to install into — any writable destination from the same list as MCP servers above (~/.claude.json and Antigravity's settings.json stay off-limits, same as there).
  2. A modal confirms the exact file and the exact command line or URL that will be written, plus the names of any environment variables — you approve what your agent will later run, not just a server name. The executable name itself is only ever one of npx, uvx, node, python, python3, or uv; a registry entry naming anything else falls back to the default for its package type.
  3. Never overwrites another server — a server of that name already at the destination aborts the write and opens the file instead, same as Copy to….
  4. A server with no npm, PyPI, or HTTP package listed in the registry (for example, an OCI-image-only entry) is reported as not installable rather than written as a broken half-entry. Registry-supplied runtime arguments (arguments to npx/uvx) and package arguments (arguments to the server) are both written, in the right order, so a server that needs them isn't installed half-configured.

ContextZero never asks for, stores, or transmits a credential. Required environment variables are written to the file as names with empty values; optional ones are omitted entirely. After writing, the notification lists exactly which variables need filling in, along with their descriptions, and the file opens with the first empty one already selected so you can paste the value straight in.

Every network failure — an unreachable registry, a bad response — degrades quietly to the Featured MCP shortlist: an informational message and an output channel line, never a popup stack trace. Set contextZero.mcpRegistryUrl to empty to disable live search entirely and rely only on Featured MCP.

MCP Gaps

Each project (and Global, empty-env findings only) gets an MCP Gaps row, next to Readiness and Context Health, built from the same lazily-read, cached config data as MCP servers above — expanding it never reads anything MCP Servers hasn't already read this session. It reports:

  • Missing elsewhere — a server configured in one tool's project config but absent from another writable tool's project config for the same project. Click for a quick Copy to… straight to that destination, or to open the source file.
  • Empty env — a server with one or more environment variables still set to "". Click opens the file with the first one selected, same as the post-install reveal in the MCP Library.
  • Read-only-only — a server that exists only in a read-only config (~/.claude.json, Antigravity's settings.json) and nowhere writable — informational, since there's nothing ContextZero can offer to fix.

Every label shows names and counts only — never a value. Hidden along with the rest of MCP by contextZero.showMcpServers: false.

Export Context Pack

Export Context Pack… — from the command palette or a project's right-click menu — bundles a project's rules, Claude memory, and (opt-in) skill folders into a fresh folder you choose, named context-pack-<project>-<stamp>/, plus a MANIFEST.md listing everything in it. MCP servers appear in the manifest by name, transport, and host only — never a config body, never a credential — and .credentials.json, *.db, and any mcp.json/.mcp.json are hard-excluded regardless of what you pick.

  • Include options default to rules and memory on, whole skill folders off — a skill can carry scripts, so packing one is an explicit opt-in every time.
  • Never overwrites: a pack folder name that already exists at the chosen destination fails with a message instead of merging into it.
  • Afterwards you're offered Reveal in Folder and Create Zip (built via Compress-Archive on Windows or zip elsewhere, argument arrays only) — the zip is a separate, stamped file; it's never the only copy of the pack.

Context Gaps

Each project gets a Context Gaps row — separate from Readiness and Context Health — for two specific cross-tool findings, computed from the workspace model plus cheap file-existence checks (never file content, so it can never duplicate Context Health's mirror-drift finding):

  • Rules missingCLAUDE.md exists but AGENTS.md doesn't (so any tool that only reads AGENTS.md sees nothing), or AGENTS.md exists but Cursor has no project rules of its own. Click offers Mirror from… when there's a sibling to generate from, otherwise Create….
  • Tool silent — an enabled provider (Cursor, Kiro, Antigravity) has zero project context files while at least one other enabled provider has some. Click offers Add Context File… filtered to that tool.

Hide it with contextZero.contextGaps: false.

Get started

After install, ContextZero can open a Getting Started walkthrough (seven short steps: the three panels → find projects → readiness → health/gaps → skills → MCP → export for a teammate). Re-open it anytime with ContextZero: Open Walkthrough. Turn off the first-run open with contextZero.showWalkthroughOnActivate: false.

Major tree rows also show a short description and a tooltip that answers what this is, why it helps, and what to click next.

Empty-state tips

The first time the Context tree has no projects and no global files to show, a Get started section appears at the top instead of a blank panel:

  • Open the Get started walkthrough…
  • Set scan roots to find your projects…
  • Browse Featured libraries… / Browse Featured MCP servers… (both focus the Templates panel)
  • Refresh
  • Dismiss these tips

Nothing here fetches, clones, or installs anything on its own — every row just opens an existing settings entry, panel, or command. The section disappears on its own once a project or global file exists, and clicking any row (not only Dismiss) marks it seen (globalState contextZero.seenWelcome) so it doesn't come back. Turn it off entirely with contextZero.showWelcomeTips: false.

Providers

Tool Global Per-project
Claude Code ~/.claude/CLAUDE.md, settings, skills CLAUDE.md, memory, .claude/ settings, skills & agents
Cursor rules live in Cursor's settings database (shown as a note) .cursor/rules/*.mdc, legacy .cursorrules
Kiro ~/.kiro/steering/*.md .kiro/steering/*.md
Antigravity ~/.gemini/antigravity{,-ide}/knowledge/, ~/.gemini/config/skills/ .antigravityrules, GEMINI.md, .agents/skills/
Shared AGENTS.md (the tool-neutral standard read by several agents)

Tools you don't use never appear in the tree.

Verification status: Claude Code and Cursor layouts are verified against real installations. Antigravity's project-root GEMINI.md context file was also found on a real install, and is listed alongside .antigravityrules. Kiro's steering paths and Antigravity's knowledge and skills directories (global and per-project) come from public documentation rather than a populated install of either tool — they're now fixture-verified: the repo's test fixtures (fixtures/home/.kiro, fixtures/home/.gemini, fixtures/home/work/demo-proj) and tests/providerKiroAntigravity.test.ts exercise every documented path, so a layout change would be caught here, but that's still not the same guarantee as hardware. If you use Kiro or Antigravity and something looks wrong, please open an issue.

Settings

Setting Default Purpose
contextZero.scanRoots [] Folders to scan for projects. When empty, the parents of your open workspace folders are used.
contextZero.scanDepth 3 How deep to search below each root.
contextZero.enabledProviders all five Which tools to show. An explicit [] hides every tool.
contextZero.libraryPaths [] Local folders to treat as extra library sources — see Team library sources.
contextZero.librarySources [] Git repos to clone and browse as library sources — see Team library sources.
contextZero.autoUpdateSources true Pull git library sources in the background once a day.
contextZero.showFeaturedLibraries true Show the Featured section of curated libraries in the Templates panel — see Featured libraries.
contextZero.featuredCatalogUrl https://raw.githubusercontent.com/its-tahir/context-zero/main/catalog.json Remote catalog URL Featured libraries refresh from. Empty to rely only on the bundled/cached catalog.
contextZero.contextHealth true Show the per-project Context Health section — see Context Health.
contextZero.contextGaps true Show the per-project Context Gaps section — see Context Gaps.
contextZero.showMcpServers true Show the whole MCP feature: MCP Servers, MCP Gaps (Global and per project), Featured MCP, and the rest of the MCP Library — see MCP servers. false hides all of it.
contextZero.mcpRegistryUrl https://registry.modelcontextprotocol.io Registry URL used by Search all servers… in the MCP Library — see MCP Library. Empty disables live search, relying only on Featured MCP.
contextZero.mcpCatalogUrl https://raw.githubusercontent.com/its-tahir/context-zero/main/mcp-catalog.json Remote catalog URL Featured MCP refreshes from — see Featured MCP. Empty to rely only on the bundled/cached catalog.
contextZero.showWelcomeTips true Show the empty-state Get started section — see Get started.
contextZero.showWalkthroughOnActivate true Open the Getting Started walkthrough once on first activate — see Get started.

Safety model

  • Never deletes your files, and overwrites exactly one kind of file — see the next bullet. Everything else is append-only in practice: copy-memory and template conflicts get a -migrated suffix, skill installs and bootstrap skip any file that's already there and report it, and the strongest operation on your own files is moving a folder aside to a timestamped backup — Claude Code relink (*.backup-<timestamp> in place) and Update Skill… (into ~/.contextzero/backups/<timestamp>/<id>/).
  • The one exception: adding an MCP server rewrites that one config file. Copy to… and the MCP Library insert a server into an existing mcp.json/.mcp.json, and JSON can't be appended to — the file is re-serialised in place. Concretely: every other key and every other server in that file is preserved; a server of the same name is never replaced (the write aborts and the file opens instead); the write is atomic — the new content is staged in a sibling temp file and renamed over the target, so an interrupted write leaves the old file intact rather than a truncated one; and no other file in the extension is ever written this way. The one thing not preserved is comments, in the JSONC files that can have them (.vscode/mcp.json) — you're told before and after. ~/.claude.json and ~/.gemini/settings.json are never written at all.
  • ~/.contextzero/sources/ is a managed cache, not your files. It holds ContextZero's own clones of git library sources and their search index. ContextZero may delete or re-create anything under it — to recover from a partial clone, or when you use Remove Library Source… — but this is the only location it will ever delete from; nothing outside it is touched.
  • Runs git and makes network requests. ContextZero shells out to git to clone and pull library sources (shallow, --filter=blob:none, sparse to the library folders) — daily in the background by default, disable with contextZero.autoUpdateSources: false. Git is only ever invoked with argument arrays (never a shell string), URLs are validated first, credential prompts are disabled outright so a private repo fails instead of hanging, and every invocation is bounded by a timeout.
  • Two unprompted network requests, and what they are. On startup ContextZero fetches contextZero.featuredCatalogUrl (suggested skill libraries) and contextZero.mcpCatalogUrl (suggested MCP servers) — two small JSON files — over HTTPS, without asking. Neither sends anything about you or your code: no telemetry, no identifiers, no file contents, just the GET. Each response is capped at 256 KB, redirects that downgrade to plain HTTP are rejected, and any failure is silent (the bundled list is used). Turn the first off with contextZero.showFeaturedLibraries: false or by setting contextZero.featuredCatalogUrl to ""; turn the second off with contextZero.showMcpServers: false or contextZero.mcpCatalogUrl to "". Cloning a repository is the one thing that never happens unprompted — every clone, featured or manual, requires the modal confirmation dialog that names the URL and target folder. Installing an MCP server likewise always shows the confirmation modal naming the exact command/URL and env var names before anything is written.
  • Sensitive and binary files invisible. .credentials.json, *.db, *.pb, *.pbtxt, and lock files never appear in the tree or search for any tool, and are never read.
  • Confirmation where it matters. Cloning or removing a library source, and Claude Code relink/copy-memory, show a modal dialog first. Install Skill… and Apply to Project… don't confirm — they show a destination picker and skip files that already exist, so there's nothing destructive to confirm.
  • Auditable. Every write is logged to the ContextZero output channel (View → Output → ContextZero).

Installation

From the Marketplace — search ContextZero in the Extensions view (Ctrl+Shift+X), or:

ext install TahirNazir.context-zero

or from a terminal:

code --install-extension TahirNazir.context-zero

The ContextZero icon then appears in the activity bar.

Marketplace listing: TahirNazir.context-zero

Building from source

If you'd rather build it yourself:

git clone https://github.com/its-tahir/context-zero.git
cd context-zero
npm install
npm run package                              # builds context-zero-0.3.0.vsix
code --install-extension context-zero-0.3.0.vsix

Without the command line: Ctrl+Shift+PExtensions: Install from VSIX… → pick the .vsix.

Updating after you change the code

Marketplace installs update themselves. A .vsix you built and installed yourself does not — after editing the source:

npm run compile      # check it builds
npm test             # run the unit tests
npm run package      # rebuild the .vsix
code --install-extension context-zero-0.3.0.vsix   # reinstalls over the old one

Then reload the VS Code window. Tip: bump "version" in package.json when you make real changes, so you can tell which build is installed (code --list-extensions --show-versions).

For development you don't need to install at all: open this folder in VS Code and press F5 — an Extension Development Host window launches with the extension loaded straight from source.

Development

npm run compile      # TypeScript build → out/
npm run watch        # rebuild on save
npm test             # unit tests (vitest) — never touch your real tool homes
npm run test:vscode  # integration smoke test against a fixture home

The tests run against temp directories and a fixture home directory (CONTEXTZERO_HOME override) — your real data is never involved.

Changelog

0.4.0

Clarity: Getting Started walkthrough; plain-English descriptions and tooltips across Context, Prompts, and Templates; Open Walkthrough tip in the empty-state section. See Get started and CHANGELOG.md.

0.3.0

Team Ops: an MCP Servers section in the Context tree (Global and per project) — read-only, values never shown — with Copy to… for moving a server between tools' configs; a Featured MCP shortlist plus live registry search in the MCP Library; post-install credential reveal; MCP Gaps and Context Gaps rows flagging what's missing across tools; Export Context Pack… for handing a teammate a safe snapshot; empty-state Get started tips; and macOS/Linux Claude Code project matching. See MCP servers, MCP Library, MCP Gaps, Export Context Pack, Context Gaps, and Get started below, or CHANGELOG.md for full detail.

0.2.0

Featured libraries in the Templates panel; Update Skill… and diff for skills whose source has moved on; prompt placeholders and Install as Command…; Mirror from… to generate a missing rules file from a sibling; and per-project Context Health. See CHANGELOG.md for detail.

0.1.0

First public release: one sidebar for Claude Code, Cursor, Kiro, Antigravity and AGENTS.md; monorepo nesting; per-project readiness; a prompt and template library; team library sources with A–Z browsing, search and skill installation; project bootstrap; and Claude Code relink/recovery. See CHANGELOG.md for detail.

License

MIT


TN. — crafted by Tahir Nazir · its-tahir.com

About

One VS Code sidebar for the memory, rules and skills of every AI coding agent — Claude Code, Cursor, Kiro, Antigravity and AGENTS.md. Shared prompt/skill libraries for your team, one-click skill install, and safe recovery when a project folder is renamed.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages