# Commands & conventions ## Toolchain (Linux, no sudo) - Node 22, `pnpm` 11.5.0 installed standalone at `~/.local/share/pnpm/bin` (added to ~/.bashrc PATH; new shells get it). If `pnpm` not found, use `~/.local/share/pnpm/bin/pnpm` or `source ~/.bashrc`. - `uv`/`uvx` at `~/.local/bin` (used by the Serena MCP server). ## Workspace commands (from repo root) - `pnpm install` — install all workspace deps (NOT yet run; expect first-run version fixups). - `pnpm -r build` · `pnpm -r typecheck` · `pnpm -r test` · `pnpm dev` (parallel dev). - Per package: `pnpm --filter @pyre/api dev`, etc. - `lint`/`test` are placeholder echo scripts for now. ## Conventions - TypeScript strict; ESM only. Because base tsconfig uses `verbatimModuleSyntax` + `moduleResolution: Bundler`, relative imports need explicit `.js` extensions. - Internal deps via `workspace:*`. Package names `@pyre/`. - Lamport/SOL amounts passed as **strings** in DTOs. - Server must **recompute classification**; never trust client-submitted classifications. - Secrets only via env (`.env`, never committed). There is intentionally **no private-key/mnemonic env var**. ## First Claude Code prompts (from §20) 1. Plan-only: "Read CLAUDE.md and docs/PYRE_MVP_DESIGN.md. Do not write code yet. Produce an implementation plan for PYRE MVP v0.1 ..." 2. Then skeleton (already done): monorepo with pnpm workspaces. Next real work = Phase 1 (Wallet Scanner): implement scan endpoint + classification in @pyre/core/@pyre/solana, wallet-connect UI.