Thanks for helping build the Create Protocol design system.
- Tokens first. Never hard-code a color, font, or spacing value in a
component. Add it to the relevant
tokens/*.cssfile, then reference the custom property. - Primitives are dumb. Components in
src/primitives/do not know about agents, deposits, or any Create Protocol domain concept. Compose those insrc/app/instead. - Accessibility is non-negotiable. Every interactive primitive must be keyboard-operable and announce state to screen readers. If you're unsure, reach for a pattern from WAI-ARIA APG.
- Minimal dependencies. Before adding a runtime dependency, open an issue to discuss. We'd rather write 80 lines than pull in 800.
- Browse issues labeled
good first issueorhelp wanted. - Drop a comment on the issue saying you're taking it — we'll assign.
- Open a draft PR early; small feedback loops beat big surprises.
git clone https://github.com/create-protocol/ui.git
cd ui
npm install
npm run dev # local playground (once scaffolded)
npm run test
npm run lintThis repo is the design system, not an app. Don't add app-specific copy, routes, or analytics here.
Use Conventional Commits:
feat(button): add icon-only variant
fix(tokens): correct dark-mode border contrast
docs(readme): clarify theme switching
Keep each PR scoped to one primitive or one token change where possible.
Open a discussion or ask in the Create Protocol contributor channel. If a
decision needs to be documented, add an ADR-style note under docs/adr/.