Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/packmindhub/packmind/feature-flags-authoringnpx skills add PackmindHub/packmind --skill feature-flags-authoringgit clone --depth 1 https://github.com/PackmindHub/packmindWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/packmindhub/packmind/feature-flags-authoring)<a href="https://agentmods.dev/skills/packmindhub/packmind/feature-flags-authoring"><img src="https://agentmods.dev/badge/skills/packmindhub/packmind/feature-flags-authoring.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00098 | $0.01492 |
| Opus 5 | $0.00049 | $0.00746 |
| Sonnet 5 | $0.00020 | $0.00298 |
| Haiku 4.5 | $0.00010 | $0.00149 |
Grade A, and why
feature-flags-authoring scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 107 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Feature Flags Authoring
A developer how-to for the full lifecycle of a Packmind feature flag: add, edit, remove. Flags gate a feature by email domain (or exact email). The same decision function runs on frontend and backend, so behavior never diverges. Follow the steps below exactly — every flag touches three places.
For inventorying existing flags, orphan detection, and audience audits, use the feature-flags-audit skill instead. This skill changes flags; that one scans them.
Where things live
- Shared registry —
@packmind/feature-flags(pure,env:shared, browser-safe). The single source of truth:registry.ts— the*_FEATURE_KEYconstants,DEFAULT_FEATURE_DOMAIN_MAP(Record<string, readonly string[]>mapping each flag's string value to allowed entries), and theFeatureFlagKeyunion.isFeatureFlagEnabled.ts— the pure evaluator:isFeatureFlagEnabled({ featureKeys, featureDomainMap, userEmail }).
- Frontend gate —
<PMFeatureFlag>from@packmind/ui(or a directisFeatureFlagEnabled(...)call). The keys,DEFAULT_FEATURE_DOMAIN_MAP, andisFeatureFlagEnabledare re-exported from@packmind/uifor back-compat, so existing consumers can import from either place. - Backend gate —
isFeatureEnabled(flag, { userEmail }), a plain async helper from@packmind/node-utils. It resolves the env kill-switch first, then defers to the shared email-domain rule. It is NOT a port and has no DI — import it and call it. - Env kill-switch —
FF_<SCREAMING_SNAKE>(e.g.FF_CHANGE_PROPOSALS_IN_WEBAPP).on/all/trueforce the flag on;off/none/falseforce it off; unset or empty falls through to the email-domain map.
Two flags exist today: 'change-proposals-in-webapp' and 'orga-space-management'.
Add a flag
1. Register it in @packmind/feature-flags
Add the key constant, the audience entry, and extend the union. Do all three — a constant with no map entry is never enabled for anyone; a map entry with no union member can't be typed at call sites.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 107 lines · 98 tokens per session scan A 83b4e61e8001
feature-flags-authoring is a skill published in the GitHub repository PackmindHub/packmind (308 stars, last pushed today), licensed Apache-2.0. It adds 98 tokens to every session and 1,492 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gsd-config
Configure GSD settings — workflow toggles, advanced knobs, integrations, and model profile.
watcher-creator
Guide for creating agent-deck watchers conversationally. This skill should be used when users want to set up a new watcher (webhook, ntfy, github, slack, gmail) to route events to a conductor. It walks the user through selecting an adapter type, gathering required settings, generating watcher.toml and clients.json…
catchup
Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose.
create-workflow
Conversational guide for creating valid YAML workflow definitions. Use when asked to "create a workflow", "new workflow definition", "build a workflow", "workflow YAML", "define workflow steps", or "workflow from template".
static
Stash is your personal home for agent work. Everything you create is scoped to your account — it is yours alone, with nothing to pick or set up first. Your Stash has three primary surfaces.
brief
Brief the user on what they saved in a period — the thread running through it, not a list.