The doc your agents build from.

This is what Artifact looks like: a living document of your product, connected to your code, that people and agents work in together. Here are the parts, shown over a sample project (Spruce, a local-services booking app).

How it works →

Understand your codebase, not just read it.

Connect a repo read-only and Artifact drafts the picture of your product: every feature it can find, the rules it appears to follow, the screens that are really there. Each one is a page, and each page is anchored to the code that implements it.

Every claim carries where it came from and how sure anyone is. What Artifact inferred is marked as inferred until a person confirms it. Gaps are reported as gaps, never invented.

Spruce · Book and pay in one flow
Spruce / Features / FEA-0001

Book and pay in one flow

From a chosen cleaner to a confirmed visit without creating an account: date, address, total, pay. user stated · high confidence · confirmed

Rules
  • REQ-0001 Book without an account
  • REQ-0002 The total is shown before pay
  • REQ-0004 Apple Pay offered on mobile checkout Drifted
Decisions
  • DEC-0001 Payments through a hosted processor accepted
  • DEC-0003 Fixed hourly price, no bidding accepted
QST-0001 Blocking. Is the free-cancel window 24 hours before the visit, or until the end of the day before?
anchored to app/services/checkout/charge.rb · app/views/checkout/_payment.html.erb · last checked 14 min ago
Spruce · Journeys
Spruce / Journeys / FLO-0002 · Book and pay
Find a cleaner Pick a slot Checkout Confirmed Paymentdeclined EDG-0002 slot held 10 min · retry another card ACR-0005 · within a minute
Drawn from the record, not by hand. Change the edge case and the diagram changes.

See how it moves.

Journeys and flows are drawn from the record, so you can see where a screen branches and what happens when something goes wrong, without reading a line of code.

A declined payment, a cleaner who cancels, a customer outside the service area: each edge case is a node with a rule, and the diagram shows it. New ways of understanding a codebase, for the people who can't read one.

Work on it with your team. In the doc, not in a thread.

The founder, the practice manager, and the developer edit the same page at the same time. A comment becomes a decision or an open question, on the record, linked to the feature it's about.

No more Control-F through six threads for the one decision. No more meeting to re-explain the product. The question sits on the feature until somebody answers it, and the answer stays.

Spruce · Book and pay in one flow · 3 editing
Spruce / Features / FEA-0001 P Z S

Book and pay in one flow

From a chosen cleaner to a confirmed visit without creating an account: date, address, total, pay. user stated · high confidence · confirmed

Rules
  • REQ-0001 Book without an account
  • REQ-0002 The total is shown before pay
  • REQ-0004 Apple Pay offered on mobile checkout Drifted
Z
Zerrick just now

Is the cancel window 24 hours, or until the day before? The cleaners need to know.

→ became QST-0001, blocking, on this feature
anchored to app/services/checkout/charge.rb · app/views/checkout/_payment.html.erb · last checked 14 min ago
artifact › harness compile 3 tools
pack: house-standards · project overrides: spruce
RULE generators over hand-rolled scaffolding
RULE every form has a server-side validation
RULE no card numbers touch our servers
TASTE calm over clever; house CSS tokens only
→ CLAUDE.md compiled · 41 lines
→ .cursor/rules compiled · 41 lines
→ AGENTS.md compiled · 41 lines
✓ one rule set, three tools, zero footprint on the repo

Your standards, compiled into every session.

The doc says what the product is. The harness says how it gets built: coding standards, security rules, design system, and the taste that doesn't fit a linter. One rule set, compiled per tool, before each agent starts.

Claude Code reads it as CLAUDE.md, Cursor as rules, Codex as AGENTS.md. Change a rule once and every agent on every repo builds it your way tomorrow. Zero footprint on the repos themselves.

What shipped, against what you meant.

After every run, the code is held against the record. Every rule shows its state: matches intent, drifted, or waiting on a question you haven't answered. Drift always shows the rule it broke.

You decide on each one: regression to fix, or intent that changed. Warnings, never gates. This is the screen a founder reads each morning and a dev shop shows a client instead of a status email.

Governance
Spruce / Features / Book and pay in one flow

Book and pay in one flow

4 rules · 5 acceptance criteria · 3 decisions · last checked against code 14 min ago

  • Book without an account Decided Aug 4 — checked on every change
    Matches intent
  • Apple Pay offered on mobile checkout Built: card only. The build stopped matching what you meant.
    Drifted
  • Cancel inside the refund window You haven't decided: 24 hours, or until the day before?
    Open question
  • The total is shown before pay Decided Jul 22 — checked on every change
    Matches intent

Your product, on the record, in a surface you already know how to read.

Artifact MCP
artifact ›

What the agent talks to.

Every capability is one operation, served over MCP. This console runs them for real over the sample project: orient, show, search, check, drift, add a detail, answer a question, pull a work packet, verify.

It runs a scripted pass, then hands you the prompt. Add --json to any command to see exactly what an agent receives.

Bring your repo.

Thirty minutes after connecting it, you're reading the first draft of what your product actually is.

How it works →