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 Nazir — its-tahir.com
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.
| 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.
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, orCLAUDE.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.
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.
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.
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. |
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 aSKILL.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.mdagainst 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.
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.mdand 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.
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 path — https://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.
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.
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:
- Pick which config to install into — any writable destination from the same
list as MCP servers above (
~/.claude.jsonand Antigravity'ssettings.jsonstay off-limits, same as there). - 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, oruv; a registry entry naming anything else falls back to the default for its package type. - 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….
- 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.
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'ssettings.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… — 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-Archiveon Windows orzipelsewhere, argument arrays only) — the zip is a separate, stamped file; it's never the only copy of the pack.
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 missing —
CLAUDE.mdexists butAGENTS.mddoesn't (so any tool that only readsAGENTS.mdsees nothing), orAGENTS.mdexists 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.
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.
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.
| 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.mdcontext 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) andtests/providerKiroAntigravity.test.tsexercise 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.
| 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. |
- 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
-migratedsuffix, 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.jsonand~/.gemini/settings.jsonare 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
gitand makes network requests. ContextZero shells out togitto clone and pull library sources (shallow,--filter=blob:none, sparse to the library folders) — daily in the background by default, disable withcontextZero.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) andcontextZero.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 withcontextZero.showFeaturedLibraries: falseor by settingcontextZero.featuredCatalogUrlto""; turn the second off withcontextZero.showMcpServers: falseorcontextZero.mcpCatalogUrlto"". 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).
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-zeroThe ContextZero icon then appears in the activity bar.
Marketplace listing: TahirNazir.context-zero
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.vsixWithout the command line:
Ctrl+Shift+P→ Extensions: Install from VSIX… → pick the.vsix.
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 oneThen 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.
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 homeThe tests run against temp directories and a fixture home directory
(CONTEXTZERO_HOME override) — your real data is never involved.
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.
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.
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.
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.
MIT
TN. — crafted by Tahir Nazir · its-tahir.com