.agents/skills/toolchain-commands/SKILL.md
Installing dependencies, running dev/build/test/lint, filtering packages, single-test runs, git hooks, preparing a clone (.env.development / .env.test), or Docker-backed local services and dev servers.
npx skillsauth add latitude-dev/latitude-llm toolchain-commandsInstall 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.
When to use: Installing dependencies, running dev/build/test/lint, filtering packages, single-test runs, git hooks, preparing a clone (.env.development / .env.test), or Docker-backed local services and dev servers.
25 via mise.toml (also engines in root package.json). Use mise install / mise exec so Vitest and Uint8Array.fromHex / toHex match production; Node 22 lacks those APIs and will fail tests that touch @repo/utils crypto helpers.package.json packageManager field (e.g. pnpm). Install deps: pnpm installturbo via root scripts@biomejs/biome 1.9.x)pnpm dev — run all workspace dev tasks via Turbopnpm build — run all workspace buildspnpm check — run all workspace lint and format check scriptspnpm typecheck — run all workspace typecheckspnpm test — run all workspace testspnpm hooks — configure local git hooks for this clone.husky/pre-commitpnpm check, pnpm typecheck, and pnpm knipprepare script (pnpm hooks)pnpm hooks once to configure core.hooksPath and hook permissions--filter)pnpm --filter @app/api check
pnpm --filter @app/api typecheck
pnpm --filter @app/api build
pnpm --filter @app/api test
Path-based filtering also works:
pnpm --filter ./apps/api test
pnpm --filter ./packages/domain/workspaces check
Vitest is invoked as vitest run --passWithNoTests:
# Single test file
pnpm --filter @app/api test -- src/some-file.test.ts
# Test name pattern
pnpm --filter @app/api test -- -t "health endpoint"
# Specific file + name
pnpm --filter @app/api test -- src/some-file.test.ts -t "returns 200"
Before opening PRs:
pnpm check
pnpm typecheck
pnpm test
CI workflows (check.yml, typecheck.yml, knip.yml, test.yml) use Node 25 + pnpm and run the same commands.
Before starting work, ensure .env.development and .env.test exist. They are required for the dev server, tests, and tooling like knip.
cp .env.example .env.development
cp .env.example .env.test
Then set NODE_ENV appropriately:
.env.development: NODE_ENV=development.env.test: NODE_ENV=testThis provides working defaults for all services (Postgres, ClickHouse, Redis, etc.) that match the Docker Compose setup. For LAT_* naming and parseEnv usage when you add variables, see env-configuration.
Start infrastructure before app processes (e.g. in cloud agents or a fresh clone):
sudo dockerd &>/dev/null & # if the daemon is not already running
sudo docker compose up -d postgres clickhouse redis redis-bullmq mailpit temporal temporal-ui
Migrations and seeds (only when the user asked you to set up DBs in this conversation — see database-postgres and database-clickhouse-weaviate for agent rules):
pnpm --filter @platform/db-postgres pg:migrate
pnpm --filter @platform/db-clickhouse ch:up
pnpm --filter @platform/db-postgres pg:seed # optional: seed users
pnpm --filter @platform/db-clickhouse ch:seed # optional: sample spans
Dev servers (e.g. tmux-style):
pnpm --filter @app/web dev &
pnpm --filter @app/api dev &
pnpm --filter @app/ingest dev &
pnpm --filter @app/workers dev &
pnpm --filter @app/workflows dev &
| Service | Port | Health check |
| ---------- | ---- | ------------ |
| Web | 3000 | curl http://localhost:3000 (redirect to /login) |
| API | 3001 | curl http://localhost:3001/health |
| Ingest | 3002 | curl http://localhost:3002/health |
| Workers | 9090 | curl http://localhost:9090/health |
| Workflows | 9091 | curl http://localhost:9091/health |
| Mailpit UI | 8025 | curl http://localhost:8025 |
| Temporal UI | 8233 | curl http://localhost:8233 |
Manual auth: magic links appear in Mailpit at http://localhost:8025 after signup at http://localhost:3000/signup.
data-ai
Continuous Agentation annotation handling. Use when the user says "watch mode", asks you to watch for Agentation annotations, process feedback as it arrives, or keep fixing annotation-driven changes until told to stop or a timeout is reached.
development
apps/web UI — routes, @repo/ui, TanStack Start server functions and collections, forms, Tailwind layout rules, design-system updates, and useEffect / useMountEffect policy.
tools
Writing or debugging tests, choosing unit vs integration style, Postgres/ClickHouse tests, regenerating ClickHouse test schema, or exporting test helpers from packages without pulling test code into production bundles.
development
This skill should be used when the user asks to "create a Temporal workflow", "write a Temporal activity", "debug stuck workflow", "fix non-determinism error", "Temporal Python", "Temporal TypeScript", "Temporal Go", "Temporal Golang", "workflow replay", "activity timeout", "signal workflow", "query workflow", "worker not starting", "activity keeps retrying", "Temporal heartbeat", "continue-as-new", "child workflow", "saga pattern", "workflow versioning", "durable execution", "reliable distributed systems", or mentions Temporal SDK development.