CtrlK
BlogDocsLog inGet started
Tessl Logo

feature-flags

Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.

85

1.66x
Quality

78%

Does it follow best practices?

Impact

98%

1.66x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.claude/skills/feature-flags/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

90%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 exemplary skill body: dense, concrete, and executable, with a well-chosen flag-file table, both gating mechanisms shown in runnable code, and a common-mistakes section that preempts real errors. The only headroom is a validation feedback loop after adding a flag and marginal length relative to the simple-skill threshold.

DimensionReasoningScore

Conciseness

Every section is a table, a numbered list, or a minimal executable sample — zero tokens spent explaining what feature flags or React are, which Claude already knows. Comments inside the code samples ("This test only runs when enableViewTransition is true / and is SKIPPED (not failed) when false") convey non-obvious semantics that earn their place, matching 'lean and efficient; every token earns its place'.

5 / 5

Actionability

The body provides copy-paste-ready `@gate` pragma and `gate(flags => flags.enableNewBehavior)` examples, exact fork file paths, exact commands (`/test www variant false <pattern>`, `/flags --diff <channel1> <channel2>`), and even corrects wrong syntax ("It's `gate(flags => flags.name)`, not `gate('name')`"). Fully executable guidance covering the common cases, matching the top anchor.

5 / 5

Workflow Clarity

"Adding a New Flag" (steps 1-4) and "Debugging Channel-Specific Failures" (steps 1-4, opening with a diff command and ending with "Verify flag exists in all fork files") are clear sequences with a verification step. Falls short of anchor 5 because there is no feedback loop after adding a flag (e.g., run the gated test to confirm) and no explicit error-recovery cycle in the debugging workflow.

4 / 5

Progressive Disclosure

No bundle files exist and none are needed; the ~76-line body is well-organized sections of legitimately inline content (path table, gating examples, common-mistakes list) with the one external pointer ("See the `flags` skill") clearly signaled and one level deep. It just misses the simple-skill 5 exception (under 50 lines), and while nothing demands splitting, the flag-file table and __VARIANT__ details could optionally live in a reference file.

4 / 5

Total

18

/

20

Passed

Description

66%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 trigger-oriented description with concrete, natural phrases that would fire correctly in a React repo. Its one structural weakness is that it never states what the skill does — the capability statement is entirely implied by the when-clause.

Suggestions

Add a leading capability statement before the 'Use when' clause, e.g. 'Maintains React feature flags across fork files and gates tests with @gate pragmas. Use when...'.

Include the natural synonyms users in this domain would say — 'variants', 'gatekeepers (GKs)', and the channel names 'www' and 'RN' — in the trigger clause to round out keyword coverage.

Disambiguate from the adjacent `flags` skill by scoping the generic phrase 'flags need updating' to React flag files (e.g. 'when React feature flags need updating in fork files').

DimensionReasoningScore

Specificity

Phrases like "flags need updating", "adding new flags", and "understanding @gate pragmas" name several concrete tasks in the feature-flag domain, though coverage has minor gaps (gating tests, checking flag states are only implied). Matches 'lists several specific actions; minor gaps' rather than score 5's comprehensive coverage and clearly above score 3's 1-2 actions.

4 / 5

Completeness

The 'when' is explicit and rich ("Use when feature flag tests fail, flags need updating..."), but the 'what' is never stated — the description is entirely a trigger clause with the skill's capabilities only weakly implied. This sits between anchor 2 ('only when present without what') and anchor 4; the implied capability keeps it above 2 but the absent what keeps it below 4.

3 / 5

Trigger Term Quality

"feature flag tests fail", "debugging channel-specific test failures", and "@gate pragmas" are natural phrases a React contributor would actually say. A few natural terms are missing (variants, gatekeepers/GKs, www/RN channels), so it fits 'good keyword coverage; a few natural terms missing' rather than score 5's comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

"React", "@gate pragmas", and "channel-specific test failures" carve a clear niche, but the generic phrase "flags need updating" carries minor overlap risk with the closely related `flags` skill the body itself points to. Fits 'mostly distinct; minor overlap risk with closely related skills' rather than score 5's minimal conflict risk.

4 / 5

Total

15

/

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
facebook/react
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.