.agents/skills/monorepo/SKILL.md
Monorepo script commands, package boilerplate, and conventions for this codebase. Use when the user says "how do I run", "bun run", "build this", "run tests", "typecheck", "create a new package", or when running builds, tests, formatting, linting, type checking, or scaffolding new packages.
npx skillsauth add epicenterhq/epicenter monorepoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The monorepo uses consistent script naming conventions:
Use this pattern when you need to:
:check CI-only variants.bun typecheck workflow.packages/.| Command | Purpose | When to use |
| ------------------ | ---------------------------------------------- | ----------- |
| bun format | Fix formatting (biome) | Development |
| bun format:check | Check formatting | CI |
| bun lint | Fix lint issues (biome) | Development |
| bun lint:check | Check lint issues | CI |
| bun typecheck | Type checking (tsc, svelte-check, astro check) | Both |
:check suffix = check only (for CI, no modifications)typecheck alone = type checking (separate concern, cannot auto-fix)Every app uses explicit dev:local / dev:remote naming:
| Script | Meaning |
| --- | --- |
| dev:local | Local everything—local API, local secrets |
| dev:remote | Local app, remote/prod resources |
| dev | Alias for dev:local (convenience) |
Not every app has dev:remote—only add it when there's a real use case.
epicenter)From the monorepo root, bun epicenter runs the local CLI against localhost:8787:
bun epicenter start playground/opensidian-e2e --verbose
bun epicenter list files -C playground/opensidian-e2e
The bare epicenter command (global install) defaults to api.epicenter.so.
Config files read process.env.EPICENTER_SERVER with a prod fallback—the root
script sets it automatically.
Run type checking to verify:
bun typecheck
This runs turbo run typecheck which executes the typecheck script in each package (e.g., tsc --noEmit, svelte-check).
When creating a new package in packages/, follow this exact structure.
package.json{
"name": "@epicenter/<package-name>",
"version": "0.0.1",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": "./src/index.ts"
},
"license": "MIT",
"scripts": {
"typecheck": "tsc --noEmit"
},
"dependencies": {},
"devDependencies": {
"@types/bun": "catalog:",
"typescript": "catalog:"
}
}
Key conventions:
main and types both point to ./src/index.ts (no build step—consumers import source directly)."workspace:*" for internal deps (e.g., "@epicenter/workspace": "workspace:*")."catalog:" for shared versions managed in the root package.json catalogs.peerDependencies for packages consumers must also install (e.g., yjs).tsconfig.json{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"module": "preserve",
"noUnusedLocals": true,
"noUnusedParameters": true,
"noPropertyAccessFromIndexSignature": false
}
}
After creating the package, run bun install from the repo root to register it in the workspace.
documentation
Yjs CRDT patterns, shared types (Y.Map, Y.Array, Y.Text), conflict resolution, and document storage. Use when the user mentions Yjs, Y.Doc, CRDTs, collaborative editing, or when handling shared types, implementing real-time sync, or optimizing document storage.
tools
Voice and tone rules for all written content—prose, UI text, tooltips, error messages. Use when the user says "fix the tone", "rewrite this", "sounds like AI", "sounds corporate", or when writing any user-facing text, landing pages, product copy, or open-source documentation.
tools
Workspace API patterns for defineTable, defineKv, versioning, migrations, data access (CRUD + observation), withActions, and extension ordering. Use when the user mentions workspace, defineTable, defineKv, createWorkspace, withActions, withExtension, defineQuery, defineMutation, connectWorkspace, or when defining schemas, reading/writing table data, observing changes, writing migrations, chaining extensions, or attaching actions to a workspace client.
documentation
Standard workflow for implementing features with specs and planning documents. Use when the user says "start a new feature", "how should I plan this", "what's the process", or when starting implementation, planning work, or working on any non-trivial task.