launchdarkly-flag-create

작성자: launchdarkly

기존 코드베이스에 맞게 LaunchDarkly 기능 플래그를 생성하고 구성합니다. 사용자가 새 플래그를 만들거나 코드를 플래그로 감싸려 할 때 사용합니다.

npx skills add https://github.com/launchdarkly/ai-tooling --skill launchdarkly-flag-create

LaunchDarkly Flag Create & Configure

You're using a skill that will guide you through introducing a new feature flag into a codebase. Your job is to explore how flags are already used in this codebase, create the flag in LaunchDarkly in a way that fits, add the evaluation code matching existing patterns, and verify everything is wired up correctly.

Prerequisites

This skill requires the remotely hosted LaunchDarkly MCP server to be configured in your environment.

Required MCP tools:

  • create-flag: create a new feature flag in a project
  • get-flag: verify the flag was created correctly

Optional MCP tools (enhance workflow):

  • list-flags: browse existing flags to understand naming conventions and tags
  • update-flag-settings: update flag metadata (name, description, tags, temporary/permanent status)

Workflow

Step 1: Explore the Codebase

Before creating anything, understand how this codebase uses feature flags.

  1. Find the SDK. Search for LaunchDarkly SDK imports or initialization:

    • Look for launchdarkly, ldclient, ld-client, LDClient in imports
    • Check package.json, requirements.txt, go.mod, Gemfile, or equivalent for the SDK dependency
    • Identify which SDK is in use (server-side Node, React, Python, Go, Java, etc.)
  2. Find existing flag evaluations. Search for variation calls to understand the patterns this codebase uses:

    • Direct SDK calls: variation(), boolVariation(), useFlags(), etc.
    • Wrapper patterns: Does this codebase abstract flags behind a service or utility?
    • Constant definitions: Are flag keys defined as constants somewhere?
    • See SDK Evaluation Patterns for patterns by language
  3. Understand conventions. Look at existing flags to learn:

    • Naming convention: Are keys kebab-case, snake_case, camelCase?
    • Organization: Are flag keys co-located with features, or centralized in a constants file?
    • Default values: What defaults do existing evaluations use?
    • Context/user construction: How does this codebase build the user/context object passed to the SDK?
  4. Check LaunchDarkly project conventions. Optionally use list-flags to see existing flags:

    • What tags are commonly used?
    • Are flags marked as temporary or permanent?
    • What naming patterns exist in the project?

Step 2: Determine the Right Flag Type

Based on what the user needs, choose the appropriate flag configuration. See Flag Types and Patterns for the full guide.

Quick decision:

User intentFlag kindVariations
"Toggle a feature on/off"booleantrue / false
"Gradually roll out a feature"booleantrue / false
"A/B test between options"multivariate (string)User-defined values
"Configure a numeric threshold"multivariate (number)User-defined values
"Serve different config objects"multivariate (JSON)User-defined values

Defaults to apply:

  • Set temporary: true unless the user explicitly says this is a permanent/long-lived flag. Most flags are release flags that should eventually be cleaned up.
  • Generate a key from the name if not provided (e.g., "New Checkout Flow" -> new-checkout-flow), but match the codebase's naming convention if one exists.
  • Suggest relevant tags based on the feature area, team, or context the user mentions.

Step 3: Create the Flag in LaunchDarkly

Use create-flag with the configuration determined in Step 2.

After creation:

  • The flag is created with targeting OFF in all environments.
  • The flag serves the offVariation to everyone until targeting is turned on.
  • Remind the user they'll need to use the flag targeting skill to toggle it on and optionally set up rollout rules.

Step 4: Add Flag Evaluation to Code

Now add the code to evaluate the flag, matching the patterns you found in Step 1.

  1. Use the same SDK patterns the codebase already uses. If there's a wrapper, use the wrapper. If there are constants, add the new key to the constants file.
  2. Use an appropriate default value. The default (fallback) value in code should be the "safe" behavior: typically the existing behavior before the flag. This ensures the feature stays off if the SDK can't reach LaunchDarkly.
  3. Add the conditional logic. Wrap the new behavior in a flag check.
  4. Handle both branches. Make sure the code path for each variation is clear and complete.

See SDK Evaluation Patterns for implementation examples by language and framework.

Step 5: Verify

Confirm the flag is properly set up:

  1. Code compiles/passes linting. Run the project's build or lint step.
  2. Flag exists in LaunchDarkly. Use get-flag to confirm it was created with the right configuration.
  3. Both code paths work. The flag-off path preserves existing behavior; the flag-on path enables the new feature.
  4. Default value is safe. If LaunchDarkly is unreachable, the code falls back to the default: make sure that's the existing/safe behavior.

Updating Flag Settings

If the user wants to change flag metadata (not targeting), use update-flag-settings. Supported changes:

ChangeInstruction
Rename{kind: "updateName", value: "New Name"}
Update description{kind: "updateDescription", value: "New description"}
Add tags{kind: "addTags", values: ["tag1", "tag2"]}
Remove tags{kind: "removeTags", values: ["old-tag"]}
Mark as temporary{kind: "markTemporary"}
Mark as permanent{kind: "markPermanent"}

Multiple instructions can be batched in a single call. These changes are project-wide, not environment-specific.

Important: Metadata updates (above) are separate from targeting changes (toggle, rollout, rules). If the user wants to change who sees what, direct them to the flag targeting skill.

Important Context

  • Flag keys are immutable. Once created, a flag's key cannot be changed. Choose carefully.
  • Flags start OFF. Creation never enables a flag. This is a safety feature.
  • The default value in code is your safety net. It's what gets served when the SDK can't connect to LaunchDarkly. Always use the "safe" / existing behavior as the default.
  • Follow existing codebase conventions. The most common mistake is introducing a flag pattern that doesn't match what the team already does. Step 1 exists to prevent this.

References

launchdarkly의 다른 스킬

aiconfig-agent-graphs
launchdarkly
에이전트 그래프를 생성하고 관리합니다 — 핸드오프 로직이 있는 엣지로 연결된 AI 구성의 방향 그래프입니다. 구성이 포함된 다중 에이전트 워크플로우를 구축할 때 사용합니다.
official
aiconfig-ai-metrics
launchdarkly
기존 코드베이스에 LaunchDarkly AI Config 추적을 계측합니다. 4단계 사다리(관리형 러너 → 제공자 패키지 → 사용자 정의 추출기 +…)를 따라 진행됩니다.
official
aiconfig-create
launchdarkly
LaunchDarkly에서 AI Config를 생성하고 구성합니다. 에이전트 모드와 완료 모드 중 선택하고, config를 생성하며, 모델과 프롬프트가 포함된 변형을 추가하는 데 도움을 줍니다.
official
aiconfig-custom-metrics
launchdarkly
AI Configs에 대한 맞춤형 비즈니스 메트릭을 생성, 추적, 검색, 업데이트 및 삭제합니다. 전체 수명 주기를 다룹니다: API를 통해 메트릭 종류를 정의하고, SDK를 통해 이벤트를 전송하며,…
official
aiconfig-migrate
launchdarkly
하드코딩된 LLM 프롬프트가 포함된 애플리케이션을 완전한 LaunchDarkly AI Configs 구현체로 마이그레이션하는 다섯 단계: 코드 감사, 호출 래핑, 이동…
official
aiconfig-online-evals
launchdarkly
AI Config 변형에 판정기를 연결하여 자동 LLM-as-a-judge 평가를 수행합니다. 맞춤형 판정기를 생성하고, 샘플링 비율을 구성하며, 품질 점수를 모니터링할 수 있습니다.
official
aiconfig-projects
launchdarkly
코드베이스에서 LaunchDarkly 프로젝트를 설정하기 위한 가이드입니다. 스택을 평가하고, 적절한 접근 방식을 선택하며, 프로젝트 관리를 통합하는 데 도움을 줍니다…
official
aiconfig-snippets
launchdarkly
프롬프트 스니펫을 생성하고 관리합니다 — AI Config 변형 프롬프트 내에서 참조되는 재사용 가능한 텍스트 블록입니다. 일반적인 지침, 페르소나, 가드레일을 유지합니다…
official