Skip to content

Document Types

Archcore has 18 document types organized into 3 layers. Each type has a template with required sections that the CLI generates automatically.

Need to record a final decision? → adr
Need to propose a change for review? → rfc
Need to enforce a team standard? → rule
Need step-by-step instructions? → guide
Need a normative contract for a boundary? → spec
Need reference/lookup material? → doc
Need to define product requirements? → prd
Need to capture an early idea? → idea
Need to plan implementation tasks? → plan
Need market analysis (TAM, competitors)? → mrd
Need business justification (ROI, budget)? → brd
Need user personas and journeys? → urd
Need ISO business requirements? → brs
Need ISO stakeholder requirements? → strs
Need ISO system requirements? → syrs
Need ISO software requirements? → srs
Need to document a repeatable workflow? → task-type
Need to record a coding pattern change? → cpat

Where the product and project are heading. Vision documents are organized into three requirement tracks — pick the one that matches your team’s complexity and process.

The starting point for most teams. Three types that cover the full lifecycle from idea to implementation.

Product requirements with goals, scope, and acceptance criteria.

File extension.prd.md
When to useProduct requirements with goals and acceptance criteria are defined
Required sectionsVision, Problem Statement, Goals & Success Metrics, Requirements

A product or technical concept that needs capturing before it’s fully formed.

File extension.idea.md
When to useA concept needs capturing for future evaluation
Required sectionsIdea, Value, Possible Implementation, Risks & Constraints

An actionable plan with phased tasks and acceptance criteria.

File extension.plan.md
When to useAn implementation plan with tasks is formed
Required sectionsGoal, Tasks (phased), Acceptance Criteria, Dependencies

Captures where requirements come from — market, business, and users. Documents flow naturally: MRD (market landscape) -> BRD (business justification) -> URD (user needs).

Market analysis covering TAM/SAM/SOM, competitive landscape, market needs, and timing.

File extension.mrd.md
When to useMarket analysis is needed before proposing a solution
Required sectionsMarket Overview, TAM/SAM/SOM, Competitive Landscape, Market Needs, Timing

Business justification with objectives, ROI, stakeholders, budget, and constraints.

File extension.brd.md
When to useBusiness justification and organizational impact need documenting
Required sectionsObjectives, ROI, Stakeholders, Budget, Constraints

User needs captured through personas, journeys, usability requirements, and acceptance criteria.

File extension.urd.md
When to useUser needs, personas, and journeys need capturing during discovery
Required sectionsPersonas, User Journeys, Usability Requirements, Acceptance Criteria

Decomposes requirements through progressively detailed levels, following ISO/IEC/IEEE 29148:2018 — Systems and software engineering — Life cycle processes — Requirements engineering. BRS (why the business needs it) -> StRS (what stakeholders need) -> SyRS (how the system behaves) -> SRS (how the software works).

BRS — Business Requirements Specification

Section titled “BRS — Business Requirements Specification”

Mission, goals, operational concept, and success criteria.

File extension.brs.md
ISO referenceISO/IEC/IEEE 29148:2018 §9.3
When to useBusiness requirements need formalizing into ISO-structured specification
Required sectionsMission, Business Goals, Operational Concept, Success Criteria

StRS — Stakeholder Requirements Specification

Section titled “StRS — Stakeholder Requirements Specification”

Per-stakeholder-class requirements with concept of operations and compliance.

File extension.strs.md
ISO referenceISO/IEC/IEEE 29148:2018 §9.4
When to useStakeholder requirements need structuring per class with ConOps
Required sectionsStakeholder Classes, Per-Class Requirements, ConOps, Compliance

SyRS — System Requirements Specification

Section titled “SyRS — System Requirements Specification”

System boundary, interfaces, modes, and verification approach.

File extension.syrs.md
ISO referenceISO/IEC/IEEE 29148:2018 §9.5
When to useThe whole system boundary, interfaces, and verification need specifying
Required sectionsSystem Boundary, Interfaces, Modes of Operation, Verification Approach

SRS — Software Requirements Specification

Section titled “SRS — Software Requirements Specification”

Per-function and per-endpoint specifications with a verification matrix.

File extension.srs.md
ISO referenceISO/IEC/IEEE 29148:2018 §9.6
When to useDetailed software requirements need per-function/per-endpoint specification
Required sectionsFunctional Requirements, Interface Requirements, Verification Matrix
TrackDocumentsBest For
Product (simple)prdIndividual features, small teams, rapid prototyping, internal tools
Sources (discovery)mrd -> brd -> urdProduct teams doing discovery, stakeholder alignment, business analysis
ISO (decomposition)brs -> strs -> syrs -> srsRegulated systems, multi-team projects, complex distributed systems

All three tracks can coexist in the same project. A team might use prd for a small feature while running the full ISO track for a safety-critical subsystem.

Requirements Layers — Sources vs Specifications

Section titled “Requirements Layers — Sources vs Specifications”

Sources and Specifications serve separate purposes:

  • Layer A (Sources): mrd, brd, urd, prd — capture raw requirements from market, business, and user perspectives
  • Layer B (Specifications): brs, strs, syrs, srs — formalize requirements into ISO-structured specifications

Specifications formalize what sources capture informally, connected via the implements relation.


Decisions, standards, and reference material.

Records a decision that has been made.

File extension.adr.md
When to useA technical decision is made or finalized
Required sectionsContext, Decision, Alternatives Considered, Consequences
---
title: Use PostgreSQL as Primary Database
status: accepted
---
## Context
We need a relational database with strong ACID guarantees...
## Decision
Use PostgreSQL 16 for all persistent storage...
## Alternatives Considered
- MySQL — fewer advanced features
- MongoDB — doesn't fit our relational model
## Consequences
### Positive
- Strong ACID guarantees
- Excellent JSON support via JSONB
### Negative
- Schema migrations required for changes

Proposes a significant change for team review.

File extension.rfc.md
When to useA significant change is being proposed
Required sectionsSummary, Motivation, Detailed Design, Drawbacks, Alternatives

Imperative statements that the team must follow.

File extension.rule.md
When to useA team standard or required behavior is established
Required sectionsRule statements, Rationale, Examples (Good/Bad), Enforcement
---
title: API Error Response Format
status: accepted
---
## Rule
1. ALL API errors MUST return a JSON body with `code`, `message`, and `request_id`
2. Error codes MUST use UPPER_SNAKE_CASE
3. HTTP status codes MUST match the error semantics (404 for not found, etc.)
4. Stack traces MUST NOT be included in production responses
## Rationale
Consistent error format enables clients to handle errors programmatically...
## Examples
### Good
...
### Bad
...

How-to instructions for completing a specific task.

File extension.guide.md
When to useStep-by-step instructions need to be documented
Required sectionsPrerequisites, Steps (numbered), Verification, Common Issues

The canonical normative contract for a concrete system, component, interface, schema, or protocol.

File extension.spec.md
When to useA normative contract with behavior, constraints, and conformance criteria is being formalized
Required sectionsPurpose, Scope, Authority, Subject, Contract Surface, Normative Behavior, Constraints & Invariants, Error Handling, Conformance
---
title: Webhook Delivery Contract
status: accepted
---
## Purpose
This specification defines the canonical webhook delivery contract.
## Scope
### Covers
- Payload format, delivery guarantees, retry policy, signature verification
### Does Not Cover
- Webhook management API (registration, listing, deletion)
## Authority
This document is the normative specification for webhook delivery.
## Normative Behavior
1. The system MUST deliver payloads as JSON with Content-Type `application/json`
2. The system MUST retry failed deliveries up to 5 times with exponential backoff
3. The system SHOULD include an HMAC-SHA256 signature in the `X-Signature` header
## Conformance
An implementation conforms to this spec if it satisfies all MUST requirements
and all stated invariants.

Non-behavioral reference material — registries, glossaries, lookup tables, component lists.

File extension.doc.md
When to useNon-behavioral reference material like registries, glossaries, or lookup tables needs documenting
Required sectionsOverview, Content sections, Examples

Patterns learned from doing the work. You can ignore these types at first — they become useful once your team has accumulated enough practice to recognize repeatable patterns.

A proven workflow for a recurring implementation task.

File extension.task-type.md
When to useA proven workflow for a recurring task is documented
Required sectionsWhat, When to Use, Steps, Example, Things to Watch Out For

Documents how and why a coding convention or pattern changed.

File extension.cpat.md
When to useA coding pattern or convention has deliberately changed
Required sectionsWhat Changed, Why, Before, After, Scope
---
title: Switch from Callbacks to Async/Await
status: accepted
---
## What Changed
All asynchronous code now uses async/await instead of callbacks.
## Why
Callbacks led to deeply nested code and inconsistent error handling...
## Before
\`\`\`javascript
getUser(id, (err, user) => {
if (err) return handleError(err);
getOrders(user.id, (err, orders) => { ... });
});
\`\`\`
## After
\`\`\`javascript
const user = await getUser(id);
const orders = await getOrders(user.id);
\`\`\`
## Scope
All files in `src/services/` and `src/handlers/`.