CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

flags-sdk

Implement feature flags in Next.js or SvelteKit code with the Flags SDK (`flags` npm package). Use when installing or configuring the SDK, declaring flags with `flag()`, wiring a provider adapter (`@flags-sdk/vercel`, Statsig, LaunchDarkly, PostHog, GrowthBook, Global Config, OpenFeature, Split, Flagsmith, Reflag, Optimizely, or custom), using `identify`, `dedupe`, or `evaluate`, keeping pages static with precompute, setting up Flags Explorer and the Vercel Toolbar, or encrypting flag values. Triggers: `flags/next`, `flags/sveltekit`, `flags/react`, `@flags-sdk/*`, `vercelAdapter`, precompute. For planning a flag, for Vercel Flags rollouts, experiments, and the `vercel flags` CLI, or for other frameworks, use the `vercel-flags` skill.

77

Quality

97%

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

The canonical home for this skill is flags-sdk in vercel/vercel-plugin

SKILL.md
Quality
Evals
Security

Quality

Content

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

A strong, well-disciplined SKILL.md body: executable commands and complete code samples, two clearly sequenced workflows with pre-checks and error-recovery loops, and clean one-level progressive disclosure into four real, well-annotated reference files. The only notable weakness is minor over-explanation in the bulk-evaluation rationale and an inline version note that would fit better in a dedicated old-patterns section.

Suggestions

Trim the prose paragraph after the `evaluate()` code examples — the avoid/prefer comments plus one sentence on `bulkDecide` already convey why `evaluate()` is preferred; move the deeper latency rationale to references/api.md under `evaluate`.

Move the adapter version guidance (`flags` 4.2.0+ by-reference vs. the older called form `vercelAdapter()`) into a short 'Version differences' or old-patterns note near the top of the reference material instead of inline in Core concepts, keeping the body version-number-free.

Add a final verification step to 'Set up the SDK' (e.g., confirm the Flags Explorer endpoint responds at `/.well-known/vercel/flags` or that a sample flag evaluates locally) so the setup workflow ends with an explicit pass/fail checkpoint.

DimensionReasoningScore

Conciseness

The body is dominated by executable code, tables, and terse directives, but two spots over-explain: the paragraph after the `evaluate()` examples re-explains latency characteristics already shown by the avoid/prefer code comments, and the inline "Version note" carries version-specific details (`flags` 4.2.0+, called vs. by-reference adapter form) that the guidelines say belong in a dedicated old-patterns/deprecated section. These are minor trims rather than the 'some unnecessary explanation' of level 3, so level 4 fits best.

4 / 5

Actionability

Nearly everything is copy-paste executable: `pnpm i flags @flags-sdk/vercel`, `vercel flags create <flag-key> --kind boolean --description "<description>"`, `vercel env pull`, complete TypeScript snippets for flag declaration, usage, discovery route, and SvelteKit handle. Common cases are covered end-to-end; the few deferred snippets (toolbar wiring, precompute middleware) point to complete code in the reference files, which is endorsed disclosure rather than a gap — so level 5 holds over level 4.

5 / 5

Workflow Clarity

Both main workflows (Set up the SDK, Create a flag) are numbered with 'Before you start' checklists that detect already-done state, explicit validation (`vercel project inspect --non-interactive`, checking `.env.local` for `VERCEL_OIDCTOKEN=`, `flags.ts` existing before the discovery route), and written feedback loops ("If it reports `link_required`, run `vercel link`"; auth-error re-pull fallback; routing to the existing-flag flow when the key already exists). Destructive operations (archive/rm) are explicitly delegated to the vercel-flags skill with its checks required, so the level-3 cap does not apply; checklists + validation + error recovery match the level-5 anchor.

5 / 5

Progressive Disclosure

The body is a genuine overview: framework and provider detail plus the full API reference live in four real, one-level-deep reference files (nextjs.md, sveltekit.md, providers.md, api.md), each introduced with an annotated summary of its contents, and every inline anchor link checked out against actual headings in those files. The inline summary tables (key parameters, encryption functions) keep only essentials in the body with bulk detail in references, matching the level-5 anchor's 'clear overview with well-signaled one-level-deep references'.

5 / 5

Total

19

/

20

Passed

Description

100%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 model frontmatter description: third-person voice, a concrete what, an explicit use-when clause with enumerated triggers, and explicit boundary routing to the sibling vercel-flags skill. All four dimensions sit at the top anchor with no fluff or over-claims.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "Implement feature flags in Next.js or SvelteKit code", "installing or configuring the SDK", "declaring flags with `flag()`", "wiring a provider adapter" (with 11 named adapters), "using `identify`, `dedupe`, or `evaluate`", "keeping pages static with precompute", "setting up Flags Explorer and the Vercel Toolbar", "encrypting flag values" — giving comprehensive coverage of the skill's scope. It clearly exceeds the level-4 anchor ('several specific actions; minor gaps') since no capability area of the skill is left unmentioned.

5 / 5

Completeness

It explicitly answers both questions: the first sentence states what the skill does, and an explicit "Use when..." clause plus a dedicated "Triggers:" line state when to use it with concrete trigger phrases. This is a direct match to the level-5 anchor and example; the level-4 anchor ('when' could be more explicit) does not apply since triggers are enumerated.

5 / 5

Trigger Term Quality

Trigger coverage is comprehensive and domain-natural: the package name (`flags`), import specifiers (`flags/next`, `flags/sveltekit`, `flags/react`, `@flags-sdk/*`), `vercelAdapter`, `precompute`, and every provider name a user might mention. This mirrors the level-5 anchor's 'synonyms and file extensions' breadth — import paths are this domain's equivalent — and goes beyond level 4 ('a few natural terms missing').

5 / 5

Distinctiveness Conflict Risk

It carves a clear niche (Flags SDK code in Next.js/SvelteKit) with distinct triggers, and actively reduces conflict with the adjacent `vercel-flags` skill by routing planning, rollouts, experiments, CLI, and other-framework cases there ("use the `vercel-flags` skill"). Minimal conflict risk remains, matching the level-5 anchor rather than the level-4 'minor overlap risk' anchor.

5 / 5

Total

20

/

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

vercel/vercel-plugin

Path

skills/flags-sdk/upstream/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.