All changes start from an issue.
- Open or find an issue describing the work
- Create a branch from
main:feat/issue-N-short-description fix/issue-N-short-description chore/issue-N-short-description docs/issue-N-short-description - Make changes and commit
- Open a PR with
Closes #Nin the description - CI must pass before merge
<type>: <summary>
Types: feat / fix / chore / docs / test / refactor
pnpm install
# Configure opencode
cp .env.opencode.example .env.opencode
# Edit .env.opencode — set OPENCODE_SERVER_PASSWORD
# Start opencode
docker compose --env-file .env.opencode -f docker-compose.opencode.yml up -d
# Run DB migrations
pnpm run db:migrate
# Start dev server
pnpm run dev| Service | URL |
|---|---|
| Agentree UI | http://localhost:5174 |
| Agentree API | http://localhost:3001 |
| opencode | http://localhost:6543 |
pnpm test # unit tests (vitest)
pnpm exec tsc --noEmit # server type check
pnpm exec tsc --noEmit -p tsconfig.client.json # client type checkAll three must pass before opening a PR. The CI workflow runs them automatically on every PR targeting main.
After editing src/server/db/schema.ts:
pnpm run db:generate # generate new migration
pnpm run db:migrate # apply migration locallyCommit both the schema file and the generated migration files.