Skip to main content

predicate

Create or modify code in the predicates package and all its sub-folders

소스 정보

저장소
zalando/skipper
최근 소스 활동
2026년 8월 31일 10:11
감지된 SKILL.md 언어
영어
스타
3,331
포크
409

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
predicate
description
Create or modify code in the predicates package and all its sub-folders
license
MIT
compatibility
opencode, claude
metadata
{"audience":"maintainers, contributors"}
## What I do - Create predicate code that is efficient and readable ## When to use me Use this when you are writing code in sub-folders of ./predicates/. Some predicates are also located in the ./routing/ folder for historical reasons. ## Quick start A predicate consists of 2 types `spec` and `predicate` that implement 2 different interfaces: ```go // PredicateSpec instances are used to create custom predicates // (of type Predicate) with concrete arguments during the // construction of the routing tree. type PredicateSpec interface { // Name of the predicate as used in the route definitions. Name() string // Creates a predicate instance with concrete arguments. Create([]any) (Predicate, error) } ``` ```go // Predicate instances are used as custom user defined route // matching predicates. type Predicate interface { // Returns true if the request matches the predicate. Match(*http.Request) bool } ``` The `Create([]any) (Predicate, error)` function is run at routing tree creation time, so only once in a while. Everything we can pre-compute to run a faster `Match(*http.Request) bool` execution the better. Here we process input from developers or operators that might do mistakes. We want to show errors clearly. The `Predicate` interface function `Match(*http.Request) bool` is running in the hotpath of the request processing. Here we need to be very efficient and want to reduce latency, increase throughput, minimize allocations and we run heavily concurrent. Every request will be proceesed by a lot of `Predicates` and so each `Match` needs to be as fast as possible.
GitHub에서 보기