Using context-kit with GitHub Copilot¶
context-kit is a plugin marketplace that GitHub Copilot CLI installs from
directly — the same plugins Claude Code and APM use, from one shared source.
No manual copying of skill folders.
GitHub Copilot CLI installs via copilot plugin; Claude Code installs via
/plugin and APM via apm install. The retrieval SKILL.md bodies, their
references/, the agents, and the commands are identical across hosts.
Install for GitHub Copilot¶
Register this marketplace, then install the plugins you want:
copilot plugin marketplace add mbeacom/context-kit
copilot plugin install code-search@context-kit # auto-installs retrieval-core
copilot plugin install indexkit@context-kit
copilot plugin install obsidian@context-kit
copilot plugin install adr-bridge@context-kit
copilot plugin install plan-execute@context-kit
copilot plugin install context-steering@context-kit
copilot plugin install verify@context-kit # auto-installs retrieval-core
copilot plugin install runtime-evidence@context-kit # pulls verify, then retrieval-core
copilot plugin install context-handoff@context-kit # pulls verify, then retrieval-core
copilot plugin install memory@context-kit # pulls handoff, verify, retrieval-core
copilot plugin install corpus-review@context-kit # pulls plan-execute, verify
copilot plugin install deep-review@context-kit # pulls plan-execute, verify
copilot plugin install token-economics@context-kit # pulls verify, retrieval-core
copilot plugin install plugin-forge@context-kit
runtime-evidence and context-handoff depend on verify; verify
transitively pulls retrieval-core. memory depends on context-handoff.
Manage them with copilot plugin list, copilot plugin update <name>, and
copilot plugin uninstall <name>.
What you get¶
| Repository asset | GitHub Copilot | Claude Code |
|---|---|---|
plugins/*/skills/<name>/SKILL.md (+ references/) |
Installed via copilot plugin install |
Installed via /plugin install |
plugins/retrieval-core/agents/retrieval-strategist.md |
Installed with the plugin | Installed as a subagent |
plugins/indexkit/bin/indexkit |
Auto-bootstrapped by the plugin's SessionStart hook |
Auto-bootstrapped by the same hook |
plugins/memory/scripts/memory-provider.py |
Explicit commands, plus opt-in hooks — Copilot loads hooks/hooks.json |
Explicit commands plus the same opt-in hooks |
.claude-plugin/* manifests |
Used to resolve the marketplace | Marketplace packaging |
Copilot's discovery-critical skill frontmatter is name and description, which
this repo's skills keep compatible.
Using the skills¶
Once installed, ask Copilot naturally, for example:
- "Use the retrieval strategy to find where retry backoff is handled."
- "Use code-search to find structural React
useEffectcleanup issues." - "Use indexkit to query my notes for billing open questions."
- "Use the Obsidian RAG bridge to search notes linked to Project X."
- "Analyze the prospective impact of changing this schema."
- "Collect bounded runtime evidence for this unable-to-check claim."
- "Write a context handoff for the next session."
- "Recall why this project changed its retry policy, then verify current evidence."
Bootstrapping the indexkit runtime¶
indexkit's CLI runs on a uv-managed venv. Both Claude Code and
GitHub Copilot CLI bootstrap it automatically from the plugin's SessionStart
hook, so no manual step is normally needed.
Bootstrap it yourself only when the venv is missing or stale — on APM, which
does not deploy hooks, or after an indexkit upgrade. Check first:
The fix depends on which one it reports. When the venv is missing, the
quickest route needs no clone — the launcher falls back to an indexkit on
PATH:
When it reports stale, that shortcut does not apply: the launcher prefers an
existing venv over PATH, so a packaged install would sit unused behind the
stale copy. Rebuild the venv from a clone of this repo:
export CONTEXT_KIT_DATA="$HOME/.local/share/context-kit"
bash plugins/indexkit/scripts/bootstrap.sh
export PATH="$PWD/plugins/indexkit/bin:$PATH"
ollama pull nomic-embed-text
indexkit index /path/to/vault --name notes
indexkit query "open questions about billing" --name notes --k 8
indexkit query "open questions about billing" --name notes --k 8 --hybrid
Supported neutral environment variables:
| Variable | Purpose | Claude fallback |
|---|---|---|
CONTEXT_KIT_DATA |
venv and index storage for indexkit |
CLAUDE_PLUGIN_DATA |
CONTEXT_KIT_EMBED_MODEL |
ollama embedding model | CLAUDE_PLUGIN_OPTION_EMBED_MODEL |
CONTEXT_KIT_OLLAMA_HOST |
ollama base URL | CLAUDE_PLUGIN_OPTION_OLLAMA_HOST |
CONTEXT_KIT_OBSIDIAN_VAULT |
vault path used by examples/fallbacks | CLAUDE_PLUGIN_OPTION_VAULT_PATH |
CONTEXT_KIT_RUNTIME_EVIDENCE_CONFIG |
user-owned exact-ID JSON command allowlist | — |
CONTEXT_KIT_RUNTIME_EVIDENCE_ROOT |
installed runtime-evidence root | CLAUDE_PLUGIN_ROOT |
CONTEXT_KIT_HANDOFF_PATH |
handoff artifact override | — |
CONTEXT_KIT_MEMORY_PROVIDER |
none or optional mempalace provider |
CLAUDE_PLUGIN_OPTION_PROVIDER |
CONTEXT_KIT_MEMORY_HOME |
reviewed records and project-isolated provider data | CLAUDE_PLUGIN_OPTION_MEMORY_HOME |
CONTEXT_KIT_MEMORY_PROJECT |
explicit durable-memory project scope (overrides Copilot auto-detection) | CLAUDE_PLUGIN_OPTION_PROJECT |
CONTEXT_KIT_MEMORY_AUTO_CAPTURE |
opt-in Claude lifecycle forwarding | CLAUDE_PLUGIN_OPTION_AUTO_CAPTURE |
CONTEXT_KIT_MEMORY_ROOT |
installed memory plugin root | CLAUDE_PLUGIN_ROOT |
CONTEXT_KIT_TOKEN_ECONOMICS_ROOT |
installed token-economics root | CLAUDE_PLUGIN_ROOT |
CONTEXT_KIT_CLAUDE_PROJECTS |
Claude Code transcript dir to read | — |
CONTEXT_KIT_COPILOT_DB |
Copilot CLI session store to read | — |
Copilot plugin installs discover the memory plugin's stdio MCP server
automatically. GitHub Copilot Desktop has no separate per-project MCP
environment surface, so the memory hook creates a narrowly scoped session
binding from trusted host data: SessionStart payload sessionId must exactly
match COPILOT_AGENT_SESSION_ID, and payload cwd must resolve to a Git
top-level with a canonical github.com/owner/repository origin. On POSIX, the
binding contains only the session ID and normalized project, is mode-0600 below
a mode-0700 directory, and is removed by a matching SessionEnd.
Explicit configuration still wins, with resolution order --project →
CONTEXT_KIT_MEMORY_PROJECT → deprecated
PRODUCTIVITY_SKILLS_MEMORY_PROJECT → CLAUDE_PLUGIN_OPTION_PROJECT → trusted
Copilot binding. MCP cwd, PWD, prompt content, and tool arguments never select
scope. Hosts without Copilot's matching hook/session-ID support still refuse
until a project is configured. Windows, other Git hosts, and deeper namespaces
also require explicit configuration because automatic routing cannot verify the
owner-only ACL or preserve a unique identity there.
The Claude-specific variables remain supported so existing plugin installs keep
working. The CONTEXT_KIT_* names are preferred for portable docs and
shell profiles shared across agents. The former PRODUCTIVITY_SKILLS_* names
(from before the marketplace was renamed to context-kit) are still honored as a
deprecated alias — resolution order is CONTEXT_KIT_* → PRODUCTIVITY_SKILLS_* →
the Claude fallback — but will be dropped in a future release; migrate when convenient.
Tooling expectations¶
Neither host installs the underlying CLI tools for you. Install the same tools the skills expect:
- Required for
code-search:rg(ripgrep). - Optional but useful:
fd,ast-grep/sg,semgrep,jq,yq,gron,duckdb,sqlite-utils,rga,pandoc,pdftotext,difftastic,tokei,scc, andrtk. - Required for
indexkit:uv,ollama, and an embedding model such asnomic-embed-text. SQLite FTS5 is required only for opt-in--hybrid; the default semantic mode remains available without it. - Required for
runtime-evidenceandcontext-handoff: Python 3. Their runner and validator use only the standard library. The runtime runner requires POSIX and refuses Windows before execution; the handoff validator is cross-platform. Runtime evidence's optional-tool path ships no runner, so it needs neither Python nor POSIX — only an approved, host-exposed observation tool. Copilot does not provide universal host-level command enforcement; runtime collection on the runner path remains bound to the plugin's reviewed exact-ID allowlist, while the optional-tool path is bound by operator approval plus host policy, with nothing enforced by the plugin. - Optional for
obsidian-rag-bridge: the officialobsidianCLI with Obsidian running; otherwise use therg/fdfallback over vault files. - Required for local
memoryrecords: Python 3.10+ and Git onPATH. Optional provider recall uses a separately installedmempalaceCLI. Copilot CLI does load the plugin'shooks/hooks.json, so opt-in session-start recall and boundary capture work here; both stay off until explicitly enabled.
Run plugins/code-search/scripts/check-tools.sh from a clone of this repository to
see what is already installed and what brew install ... command would fill the gaps.
Authoring portable skills¶
When updating this repo, keep the reusable retrieval instructions agent-neutral:
- Put cross-agent workflow knowledge in
SKILL.mdandreferences/. - Keep Claude marketplace mechanics in
.claude-plugin/, hooks, and Claude-only docs. - Prefer
CONTEXT_KIT_*in portable examples, withCLAUDE_PLUGIN_*documented as the Claude fallback. - State host behavior precisely. Claude Code and GitHub Copilot CLI both load a
plugin's
hooks/hooks.json; APM does not deploy hooks, so note when a step is automatic on the hook-running hosts but manual on APM. - Keep command output compact when possible (
rtkis optional and safe to omit).