Extension paths
Like pi’s extensions/skills/themes: compose at the edges. Do not fork the hub to change a bubble.
Supported paths (prefer in order)
Section titled “Supported paths (prefer in order)”- Message plugins — custom render for a role or custom type → Message plugins
- Theme — light/dark and tokens → Themes
- UI chrome — sidebar, status bar, palette labels, layout → UI chrome
- New API capability — hub method + route + client → Server API
Always re-read Change boundaries if unsure.
Anti-patterns
Section titled “Anti-patterns”- Replacing SSE with WebSockets “for simplicity”
- Adding Express / tRPC / socket.io
- Duplicating model/auth config outside pi
- Vendoring a second UI kit beside
web/src/lib/kit - Wide refactors of
hub.js/chat-stream.tsfor a feature request
After you change code
Section titled “After you change code”npm test # stream + server contractsnpm run check # Svelte and TypeScript checksnpm run build # dist/ for prod / git install