CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

instrument-feature-flag

Gate application code behind an existing Harness FME feature flag. Detect the app's language, framework and any existing flag wrapper first; ask only what that can't resolve (target app, subject identity, gating point, treatment/config/fallback names, extension needs). Prefer an existing wrapper; otherwise propose a thin, customer-extensible facade or hook — never a new framework or second SDK client — approved before editing. Map named treatments to branches with a safe, non-boolean-coerced fallback, then add tests at the wrapper and call-site boundary. New flags delegate to create-feature-flag with the one environment actually selected; missing targeting delegates to update-flag-targeting under fresh approval. Not for flag creation alone, metrics (choose-metric, create-metric, instrument-metric), or first-time onboarding (feature-flag-onboarding). Trigger phrases: gate this code behind a flag, add flag check, wire up getTreatment, add SDK evaluation call.

Quality

85%

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

73%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 well-structured, highly actionable instruction skill with an exemplary phased workflow and validation checkpoints. The main weaknesses are redundant restatement of approval-boundary and truthiness rules across phases, and references that point outside the bundle where their existence cannot be confirmed.

Suggestions

State the "resource-create approval does not authorize app edits" rule once (e.g., in a short Approval Boundaries note) and reference it from Phases 4–6 instead of repeating it.

Consolidate the non-boolean-coerced fallback rule, currently duplicated in Phase 5 ("never string truthiness") and Phase 6 ("never treat a non-empty treatment string as 'enabled' by truthiness").

Break the Phase 4 and Phase 5 run-on paragraphs into short bulleted rules so each STOP/deference condition is scannable; consider co-locating or vendoring the shared references/fme files so the skill bundle is self-contained.

DimensionReasoningScore

Conciseness

The body is mostly efficient and assumes domain competence, but key rules are repeated across phases — the approval boundary is stated three times (Phase 4 "approving resource creation does not approve later app edits", Phase 5 "a resource-create approval is not approval to edit the app", Phase 8's re-confirmation) and the no-truthiness rule appears in both Phase 5 and Phase 6. Phase 4 and Phase 5 are over-stuffed run-on paragraphs that could be tightened without losing content.

3 / 5

Actionability

The tools table gives exact copy-paste commands ("harness list feature_flag --json --limit 50") with MCP tool and param names, and each phase prescribes concrete actions (grep lockfiles/manifests, confirm trafficType against List traffic types, tests at the wrapper and call-site boundaries). The core deliverable — the wrapper/facade code — has no inline example and is delegated to language-guidance.md, which cannot be verified in this bundle, leaving a minor gap.

4 / 5

Workflow Clarity

Eight clearly sequenced phases with explicit validation checkpoints and feedback loops: 404 triggers a recheck-then-handoff loop, traffic-type mismatch and unverified OpenFeature providers are STOP conditions, Phase 5 requires "STOP and wait for explicit approval", and Phase 7 requires tests to be reported as passed/failed/not run with mock-vs-live distinctions. This matches the anchor for clear sequencing with explicit validation and error-recovery loops.

5 / 5

Progressive Disclosure

The body is a readable overview with clear sections and one-level-deep, purpose-labeled references (References section plus inline links like "sdk-patterns.md — evaluation/tracking call signatures and search patterns"). However, all referenced files live outside the skill directory (../../../references/fme/) and none are present in this bundle, so the navigation cannot be verified and the skill is not self-contained — a minor organization gap.

4 / 5

Total

16

/

20

Passed

Description

92%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, information-dense description: concrete multi-step capabilities, explicit trigger phrases, and clear exclusions that distinguish it from sibling flag skills. The only minor gap is a few missing natural synonyms for the trigger terms.

Suggestions

Add one or two common user synonyms to the trigger phrase list, e.g. "toggle this feature" or "roll this out behind a flag", to broaden natural matching.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "Detect the app's language, framework and any existing flag wrapper", "Map named treatments to branches with a safe, non-boolean-coerced fallback, then add tests at the wrapper and call-site boundary", "New flags delegate to create-feature-flag" — with comprehensive coverage of the instrumentation workflow and no vague filler.

5 / 5

Completeness

It explicitly answers both questions: what it does ("Gate application code behind an existing Harness FME feature flag" plus the detect/wrapper/test/delegate actions) and when to use it (a "Trigger phrases:" list plus a "Not for flag creation alone, metrics..., or first-time onboarding" exclusion clause), matching the anchor requiring concrete trigger phrases.

5 / 5

Trigger Term Quality

Explicit trigger phrases ("gate this code behind a flag, add flag check, wire up getTreatment, add SDK evaluation call") are natural phrasings users would say, spanning both user-level and developer-level language. A few common synonyms such as "feature toggle", "rollout" or "kill switch" are absent, keeping it just short of the comprehensive-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

It carves out a clear niche — instrumentation of an existing flag — and explicitly fences off the adjacent skills it could be confused with: "Not for flag creation alone, metrics (choose-metric, create-metric, instrument-metric), or first-time onboarding (feature-flag-onboarding)", with creation and targeting delegated to named sibling skills.

5 / 5

Total

19

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 16 suspicious

Warning

Total

15

/

16

Passed

Repository

harness/harness-ai

Path

plugins/claude/skills/instrument-feature-flag/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.