CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

api-filters

Add, modify, or convert AIP-style query-parameter filters on v3 list endpoints. Use when adding filterable fields to a list API, wiring filter parsing into a handler, converting API filters into pkg/filter predicates, or debugging filter parsing/validation behavior.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable, repo-specific skill with an explicit six-step workflow, layered validation via mandated tests, and precise code/file anchors. Its two weaknesses are redundancy (range handling, validation ownership, and dot-notation are each explained multiple times) and a monolithic 350-line body that inlines reference-grade tables instead of splitting them into a references/ bundle file.

Suggestions

Move the stable reference material — the filter grammar block, the API-layer type table, the predicate mapping table, and the error-message catalog — into a references/ file (e.g. references/filter-reference.md) and keep a condensed cheat-sheet in SKILL.md, one level deep.

Deduplicate the range-query semantics and 'validation belongs on pkg/filter' explanations, each of which currently appears in three sections ('Multi-filter semantics'/'Range queries', architecture rules, and 'Important Reminders').

Fix the Step 6 count ('three additional layers' followed by four numbered items) and consider adding the concrete test command (e.g. go test ./...) so the validation checkpoints are runnable as written.

DimensionReasoningScore

Conciseness

Dense, terse, and almost entirely repo-specific knowledge (type tables, operator grammar, security caps) with no generic Go/HTTP tutorials. It is not a 5 because several topics are repeated across sections — range-splitting appears in 'Multi-filter semantics', Step 4, and the 'Range queries' gotcha; validation ownership is stated three times; dot-notation in three places — which could be consolidated; not a 3 because the length reflects genuine reference material rather than padding.

4 / 5

Actionability

Copy-paste-ready Go snippets with real imports, exact file paths with line numbers (e.g. "api/v3/filters/parse.go:16-19", "openmeter/customer/customer.go:296"), concrete commands ("make gen-api", "httptest.NewRequest"), and representative error-message strings. Coverage spans handler, service, adapter, and test layers.

5 / 5

Workflow Clarity

Six clearly ordered steps, each naming its target files, with mandatory validation checkpoints ("ALWAYS add service level tests") that enumerate the exact test cases to cover (shorthand, eq, contains, oeq, range, unknown-field 400, mutually-exclusive 400, dot-notation) and an Error Handling section that maps error messages to causes. A 4 would require missing or merely implicit checkpoints; the only blemish is cosmetic (Step 6 says 'three additional layers' then lists four).

5 / 5

Progressive Disclosure

Sections are well-organized with clear headers, and references to repo source files are clearly signaled with path:line citations, but no bundle files exist and roughly 150 lines of stable reference material (filter grammar, type-mapping tables, error-message catalog) are inlined in SKILL.md where the rubric expects them to live one level deep in a references/ file. Not a 4 because the bulk reference content is inline rather than split out; not a 2 because structure and signaling are good, not buried.

3 / 5

Total

17

/

20

Passed

Description

88%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: third-person imperative voice, concrete verb list, and an explicit 'Use when' clause with four concrete trigger scenarios. The only weaknesses are a few missing natural synonyms (e.g. "query params", "filter operators") and slight overlap with the companion /api skill for the 'adding filterable fields' trigger.

DimensionReasoningScore

Specificity

"Add, modify, or convert AIP-style query-parameter filters on v3 list endpoints" plus enumerated sub-tasks ("wiring filter parsing into a handler", "converting API filters into pkg/filter predicates", "debugging filter parsing/validation behavior") lists multiple concrete actions with comprehensive coverage of the domain. It is not a 4 because no meaningful capability is left out of the action list.

5 / 5

Completeness

Explicitly answers both what ("Add, modify, or convert AIP-style query-parameter filters on v3 list endpoints") and when ("Use when adding filterable fields to a list API, wiring filter parsing into a handler, ... or debugging filter parsing/validation behavior") with concrete trigger phrases. A 4 would require the 'when' to be less explicit than it is.

5 / 5

Trigger Term Quality

Good natural-keyword coverage: "filterable fields", "list API", "filter parsing", "validation", "handler". It is not a 5 because common user variations such as "query params", "filter operators", or specific endpoint names are missing; not a 3 because the terms present are ones a user of this codebase would naturally say.

4 / 5

Distinctiveness Conflict Risk

Niche triggers ("AIP-style", "v3 list endpoints", "pkg/filter predicates") make false triggering unlikely, but "adding filterable fields to a list API" has minor overlap risk with the closely related /api TypeSpec-scaffolding skill. Not a 5 because of that overlap; not a 3 because the description is far more specific than a broad domain phrase.

4 / 5

Total

18

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

relative_links

Relative link issues: 1 suspicious

Warning

Total

14

/

16

Passed

Repository

openmeterio/openmeter

Path

.agents/skills/api-filters/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.