MapCtx is planning and delivery intelligence for work executed by coding agents across multiple harnesses.
Current release combines:
- an external project store as the live authority (
plansAuthority: storeinmapctx.toml), shared across worktrees through themapctxCLI - generated, read-only board snapshots:
TASKS.mdand the structured field blocks oftasks/<ID>.md - visual workflows (VS Code extension; OpenCode plugin frozen)
- GitHub Issues/Projects sync via
@mapctx/sync-engine
vNext keeps rich task planning, resource-aware waves, Kanban, and Gantt, but
moves live mutable state to an external project store. Traycer is first execution
adapter; Git stores approved specs/ADRs rather than runtime state. See
docs/PROJECT.md, docs/ROADMAP.md, ADR 0003, and ADR 0004.
Install extension: VS Code Marketplace
packages/vscode-extension/: VS Code/Cursor extension (mapctx)packages/opencode-plugin/: OpenCode plugin assets and installer scriptspackages/sync-engine/: current@mapctx/sync-engine; vNext canonical CLI ismapctx, withmapcsretained temporarily as deprecated compatibility aliaspackages/core/: shared parsing/model utilitiesdocs/: project context, methodology, roadmap, ADRs, and release runbooksskills/: reusable AI skill packsrules/: shared lightweight rule presets for agents
Contributor guide: CONTRIBUTING.md
MapCtx is task-first and contract-first. Authority is binary and tracked in
mapctx.toml (plansAuthority: markdown | store); Markdown and the store are
never simultaneously writable. This repository is post-cutover
(plansAuthority: store).
- live operational source: the external project store, written only through the
mapctxCLI TASKS.mdand the structured field blocks oftasks/<ID>.md: generated, read-only snapshots; hand edits surface asmapctx validatedrift errorsdescription:prose blocks intasks/<ID>.md: Git-authored regardless of regime (durable intent, not live board state)- living repo context:
docs/PROJECT.md - delivery sequencing:
docs/ROADMAP.md - workflow and adoption policy:
docs/methodology.md - durable decisions:
docs/adr/
Host rules remain authoritative. MapCtx records Product Review, System Architecture, Program Design, and Vertical Slice gates when required, but never overrides harness workflow policy or owns agent execution.
The board schema is unchanged: single ## Tasks list (no status-column
sections), canonical field order, and status flow
backlog -> ready-for-do -> doing -> review -> done, with paused for temporary
stops and archived for work that will not proceed. Archived work stays in the
board history but does not count as completed. What changed
after cutover is who writes it:
- editable surfaces: the
mapctxCLI (task create/move/reopen/update,dispatch create/receipt), the cutover flow (mapctx import --dry-run/--commit), and recovery (mapctx store init/repair) TASKS.mdand the structured blocks oftasks/<ID>.mdare regenerated output; never hand-edit them- a good-faith manual edit is resolved with
mapctx reconcile <task-id>(accept or discard per field); silent merge is never an option - detail files keep Git-authored prose:
Open Decisions for Executionfor questions,Decisions Takenfor dated answers,Implementation Notesfor concrete file/doc references
Authoring and enforcement live in skills + sync tooling, not duplicated in long global rules.
- Install dependencies
npm ci- Build key packages
npm run compile
npm run build:sync-engine
npm run build:opencode-plugin- Run tests
npm test
npm run test:sync-engineThe canonical CLI is mapctx; mapcs remains a temporary deprecated alias for
GitHub sync.
Store-backed task operations:
mapctx task claim <task-id> # lease a task (returns claimId + leaseToken)
mapctx task move <task-id> --status doing
mapctx task reopen <task-id> --status review # reopen done/archived task; clears completedOn
mapctx task update <task-id> --set priority=high
mapctx task create --title "..." --summary "..."
mapctx task search --query "..." # duplicate-check: case/accent-insensitive over title, tags, domains, summary
mapctx task context <task-id> --budget 2000
mapctx dispatch create <task-id> # feed dispatchId/attempt into dispatch receipt
mapctx dispatch receipt <dispatch-id> --receipt pathBoard hygiene and planning:
mapctx validate # drift check runs when plansAuthority: store
mapctx planCutover and recovery:
mapctx import --dry-run # preview; refuses lossy imports (ADR 0004)
mapctx import --commit # writes store, regenerates TASKS.md, flips plansAuthority in one commit
mapctx store init # rehydrate from the last git-committed checkpoint
mapctx store repair # reproject mapctx.db from the append-only journalGitHub sync still uses the mapcs command surface:
mapcs status
mapcs pull
mapcs push
mapcs bootstrap --from <local|github>
mapcs reconcile <task-id>Local state: mapctx.toml at the repository root (project identity,
plansAuthority, GitHub binding) and ~/.mapctx/projects/<id>/ (SQLite store
plus event journal). Back up the store directory on your own cadence and commit
generated checkpoints to git.
Detailed docs:
packages/sync-engine/README.mdpackages/sync-engine/DOCUMENTATION.mdpackages/sync-engine/CHEATSHEET.md
Available skills are listed in skills/README.md.
Methodology reference:
docs/methodology.mddocs/PROJECT.mddocs/ROADMAP.mddocs/adr/0001-methodology-and-source-of-truth.md
Key skills:
mapctx-tasks: pre-cutover Markdown board editing; post-cutover, use themapctxCLI insteadmapctx-plan-engine: runmapctx validate/planfor board QA and wave planningmapctx-sync-engine: operate pull/push/bootstrap/reconcile safelymapctx-ralph-tasks: execute task loops via slash triggermapctx-enrich-task: enrich sparse task detail files before executionmapctx-correct-course: capture and apply mid-stream scope changes safely
The rule files in rules/ are intentionally lightweight and are meant to route agents into the correct skills.
Execution stance:
- default to a single agent for
liteand moststandardwork - use
mapctx validateandmapctx planbefore larger or dependency-heavy execution - reserve planner/reviewer/evaluator subagents for
strict,Hard, orExtremework when the extra isolation meaningfully improves confidence
Build and install from repo root:
npm run build:opencode-plugin
npm run install:opencode-pluginInstalled paths:
~/.config/opencode/plugins/kanban-roadmap/~/.config/opencode/plugins/kanban-roadmap.js
Release tags by package:
ext-vX.Y.Z-> VS Code extensionsync-vX.Y.Z->@mapctx/sync-engineplugin-vX.Y.Z-> OpenCode plugin
Release runbooks:
docs/releases/tag-strategy.mddocs/releases/extension.mddocs/releases/engine.mddocs/releases/opencode-plugin.md