CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

cleanup-feature-flags

Remove a launched Harness FME feature flag from application code, keeping the treatment FME serves today, and open a pull request. Use when asked to remove a flag from code, hardcode the winning treatment after a rollout, or pay down flag debt for a specific flag. Do not use for finding stale flags (discover-feature-flags) or archiving and deleting flags in FME (manage-flag-lifecycle). Trigger phrases: remove flag from code, hardcode treatment, flag cleanup, flag debt, clean up feature flag.

Quality

91%

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

88%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, highly actionable skill body: an 8-phase workflow with explicit STOP/blocked gates, user-confirmation checkpoints, and a validate-fix-retry verification loop, plus concrete tool commands and a PR checklist. Weaknesses are minor: duplicated safety rules between the Instructions and Troubleshooting sections, and references that escape the skill's own directory into an unverifiable shared path.

Suggestions

State each blocked/caution rule once: the empty-critical-set STOP, dynamic keys, WithConfig config-mismatch, and no-call-sites rules appear in full in both the Instructions phases and the Troubleshooting table — keep the Troubleshooting row as a one-line pointer to the phase or readiness.md anchor instead of restating the rule.

Make the shared-tree references verifiable from the skill bundle: tool-map.md, sdk-patterns.md, write-safety.md, and scope-establishment.md are reached via `../../../` paths outside the skill's own directory and did not resolve here — either vendor them under references/ or confirm the relative paths resolve where the skill is installed.

DimensionReasoningScore

Conciseness

The body is dense and prescriptive — no padding, no explanations of concepts Claude already knows, and heavy use of compact tables for tool mappings and troubleshooting. Not 5 because several safety rules are stated twice: the empty-critical-set STOP, dynamic-key blocked, WithConfig config-mismatch, and no-call-sites rules each appear in full in both the Instructions phases and the Troubleshooting table, and Phase 3 restates rules also carried in readiness.md. Not 3 because the duplication is deliberate emphasis on a handful of short rules rather than 'some unnecessary explanation' spread throughout.

4 / 5

Actionability

The tool table gives copy-paste-ready CLI commands (e.g., `harness get feature_flag <flag> --json`) and exact MCP invocations with params and filters, and the phases specify executable mechanics (advance `filters.offset` until a short page, record `file:line` per hit, work on a new branch, re-run the search after edits). As an instruction-only skill the guidance is concrete throughout; the Examples section covers the common user asks.

5 / 5

Workflow Clarity

Eight explicitly sequenced phases with hard validation gates: STOP on empty critical set before any phase, blocked/caution/ready verdict rules before editing, Phase 5 requires the user's explicit confirmation before any edit, Phase 6 re-searches for the key and mandates build/lint/tests with 'fix any failures before moving on' (a validate→fix→retry loop), and Phase 7 confirms before pushing. Checklists are provided for the plan and the PR description.

5 / 5

Progressive Disclosure

SKILL.md is a clear overview, details are split one level deep into signaled references ("Load [readiness.md](references/readiness.md) before giving a verdict"), and the in-bundle readiness.md is real and well-scoped. Not 5 because four of the five referenced paths (tool-map.md, sdk-patterns.md, write-safety.md, scope-establishment.md) point outside the skill's own directory via `../../../` into a shared tree and could not be verified to resolve from this bundle — a minor organization/portability gap on top of otherwise excellent structure.

4 / 5

Total

18

/

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 description: concrete multi-action 'what', an explicit 'Use when' clause, a dedicated trigger-phrase list, and explicit negative scope naming the sibling skills it must not trigger for. Third-person imperative voice throughout, no fluff or over-claims. The only weakness is modest synonym coverage in the trigger phrases.

DimensionReasoningScore

Specificity

"Remove a launched Harness FME feature flag from application code, keeping the treatment FME serves today, and open a pull request" plus "hardcode the winning treatment after a rollout" lists multiple concrete actions (remove flag, keep/hardcode the live treatment, open PR) that comprehensively cover the skill's scope. Not 4 because there is no meaningful coverage gap — every action the skill performs at its level of abstraction is named, matching the multi-action comprehensive anchor better than 'minor gaps'.

5 / 5

Completeness

The first sentence answers 'what' concretely, "Use when asked to remove a flag from code, hardcode the winning treatment after a rollout, or pay down flag debt for a specific flag" answers 'when' explicitly, and a dedicated "Trigger phrases:" list adds concrete triggers. This matches the anchor for explicitly answering both what AND when with concrete trigger phrases; the 4-anchor's 'when could be more explicit' does not apply.

5 / 5

Trigger Term Quality

Explicit trigger phrases "remove flag from code, hardcode treatment, flag cleanup, flag debt, clean up feature flag" give good natural-language coverage users would actually say. Not 5 because a few natural synonyms are missing (e.g., "feature flag removal", "remove feature flag", "rollout cleanup"); not 3 because the variation that exists (remove/clean up, cleanup/debt, hardcode) goes well beyond 'some relevant keywords'.

4 / 5

Distinctiveness Conflict Risk

"Do not use for finding stale flags (discover-feature-flags) or archiving and deleting flags in FME (manage-flag-lifecycle)" explicitly fences off the two closest sibling skills, and the niche (code removal ending in a PR) is distinct from both discovery and archival. Not 4 because the named-sibling disambiguation reduces the overlap risk below 'minor' — even the borderline phrase "flag cleanup" is routed by the explicit exclusion clause.

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: 7 suspicious

Warning

Total

15

/

16

Passed

Repository

harness/harness-ai

Path

plugins/claude/skills/cleanup-feature-flags/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.