Skip to main content

Spec-Driven Development & Context Engineering for AI Coding Agents

Archcore is a git-native context layer for AI coding agents. It keeps specs, architecture, decisions, rules, and plans in Git, and makes the right project context available to AI coding agents as they work, so Claude Code, Cursor, GitHub Copilot, Gemini CLI, and other agents follow your real architecture instead of guessing.

Your code is in Git. Your project understanding should be too.

Decisions disappear into chat history. Instruction files like CLAUDE.md and AGENTS.md grow into walls of text. Every agent sees a different version of the project. Specs become stale handoff artifacts, and architecture and conventions get re-explained every session. Single instruction files are flat, tool-specific, and weakly structured: they pile up without type, link, or history, so the agent has no way to find which rule applies to which directory, which decision blocks a refactor, or which spec governs a contract. The replacement here is nineteen typed document categories, named relations between them (implements, extends, depends_on, related), and versioned history: the same artifacts senior engineers already write, but that agents can read, write, and reason about during real work.

Specs that stay connected to implementation

Use structured specs and plans to define what should be built, then keep them alongside the decisions, rules, and architecture the agent needs during implementation. The spec-driven track runs idea → PRD → spec → plan, and a requirements cascade is available for market discovery (MRD → BRD → URD) and for regulated work (BRS → StRS → SyRS → SRS). A spec is one part of context, not the whole context: it ships next to the architecture, prior decisions, constraints, and team rules the agent also needs.

Engineer the context your coding agents work from

Context is more than a prompt or a bigger context window. Archcore makes project knowledge explicit (decisions and constraints are written down, not inferred from code), structured (typed documents with relations, not one growing file), selective (the agent loads what applies to the file in front of it), versioned (context changes ship in the same pull request as the code), and portable across coding agents.

Designing what an agent is told before it acts, and what checks it afterwards, is called harness engineering: guides that steer the agent ahead of an edit, and sensors that verify the result. A harness for a coding agent is a specific form of context engineering, not a successor to it. Your agent already ships the loop, the tools, the permissions, and the sandbox. Archcore holds the half no vendor can ship for you, because it has never seen your repository: what your project decided, what it requires, and what it forbids. See harness engineering, explained.

Project context belongs in Git

Everything lives in .archcore/ inside your repository, versioned alongside the code it documents: reviewable in pull requests, portable across tools, team-owned, and with no opaque agent memory holding anything you cannot read or edit. No servers, no databases, no accounts, no telemetry. The CLI is a single cross-platform binary; the MCP server runs locally as a child process; install scripts pull release binaries from GitHub Releases. See the documentation or read the privacy policy for details.

One project context. Every coding agent.

archcore init wires whichever agents you already run, and each one reads and writes the same .archcore/ directory in your repo. Eight agents today: Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, OpenCode, Roo Code, and Cline. Architecture-aware /archcore slash commands, skills, and guardrails run inside Claude Code, Cursor, Codex CLI, and GitHub Copilot CLI; every other agent reaches the same context over MCP and session hooks, and the whole thing is scriptable in CI.

How it works: the loop

Four steps on one feature, from an empty repo to a merged branch. Say the sentence or type the shortcut: they do the same thing. /archcore:init ("Set up Archcore in this repo") reads the project and proposes a stack rule, a run guide, an architecture overview, and a spec for each module that changes most. /archcore:plan ("Plan rate limiting for the public API") returns a spec and a plan sized from what the change actually touches. /archcore:document ("Record the decision to use a token bucket in Redis") writes an ADR holding the reasoning as well as the verdict. /archcore:review ("Review my branch before merge") reads the diff against both, in both directions. Between the four there is no command at all: hooks bring the applicable spec and ADR to the agent while it edits, and each session opens with a recap of what is decided and what is in progress. No new service to run: your context lives in the repo, moves with it through Git, and reaches every agent you open. See how to use Archcore for the whole loop.