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, and others), using `identify`, `dedupe`, or `evaluate`, keeping pages static with precompute, setting up Flags Explorer, or encrypting flag values. For planning a flag, Vercel Flags rollouts and experiments, the `vercel flags` CLI, or other frameworks, use the `vercel-flags` skill.

76

Quality

95%

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

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 body: executable commands and complete code samples, well-sequenced workflows with state pre-checks and explicit error-recovery loops, and exemplary one-level-deep reference structure with verified anchors. The only weakness is mild token inefficiency in the evaluate() rationale, duplicated adapter examples, and version-specific guidance outside a deprecation section.

Suggestions

Trim the Bulk evaluation explanation to the non-obvious SDK facts (shared header/cookie/override pre-reads, bulkDecide) and drop the generic Promise.all/sequential-await latency explanation, which restates what the inline // avoid / // prefer comments already show.

Show the vercelAdapter flag-declaration snippet once (e.g., in Create a flag) and have Core concepts and Declaring flags reference it, removing two duplicate code blocks.

Move the `flags` 4.2.0+ adapter-factory guidance into a labeled "Old patterns / version compatibility" subsection so the main flow stays version-neutral and the version numbers don't age the core guidance.

DimensionReasoningScore

Conciseness

Mostly lean, directive prose with state pre-checks and minimal concept explanation, but a few spots could be trimmed: the `evaluate()` latency paragraph explains Promise.all semantics Claude already knows ("Awaiting flags one at a time makes total latency the sum of every flag's evaluation... while `Promise.all()` runs them in parallel"), the `vercelAdapter` code example appears three times (Core concepts, Create a flag step 4, Declaring flags), and version-number guidance (`flags` 4.2.0+ adapter factory forms) sits in a "Version note" blockquote rather than a deprecated/old-patterns section. Anchor 4 ("minor instances of over-explanation that could be trimmed") fits; not 5 because of these instances, not 3 because the bulk is efficient.

4 / 5

Actionability

Fully executable throughout: copy-paste install commands ("pnpm i flags @flags-sdk/vercel" with lockfile adaptation guidance), exact CLI invocations ("vercel flags create <flag-key> --kind boolean --description \"<description>\"", "vercel project inspect --non-interactive"), and complete TypeScript snippets covering the common cases (flag declaration, identify with dedupe, Flags Explorer route, SvelteKit hook, encryption usage). Matches anchor 5.

5 / 5

Workflow Clarity

Each flow has a "Before you start" state-check checklist, ordered steps with explicit skip conditions, and genuine feedback loops: "Verify the link with `vercel project inspect --non-interactive`... If it reports `link_required`, run `vercel link`. If the user named a project or team and the output differs, stop and ask" and the auth-error recovery path ("local evaluation fails with an authentication error; the SDK refreshes an expired token through the linked project, re-pulling is the fallback"). Destructive operations (archive/rm) are explicitly deferred to the vercel-flags skill with its checks, so no validation cap applies. Matches anchor 5.

5 / 5

Progressive Disclosure

Clear overview holding the primary workflows inline, with all detail appropriately split into four one-level-deep reference files (nextjs.md, sveltekit.md, providers.md, api.md) that all exist. Every inline reference is clearly signaled with its content (e.g., "See [references/providers.md — User targeting]... and [Attribute types]"), the References section enumerates each file's scope, and all cited anchors were verified to exist (providers.md#vercel, #user-targeting, #attribute-types, #custom-adapters; api.md#evaluate; nextjs.md#toolbar-setup). Matches anchor 5.

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.

An exemplary description: concrete and comprehensive on capabilities, explicit "Use when" triggers, and an explicit hand-off boundary to the sibling vercel-flags skill that minimizes conflict risk. No changes needed.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions with comprehensive coverage: "installing or configuring the SDK, declaring flags with `flag()`, wiring a provider adapter (`@flags-sdk/vercel`, Statsig, LaunchDarkly, PostHog, GrowthBook, Global Config, OpenFeature...), using `identify`, `dedupe`, or `evaluate`, keeping pages static with precompute, setting up Flags Explorer, or encrypting flag values". This matches the anchor-5 example's breadth; not 4 because coverage spans the SDK's full surface with no notable gaps.

5 / 5

Completeness

Explicitly answers both: what ("Implement feature flags in Next.js or SvelteKit code with the Flags SDK (`flags` npm package)") and when ("Use when installing or configuring the SDK, declaring flags with `flag()`... setting up Flags Explorer, or encrypting flag values") with concrete trigger phrases, exactly matching the anchor-5 pattern. Voice is third person ("Implement..."), so no voice penalty.

5 / 5

Trigger Term Quality

Comprehensive natural terms users would say: "feature flags", "Next.js", "SvelteKit", "Flags SDK", provider names (Statsig, LaunchDarkly, PostHog, GrowthBook, OpenFeature), "precompute", "Flags Explorer", plus exact identifiers like `identify`, `dedupe`, `evaluate`, and `@flags-sdk/vercel`. Equivalent of the anchor-5 "synonyms and file extensions" coverage via package names. Not 4: no common phrasing for this domain is missing.

5 / 5

Distinctiveness Conflict Risk

Clear niche (feature-flag code implementation in Next.js/SvelteKit with the Flags SDK) with explicit boundary against the closest sibling: "For planning a flag, Vercel Flags rollouts and experiments, the `vercel flags` CLI, or other frameworks, use the `vercel-flags` skill." This active disambiguation makes wrong-skill triggering unlikely, matching anchor 5.

5 / 5

Total

20

/

20

Passed

Validation

81%

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

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

13

/

16

Passed

Repository

vercel/vercel-plugin

Path

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