Best for
- Use when the user asks for a new feature flag, VITE_FF_ variable, studio.
NVIDIA-NeMo/nemo-platform/.agents/skills/add-studio-feature-flag/SKILL.md
Adds a NeMo Studio (Vite) feature flag end-to-end: typed definition, runtime injection mapping, FastAPI build env markers, and optional Helm config. Use when the user asks for a new feature flag, VITE_FF_ variable, studio.feature_flags setting, toggling UI behind a flag, or preview/boolean flags for Studio.
Decision brief
Studio flags live in web/packages/studio and are wired into the FastAPI Studio bundle via marker replacement at runtime. Follow every step that applies so local dev, FastAPI builds, and cluster deploys stay consistent.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/NVIDIA-NeMo/nemo-platform --skill ".agents/skills/add-studio-feature-flag"Inspect the Agent Skill "add-studio-feature-flag" from https://github.com/NVIDIA-NeMo/nemo-platform/blob/f2d56031d6a584e8064024bbc3a8cad368ec33a7/.agents/skills/add-studio-feature-flag/SKILL.md at commit f2d56031d6a584e8064024bbc3a8cad368ec33a7. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Preview behavior: true and 'preview' are both truthy for if (featureFlags.myFlag). Only 'preview' triggers FeatureFlagBadge (see step 6).
File: web/packages/studio/src/constants/featureFlags/featureFlags.ts
File: web/packages/studio/src/constants/environment.ts
File: services/studio/src/nmp/studio/envmappings.py
File: web/packages/studio/env/.env.fastapi
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 56 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Studio flags live in web/packages/studio and are wired into the FastAPI Studio bundle via marker replacement at runtime. Follow every step that applies so local dev, FastAPI builds, and cluster deploys stay consistent.
For broader Studio context, see .cursor/skills/studio-dev/SKILL.md.
| Helper | TypeScript value | Use when |
|---|---|---|
previewFlag(envVar, default?) | true | 'preview' | false | User-facing features that may show the Early Preview badge ('preview') |
booleanFlag(envVar, default?) | boolean | Internal toggles (no preview mode) |
stringFlag / numberFlag | string / number | Rare; see web/packages/studio/src/constants/featureFlags/utils.ts |
Preview behavior: true and 'preview' are both truthy for if (featureFlags.myFlag). Only 'preview' triggers FeatureFlagBadge (see step 6).
Naming
VITE_FF_<SCREAMING_SNAKE_CASE>flagDefinitions key: camelCase (e.g. jobQueueEnabled)studio.feature_flags / config_path: snake_case (e.g. job_queue_enabled)File: web/packages/studio/src/constants/featureFlags/featureFlags.ts
Add one entry to flagDefinitions:
jobQueueEnabled: previewFlag('VITE_FF_JOB_QUEUE_ENABLED'),
// or
jobQueueEnabled: booleanFlag('VITE_FF_JOB_QUEUE_ENABLED'),
Alphabetical order with sibling keys is preferred.
Consume
import { featureFlags } from "@studio/constants/featureFlags";
if (featureFlags.jobQueueEnabled) {
// enabled (true or 'preview')
}
environment.ts re-exportFile: web/packages/studio/src/constants/environment.ts
If the codebase prefers SOME_FEATURE_ENABLED constants (see existing MEMBERS_ENABLED, SECRETS_ENABLED, etc.), add:
export const JOB_QUEUE_ENABLED = featureFlags.jobQueueEnabled !== false;
Use this only when it matches an established pattern for that area of the app.
File: services/studio/src/nmp/studio/env_mappings.py
Add an EnvMapping in ENV_MAPPINGS (keep the feature-flag block grouped):
EnvMapping(
marker="STUDIO_UI_VITE_FF_JOB_QUEUE_ENABLED",
config_path="studio.feature_flags.job_queue_enabled",
default="false",
),
marker is always STUDIO_UI_ + the Vite env name (VITE_FF_...).default is a string ("true", "false", or "preview" for preview flags).File: web/packages/studio/env/.env.fastapi
Add a line so the built bundle contains the placeholder the Studio service replaces:
VITE_FF_JOB_QUEUE_ENABLED=STUDIO_UI_VITE_FF_JOB_QUEUE_ENABLED
The file header requires parity with env_mappings.py—do not skip this for flags used in FastAPI mode.
Update both files so the sample stays in lockstep with the feature-flag inventory — devs copy the sample to bootstrap .env.dev.local, and a missing entry means the flag silently falls back to its default.
File: web/packages/studio/env/.env.dev.local.sample (always — committed reference)
Add the flag in the # Feature Flags (VITE_FF_* prefix) block, alphabetized with sibling VITE_FF_* lines. Use the value a new developer should start with (usually the same as the default in env_mappings.py):
VITE_FF_JOB_QUEUE_ENABLED='false'
File: web/packages/studio/env/.env.dev.local (only if you want it on for your own machine — gitignored)
VITE_FF_JOB_QUEUE_ENABLED='true'
# or for preview badge behavior:
VITE_FF_JOB_QUEUE_ENABLED='preview'
children arrays in web/packages/studio/src/routes/index.tsx, or conditional wrappers—mirror existing flags (e.g. membersEnabled, secretsEnabled).WorkspaceSideNav and similar—search for featureFlags. patterns.previewFlag entries, add <FeatureFlagBadge flag="jobQueueEnabled" /> next to the feature title when appropriate (web/packages/studio/src/components/FeatureFlagBadge/index.tsx).Under studio.feature_flags in values (e.g. deploy/helm/values/ci/dev-values.yaml), add the snake_case key with string value true, false, or preview as needed.
Global settings schema may need updating if the new key is not yet defined—follow how existing studio.feature_flags.* keys are declared in the repo.
Copy and track:
flagDefinitions in featureFlags.ts (correct helper + defaults)EnvMapping in env_mappings.pyVITE_FF_*=STUDIO_UI_VITE_FF_* line in env/.env.fastapienv/.env.dev.local.sample updated (committed reference for new devs)env/.env.dev.local (only if developers need the flag on for their own machine)featureFlags.<key> or environment.ts constantFeatureFlagBadge if the flag uses previewFlag and should show Early Previewpnpm typecheck (from web/packages/studio or monorepo Studio package) after TS editsflagDefinitions, env_mappings.py, .env.fastapi, Helm values, and samples.environment.ts export.Alternatives
TencentCloudBase/CloudBase-AI-Toolkit
Build production-ready AI agent backends using the CloudBase Agent Python SDK — create agents with LangGraph/CrewAI/LlamaIndex, serve them via FastAPI with AG-UI protocol streaming + OpenAI-compatible endpoints, add tools (bash, filesystem, MCP, code execution), memory (in-memory, TDAI, MySQL, MongoDB), observability (OpenTelemetry/Langfuse), and middleware (auth, logging). Use this skill when the user wants to create an AI agent server, build a chatbot backend, set up human-in-the-loop workflow
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance