What problem does it solve? Changing the dashboard's server routes, oRPC contracts, or transport setup involves subtle conventions across packages/api and Nuxt's Nitro server, and mistakes like using .route() sugar or Nitro v3 APIs silently break /api/v1/** routes in production builds. ## Core Features & Use Cases - Contract and router guidance: Keeps procedure contracts in packages/api/src/orpc/router.ts with .meta(openapi(...)) metadata so OpenAPI routes survive Nitro's bundler tree-shaking. - Transport rules: Enforces classic h3 APIs (defineEventHandler, toWebRequest) on the pinned Nuxt v4 / nitropack v2 stack, avoiding unreleased Nitro v3 patterns. - Error and environment conventions: Standardizes H3Errors from server/utils/errors.ts, environment resolvers in server/utils/environment.ts, and KV persistence through the KeyValueStorage contract. - Use Case: When adding a new control-plane procedure, follow the workflow to define the contract, keep the handler thin, add createRouterClient tests, and verify with a real nuxt build. ## Quick Start Use the orpc-server skill to add a new procedure to the dashboard router and expose it over both the RPC and OpenAPI transports.