CtrlK
BlogDocsLog inGet started
Tessl Logo

sdk-design

Doctrine for designing and evolving any **SDK** Grida ships — TypeScript, Rust, or otherwise. "SDK" here means a surface that crosses a foreign-or-foreign-treated boundary: published packages, separately-versioned consumers, FFI bindings, public-by-design modules. An SDK's job is to refuse; a strict, honest surface rejects the wrong contents and keeps the package testable in isolation. Default is "core, not customizable"; customization is the exception, defended by a deciding table. Use when authoring or evolving any such surface — `@grida/*` published packages, engine crates (gridaco/nothing `crates/*`) published or FFI-exported, intent/message vocabularies, any contract a second author will compile against. Internal-only helper packages are welcome to follow, not forced. Companion skill for two-sided contract work: $sdk-seam. Critique partners: $pedantic, $etiology. Related: $naming.

56

Quality

63%

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 ./.agents/skills/sdk-design/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%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 is doctrine-grade, largely concise, and gives concrete ordered heuristics, but it lacks explicit validation/feedback checkpoints for the contract-risky decisions it governs and is a monolithic file with no progressive-disclosure bundle to offload detail. Workflow clarity and disclosure are the limiting dimensions.

Suggestions

Add an explicit validation/feedback checkpoint to the promotion and public-API workflows (e.g. 'before promoting: confirm ≥2 internal consumers; if only one, mark unstable and stop').

Move the critique-partner probes and the deciding-table rationale into a companion reference file (e.g. references/deciding-table.md) and link to it one level deep to improve progressive disclosure.

Tighten the repeated restatements of the core thesis (it appears in the intro, 'The thesis', 'The short version', and several discipline headers) to recover token budget.

DimensionReasoningScore

Conciseness

The body is largely lean and assumes reader competence, using tight aphorisms ("An SDK lives or dies by what it refuses to expose") and a compact deciding table, but a few sections restate the thesis multiple times and could be trimmed, keeping it just below anchor 5.

4 / 5

Actionability

It gives concrete, applicable guidance — a first-match deciding table, an ordered three-rung extension ladder, and a runnable-test discipline — with only minor gaps (e.g. the layering diagram is illustrative rather than a runnable command), so it sits above anchor 3 but below fully copy-paste-ready anchor 5.

4 / 5

Workflow Clarity

Sequences like the deciding table and extension ladder are ordered with first-match/reach-down rules, but there are no explicit validation checkpoints or feedback loops for the destructive/contract-changing operations the skill governs (promotions, public-API changes, anti-goal violations), which caps clarity at 3.

3 / 5

Progressive Disclosure

The body is well sectioned but is a single 285-line monolith with no bundle files and only loose one-level pointers to companion skills ($sdk-seam, $naming); content that could be split (the deciding table rationale, the critique-partner probes) is inlined, so it is structured but not optimally disclosed.

3 / 5

Total

14

/

20

Passed

Description

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

The description is specific to a clear niche and answers both what and when, but its trigger language leans on internal/organizational terminology rather than natural user phrases, and its actions are doctrinal rather than concretely enumerated. It is strong on distinctiveness but mid-range on trigger-term naturalness.

Suggestions

Add natural trigger phrases a user would actually say (e.g. 'designing a public SDK', 'versioning a published package', 'FFI bindings') rather than relying on internal naming like '@grida/*'.

Condense the 'Use when...' clause into a tighter, more explicit trigger list with concrete surface types.

Trim companion-skill shout-outs ($sdk-seam, $pedantic, $etiology, $naming) from the description to reduce noise and keep the trigger surface focused.

DimensionReasoningScore

Specificity

The description names the domain (SDK design) and concrete actions like "refuse the wrong contents" and "default is core, not customizable", but the actions are doctrinal/abstract rather than enumerated concrete operations, which is below anchor 4's "several specific actions".

3 / 5

Completeness

It states a clear "what" (doctrine for designing/evolving SDKs that refuse wrong contents) and an explicit "when" ("Use when authoring or evolving any such surface"), but the "when" is long and conditional so it is not maximally explicit.

4 / 5

Trigger Term Quality

It includes relevant triggers like "published packages", "FFI bindings", "@grida/* published packages", and "intent/message vocabularies", but these are organization-internal terms rather than the natural phrases a user would say, and it omits common synonyms a user might use.

3 / 5

Distinctiveness Conflict Risk

The scope is sharply narrow (foreign-boundary, separately-versioned SDK surfaces) and explicitly distinguished from generic packages, with named companions ($sdk-seam, $pedantic, $etiology, $naming), leaving only minor overlap risk with the related seam skill.

4 / 5

Total

14

/

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.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
gridaco/grida
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.