Context CLI v0.8.0
374 commits since v0.6.0, 2255 files changed, and the most ambitious architectural overhaul in ctx's history. This release adds an MCP server for tool-agnostic AI integration, a memory bridge connecting Claude Code's auto-memory to .context/, and a VS Code extension with 15 commands. Under the hood, every CLI package was restructured into a cmd/ + core/ taxonomy, all user-facing strings were externalized to YAML for i18n readiness, and the sole third-party UI dependency (fatih/color) was removed.
Canonical Release Narrative
https://ctx.ist/blog/2026-03-23-ctx-v0.8.0-the-architecture-release/
Highlights
- MCP Server: Full Model Context Protocol v0.2 implementation (
ctx mcp serve) with 8 tools, 4 prompts, resource subscriptions, and session state. Any MCP-compatible AI tool can now read and write.context/files without ctx-specific integration. - Memory Bridge:
ctx memory sync/import/diffconnects Claude Code's auto-memory (MEMORY.md) to.context/files, turning ephemeral tool memory into structured project context. - Total String Externalization: All command descriptions, flag descriptions, and user-facing text routed through embedded YAML assets (
commands.yaml,flags.yaml,text/*.yaml) withDescKeyconstant lookups. Foundation for future localization. - Architecture Overhaul: Every CLI package restructured into
cmd/root/(cobra wiring) +core/(logic and types). Output functions moved tointernal/write/packages. Cross-cutting types consolidated ininternal/entity. Errors split into 22 domain files ininternal/err/. - VS Code Extension v0.8.0: 15 new commands covering complete, remind, tasks, pad, notify, and system operations; auto-bootstrap of ctx binary on first use.
Features
MCP Server
- Implement MCP v0.1 spec: JSON-RPC 2.0 over stdin/stdout with tools for add, recall, status, drift, compact, and watch
- Implement MCP v0.2: add prompts (agent packet, constitution, tasks review), resource subscriptions, and session state tracking
- Extract routes, catalog, defs, dispatch, and response builder packages for clean separation
Memory Bridge
- Add
ctx memory syncto mirror Claude Code MEMORY.md into.context/memory/ - Add
ctx memory importwith--dry-runfor promoting auto-memory entries into decisions, learnings, or conventions - Add
ctx memory diffto show divergence between auto-memory and context files - Add
check-memory-drifthook to nudge when MEMORY.md changes
Webhook Notifications
- Add
ctx notifywith fire-and-forget webhook delivery - Encrypted webhook URL storage using AES-256-GCM
- Thread session ID through all system hooks for webhook attribution
- Pass hook output as webhook detail for all system hooks
CLI Commands
- Add
ctx guidecommand for onboarding and help - Add
ctx depfor multi-ecosystem dependency graphs (Go, Node.js, Python, Rust) - Add
ctx system bootstrapfor AI agent context-dir discovery - Add
ctx system statsfor session token usage telemetry - Add
ctx site feedfor Atom 1.0 blog feed generation - Add
ctx pad import,ctx pad export, andctx pad merge - Add
ctx recall syncfor frontmatter-to-state lock synchronization - Add
ctx changefor codebase change detection - Add
ctx loopfor generating autonomous iteration scripts
Hooks
- Add
context-load-gatev2: auto-inject context content instead of directing agent to read files - Add
check-freshnesshook with per-file review URL configuration - Add
check-knowledge,check-map-staleness,specs-nudge, andpost-commithooks - Add
check-memory-drift,check-version, andcheck-task-completionhooks - Strengthen
qa-reminderwith hard gate and anti-deferral language - Make notify events opt-in (no config = no notifications)
- Replace configurable session prefix pair with configurable list
VS Code Extension
- Add 15 commands: complete, remind, tasks, pad show/edit, notify, system bootstrap/stats/resources/backup, recall export/list, drift, status
- Auto-bootstrap ctx binary on first use
- Fix task handler and broken documentation links
Security
- Centralize file I/O with system path deny-list
- Add
SafePostto centralize HTTP client security policy - Add
SafeCreateFileandSafeAppendFilewith permission enforcement - Move encryption key to global
~/.ctx/.ctx.key(replaces per-project slug keys) - Add Markdown session parser for tool-agnostic session ingestion
- Safe-by-default recall export with lock/unlock and
--keep-frontmatterflag
System Monitoring
- Add
sysinfopackage with platform build tags for OS metrics - Add
ctx system resourcesfor memory, swap, disk, and load display - Add
ctx doctorwith configurable health checks - Add heartbeat token telemetry with conditional fields
- Auto-prune state directory on session start
Bug Fixes
- Fix
resourcesListreturning only 1 MCP resource; deduplicate subscribe/unsubscribe handlers - Fix recall export
--forceto properly discard enriched frontmatter - Fix decision insertion inside HTML comment blocks
- Fix memory drift tombstone scoping (global tombstones were suppressing hooks across all sessions)
- Fix
lint-drift.shfalse positives:Use*constants incorrectly checked against commands.yaml, wrong exclusion filenames, cross-namespace duplicate check flagging intentional key reuse - Fix journal
consolidateToolRunsroot cause:(xN)on its own line creating broken fences - Resolve all golangci-lint v2 errcheck and staticcheck warnings
- Eliminate all
nolint:errcheckdirectives in favor of explicit error handling
Refactoring
Architecture
- Restructure all 24 CLI packages into
cmd/root/+core/taxonomy withparent.gowiring - Move all output functions from
core/andcmd/tointernal/write/domain packages - Consolidate cross-cutting types in
internal/entity(session, parser, export types) - Split
internal/errinto 22 domain files replacing monolithicerrors.go - Extract
internal/entryfor shared entry domain API - Extract
internal/inspectfor string predicates - Extract
internal/formatfor shared formatting utilities - Extract
internal/iofor safe file operations (TouchFile,SafeCreateFile) - Move
Cmd()from parent packages intocmd/root/cmd.goacross all CLI packages - Pure-logic
CompactContextwith no I/O; callers own file writes and reporting
String Externalization
- Externalize all 105 command descriptions to
commands.yaml - Externalize all flag descriptions to
flags.yaml - Split
text.yamlinto 6 domain files loaded vialoadYAMLDir - Add exhaustive
TextDescKeytest verifying all 879 constants resolve to non-empty YAML values - Replace inline flag name strings with
cFlagconstants - Replace Unicode escape sequences with
config/tokenicon constants - Eliminate hardcoded pluralization; use explicit singular/plural text key pairs
Code Quality
- Remove
fatih/colordependency; Unicode symbols are sufficient for terminal output - Add
doc.goto all 75 packages missing package documentation - Standardize import aliases: Yoda-style, camelCase, domain-specific
- Singularize all CLI command directory names
- Replace typographic em-dashes with ASCII equivalents across codebase
- Add
Use*constants for all 35 system subcommands - Centralize errors in
internal/err, eliminating per-packageerr.gobroken-window pattern - Delete legacy key migration code (5 callers, test coverage, zero users)
- Eager
Init()for static embedded data instead of per-accessorsync.Once
Config
- Split
commands.yamlinto 4 domain files - Add composite directory path constants for multi-segment paths
- Consolidate all session state to
.context/state/
CI
- Add DCO (Developer Certificate of Origin) workflow
- Fix missing
get-pr-commitsstep in DCO check
Dependencies
- Remove
fatih/color(terminal coloring); replaced by Unicode symbols - Remaining direct dependencies:
spf13/cobra,gopkg.in/yaml.v3
Documentation
- Add release operations runbook (
docs/operations/release.md) - Add ctx Manifesto as docs landing page
- Restructure Getting Started into focused pages with next-up chains
- Comprehensive docs style audit: fix typography, stale refs, hook diagrams, skill lists
- Add CODEOWNERS file with 4 contributors
- 6 blog posts: "Code Is Cheap, Judgment Is Not", "The 3:1 Ratio", "Merge Debt", and others
Contributors
Full changelog: v0.6.0...v0.8.0
Below is the auto-generated release notes:
What's Changed
- fix: UTF-8 safe string truncation by @usirin in #12
- fix: add required flags to decision example in quickstart by @doguhanniltextra in #13
- ctx v0.6.0: Convert shell hooks to Go plugin by @josealekhine in #14
- Fix incorrect plugin path in Getting Started installation guide by @hamzaerbay in #15
- feat: add VS Code/Copilot integration for tool-agnostic sessions (fixes #7) by @bilersan in #16
- fix: decision insertion inside HTML comment block by @josealekhine in #20
- feat(vsix): auto-bootstrap binary + full CLI command coverage by @bilersan in #22
- chore(deps): Bump the npm_and_yarn group across 1 directory with 1 update by @dependabot[bot] in #23
- chore(deps-dev): Bump rollup from 4.57.1 to 4.59.0 in /editors/vscode in the npm_and_yarn group across 1 directory by @dependabot[bot] in #24
- fix: resolve all pre-existing compliance violations by @bilersan in #26
- feat: add MCP server for tool-agnostic AI integration by @CoderMungan in #27
- Add @parlakisik as a code owner by @parlakisik in #37
- chore(app): adding @hamzaerbay as a code owner by @hamzaerbay in #38
- add @CoderMungan as a code owner by @CoderMungan in #39
- 昇龍拳 @bilersan into CODEOWNERS by @bilersan in #40
- mid refactoring by @josealekhine in #43
- feat(mcp): implement MCP v0.2 — tools, prompts, session state, subscr… by @CoderMungan in #42
- chore(deps-dev): Bump undici from 7.22.0 to 7.24.1 in /editors/vscode in the npm_and_yarn group across 1 directory by @dependabot[bot] in #41
- Releave/v0.8.0 by @josealekhine in #46
New Contributors
- @usirin made their first contribution in #12
- @doguhanniltextra made their first contribution in #13
- @hamzaerbay made their first contribution in #15
- @bilersan made their first contribution in #16
- @CoderMungan made their first contribution in #27
- @parlakisik made their first contribution in #37
Full Changelog: v0.3.0...v0.8.0
