A guiding principle of 86d is that every commerce feature should be small, isolated, and scoped to a single concern. That makes the platform pleasant for human developers and unusually easy for AI assistants to extend, audit, and refactor. This page explains the design choices that come out of that principle and how to use them when you build alongside an AI agent.Documentation Index
Fetch the complete documentation index at: https://86d.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
Small surface area per module
Every module fits in one folder, depends only on@86d-app/core, and ships its own schema, endpoints, components, and tests:
Strict isolation
Modules cannot import each other. All cross-module reads and writes go through therequires / exports contract system:
Predictable file conventions
Templates follow a strict two-file pattern (.tsx for logic, .mdx for presentation). Numbered MDX files are design variants, never logical branches. Modules always live under modules/<name>/src/. Components always live under store/components/ or admin/components/. Endpoints always live under store/endpoints/ or admin/endpoints/.
These conventions mean an agent can navigate any 86d store, or any community module, with no orientation cost. “Where does X live?” has one answer.
Schema-first contracts
Every module declares its data shape with Zod schemas inschema.ts. Endpoints validate input against the schema before any business logic runs. The same schemas drive TypeScript types, runtime validation, and (when needed) JSON Schema generation.
For an agent, this means:
- Type errors surface immediately. The agent can iterate against
bun run typecheckrather than waiting for runtime feedback. - Generated API clients, OpenAPI specs, and documentation can be derived from the same source of truth.
- Refactors that change a schema fail loudly at every call site.
A canonical CLI
The86d CLI gives agents a deterministic interface to scaffold, install, enable, and regenerate. Common workflows are one command:
86d doctor in particular is designed to be agent-friendly: it prints a structured pass / warn / fail report with a Fix: line for every issue, so an agent can decide what to do next without parsing prose.
Registry as a machine-readable manifest
registry.json enumerates every first-party module, its category, version, dependency contract, and integrity hash. Agents can plan a deployment (“install these five modules”), audit drift (“which local modules are behind the registry”), and find candidate modules without scraping any human-readable surface.
registry.json (excerpt)
A documentation MCP server
The 86d docs are exposed over a Model Context Protocol server that AI clients can connect to directly. Two tools cover most needs: a semantic search and a sandboxed read-only filesystem over every page. Agents cancat /modules/cart.mdx, rg "BETTER_AUTH_SECRET" /, or run tree / -L 2 against the docs without web scraping or context window pressure.
Practical advice for working with agents
- Scope tasks to a single module. “Add a
markFavoriteendpoint to@86d-app/productsand a corresponding component” is a great prompt. “Refactor the catalog” is not. - Lean on the test suite. Each module ships Vitest tests. Ask the agent to run
bun testand iterate against the result. - Use
86d doctoras a precondition check. If the project is unhealthy, fix that first. - Keep contracts explicit. When two modules need to talk, prefer adding fields to the
exports/requirescontracts over inventing ad-hoc shared utilities. - Pin to a registry version. When asking an agent to install or upgrade modules, point it at a specific
registry.jsonrevision so the plan is reproducible.

