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.
Install with Tessl CLI
npx tessl i github:langgenius/dify --skill orpc-contract-firstOverall
score
81%
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillEvaluation — 100%
↑ 2.00xAgent success when using this skill
Validation for skill structure
Contract definition and structure
Contract file location
0%
100%
base import
0%
100%
type import from @orpc/contract
0%
100%
path field defined
100%
100%
method field defined
100%
100%
input field defined
100%
100%
output field defined
100%
100%
Detailed input structure
0%
100%
Path param syntax
100%
100%
Path param in params object
0%
100%
Type import source
0%
88%
type<T>() helper
0%
100%
Without context: $1.2166 · 10m 13s · 30 turns · 31 in / 9,405 out tokens
With context: $0.6622 · 2m 31s · 34 turns · 61 in / 8,243 out tokens
Router registration and no-barrel-file rule
Router file updated
100%
100%
Direct domain import in router
100%
100%
No barrel file created
100%
100%
API prefix nesting
100%
100%
Hook file location
63%
100%
Multiple hooks created
100%
100%
consoleQuery queryKey called
0%
100%
Correct group.contract in queryKey
0%
100%
consoleClient called as fetcher
44%
100%
Correct group.contract in client call
56%
100%
ConsoleInputs type export preserved
100%
100%
Without context: $0.4437 · 1m 46s · 22 turns · 71 in / 5,383 out tokens
With context: $0.7325 · 2m 41s · 30 turns · 31 in / 8,974 out tokens
TanStack Query hooks and type exports
Contract file in console/
100%
100%
base import used
0%
100%
Detailed input structure
0%
100%
Path param in path string
100%
100%
Path param in params schema
0%
100%
Hook file naming
0%
100%
consoleQuery.queryKey usage
0%
100%
consoleClient call usage
0%
100%
ConsoleInputs reflects new contracts
100%
100%
No barrel files
100%
100%
Without context: $0.4964 · 2m 6s · 24 turns · 135 in / 6,214 out tokens
With context: $0.6285 · 2m 24s · 27 turns · 323 in / 8,647 out tokens
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.