Warp Feature Flag Promotion
warpdotdev/warp
Walks through promoting a feature-flagged Warp feature to Dogfood, Preview or Stable, including the compile-time bridge and a safe delay before flag cleanup.
Generate hierarchical FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting.
$ npx skills add oaustegard/claude-skills --skill featuring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oaustegard/claude-skills featuring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/featuring .claude/skills/featuring && rm -rf skills-srcUse ~/.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/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .claude/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oaustegard/claude-skills/tree/main/featuringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oaustegard/claude-skills --skill featuring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oaustegard/claude-skills featuring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/featuring .agents/skills/featuring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .agents/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill featuring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oaustegard/claude-skills featuring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/featuring .cursor/skills/featuring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .cursor/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oaustegard/claude-skills.git --path featuring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oaustegard/claude-skills --skill featuring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oaustegard/claude-skills featuring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/featuring .gemini/skills/featuring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .gemini/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oaustegard/claude-skills featuringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oaustegard/claude-skills --skill featuring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/featuring .github/skills/featuring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .github/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill featuring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oaustegard/claude-skills featuring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/featuring .opencode/skills/featuring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "featuring" agent skill from https://github.com/oaustegard/claude-skills/tree/main/featuring into .opencode/skills/featuring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "featuring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
featuringGenerate hierarchical FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting.
Featuring is an agent skill from oaustegard/claude-skills. Generate hierarchical FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tree-sitting…
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `CHANGELOG.md`, `README.md` and `_FEATURES_example_root.md`).
The repository describes itself as: My collection of Claude skills. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6fc82b8. It shows what the files ask for, not the result of running them.
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.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonuvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Featuring loads about 3.6k tokens when it runs. Until then it costs about 142 tokens; SKILL.md has 1,471 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from oaustegard/claude-skills at commit 6fc82b8, republished under its MIT licence (© oaustegard). 1,471 words, ~3,640 tokens.
.claude/skills/featuring/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Generate _FEATURES.md files — top-down documentation of what a codebase does,
organized by feature/capability, anchored to specific source symbols.
tree-sitting tells you WHAT symbols exist. _FEATURES.md tells you WHY they exist and what they accomplish together.
For large codebases, the root _FEATURES.md decomposes into sub-feature files
linked by capability area — not by folder structure. An agent starts at the root
and is drawn into sub-files only when working on a relevant area.
Requires tree-sitting skill. Uses its engine for AST scanning.
uv venv /home/claude/.venv 2>/dev/null
uv pip install tree-sitter-language-pack --python /home/claude/.venv/bin/pythontree-sitting caches its scan to /tmp/treesit-cache, keyed by repo path plus
skip set. That cache persists symbols and imports but NOT file source, so a
cache HIT returns source=None. gather.py re-reads those files from disk;
do not assume entry.source is populated if you write against the engine
directly. (Before this was handled, gather crashed on its second run against a
repo while the first succeeded — diagnosed 2026-08-22.)
For quick structural orientation before running gather.py, use tree-sitting's CLI:
TREESIT=/mnt/skills/user/tree-sitting/scripts/treesit.py
# Complete tree, sparse detail — see the full shape
/home/claude/.venv/bin/python $TREESIT /path/to/repo --depth=-1 --detail=sparseFeature documentation is built in three passes. The overview is written LAST, after all features are understood — not first.
/home/claude/.venv/bin/python /mnt/skills/user/featuring/scripts/gather.py /path/to/repo \
--skip tests,.github,node_modules --source-budget 8000--orient when you are not writing the file. The full output is a complete
symbol inventory — 5,697 lines on a 71k-line repo — and it exists so a
_FEATURES.md can cite every symbol. When the deliverable is your own
understanding (a review, an orientation read), pass --orient: complexity
assessment, decomposition ranking, directory tree and entry points, and nothing
else. ~115 lines. Reaching for head on the full output means --orient was
the right mode.
Pass 1 of THIS skill is the case that wants the full output — you are about to write the inventory down.
Read the gather output. Before writing anything, form a hypothesis:
"This codebase appears to be a [what it is] that provides [capability A], [capability B], and [capability C]."
Write this down as a DRAFT overview. It will be wrong or incomplete — that's fine. The point is to orient before diving into detail.
How to identify capability areas:
For each capability area identified in Pass 1:
get_source())During this pass, you'll discover:
Hierarchy decision (per feature, during this pass):
| Signal | Action |
|---|---|
| ≤6 key symbols, self-contained | Inline in root _FEATURES.md |
| >6 key symbols OR clear sub-capabilities | Own _FEATURES.md sub-file |
| Spans many files but is ONE capability | Inline (breadth ≠ complexity) |
| Has sub-features that are independently useful | Own sub-file |
| Is infrastructure (logging, DB layer) | Inline briefly, unless it IS the product |
NOW — after all features are documented — rewrite the overview. The Pass 1 draft was a hypothesis. Pass 3 replaces it with a proper progressive-disclosure overview that:
This is the most important part. The overview IS the entry point for every agent session. It must be accurate, complete, and fast to scan.
# Features: {project-name}
> One-sentence description of what this codebase is and does.
**Capability areas:**
- **[Area A]** — one-sentence summary
- **[Area B]** — one-sentence summary → [details](path/to/_FEATURES.md)
- **[Area C]** — one-sentence summary
## {Inline Feature Name}
{2-3 sentences: what this feature does from a user perspective.}
**Key symbols:**
- `file.py#function_name` — role in this feature
- `file.py#ClassName` — role in this feature
**Workflow:** {How a user exercises this feature or how symbols collaborate.}
**Constraints:** {Invariants, limits, rules.}
---
## {Complex Feature Area}
> One-sentence summary of what this area covers.
This area is documented in detail in [{area-name}/_FEATURES.md]({path}).
Read it when working on {specific trigger — e.g., "the memory retrieval pipeline",
"adding a new API endpoint", "modifying the build system"}.
At a glance, this area provides:
- {sub-capability 1} — one line
- {sub-capability 2} — one line
- {sub-capability 3} — one lineSub-feature files follow the SAME format as the root, recursively. They can contain inline features and further sub-file references. Each sub-file:
# Features: {area-name} header← [Root features](../_FEATURES.md)file#symbol notation (relative to repo root)Good: "Memory Storage — Persist observations across sessions. Stores typed, tagged memories to a Turso database with BM25 full-text search. Memories have priority levels that affect retrieval ranking."
Bad: "memory.py — Contains remember(), recall(), forget(), and
supersede() functions."
The first tells you WHAT you can do. The second describes file contents — tree-sitting already gives you that.
The hierarchy is feature-driven, not folder-driven. Folders are natural candidates for decomposition boundaries, but the decision is based on:
Counter-examples — do NOT split just because:
Heuristics for finding feature boundaries:
Features to SKIP in _FEATURES.md:
Three mechanisms, layered:
/home/claude/.venv/bin/python /mnt/skills/user/featuring/scripts/check.py /path/to/repo \
[--features _FEATURES.md] [--skip tests,.github]Parses file#symbol references from ALL _FEATURES.md files (root + sub-files),
resolves them against the live codebase via tree-sitting, and reports:
Exit code 0 = clean, 1 = drift detected. Suitable for CI or pre-commit hooks.
Add to CLAUDE.md or equivalent:
## Feature Documentation
- `_FEATURES.md` documents what this codebase does, organized by capability.
- Start here when orienting to the codebase. Follow sub-file links as needed.
- After changing behavior (new feature, renamed API, deleted functionality):
run `python featuring/scripts/check.py .` and fix any broken refs.
- After adding a new public API surface: add it to the appropriate feature
section, or create a new feature section if it's a new capability.
- Run check before committing. Broken refs = broken documentation.When check reports broken refs, the fix is usually surgical: update the
file#symbol reference to the new name/location. For dead features (all refs
gone), either delete the section or regenerate it.
Full regeneration (re-running all three passes) is the nuclear option. Prefer targeted updates — they're cheaper and preserve hand-written narrative.
# .github/workflows/features-check.yml
name: Check _FEATURES.md
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- run: uv pip install tree-sitter-language-pack
- run: python featuring/scripts/check.py . --skip testsIn Claude Code, use tree-sitting's CLI or engine directly. The agent should:
treesit.py /path --depth=-1 --detail=sparse for full structural overviewtreesit.py /path --path=DIR --detail=full for each capability areatreesit.py /path --no-tree 'source:symbol_name' where intent isn't clearAdd to CLAUDE.md:
## Codebase Understanding
Read `_FEATURES.md` for top-down feature orientation before modifying code.
Follow links to sub-feature files when working on a specific area.
Use tree-sitting MCP tools for structural queries (symbol lookup, source retrieval).
After adding new features or changing behavior, update the relevant _FEATURES.md.A CLI tool with 15 public symbols → single _FEATURES.md, all features inline.
No sub-files needed.
The remembering skill (memory system for an AI agent) has ~60 public symbols
across 8 files. Hierarchical decomposition:
_FEATURES.md (root — overview + 3 inline features + 3 sub-file refs)
├── scripts/_FEATURES.md (memory operations — storage, retrieval, lifecycle, maintenance)
└── utils/_FEATURES.md (utility modules — therapy, reminders, blog publishing)Root _FEATURES.md would contain:
scripts/_FEATURES.md
("Read when working on storage, retrieval, or memory lifecycle")utils/_FEATURES.md
("Read when working on therapy sessions, reminders, or blog publishing")| Skill | What it provides | Drift detection |
|---|---|---|
| tree-sitting | Structural inventory (symbols, signatures) | N/A (live queries) |
| featuring | Feature documentation (what/why), hierarchical | check.py — docs → code |
| generating-lattice | Bidirectional knowledge graph | lat check — docs ↔ code |
| mapping-webapp | Web app behavioral docs (pages, flows) | None |
featuring's check is lighter than lattice's: no source code annotations needed,
no @lat: comments, just reference resolution. The trade-off is that new code
without docs is only flagged as "uncovered symbols" — it's advisory, not
enforced. Use lattice when you need strict bidirectional traceability; use
featuring when you need good-enough orientation docs that catch renames and
deletions.
© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in featuring of oaustegard/claude-skills.
Open the folder on GitHubat commit 6fc82b8
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in oaustegard/claude-skills, which our catalogue first saw on October 7, 2026.
Featuring 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Featuring this skilloaustegard/claude-skills | 150 | 1 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Warp Feature Flag Promotionwarpdotdev/warp | 65k | 1 repos | ~1.1k | Automated safety check: Pass | AGPL-3.0 | |
| Warp Feature Flag Setupwarpdotdev/warp | 65k | 1 repos | ~874 | Automated safety check: Pass | AGPL-3.0 | |
| Feature Flagssickn33/agentic-awesome-skills | 47k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Feature Flagsgetsentry/sentry | 46k | — | ~374 | Automated safety check: Pass | Custom licence | |
| Orch Change Featureaffaan-m/ECC | 275k | 1 repos | ~420 | Automated safety check: Pass | MIT |
warpdotdev/warp
Walks through promoting a feature-flagged Warp feature to Dogfood, Preview or Stable, including the compile-time bridge and a safe delay before flag cleanup.
warpdotdev/warp
Adds a compile-time feature flag to the Warp codebase, wiring Cargo features, the FeatureFlag enum and runtime checks so a change can be gated by channel.
sickn33/agentic-awesome-skills
Implement feature flags for progressive feature rollout using LaunchDarkly, Unleash, or custom solutions.
getsentry/sentry
Gate a Sentry feature behind a FlagPole feature flag. An agent skill from getsentry/sentry.
affaan-m/ECC
Orchestrate altering an existing, working feature to new desired behavior — update its tests to the new spec, change the implementation to match, review, and gated commit.
affaan-m/ECC
Orchestrate building a brand-new feature end to end — research, plan, TDD implementation, review, and gated commit — by delegating each phase to the matching ECC agent.
oaustegard/claude-skills
Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
oaustegard/claude-skills
Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.
oaustegard/claude-skills
Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.
oaustegard/claude-skills
Zero-shot univariate time series forecasting using the Reverso foundation model (NumPy/Numba CPU-only inference).
oaustegard/claude-skills
Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.
Generate hierarchical FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Featuring is an agent skill from oaustegard/claude-skills.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting.
Featuring fits situations like: someone says what does this do; document features; feature inventory; needs to understand a codebases purpose before modifying it.
Run `npx skills add oaustegard/claude-skills --skill featuring -a claude-code`. Or copy the skill folder (featuring in oaustegard/claude-skills) into .claude/skills/featuring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oaustegard/claude-skills --skill featuring -a codex`. Or copy the skill folder (featuring in oaustegard/claude-skills) into .agents/skills/featuring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill featuring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/featuring, .gemini/skills/featuring, .github/skills/featuring and .opencode/skills/featuring in your project.
Going by SKILL.md and its folder, Featuring needs Python for the scripts in its folder and the command-line tools its instructions call (python and uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Featuring is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Featuring: Warp Feature Flag Promotion (warpdotdev/warp, 65k stars), Warp Feature Flag Setup (warpdotdev/warp, 65k stars), Feature Flags (sickn33/agentic-awesome-skills, 47k stars) and Feature Flags (getsentry/sentry, 46k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 69 skills in this directory. The repository was last updated on October 8, 2026.
Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.