Skip to content

How Archcore Works

The .archcore/ directory in your repository is your project context. There is no external server and no SaaS dependency. Every document is a file: versioned by git, reviewed in pull requests, shared through commits. After archcore init, that context travels with the code it describes.

Archcore uses MCP (Model Context Protocol) — an open standard for connecting AI agents to tools and data. One .archcore/ directory works with Claude Code, Cursor, Copilot, Gemini CLI, and more. You maintain one set of documents instead of parallel copies in .cursorrules and CLAUDE.md.

Documents use YAML frontmatter and markdown. The slug.type.md naming convention encodes the document type directly in the filename:

jwt-strategy.adr.md
│ │
│ └─ type: architectural decision record
└─ slug: human-readable identifier

Archcore needs no database and no special tooling. ls .archcore/ shows what exists, and a pull request diff shows what changed.

Archcore has a small surface area by design:

  • 3 statuses: draft, accepted, rejected
  • 21 document types, each with a clear purpose
  • 7 relation types on three axes: structural (implements, extends, depends_on, related), evidential (supports, contradicts), temporal (supersedes)
  • 1 naming convention: slug.type.md, always

An agent that encounters an Archcore project has few rules to learn. You can start with three types and add more as needed.

Every document belongs to exactly one of three categories. The category comes from the document type, not from configuration.

Vision has 12 document types across three requirement tracks. Use whichever fits your situation; all three can coexist.

TrackDocumentsBest for
Product (simple)prd, idea, rnd, research, planIndividual features, small teams, rapid prototyping
Sources (discovery)mrd -> brd -> urdProduct teams doing discovery, stakeholder alignment
ISO (decomposition)brs -> strs -> syrs -> srsRegulated systems, multi-team projects

Decisions, standards, and reference material. This is where most documents live.

TypePurposeExample
adrArchitectural decisions with context and consequencesuse-postgres.adr.md
rfcProposals open for review before a decision is finalizedgraphql-migration.rfc.md
ruleTeam standards and required behaviorsapi-versioning.rule.md
guideStep-by-step instructions for a specific taskdeploy-staging.guide.md
specNormative contract covering behavior, constraints, and invariantswebhook-delivery.spec.md
docNon-behavioral reference such as registries, glossaries, and lookup tablesenv-variables.doc.md
evidenceOne external material with its address, access date, and the extract a document relies onvendor-benchmark-2026.evidence.md

Patterns crystallized from repeated work.

TypePurposeExample
task-typeProven workflows for recurring implementation tasksapi-endpoint-creation.task-type.md
cpatCode pattern changes, recorded when a convention deliberately shiftserror-handling-v2.cpat.md

The natural lifecycle flows from Vision -> Knowledge -> Experience:

Vision Knowledge Experience
┌─────────────────────┐ ┌──────────┐ ┌──────────┐
│ Product track │ │ rfc │ │ │
│ idea rnd research │──> │ adr │───> │task-type │
│ prd plan │ │ rule │───> │ cpat │
│ │ │ guide │ │ │
│ Sources track │ │ spec │ │ │
│ mrd brd urd │──> │ doc │ │ │
│ │ │ │ │ │
│ ISO track │ │ │ │ │
│ brs strs │──> │ │ │ │
│ syrs srs │ │ │ │ │
└─────────────────────┘ └──────────┘ └──────────┘

This is not a strict sequence. Documents can be created in any category at any time. A team might start with a rule that was always understood but never written down, or create a task-type before the underlying adr exists.

idea -> prd -> plan -> implementation
adr (decisions made)
rule (standards derived)
guide (how to follow)
task-type / cpat (patterns learned)

Relations link documents across categories with seven directed types on three axes: structural (implements, extends, depends_on, related), evidential (supports, contradicts), and temporal (supersedes). Agents get a graph of your repository context, including the connections between documents.

Categories are derived from the document type in the filename, not from directories. A file at .archcore/auth/jwt-strategy.adr.md belongs to Knowledge because adr is a Knowledge type, not because it sits in an auth/ directory.

Organize your .archcore/ directory however you want:

.archcore/
├── auth/
│ ├── jwt-strategy.adr.md <- Knowledge
│ └── auth-redesign.prd.md <- Vision
├── payments/
│ ├── stripe-integration.guide.md <- Knowledge
│ └── saas-expansion.brd.md <- Vision
└── onboarding-flow.task-type.md <- Experience

Three different categories, organized by domain. The category comes from the type, not the path. See Documents & Layout for more on organizing your files.

Agents also create, update, and link documents. Session hooks inject a bounded project recap at session start, so agents know what structured context exists from the first message.

You can say “create an ADR for the decision we just discussed” or “link this rule to the ADR it came from” and the agent handles it through MCP.