sweep-flag-namespace
정보
이 스킬은 전체 커버리지 달성 진행 상황을 추적하기 위해 문서와 상호 참조하며, 바이너리 네임스페이스의 모든 기능 플래그를 포괄적으로 추출하여 완전한 인벤토리를 구축합니다. 게이트 호출과 텔레메트리 호출을 구분하고 메트릭을 보고하며, 검증된 최종 상태가 필요한 캠페인에 맞게 설계되었습니다. 상태 확인 프로브의 상위 단계에서 일반적으로 필요한, 샘플이 아닌 전체 플래그 카탈로그가 필요할 때 사용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/sweep-flag-namespaceClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
Sweep Flag Namespace
Exhaustively extract every flag candidate from a binary's namespace, separate gate calls from telemetry, and track completeness against a running documented set until undocumented remainder is zero. Where probe-feature-flag-state classifies one flag at a time, this skill produces the catalog those probes operate against — and confirms when the catalog is complete.
When to Use
- A flag-discovery campaign is mid-flight and you need a verifiable stopping condition rather than guessing whether you have "enough" flags.
- A binary's flag namespace is large (hundreds of candidate strings) and a sample-based approach risks missing meaningful gates.
- You need to report DEFAULT-TRUE flags separately from DEFAULT-FALSE — the high-signal subset of any namespace.
- You are running multi-wave documentation against a binary and want each wave's completion metric in writing.
- You suspect a previous campaign ended prematurely and need to confirm or refute that with a fresh sweep.
Inputs
- Required: binary or bundle file you can read.
- Required: namespace prefix (synthetic example:
acme_*) that identifies flags belonging to the system under study. - Required: working documentation set — running list of flag write-ups your campaign has produced so far.
- Optional: gate-reader function names (synthetic:
gate(...),flag(...),isEnabled(...)) — precomputing these speeds Step 2. - Optional: telemetry/emit function names — same reason, opposite sign.
- Optional: prior sweep output for this binary at an earlier version, for delta analysis.
Procedure
Step 1: Harvest All Strings Matching the Namespace Prefix
Extract every literal in the binary that matches the namespace prefix, regardless of call-site role. Goal at this step is coverage, not classification.
BUNDLE=/path/to/cli/bundle.js
PREFIX=acme_ # synthetic placeholder
# Pull every quoted string starting with the prefix
grep -oE "\"${PREFIX}[a-zA-Z0-9_]+\"" "$BUNDLE" | sort -u > /tmp/sweep-candidates.txt
wc -l /tmp/sweep-candidates.txt # unique candidate count
# Per-string occurrence count (gives a first hint at gate-call density)
grep -oE "\"${PREFIX}[a-zA-Z0-9_]+\"" "$BUNDLE" | sort | uniq -c | sort -rn > /tmp/sweep-occurrences.txt
head /tmp/sweep-occurrences.txt
Expected: deduplicated candidate list and frequency-sorted occurrence file. Very high counts (≥10) suggest gate-heavy strings; single-occurrence strings are more likely telemetry event names or static labels.
On failure: if unique count is 0, the prefix is wrong (typo, namespace boundary mismatch, harness uses a different convention than expected). If count exceeds ~5000, the prefix is too broad — narrow it before continuing or the inventory becomes unmanageable.
Step 2: Disambiguate Gate Calls from Telemetry from Static Labels
Same string, different role. Distinguishing roles at the call-site is what makes the inventory actionable. Reuse the disambiguation discipline from probe-feature-flag-state Step 2.
For each candidate, classify each occurrence:
- gate-call — string is the first argument to a gate-reader function (
gate("$FLAG", default),flag("$FLAG", ...),isEnabled("$FLAG"), etc.). - telemetry-call — string is the first argument to an emit/log/track function.
- env-var-check — string appears in a
process.env.Xlookup or equivalent. - static-label — string appears in a registry, map, or comment with no behavioral hookup.
# Count gate-call occurrences for the candidate set, using a synthetic
# reader-name pattern. Adapt the regex to the actual reader names found.
GATE_PATTERN='(gate|flag|isEnabled)\(\s*"acme_'
grep -coE "$GATE_PATTERN" "$BUNDLE"
# Per-flag gate-call count
while read -r flag; do
flag_no_quotes="${flag//\"/}"
count=$(grep -coE "(gate|flag|isEnabled)\(\s*\"${flag_no_quotes}\"" "$BUNDLE")
echo -e "${flag_no_quotes}\t${count}"
done < /tmp/sweep-candidates.txt > /tmp/sweep-gate-counts.tsv
Expected: an inventory record per unique string of the form {flag, total_occurrences, gate_call_count, telemetry_count, static_label_count, env_var_count}. Gate-call count is the actionable column; the rest are noise filters.
On failure: if every candidate has zero gate-call hits, the gate-reader pattern is wrong. Either the binary uses a reader function this regex misses, or the namespace is purely telemetry (not a flag namespace at all). Run decode-minified-js-gates against a few candidates to learn the actual reader names before re-running this step.
Step 3: Build the Extraction Inventory
Consolidate per-string records into one inventory artifact. CSV or JSONL — pick one and stick to it for diffing across waves.
# JSONL inventory
{
while IFS=$'\t' read -r flag gate_count; do
[ "$gate_count" -gt 0 ] || continue # skip strings with no gate-call evidence
total=$(grep -c "\"${flag}\"" "$BUNDLE")
telem=$((total - gate_count)) # rough; refine if other call types matter
printf '{"flag":"%s","total":%d,"gate_calls":%d,"telemetry":%d,"documented":false}\n' \
"$flag" "$total" "$gate_count" "$telem"
done < /tmp/sweep-gate-counts.tsv
} > /tmp/sweep-inventory.jsonl
wc -l /tmp/sweep-inventory.jsonl # gate-bearing flag count
Two derived counts matter:
total_unique: every string the prefix matched (prior to gate filtering)gate_calls: subset that has at least one gate-call occurrence — this is the working set for the campaign
Expected: inventory file with one record per unique gate-bearing flag. Gate count is a fraction of total_unique (commonly 5–20%), so the two numbers should differ noticeably.
On failure: if inventory is empty or gate_calls ≈ total_unique, gate-vs-telemetry disambiguation in Step 2 is producing meaningless splits. Revisit the reader-name regex.
Step 4: Cross-Reference Against the Documented Set
Completeness metric depends on a documented set — flags your campaign has already written up in research artifacts. Cross-reference, then report what remains.
DOCUMENTED=/path/to/research/documented-flags.txt # one flag name per line
# Extract gate-bearing flag names from the inventory
jq -r '.flag' /tmp/sweep-inventory.jsonl | sort -u > /tmp/sweep-extracted.txt
# Compute the documented and remaining sets
sort -u "$DOCUMENTED" > /tmp/sweep-documented.txt
comm -23 /tmp/sweep-extracted.txt /tmp/sweep-documented.txt > /tmp/sweep-remaining.txt
echo "Extracted (gate-bearing): $(wc -l < /tmp/sweep-extracted.txt)"
echo "Documented: $(wc -l < /tmp/sweep-documented.txt)"
echo "Remaining (undocumented): $(wc -l < /tmp/sweep-remaining.txt)"
Completeness metric is remaining — when it reaches 0, the documented set covers every gate-bearing flag in the namespace.
Expected: three counts. Early in a campaign, remaining should be a substantial fraction of extracted. Each wave reduces remaining until it converges to 0. Track the trajectory across waves to detect plateau (a stalled wave that keeps re-investigating documented flags).
On failure: if documented exceeds extracted, the documented set contains stale entries (flags removed in this binary version). Compute comm -13 instead to surface the obsolete documented names; archive them as REMOVED in the next campaign artifact.
Step 5: Report the DEFAULT-TRUE Population
Within the gate-bearing flag set, separate flags whose binary default is true from those whose default is false (or non-boolean). DEFAULT-TRUE flags are on for all users without server-side override, making them the highest-signal subset.
# Heuristic: gate-call shape `gate("flag_name", true)` indicates DEFAULT-TRUE
DEFAULT_TRUE_PATTERN='(gate|flag|isEnabled)\(\s*"acme_[a-zA-Z0-9_]+",\s*!?true\b'
grep -oE "$DEFAULT_TRUE_PATTERN" "$BUNDLE" | grep -oE '"acme_[a-zA-Z0-9_]+"' | sort -u > /tmp/sweep-default-true.txt
DEFAULT_FALSE_PATTERN='(gate|flag|isEnabled)\(\s*"acme_[a-zA-Z0-9_]+",\s*false\b'
grep -oE "$DEFAULT_FALSE_PATTERN" "$BUNDLE" | grep -oE '"acme_[a-zA-Z0-9_]+"' | sort -u > /tmp/sweep-default-false.txt
echo "DEFAULT-TRUE: $(wc -l < /tmp/sweep-default-true.txt)"
echo "DEFAULT-FALSE: $(wc -l < /tmp/sweep-default-false.txt)"
For flags with non-boolean defaults (config objects, TTL readers, async readers), use decode-minified-js-gates to classify the reader variant — they produce a different default-shape and should be reported in their own bucket.
Expected: typical split is 10–20% DEFAULT-TRUE, 80–90% DEFAULT-FALSE. A binary at the extremes (90%+ TRUE or 90%+ FALSE) is unusual and worth investigating — may indicate a release-stage convention (everything default-on for testing, everything default-off for staged rollout).
On failure: if DEFAULT-TRUE and DEFAULT-FALSE counts together don't cover the gate-bearing inventory, the remainder uses non-boolean readers. Run decode-minified-js-gates against the gap to classify the reader variants in use.
Step 6: Confirm Completion
When remaining = 0 from Step 4, run a final scan: search for gate-call occurrences of namespace-matching strings that are NOT in the documented set. This catches any flag missed by the harvest in Step 1 (e.g., string concatenation that hides the literal from a simple grep).
# Search for gate-call shapes containing the namespace prefix, not constrained
# to literal-string occurrences. Loosens Step 1's grep to catch dynamic forms.
DYNAMIC_PATTERN='(gate|flag|isEnabled)\(\s*[^"]*"acme_'
grep -nE "$DYNAMIC_PATTERN" "$BUNDLE" | head -50
# Alternative: ripgrep with multiline for split-string concatenation
rg -U "(gate|flag|isEnabled)\(\s*\"acme_(\\\\\"|[a-zA-Z0-9_])+\"" "$BUNDLE"
Compare gate-call hits against /tmp/sweep-documented.txt. If any hit references a flag not in the documented set, return to Step 1 with a refined extraction (e.g., handle the dynamic-construction case). If empty: the campaign is complete.
Expected: the final scan returns either an empty result (campaign complete) or a small remainder (typically <5 flags, surfacing dynamic constructions or alternate readers).
On failure: if the final scan returns a large remainder when Step 4 said remaining = 0, Step 1 systematically under-extracted. Investigate the patterns missed (dynamic strings, alternate quote chars, alternate reader functions) and re-run from Step 1 with a tighter regex.
Validation
- Step 1 unique count is non-zero and within an order of magnitude of expectation
- Step 2 produces a meaningful gate-vs-telemetry split (gate-call count is a fraction, not all or none, of total occurrences)
- Step 3 inventory is one record per gate-bearing flag, in CSV or JSONL
- Step 4 reports
total_unique,gate_calls,documented,remaining— and the metric reaches 0 by end of campaign - Step 5 DEFAULT-TRUE and DEFAULT-FALSE are reported separately
- Step 6 final scan returns empty before declaring the campaign complete
- All worked examples use synthetic placeholders (
acme_*,gate(...), etc.); no real flag names or reader names leaked into the artifact - Sweep output is diff-able against a prior version's sweep (same shape, same fields)
Common Pitfalls
- Stopping at sample, not sweep: a campaign that ends after "we've documented enough flags" without computing
remainingis sampling, not sweeping. The whole point of this skill is the verifiable end condition. - Conflating gate-bearing with all extracted: most strings in a namespace are not gates. Reporting
total_uniqueas the campaign denominator inflates the work and depresses the apparent completion rate. Usegate_callsas the denominator. - Trusting one regex pattern across versions: gate-reader function names sometimes change between major versions. Re-validate the Step 2 pattern when starting a new sweep against a new binary.
- Skipping Step 6: declaring completion at
remaining = 0without the final dynamic-scan can miss flags constructed via string concatenation. The final scan is cheap and catches the embarrassment. - Leaking real names: it is easy to accidentally paste a real flag name from your inventory into the skill's worked examples. The placeholder discipline (
acme_*) exists for a reason — keep methodology distinct from findings. - Cross-referencing against a stale documented set: if the documented set was built against an older binary, flags that were removed will appear "documented" but no longer extracted, while genuinely undocumented flags appear remaining. Refresh the documented set against the current binary before the cross-reference.
Related Skills
probe-feature-flag-state— per-flag classification (downstream of this skill's inventory)decode-minified-js-gates— when reader-variant classification is needed mid-sweepmonitor-binary-version-baselines— longitudinal tracking across binary versions; sweeps can be re-run against each baselineredact-for-public-disclosure— how to publish methodology from a sweep without leaking the inventory itselfconduct-empirical-wire-capture— empirical validation of flags surfaced by the sweep
GitHub 저장소
연관 스킬
content-collections
메타이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.
polymarket
메타이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.
creating-opencode-plugins
메타이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.
sglang
메타SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.
