Agent skill

Explain Flag

by harness in harness/harness-skills

Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline.

Apache-2.0Auto-check passedWriting & Content

Install Explain Flag

skills CLI
$ npx skills add harness/harness-skills --skill explain-flag -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install harness/harness-skills explain-flag --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/harness/harness-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/explain-flag .claude/skills/explain-flag && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
explain-flag
GitHub stars
115
Token cost
~2.7k tokens
SKILL.md length
1,228 words
Files
1
Skills in repo
64
Repo updated
First seen
Licence
Apache-2.0

At a glance

Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline.

  • Works in 6 steps: Resolve scope → Find the flag, disambiguating if needed → Get flag metadata → …
  • Phrases: what does this flag do
  • SKILL.md covers Tools, Instructions, Examples and Performance Notes, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Explain Flag is an agent skill from harness/harness-skills. Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline. A quick-lookup/explain capability, not a search across many flags - disambiguates when the name/key given is ambiguous. Doesn't create, kill, or modify anything - see update-flag-targeting for targeting changes, manage-flag-lifecycle for metadata/archive, discover-feature-flags for multi-flag questions, manage-experiments for experiments. Trigger…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires the Harness MCP server or the Harness CLI

It sits in Writing & Content, covering Plain language and style rules. It works with Model Context Protocol. The repository describes itself as: A collection of structured AI agent skills that enable Claude Code, Cursor, GitHub Copilot, and other AI coding assistants to create, operate, debug, and govern Harness CI/CD… The licence is Apache-2.0.

When your agent uses it

  • Phrases: what does this flag do
  • Explain this flag
  • How is X configured
  • Is X on in prod

Example prompts

  • “/explain-flag”

Requirements

  • Compatibility (from SKILL.md): Requires the Harness MCP server or the Harness CLI

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Resolve scope
  2. Find the flag, disambiguating if needed
  3. Get flag metadata
  4. Get targeting for every environment
  5. Synthesize and flag inconsistencies
  6. Deliver the explanation

What it can do on your machine

Read from SKILL.md and the folder at commit c25faee. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires the Harness MCP server or the Harness CLI

    From compatibility in the SKILL.md frontmatter.

Context cost

Explain Flag loads about 2.7k tokens when it runs. Until then it costs about 160 tokens; SKILL.md has 1,228 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~160
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from harness/harness-skills at commit c25faee, republished under its Apache-2.0 licence (© harness). 1,228 words, ~2,733 tokens.

Download SKILL.mdSave it as .claude/skills/explain-flag/SKILL.md (or your agent's skills folder).
name
explain-flag
description
Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline. A quick-lookup/explain capability, not a search across many flags - disambiguates when the name/key given is ambiguous. Doesn't create, kill, or modify anything - see update-flag-targeting for targeting changes, manage-flag-lifecycle for metadata/archive, discover-feature-flags for multi-flag questions, manage-experiments for experiments. Trigger phrases: what does this flag do, explain this flag, how is X configured, is X on in prod, what's targeted for X.
compatibility
Requires the Harness MCP server or the Harness CLI
metadata.author
Harness
metadata.version
1.3.2
metadata.mcp-server
harness-mcp
license
Apache-2.0

Explain Flag

Answer "what does this flag do right now" for one named flag: its purpose, what serves by default, and how targeting differs (or doesn't) across environments - without touching anything.

Tools

Works through the Harness MCP server or the Harness CLI; names are from tool-map.md.

OperationMCPCLI
List environmentsharness_list · fme_environment · filters: { offset: 0, limit: 100 } · compact: falseharness list fme_environment --json
List flagsharness_list · fme_feature_flag · size: 50 · filters: { name, offset: 0 } · compact: falseharness list feature_flag --search <substring> --json
Get flagharness_get · fme_feature_flag · params: { feature_flag_name }harness get feature_flag <name> --json
Get definitionharness_get · fme_feature_flag_definition · params: { feature_flag_name, environment_id }harness get feature_flag:definition <flag> --env <env-id> --json
List definitionsharness_list · fme_feature_flag_definition · params: { feature_flag_name } · filters: { offset: 0, limit: 100 } · compact: falseharness list feature_flag:definition <flag> --json

Instructions

Step 1: Resolve scope

Get org_id + project_id if not already known. Don't use the deprecated workspace_id: the Step 4 definition list is Harness-native only.

List environments up front, since Step 4 needs every environment. Complete the inventory per pagination, using explicit MCP filters.limit: 100; a full page whose total equals its length can be a fallback, so fetch another page — one call is not guaranteed to return all environments, and an environment you never fetched is unseen, not confirmed nonexistent; don't diff Step 4 against a partial list. Keep the full list with each environment's isProduction: Step 4 diffs against it for missing definitions, and Step 6 labels production environments ("is X on" questions almost always mean "in production").

Step 2: Find the flag, disambiguating if needed

Stop condition: if the user hasn't given any identifier at all (no name, key, or tag to search on), ask for one rather than listing every flag in the project as a substitute.

List flags for the substring, paging through every offset until a page returns fewer than requested — a candidate on a later page is unseen, not nonexistent, and stopping early can turn a genuine collision into a false single-match. The name filter is a substring match, so it often returns several candidates (e.g. searching checkout also returns checkout_v2 and new_checkout).

If exactly one candidate's name is an exact, case-sensitive match to what the user typed, use it without asking - the other hits are substring noise. It's genuinely ambiguous only when no candidate is exact and several are plausible.

Stop condition: for genuine ambiguity, list the candidates (name, description, rolloutStatus.name, createdAt, openInHarness link) and ask which one - don't guess by recency. Near-identical flags often share copy-pasted descriptions and rollout status, so createdAt and the link may be the only distinguishing details.

Substring search can't surface a near-duplicate that differs from what the user typed by a transposition or an extra character - neither name contains the other, so each is invisible to the other's search. If the name looks generic (short, numbered, one of a family) or the user seems unsure of the spelling, run a second search on a shorter fragment of it before treating a single hit as certain.

Step 3: Get flag metadata

Get flag for the name.

Read description, tags, trafficType (an object - use .name, don't print the raw object), owners (array of {type, name} - join names with commas), rolloutStatus.name (e.g. Pre-Production, Killed), and openInHarness (direct link). Treat a missing description the same as an empty one: "no description set".

rolloutStatus is a manually set, project-level lifecycle label, not live state - a flag labeled Killed can still be live (isKilled: false) in some environments. When it disagrees with Step 4's isKilled, say so and trust isKilled.

Step 4: Get targeting for every environment

List definitions for the flag through every page, explicitly setting MCP filters.limit: 100 and advancing filters.offset until a short page. size is ignored here, and total can be only the page length. Do not diff an incomplete definition inventory against the environment list or call an unseen environment unconfigured; report the missing coverage instead.

For each environment's definition, read isKilled (per environment - a flag can be killed in one and live in another), treatments (including any keys/segments/largeSegments/ruleBasedSegments membership nested on individual treatments - these are the individual targets, evaluated before rules), defaultTreatment (served when the flag is killed or the traffic isn't allocated), defaultRule (buckets served when no targeting rule matches), rules (each with buckets + a condition), trafficAllocation, and impressions.lastImpressionAt (most recent impression; null = never received traffic). If impressions is absent, report last impression as unknown, not as unused.

Diff the returned environments against Step 1's full list explicitly. An environment with no definition is "not configured in <env>" - a distinct state, not a copy of another environment's config.

Show full SKILL.md (470 more words)Show less
Step 5: Synthesize and flag inconsistencies

Compare across environments before writing the summary, not after - inconsistency-spotting is the point of this skill, not an afterthought:

  • Is isKilled the same across environments? A flag killed in one environment and live in another is the single most important inconsistency to surface - it usually means a rollback happened in one place and never propagated, or was never meant to.
  • Same defaultTreatment and defaultRule treatment allocation, or does one environment default differently (e.g. prod at 30/70, staging at 50/50)?
  • Same targeting rules (same conditions, same treatment allocation), or does one environment have rules the others lack?
  • Same trafficAllocation, or is one environment running a partial rollout while another is at 100%?

Call out every difference explicitly - a flag behaving differently between staging and prod is very often exactly what the user needs to know, not noise to summarize away.

Step 6: Deliver the explanation
## <flag_name>
<description, or "no description set">

**Traffic type:** <trafficType>   **Owners:** <owners, or "none set">
**Rollout status:** <rolloutStatus.name>   **Link:** <openInHarness URL>

### Per-environment state
| Environment | Prod? | Killed | Default treatment | Individual targets | Rules | Traffic allocation | Last impression |
|---|---|---|---|---|---|---|---|
| <env> | yes/no | yes/no | <defaultTreatment> (<defaultRule treatment allocation>) | <n> key(s)/segment(s) across treatments, or "none" | <n> rule(s) - <one-line summary each> | <trafficAllocation>% | <lastImpressionAt, "never", or "unknown"> |

### Notable
<any cross-environment inconsistency from Step 5, or "consistent across all environments" if none>

One line per rule (condition -> treatment allocation); offer Get definition (from Tools table) for full matcher detail instead of dumping raw JSON. The Prod? column comes from Step 1's isProduction, never from the environment name (names like env-7 or blue say nothing).

If no environment has a definition, skip the table:

## <flag_name>
<description, or "no description set">

**Traffic type:** <trafficType>   **Owners:** <owners, or "none set">
**Rollout status:** <rolloutStatus.name>   **Link:** <openInHarness URL>

This flag exists but has no targeting configured in any environment yet.

If the question was scoped ("is X on in prod?"), answer it in that case too rather than leaving the reader to infer it: with no definition there, the flag isn't serving anything in that environment and SDKs fall back to the control treatment - it's unconfigured, not on or off.

Examples

  • "What does the new-checkout flag do?" - Steps 2-3 for purpose, Step 4-6 for full per-environment breakdown.
  • "Is dark-mode on in production?" - Steps 2-4, but answer can be scoped to just the production environment's default treatment/rules rather than full table.
  • "explain checkout" (ambiguous) - Step 2 surfaces checkout-v2 and checkout-v2-mobile; ask which one.
  • "Why is beta-banner behaving differently in staging vs prod?" - Jump to Step 4 comparison and lead answer with Step 5 inconsistency.

Performance Notes

  • Build one complete paginated environment inventory (Step 1) and one complete paginated definition inventory (Step 4); each may require multiple calls.
  • Read-only: never call create/update/delete/execute. If user asks to change something, route per description.

Troubleshooting

ProblemCauseFix
Flag name matches nothingConfirm org_id/project_id first - a flag in a different project looks nonexistentDon't assume it was deleted
isKilled disagrees with what the default treatment looks likeTrust isKilled - a flag can default to off without being killedReport isKilled as "is this live here" and the default rule/treatment separately
The definition list is empty for every environmentThe flag exists (Step 3 succeeded) but was never configured anywhere, typical for flags created ahead of rollout planningSay so; don't treat it as an error or retry

Generic errors: see tool-map.md.

References

  • tool-map.md — tool names, params, common errors
  • concepts.md — treatments, evaluation order, killed state

© harness, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/explain-flag of harness/harness-skills.

Open the folder on GitHubat commit c25faee

Compare with similar skills

Explain Flag next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Explain Flag compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Explain Flag this skillharness/harness-skills115—~2.7kAutomated safety check: PassApache-2.0
Scenario Minimax Musicscenario-labs/skills898—~1.4kAutomated safety check: PassMIT
Set Dressingarjun988/blender-skills271—~507Automated safety check: PassMIT
Codflow Updatebighadj22/codflow343—~6.2kAutomated safety check: NotesApache-2.0
Client Report Narrativesirinabuht12-oss/marketing-skills3.8k—~665Automated safety check: PassNone
Asd Ste100danyuchn/asd-ste100-skill3.9k—~4.1kAutomated safety check: PassMIT

Similar skills

  • Scenario Minimax Music

    scenario-labs/skills

    A skill your agent uses when generating music with MiniMax models on Scenario via MCP: full songs with vocals from a lyric sheet, structure tags like [Verse] and [Chorus], auto-written lyrics from a…

    898 GitHub stars~1.4k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Set Dressing

    arjun988/blender-skills

    Set dressing and environmental storytelling placement for interiors and exteriors using prop density, narrative clusters, and readability rules via MCP.

    271 GitHub stars~507 tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Codflow Update

    bighadj22/codflow

    Update runbook for a self-hosted CodFlow install — an AI agent following it fetches the latest code from the CodFlow GitHub repo, merges it into an EXISTING checkout, syncs the gitignored…

    343 GitHub stars~6.2k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Client Report Narratives

    irinabuht12-oss/marketing-skills

    Takes your raw campaign performance data and writes the executive summary paragraph that goes at the top of the report.

    3.8k GitHub stars~665 tokensUpdated 13 days ago
    Marketing & SEOAuto-check passed
  • Asd Ste100

    danyuchn/asd-ste100-skill

    A skill your agent uses when English text must be parsed without a human to resolve ambiguity — tool descriptions, error messages, inter-agent instructions, system prompts, status reports — and…

    3.9k GitHub stars~4.1k tokensUpdated 3 days ago
    Writing & ContentAuto-check passed
  • Writes and edits Japanese business documents so they read clearly and naturally, removes AI-sounding phrasing and can score how AI-like a text reads.

    1.9k GitHub stars~2.1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from harness/harness-skills

All 64 skills in this repo
  • Audit Report

    harness/harness-skills

    Generate audit reports and compliance trails using Harness audit trail data via MCP v2 tools.

    115 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Chaos Dr Test

    harness/harness-skills

    A skill your agent uses when working with Chaos Engineering steps inside a Harness pipeline.

    115 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check passed
  • Chaos Experiment

    harness/harness-skills

    A skill your agent uses when the user asks to create, edit, update, design, or configure a Harness Chaos Experiment — including faults, probes, actions, experiment YAML, fault injection, pod-delete…

    115 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Cleanup Feature Flags

    harness/harness-skills

    Remove a launched Harness FME feature flag from application code, keeping the treatment FME serves today, and open a pull request.

    115 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Configure Repo Scan

    harness/harness-skills

    Configure code scanning in Harness pipelines using STO security scanners.

    115 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Create Agent Template

    harness/harness-skills

    Generate Harness Agent Template files for AI-powered automation agents.

    115 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed

Questions about Explain Flag

What does Explain Flag do?

Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline. Explain Flag is an agent skill from harness/harness-skills. Explain a single FME feature flag in plain language: purpose, default rule, and per-environment targeting state, flagging inconsistencies across environments inline.

When should I use Explain Flag?

Explain Flag fits situations like: phrases: what does this flag do; explain this flag; how is X configured; is X on in prod.

How do I install Explain Flag in Claude Code?

Run `npx skills add harness/harness-skills --skill explain-flag -a claude-code`. Or copy the skill folder (skills/explain-flag in harness/harness-skills) into .claude/skills/explain-flag in your project. Claude Code loads it when a task matches its description.

How do I install Explain Flag in Codex?

Run `npx skills add harness/harness-skills --skill explain-flag -a codex`. Or copy the skill folder (skills/explain-flag in harness/harness-skills) into .agents/skills/explain-flag in your project. Codex loads it when a task matches its description.

Can I use Explain Flag in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add harness/harness-skills --skill explain-flag -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/explain-flag, .gemini/skills/explain-flag, .github/skills/explain-flag and .opencode/skills/explain-flag in your project.

What does Explain Flag need to run?

SKILL.md names no scripts, command-line tools or credentials: Explain Flag is instructions for the agent only. Compatibility (from SKILL.md): Requires the Harness MCP server or the Harness CLI.

Does Explain Flag access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Explain Flag safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Explain Flag use?

Explain Flag is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Explain Flag use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Explain Flag?

Skills that share tags, products or a category with Explain Flag: Scenario Minimax Music (scenario-labs/skills, 898 stars), Set Dressing (arjun988/blender-skills, 271 stars), Codflow Update (bighadj22/codflow, 343 stars) and Client Report Narratives (irinabuht12-oss/marketing-skills, 3.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Explain Flag?

harness (a GitHub organization) maintains it in harness/harness-skills, which has 115 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 6, 2026.

Source: harness/harness-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.