Spec-Driven Development & Context Engineering
for AI Coding Agents

Archcore keeps your project's decisions, specs, and rules in the repo.

Your coding agent reads them before it writes, so it builds by this repo's rules instead of the ones it happens to know.

curl -fsSL https://archcore.ai/install.sh | bash

Claude Code · Cursor · Codex CLI · Copilot · Gemini CLI · any MCP agent

Open source · Local-first

archcore-ai·Per-host install

From idea to reviewed code

One feature in 50 seconds.

A research note goes into /archcore:plan, which asks about the edge case and writes a spec, examples, and a plan. The agent builds from them. Before merge, /archcore:review finds the rule the code missed, and the agent fixes it.

What you get

  • The agent builds from a spec you agreed on

    /archcore:plan asks only what the repo cannot answer, then writes the spec and the tasks. The package fits the change: a small fix gets no documents, a large initiative gets a PRD and one spec per capability.

  • Decisions stay and shape the next change

    /archcore:document turns one sentence into a linked decision record in .archcore/. The next session and the next agent read it from the same folder.

  • A broken decision caught before merge

    /archcore:review reads your branch against the spec and the decision record. It returns code-wrong on the file that ignored them, or spec-wrong when the document is the one out of date.

Project knowledge becomes files

Why project context belongs in Git

.archcore/example
  • architecture.doc.md
  • conventions.rule.md
  • api/
  • rate-limiting.spec.md
  • rate-limiting.plan.md
  • token-bucket-in-redis.adr.md
  • error-shapes.rule.md
  • auth/
  • session-model.adr.md
  • oauth-migration.rfc.md
  • billing/
  • usage-based-pricing.prd.md
  • stripe-webhooks.spec.md
  • web/
  • design-tokens.rule.md
  • onboarding-flow.plan.md
  • testing.guide.md

opentoken-bucket-in-redis.adr.md

---

title: Rate limiting uses a token bucket in Redis

status: accepted

---

## Context

The public API needs per-client limits. Redis is already the shared store for sessions.

## Decision

Token bucket per API key, stored in Redis, refilled on a fixed interval.

## Consequences

Every handler in src/api/ reads the bucket from Redis. No in-memory counters.

implements → api/rate-limiting.spec.md

Architecture, specs, requirements, decisions, rules, plans, and guides live in .archcore/ as plain Markdown, versioned with the code they describe. Archcore ships 23 document types, and a change to any of them is a diff someone approves.

Four things you say

See the skills in action

Plain sentences, or the slash command. Each one uses what the last one saved, which is why the review at the end knows what the plan and the decision said.

  1. /archcore:init

    Set up Archcore in this repo.

    Proposes documents for the architecture, rules, and key modules. You approve before anything is saved.

  2. /archcore:plan

    Plan rate limiting for the public API.

    Sizes the change first. Here that means a spec for how rate limiting must behave and a plan that breaks the work into tasks.

  3. /archcore:document

    Record the decision to use a token bucket in Redis.

    Saves the choice and its reasoning as an architecture decision record.

  4. /archcore:review

    Review my branch before merge.

    Reads the spec from step 2 and the decision from step 3. Verdict per finding: spec-wrong, code-wrong, or ok.

Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, OpenCode, Roo Code, and Cline. Slash commands, skills, and guardrails run inside the first four; the rest reach the same documents over MCP. Where the host supports hooks, they arrive before the edit with no command from you.

Setting up a specific agent? Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Frequently Asked Questions

How is this different from CLAUDE.md or AGENTS.md?

Instruction files are flat memory: one tool, one file. Archcore is structured. It stores typed documents (ADR, rule, plan, guide, spec) with relations and versioned history, read and written during real work, and reused across every agent.

I already have a CLAUDE.md or .cursor/rules. Do I start over?

No. archcore init imports your existing instruction files (CLAUDE.md, AGENTS.md, .cursorrules, .cursor/rules/*) as structured documents, so the context you already wrote carries over.

Which AI agents are supported?

The plugin runs inside Claude Code, Cursor 2.5+, Codex CLI 0.117+, and GitHub Copilot CLI. The CLI works with any MCP-aware agent: those four plus Gemini CLI, OpenCode, Roo Code, and Cline. It is also scriptable in CI.

Does this eat my agent's context window?

No. At session start the agent gets a compact index of your documents. Full documents are pulled on demand over MCP, through search, relations, and single reads, instead of being loaded wholesale.

Does my code leave my machine?

Archcore stores project documents locally in .archcore/. Your coding agent may send document excerpts to its model provider. Install and update analytics contain version and platform information, not your project content. See the privacy policy for details and opt-out options.

Do I need both the plugin and the CLI?

The install script adds the CLI and the plugin for Claude Code, Codex CLI, and GitHub Copilot CLI when their commands are on PATH. Run archcore init in each project where you want MCP tools and hooks. Cursor still needs plugin setup in its UI.

Open source, built in public. A star helps more developers find it.