5.3 KiB
5.3 KiB
OpenCode Monorepo Agent Guide
This file is for coding agents working in /Users/ryanvogel/dev/opencode.
Scope And Precedence
- Start with this file for repo-wide defaults.
- Then check package-local
AGENTS.mdfiles for stricter rules. - Existing local guides include
packages/opencode/AGENTS.mdandpackages/app/AGENTS.md. - Package-specific guides override this file when they conflict.
Repo Facts
- Package manager:
bun(bun@1.3.11). - Monorepo tool:
turbo. - Default branch:
dev. - Root test script intentionally fails; do not run tests from root.
Cursor / Copilot Rules
- No
.cursor/rules/directory found. - No
.cursorrulesfile found. - No
.github/copilot-instructions.mdfile found. - If these files are added later, treat them as mandatory project policy.
High-Value Commands
Run commands from the correct package directory unless noted.
Root
- Install deps:
bun install - Run all typechecks via turbo:
bun run typecheck - OpenCode dev CLI entry:
bun run dev - OpenCode serve (common):
bun run dev serve --hostname 0.0.0.0 --port 4096
packages/opencode
- Dev CLI:
bun run dev - Typecheck:
bun run typecheck - Tests (all):
bun test --timeout 30000 - Tests (single file):
bun test test/path/to/file.test.ts --timeout 30000 - Tests (single test name):
bun test test/path/to/file.test.ts -t "name fragment" --timeout 30000 - Build:
bun run build - Drizzle helper:
bun run db
packages/app
- Dev server:
bun dev - Build:
bun run build - Typecheck:
bun run typecheck - Unit tests (all):
bun run test:unit - Unit tests (single file):
bun test --preload ./happydom.ts ./src/path/to/file.test.ts - Unit tests (single test name):
bun test --preload ./happydom.ts ./src/path/to/file.test.ts -t "name fragment" - E2E tests:
bun run test:e2e
packages/mobile-voice
- Start Expo:
bun run start - Start Expo dev client:
bunx expo start --dev-client --clear --host lan - iOS native run:
bun run ios - Android native run:
bun run android - Lint:
bun run lint - Expo doctor:
bunx expo-doctor - Dependency compatibility check:
bunx expo install --check
packages/apn-relay
- Start relay:
bun run dev - Typecheck:
bun run typecheck - DB connectivity check:
bun run db:check
Build / Lint / Test Expectations
- Always run the narrowest checks that prove your change.
- For backend changes: run package typecheck + relevant tests.
- For mobile changes: run
expo lintand at least oneexpocompile-style command if possible. - Never claim tests passed unless you ran them in this workspace.
Single-Test Guidance
- Prefer running one file first, then broaden scope.
- For Bun tests, pass the file path directly.
- For name filtering, use
-t "...". - Keep original timeouts when scripts define them.
Code Style Guidelines
These conventions are already used heavily in this repo and should be preserved.
Formatting
- Use Prettier defaults configured in root:
semi: false,printWidth: 120. - Keep imports grouped and stable; avoid noisy reorder-only edits.
- Avoid unrelated formatting churn in touched files.
Imports
- Prefer explicit imports over dynamic imports unless runtime gating is required.
- Prefer existing alias patterns (for example
@/...) where already configured. - Do not introduce new dependency layers when a local util already exists.
Types
- Avoid
any. - Prefer inference for local variables.
- Add explicit annotations for exported APIs and complex boundaries.
- Prefer
zodschemas for request/response validation and parsing.
Naming
- Follow existing repo preference for short, clear names.
- Use single-word names when readable; use multi-word only for clarity.
- Keep naming consistent with nearby code.
Control Flow
- Prefer early returns over nested
elseblocks. - Keep functions focused; split only when it improves reuse or readability.
Error Handling
- Fail with actionable messages.
- Avoid swallowing errors silently.
- Log enough context to debug production issues (IDs, env, status), but never secrets.
- In UI code, degrade gracefully for missing capabilities.
Data / DB
- For Drizzle schema, use snake_case fields and columns.
- Keep migration and schema changes minimal and explicit.
- Follow package-specific DB guidance in
packages/opencode/AGENTS.md.
Testing Philosophy
- Prefer testing real behavior over mocks.
- Add regression tests for bug fixes where practical.
- Keep fixtures small and focused.
Agent Workflow Tips
- Read existing code paths before introducing new abstractions.
- Match local patterns first; do not impose a new style per file.
- If a package has its own
AGENTS.md, review it before editing. - For OpenCode Effect services, follow
packages/opencode/AGENTS.mdstrictly.
Known Operational Notes
packages/app/AGENTS.mdsays: never restart app/server processes during that package's debugging workflow.packages/app/AGENTS.mdalso documents local backend+web split for UI work.packages/opencode/AGENTS.mdcontains mandatory Effect and database conventions.
Regeneration / Special Scripts
- Regenerate JS SDK with:
./packages/sdk/js/script/build.ts
Quick Checklist Before Finishing
- Ran relevant package checks.
- Updated docs/config when behavior changed.
- Avoided committing unrelated files.
- Kept edits minimal and aligned with local conventions.