Token导航 LogoToken导航TokenDH.com
前端设计敏感数据githubverified来源可访问clear审计通过

orpc-contract-firstorpc 合约优先

Agent Skill

orpc-contract-first 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

17,288

周安装

716

GitHub Stars

139,564

下载量

5,556
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:orpc-contract-first(orpc 合约优先)
来源仓库:https://github.com/langgenius/dify
仓库路径:skills/orpc-contract-first
安装命令:
npx skills add https://github.com/langgenius/dify --skill orpc-contract-first
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/langgenius/dify --skill orpc-contract-first

简介

orpc-contract-first 基于 oRPC 与 TanStack Query 构建契约优先 API 开发模式。

  • 在 web/contract/* 目录定义接口规范作为唯一事实来源。
  • 通过 queryOptions 封装复用逻辑并在调用端映射具体端点。
  • 适用于前后端并行开发与多团队接口协同场景。
  • 需配合 Dify 前端工程结构使用否则路径引用会失效。

SKILL.md

oRPC Contract-First Development

Intent

  • Keep contract as single source of truth in web/contract/*.
  • Default query usage: call-site useQuery(consoleQuery|marketplaceQuery.xxx.queryOptions(...)) when endpoint behavior maps 1:1 to the contract.
  • Keep abstractions minimal and preserve TypeScript inference.

Minimal Structure

web/contract/
├── base.ts
├── router.ts
├── marketplace.ts
└── console/
    ├── billing.ts
    └── ...other domains
web/service/client.ts

Core Workflow

  1. Define contract in web/contract/console/{domain}.ts or web/contract/marketplace.ts

- Use base.route({...}).output(type<...>()) as baseline. - Add .input(type<...>()) only when request has params/query/body. - For GET without input, omit .input(...) (do not use .input(type<unknown>())).

  1. Register contract in web/contract/router.ts

- Import directly from domain files and nest by API prefix.

  1. Consume from UI call sites via oRPC query utils.
import { useQuery } from '@tanstack/react-query'
import { consoleQuery } from '@/service/client'

const invoiceQuery = useQuery(consoleQuery.billing.invoices.queryOptions({
  staleTime: 5 * 60 * 1000,
  throwOnError: true,
  select: invoice => invoice.url,
}))

Query Usage Decision Rule

  1. Default: call site directly uses *.queryOptions(...).
  2. If 3+ call sites share the same extra options (for example retry: false), extract a small queryOptions helper, not a use-* passthrough hook.
  3. Create web/service/use-{domain}.ts only for orchestration:

- Combine multiple queries/mutations. - Share domain-level derived state or invalidation helpers.

const invoicesBaseQueryOptions = () =>
  consoleQuery.billing.invoices.queryOptions({ retry: false })

const invoiceQuery = useQuery({
  ...invoicesBaseQueryOptions(),
  throwOnError: true,
})

Mutation Usage Decision Rule

  1. Default: call mutation helpers from consoleQuery / marketplaceQuery, for example useMutation(consoleQuery.billing.bindPartnerStack.mutationOptions(...)).
  2. If mutation flow is heavily custom, use oRPC clients as mutationFn (for example consoleClient.xxx / marketplaceClient.xxx), instead of generic handwritten non-oRPC mutation logic.

Key API Guide (.key vs .queryKey vs .mutationKey)

  • .key(...):

- Use for partial matching operations (recommended for invalidation/refetch/cancel patterns). - Example: queryClient.invalidateQueries({queryKey: consoleQuery.billing.key()})

  • .queryKey(...):

- Use for a specific query's full key (exact query identity / direct cache addressing).

  • .mutationKey(...):

- Use for a specific mutation's full key. - Typical use cases: mutation defaults registration, mutation-status filtering (useIsMutating, queryClient.isMutating), or explicit devtools grouping.

Anti-Patterns

  • Do not wrap useQuery with options?: Partial<UseQueryOptions>.
  • Do not split local queryKey/queryFn when oRPC queryOptions already exists and fits the use case.
  • Do not create thin use-* passthrough hooks for a single endpoint.
  • Reason: these patterns can degrade inference (data may become unknown, especially around throwOnError/select) and add unnecessary indirection.

Contract Rules

  • Input structure: Always use {params, query?, body?} format
  • No-input GET: Omit .input(...); do not use .input(type<unknown>())
  • 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
  • Mutations: Prefer mutationOptions; use explicit mutationKey mainly for defaults/filtering/devtools

Type Export

export type ConsoleInputs = InferContractRouterInputs<typeof consoleRouterContract>

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

27.89%
按下载量换算1,550

Cursor

20.87%
按下载量换算1,160

Gemini CLI

18.83%
按下载量换算1,046

Antigravity

12.49%
按下载量换算694

OpenCode

6.65%
按下载量换算369

Codex

3.57%
按下载量换算198

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills