CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

api-and-interface-design

Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend.

Quality

76%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/api-and-interface-design/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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.

The body delivers genuinely valuable, non-obvious guidance on idempotency-key implementation, Hyrum's Law implications, and rationalization counterarguments, backed by concrete code and a strong verification checklist. It is dragged down by substantial sections restating standard REST and TypeScript knowledge, and by a monolithic structure with a deep-dive idempotency section and an unresolved cross-reference that belong in well-signaled reference files. Actionability and sequencing are solid but stop short of fully executable, feedback-looped guidance.

Suggestions

Trim the 'REST API Patterns' and 'TypeScript Interface Patterns' sections to only the non-obvious guidance — standard CRUD routing, pagination/filtering response shapes, HTTP status-code meanings, camelCase conventions, and textbook discriminated-union/branded-type examples are knowledge Claude already has.

Move the ~60-line idempotency-key deep-dive (derivation examples, atomic-claim code, in-flight strategy table, retention guidance) into a reference file such as references/idempotency.md, keeping a short summary and a clearly linked pointer in SKILL.md.

Replace the bare `deprecation-and-migration` mention with a clearly signaled, resolvable link or path (or remove it if the target does not exist), so cross-references are unambiguous.

DimensionReasoningScore

Conciseness

The style is tight — tables, compact code, no prose padding — but roughly a third of the body re-treads knowledge Claude already has: standard CRUD routes ("GET /api/tasks → List tasks"), pagination and filtering shapes, the 400/401/403/404/409/422/500 status mapping, the camelCase naming table, and standard TypeScript patterns (discriminated unions, branded types). This fits anchor 3 ("mostly efficient but includes some unnecessary explanation or could be tightened") — above anchor 2 because the presentation is not padded and the idempotency, rationalizations, and verification material genuinely earns its tokens.

3 / 5

Actionability

Concrete, near-executable guidance throughout: the boundary-validation Express handler, the atomic idempotency claim with unique-violation handling ("let the unique constraint pick the winner"), the payload-hash guard with an exact 422 response, and specific route/naming tables. Anchor 4 rather than 5 because some snippets are not copy-paste ready — undefined helpers like isUniqueViolation(e) and replayOrReject(key), and ellipses such as "function getTask(id: TaskId): Promise<Task> { ... }".

4 / 5

Workflow Clarity

The numbered Core Principles (1. Contract First through 6. Honouring an Idempotency Key) give a clear design sequence, and the closing 12-item Verification checklist provides explicit validation checkpoints ("The key is claimed in one atomic operation, guarded by a unique constraint"). Anchor 4 rather than 5 because it is reference-style with no feedback loop — no guidance to revisit earlier principles when a checklist item fails — and rather than 3 because the checkpoints are explicit, not implicit or missing.

4 / 5

Progressive Disclosure

Headers and internal structure are good, but this is a 365-line monolithic file where the ~60-line idempotency deep-dive (derivation examples, atomic-claim code, in-flight strategy table, retention guidance) clearly could live in a reference file. The one cross-reference — "See `deprecation-and-migration`" — is neither a link nor a path present in the bundle, matching anchor 3's "references present but not clearly signaled; content that should be separate is inline"; above anchor 2 because section structure is solid, below anchor 4 because references are not clearly signaled or organized.

3 / 5

Total

14

/

20

Passed

Description

78%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 with an explicit, well-phrased trigger section and third-person voice. Its main weakness is a thin capability statement — one generic verb ("Guides...design") — leaving the concrete specifics to the when-clause. Distinctiveness is good but slightly diluted by broad phrases like "any public interface".

DimensionReasoningScore

Specificity

The capability statement is a single generic verb — "Guides stable API and interface design" — while the concrete activities ("creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend") all live in the when-clause rather than the what. This matches anchor 3 (domain plus 1-2 concrete actions, not comprehensive); it is above anchor 2 because the trigger enumeration names specific activities, but below anchor 4 because the description of capabilities itself does not list several distinct concrete actions.

3 / 5

Completeness

Explicitly answers both parts: what ("Guides stable API and interface design") and when, via two explicit "Use when..." clauses with concrete trigger phrases ("designing APIs, module boundaries, or any public interface"; "creating REST or GraphQL endpoints, defining type contracts..."). This closely mirrors the anchor 5 exemplar structure, and is above anchor 4 because the when is already explicit and specific rather than needing more detail.

5 / 5

Trigger Term Quality

Good natural keyword coverage: "APIs", "REST", "GraphQL", "endpoints", "module boundaries", "type contracts", "frontend and backend" — phrases users would naturally say. A few natural terms are missing (e.g., "API versioning", "schema design", "endpoint design", "breaking changes"), so it fits anchor 4 rather than anchor 5's comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

The niche is mostly distinct — API/interface design with REST, GraphQL, and type-contract triggers — but "any public interface" and "establishing boundaries between frontend and backend" are broad enough to overlap with general software-architecture or design skills. Fits anchor 4 (mostly distinct, minor overlap risk with closely related skills) rather than anchor 5's minimal-conflict clear niche.

4 / 5

Total

16

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

addyosmani/agent-skills

Path

skills/api-and-interface-design/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.