Build system for AI coding-agent context.
contextd compiles workspace knowledge, packs, contracts, and policies into deterministic context artifacts for Claude, Codex, Cursor, and MCP.
Vietnamese: Onboarding (VI) · Install Guide (VI)
English: Onboarding (EN) · Install Guide (EN)
-
Agent context is a build artifact Team knowledge is source material;
contextd contextcompiles the task-specific artifact consumed by agent adapters. -
Workspace isolation is mandatory Retrieval and context generation are scoped to the active workspace for the current codebase.
-
Packs are cognitive scaffolds, not just templates
Packs are reusable reasoning modules that shape task framing, validation, and execution quality. -
Runtime-neutral core, adapter-specific surfaces
.contextd/config.jsonand the CLI are canonical. Claude Code slash commands, Codex skills, Cursor rules, and plain bundles consume the same workspace knowledge through adapters. -
Deterministic knowledge priority
Contracts > Platform Patterns > Project Documentation > Domain Knowledge.
- Teams using AI coding agents across multiple projects/companies and needing strict workspace-level isolation.
- Engineers/tech leads who want reusable patterns + runtime adapters so agent output is consistent.
- Product/ops/domain teams who need structured knowledge that agents can execute against.
- Also useful for solo builders and platform/documentation owners who want repeatable AI-assisted workflows.
Not a good fit if you only need a static human-readable wiki without agent workflows.
This project is maintained on a best-effort basis.
- Community contributions are welcome
- If maintainer capacity changes, the project may move to maintenance mode or archive status
Use is provided under the repository license (MIT) and is offered "AS IS", without warranty.
| Capability | Status |
|---|---|
| Claude Code slash commands | Stable |
| Claude Code subagents | Stable |
| Workspace/packs markdown engine | Stable |
| CLI: resolve/find/bundle | Available from GitHub Releases or source checkout |
| CLI: deterministic task context | Available (contextd context) |
| CLI: diagnostics and selection explain | Available (contextd doctor, contextd explain) |
| CLI: governance and evaluation | Available (contextd policy-check, contextd pack-validate, contextd eval --golden) |
| Plain markdown bundle export | Available |
| Codex skill/plugin export | Available |
| Cursor rules export | Available |
| MCP stdio tools adapter | Available (contextd mcp-server) |
System requirements
- macOS/Linux:
bashrequired. - Windows: PowerShell + Git Bash or WSL recommended for shell installer execution.
- Write access to
~/.contextd/for global config. Claude Code adapters still write to~/.claude/. - Release binary installer prerequisites:
curlorwgeton macOS/Linux; PowerShellInvoke-WebRequeston Windows. - Source/developer installs require Python 3 and Git.
contextd is a local build system for agent inputs:
- CLI core:
contextd resolve,contextd doctor,contextd find,contextd bundle - Task context artifact:
contextd context "task" --format json, withcontextd explain "task"for selection trace - Manifest index:
.contextd/manifest.json - Runtime export/adapters: plain markdown, Codex skill/plugin, Cursor rules, Claude Code artifacts, MCP stdio tools
Existing .claude/commands and .claude/agents remain supported adapters during the migration window, but .contextd/config.json is the canonical project config.
For the deeper model, see docs/build-system-model.md. It explains source inputs, build graph, artifact lifecycle, determinism boundaries, and common failure modes.
- contextd is not a vector database.
- MCP is optional. contextd does not require an MCP SDK, remote MCP server, or orchestrator runtime.
- contextd does not replace the coding agent; it builds scoped, auditable inputs for the agent.
contextd = build engine (shared) + N workspaces (source knowledge) + adapter outputs.
contextd/
├── agents/ ← ENGINE — system prompt, pipeline, coding rules (workspace-agnostic)
├── templates/ ← ENGINE — templates for new workspaces and docs
├── .contextd/ ← ENGINE — manifest/config/context runtime namespace
├── .claude/ ← ADAPTER — Claude Code slash commands
└── workspaces/ ← N workspaces, each with platform/domains/projects/... data
└── {name}/...
# Active workspace is per-codebase, stored in <project>/.contextd/config.json.
Legacy <project>/.claude/wiki.json and <project>/.Codex/wiki.json are read as adapters during the migration window. They are not the source of truth.
Packs are stack/use-case knowledge layers between engine and workspace:
- Engine: shared, stack-agnostic rules and pipeline.
- Packs: stack-specific rules/patterns/contracts (web-api, event-driven, frontend, agentic, product, ...).
- Workspace: company/project-specific domain and implementation knowledge.
Enable packs via:
- Workspace default:
workspaces/{ws}/workspace.md→## Packs - Per-codebase override:
<cwd>/.contextd/config.json→packs(replace semantics)
See packs/README.md for the full catalog.
- Engine folders: agents/, templates/, .claude/commands/
- Workspace structure and overrides: workspaces/README.md
Short one-liners from GitHub Release assets (generated per release tag):
curl -fsSL https://github.com/philngt/contextd/releases/latest/download/install.sh | shPowerShell (Windows):
iwr https://github.com/philngt/contextd/releases/latest/download/install.ps1 -UseBasicParsing | iexThese install prebuilt contextd binaries from GitHub Releases. Users do not need to build the CLI locally.
TAG="vX.Y.Z"
BASE_URL="https://github.com/philngt/contextd/releases/download/${TAG}"
curl -fL -o install.sh "${BASE_URL}/install.sh"
curl -fL -o SHA256SUMS.txt "${BASE_URL}/SHA256SUMS.txt"
grep ' install.sh$' SHA256SUMS.txt | shasum -a 256 -c -
sh install.shPowerShell (Windows):
$Tag = "vX.Y.Z"
$BaseUrl = "https://github.com/philngt/contextd/releases/download/$Tag"
Invoke-WebRequest "$BaseUrl/install.ps1" -OutFile "install.ps1"
Invoke-WebRequest "$BaseUrl/SHA256SUMS.txt" -OutFile "SHA256SUMS.txt"
$expected = (Select-String -Path .\SHA256SUMS.txt -Pattern ' install.ps1$').Line.Split(' ')[0].Trim()
$actual = (Get-FileHash .\install.ps1 -Algorithm SHA256).Hash.ToLower()
if ($actual -ne $expected.ToLower()) { throw "SHA256 mismatch for install.ps1" }
.\install.ps1Developer/source checkout flow (for editing this repo or installing Claude adapters from a checkout):
pip install -e .
bash scripts/install-to-claude.sh --knowledge-root ~/contextd --default-workspace default
bash scripts/install-to-claude.sh --dry-run
bash scripts/install-to-claude.sh --forceIf your workspaces live in a separate team repo:
bash scripts/install-to-claude.sh --knowledge-root ~/company-wiki --default-workspace sharedcontextd migrate-config --dry-run
contextd migrate-configThis creates <project>/.contextd/config.json from an existing .claude/wiki.json or .Codex/wiki.json. The legacy file may remain in place for compatibility.
/list-workspaces
/switch-workspace {name}
Verify the runtime before asking an agent to work:
contextd resolve --format json
contextd doctor --format text/use-contextd "Add Kafka consumer..."
Or with the runtime-neutral CLI:
contextd context "Add Kafka consumer..." --format json
contextd explain "Add Kafka consumer..." --format text
contextd contract-path citation-formatcontextd context emits the canonical JSON artifact. contextd explain shows why docs were selected or dropped, including gaps, warnings, source hashes, and the lightweight budget report.
See docs/context-quality.md for budget semantics, safety guard behavior, and rollout scorecards.
Use this loop before rolling contextd into a team workflow or after changing packs/workspace knowledge:
contextd doctor --format json
contextd pack-validate --all --format json
contextd context "debug context quality" --format json --no-materialize
contextd explain "debug context quality" --format json
contextd policy-check "debug context quality" --format json
contextd eval --golden --workspace default --format json- docs/governance.md: policy-as-code over selected context.
- docs/pack-validation.md: pack API and retrieval-map validation.
- docs/evaluation.md: golden-task evaluation for context selection quality.
- docs/build-system-model.md: deeper product and artifact model.
Run contextd as a local stdio MCP tools server:
contextd mcp-server --knowledge-root ~/contextd --workspace default
contextd mcp-config --client codex --knowledge-root ~/contextd --workspace defaultSee docs/mcp.md for Claude, Cursor, Codex snippets, security notes, tools, resources, and prompts.
/update-contextd
/rebase-contextd
/new-workspace {name}
contextd can also be used with OpenAI Codex CLI via the exported skill or MCP adapter.
- Install the
contextdCLI with the release binary installer above. For source checkout development only:pip install -e . - Install the Codex skill from the CLI:
If you are working from this source checkout, the helper script is equivalent:
contextd export --runtime codex-plugin --installbash scripts/setup-codex-skills.sh
- In any project with
.contextd/config.json, Codex can now use contextd:codex 'Run contextd resolve and find the relevant contract for this task'
Workflow: deploy-pages.yml
- Trigger:
pushtomainwhenonboarding/**changes- manual
workflow_dispatch
- Build flow:
bash scripts/package-release.sh- collect
onboarding/andrelease/ - deploy to
github-pages
Workflow: release.yml
- Trigger:
- semver tag push
v*.*.* - manual
workflow_dispatch
- semver tag push
- Flow: package release artifacts, then publish GitHub Release assets.
- Slash commands not visible: re-run
bash scripts/install-to-claude.shand restart Claude Code. - Missing
.contextd/config.json: runcontextd migrate-config,/contextd-setup, or/switch-workspace. - Wrong workspace context: verify
workspacein<cwd>/.contextd/config.json; legacy adapters are lower priority during migration.
See CONTRIBUTING.md.