Skip to main content

orpc-contract-first

Guide for implementing oRPC contract-first API patterns in Dify frontend. Triggers when creating new API contracts, adding service endpoints, integrating TanStack Query with typed contracts, or migrating legacy service calls to oRPC. Use for all API layer work in web/contract and web/service directories.

Informações da origem

Repositório
nexmoe/VidBee
Última atividade na origem
23 de fevereiro de 2026 às 09:20
Idioma detectado do SKILL.md
inglês
Estrelas
10.863
Forks
852

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
orpc-contract-first
description
Guide for implementing oRPC contract-first API patterns in Dify frontend. Triggers when creating new API contracts, adding service endpoints, integrating TanStack Query with typed contracts, or migrating legacy service calls to oRPC. Use for all API layer work in web/contract and web/service directories.
# oRPC Contract-First Development ## Project Structure ``` web/contract/ ├── base.ts # Base contract (inputStructure: 'detailed') ├── router.ts # Router composition & type exports ├── marketplace.ts # Marketplace contracts └── console/ # Console contracts by domain ├── system.ts └── billing.ts ``` ## Workflow 1. **Create contract** in `web/contract/console/{domain}.ts` - Import `base` from `../base` and `type` from `@orpc/contract` - Define route with `path`, `method`, `input`, `output` 2. **Register in router** at `web/contract/router.ts` - Import directly from domain file (no barrel files) - Nest by API prefix: `billing: { invoices, bindPartnerStack }` 3. **Create hooks** in `web/service/use-{domain}.ts` - Use `consoleQuery.{group}.{contract}.queryKey()` for query keys - Use `consoleClient.{group}.{contract}()` for API calls ## Key Rules - **Input structure**: Always use `{ params, query?, body? }` format - **Path params**: Use `{paramName}` in path, match in `params` object - **Router nesting**: Group by API prefix (e.g., `/billing/*` → `billing: {}`) - **No barrel files**: Import directly from specific files - **Types**: Import from `@/types/`, use `type<T>()` helper ## Type Export ```typescript export type ConsoleInputs = InferContractRouterInputs<typeof consoleRouterContract> ```
Ver no GitHub