Setting up the framework
86d doctor and clear anything it flags before you start changing things. Debugging your change and your setup at the same time is miserable.
The six health gates
All six pass before a pull request merges:Commit messages
Every repository in the 86d project uses Conventional Commits with a required scope. Git hooks enforce the format locally; CI enforces it on pull requests.feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Framework scopes: store, cli, core, runtime, sdk, registry, db, emails, env, lib, storage, utils, modules, ci, deps, config, docs, repo
Docs scopes: site, concepts, guides, cli, modules, resources, config, repo
Examples:
CONTRIBUTING.md in each repository for the full scope list.
What a good pull request looks like
- One change. A bug fix, or an endpoint, or a Module, or a docs improvement. Not all four.
- Tests that match the change. New endpoint means Vitest tests. UI changes need rendered-state coverage and direct Chrome review. Add Playwright only for a real-browser seam. Bug fixes need a regression test that fails without the fix.
- A description worth reading. What problem this solves, why this approach, what you considered instead, and what it does not cover.
- A Changesets entry for anything affecting a published package. Run
bunx changesetand commit the file. CI rejects the pull request without one when one is needed.
Coding standards
- No
any,@ts-expect-error,@ts-ignore, orbiome-ignore. Fix the type or the code underneath. - No config edits to silence an error. If a rule genuinely does not fit, raise it. Do not route around it in
tsconfig.jsonorbiome.json. - Do not edit UI primitives. Wrap or compose shadcn/ui, Base UI, Radix UI, and React Aria rather than changing their internals.
- Never weaken or delete a passing test to get a change through.
- Biome does the formatting.
bun biome check --write src/.
Writing a Module
- a real schema, with types and relations that mean something
- Storefront and admin endpoints actually implemented, with no
TODObodies - loading, error, and empty states in every UI component
- Vitest tests on the paths that matter, with fixtures shaped like the real provider response
- for anything talking to an outside API: real HTTP, retries, error mapping, and webhook signature verification
- rendered-state tests for every new screen state
- direct Chrome review at 1280 x 720 and 375 x 667, in light and dark, including focus, overflow, errors, and recovery
- focused Playwright coverage only when the behavior depends on navigation, storage, focus, responsive layout, browser request construction, or another browser boundary
Publishing your own Module
You do not have to upstream anything to publish it:- Build with
bun run buildsodist/contains JavaScript and.d.ts(plus copied.mdxassets when needed). - Set
"private": falseand a release version inpackage.json. - Restrict
"files"todist(+ README); mappublishConfig.exportsto./dist. Do not publishsrcor test/tooling files. - Replace
workspace:*/catalog:with real semver versions. - Add accurate package metadata and provenance.
- Publish:
npm publish --access public.
Documentation
Docs live at86d-store/docs. Every page is .mdx with YAML frontmatter. Clone it and preview locally:
- Active voice. “Run the command”, not “the command should be run”.
- Sentence case headings. Defined terms keep their capitals inside one.
- No em dashes. Comma, colon, semicolon, parentheses, or a new sentence.
- Working examples. If you cite a command or an endpoint, paste the exact form and run it first.
AGENTS.md in that repository.
Releases
Maintainers cut a release by merging the aggregated Changesets pull request CI generates. Seerelease in package.json. Module publishes use --provenance, so anyone installing can verify what they got.
License
86d.store is licensed under the MIT License. By contributing, you agree that your contributions are licensed under the same terms. 86d.app remains proprietary.Code of conduct
Be kind, assume good faith, and disagree about ideas rather than people. 86d follows the Contributor Covenant 2.1.Security issues
GitHub Security Advisories, privately, not a public issue.Getting help
- Discussions for design proposals and open questions.
- Issues for bugs and feature requests.