Skip to content
Back to skills

Flag List

BSecurity

This skill should be used to read and audit all runtime feature flags before a promotion or delete decision: Flagsmith state, server.ts code-wiring, live Doppler dev/prd values, and per-segment overrides, with drift detection.

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 3, 2026
ai-agentspythonshellbashgitapidocumentation

Works with

  • claude code
  • cli
  • api

Security analysis

B75/100
  • criticalSends environment variables or credentials to an external URL

Pro scans all 2 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add jikig-ai/soleur --skill flag-list --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flag List?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Flag List
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/jikig-ai-flag-list/badge)](https://www.skillsdirectory.com/skills/jikig-ai-flag-list)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: flag-list
description: "This skill should be used to read and audit all runtime feature flags before a promotion or delete decision: Flagsmith state, server.ts code-wiring, live Doppler dev/prd values, and per-segment overrides, with drift detection."
---

<!-- soleur-cloud-mode:start -->
**Cloud Mode (Devin):** before pipeline work run `bash "${CLAUDE_PLUGIN_ROOT}/scripts/cloud-detect.sh"`. If `CLAUDE_PLUGIN_ROOT` is unset (cloud exec shells do not export it), resolve the root by IDENTITY, never by script basename: for `d` in `"$HOME/.local/share/devin/cli/plugins/cache"` and `/opt/.devin/plugins`, skip unless `[ -d "$d" ]`, then `MANIFEST="$(find "$d" -path '*/.claude-plugin/plugin.json' -exec grep -l '"name"[[:space:]]*:[[:space:]]*"soleur"' {} + 2>/dev/null | head -1)"`, `ROOT="${MANIFEST%/.claude-plugin/plugin.json}"` — one resolution, two consumers: `$ROOT/scripts/cloud-detect.sh` and `$ROOT/scripts/precommit-guard.sh`. (Shape check, not authentication: a planted `{"name":"soleur"}` dir passes — ADR-179 A11.) `local` or `not-local:no-devin-env` proceeds normally; any other `not-local:<reason>` applies `<plugin-root>/devin/INSTRUCTIONS.md` §Cloud Mode: emit the `--banner`, fan out sequentially with `Reviewed-Coverage: sequential-fallback` disclosure (never claim an independent review ran), `message_user` ack before any secrets read or production mutation, and run `precommit-guard.sh` before any `git commit` — hooks do not fire in cloud.
<!-- soleur-cloud-mode:end -->

<!-- grok-harness-invoke:start -->
**Grok Build (`plugins/soleur/lib/harness.ts` `invokeSkill()`):** Read this SKILL.md in this process and run it to completion. A one-segment `soleur:<name>` in this document names a SKILL — on Grok Build, Read `plugins/soleur/skills/<name>/SKILL.md` in this process; it is not a nested tool_use. A multi-segment id such as `soleur:<domain>:<name>` names an AGENT: spawn it, never Read it, and on Grok Build spawn_subagent takes the id with its colons replaced by hyphens (`agentIdToGrokSubagentType`). **Claude Code:** Skill tool for a skill (`soleur:<name>`), Task tool with `subagent_type` for an agent. Forbidden is executing a subset, not the Read.
<!-- grok-harness-invoke:end -->

# flag-list

Reads every runtime feature flag across all three sources of truth and shows
them side by side — the **Read** verb of the flag CRUD set. Use it to audit
active flags before a promotion (`flag-set-role`) or a delete (`flag-delete`).

## When to use

- Auditing active flags before promoting one dev→prd, or before deleting one.
- Detecting drift: a Flagsmith feature with no `RUNTIME_FLAGS` entry, or a
  code-wired flag missing from Flagsmith.
- Seeing a flag's blast radius (which segments/roles/orgs it targets) before a
  destructive change.

## When NOT to use

- Creating a flag → `soleur:flag-create`.
- Toggling a flag per role/org → `soleur:flag-set-role`.
- Removing a flag → the operator types `soleur:flag-delete` (user-invoked, ADR-236: the model cannot
  run it, so hand over the exact command, rendered per `formatSkillInvocation`).

## When to use this skill vs other flag skills

The flag CRUD set: `soleur:flag-create` (Create), `soleur:flag-set-role`
(Update — per-role/per-org), **`soleur:flag-list` (Read — this)**,
`soleur:flag-delete` (Delete). Initial wiring is the `${CLAUDE_PLUGIN_ROOT}/skills/flag-bootstrap/SETUP.md`
runbook (operator documentation, not an invocable skill).

## Arguments

<arguments> #$ARGUMENTS </arguments>

Optional: `--json` (emit a JSON array instead of the formatted table).

## Prerequisites

- Doppler authed with access to `soleur` configs `dev`, `prd`, `cli_ops`.
- Worktree of the soleur repo (the script reads `server.ts`).
- `curl` + `python3` on PATH.

## Procedure

```bash
bash "${CLAUDE_PLUGIN_ROOT}/skills/flag-list/scripts/list.sh" [--json]
```

The script (full in [scripts/list.sh](./scripts/list.sh)):

1. **Fetch Flagsmith features** — `GET /api/v1/projects/39082/features/`
   (paginated while `next` is present).
2. **Parse code-wiring** — extract `RUNTIME_FLAGS` (and `ENV_FLAGS`) keys from
   `apps/web-platform/lib/feature-flags/server.ts`.
3. **Read live Doppler values** — a single targeted `FLAG_<X>` read per flag in
   both `soleur/dev` and `soleur/prd` (never `doppler secrets download` /
   `doppler secrets`, which dump the whole config). Always on — the dev→prd
   value comparison is the audit's headline data, not an optional extra.
4. **Enumerate segment overrides** — per flag, per env, resolve which segments
   (`role-dev`, `<flag>-orgs`, …) carry an ON/OFF override (mirrors
   `flag-set-role`'s feature-state read shape).
5. **Flag drift** — Flagsmith-only features and code-only flags are surfaced
   distinctly.
6. **Render** — formatted table, or `--json` array with fields `name`,
   `env_var`, `flagsmith_id`, `default_enabled`, `code_wired`, `doppler_dev`,
   `doppler_prd`, `segments`.

`ENV_FLAGS` (build-time DCE flags like `dev-signin`) are listed under a
separate heading — they are not runtime/Flagsmith flags.

## Exit codes

- `0` — success.
- `2` — prerequisite missing (token / binaries / `server.ts`).
- `3` — Flagsmith API error.

## Sharp edges

- **Read-only.** No mutations, no WORM audit append, no `--dry-run` needed.
- The management API key is read via `doppler secrets get … -c cli_ops --plain`
  and passed only to `curl -H Authorization` — never echoed.
- A `doppler_dev`/`doppler_prd` of `unset` means the `FLAG_<X>` key is absent
  from that Doppler config (legitimate for flags wired but not yet mirrored).

## Cross-references

- ADR: `knowledge-base/engineering/architecture/decisions/ADR-038-feature-flags-flagsmith.md`
- Sibling skills: `soleur:flag-create`, `soleur:flag-set-role`, `soleur:flag-delete`

Files in this skill

  • SKILL.md3.6 KB
  • scripts/list.sh9.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.