References
PR WiringAlso bundled
Marketplace50 chapters · 232 min
Skills
Chapter 26 of 50
Drive a pull request’s change end to end: decide it’s flag-worthy, create the guarding flag, wire the new code path behind it on the PR branch, and record an automated release so…
6 minutes · 1,236 words · 8 sections
You’re using a skill that takes a pull request whose change should ship behind a feature flag and drives it end to end: decide it needs a flag, create the guarding flag, wire the new behavior behind it on the PR’s branch, and record an automated release so the change ships safely once the PR merges.
The deploy is not the release. The merge ships the control path — the flag is created OFF, so deployment always serves the pre-change behavior. The release is the flag operation the automated rollout performs afterward, governed by the environment’s policy. Creating the flag OFF and recording the release are deliberately separate things.
This skill is a portable PR orchestrator. It doesn’t own the flag mechanics or the release mechanics — it composes three focused skills and adds the PR workflow (read the diff, work in a clone, push to the branch) plus the plan→implement sequencing:
| Step | Owned by | This skill’s role |
|---|---|---|
| Decide whether to flag | should-flag-change (advisory, read-only) | Act on a “yes”; make the call yourself if it wasn’t run |
| Create the flag + wire the code | launchdarkly-flag-create | Invoke it against the change; don’t re-teach flag creation or SDK patterns |
| Record the release | flag-release | Hand off once the flag exists and the code is pushed; don’t re-teach rollout mechanics |
Don’t duplicate any composed skill’s mechanics here. This skill’s only unique content is the PR wrapper (clone, three-dot diff, commit/push to the branch) and the plan→implement flow that stitches the three together.
Automation note. An orchestrating harness (e.g. a PR pipeline) can skip this skill and invoke the three composed skills directly —
should-flag-change→launchdarkly-flag-create→flag-release— driving the git and sequencing itself. This skill is the portable, human-in-the-loop path for a developer working a PR by hand.
You work in two phases — plan, then implement — and you check in with the user in between. Never create or modify anything during the plan phase.
git CLI that can read and push to the PR’s repository.launchdarkly-flag-create (flag creation + code wiring) and flag-release (recording the rollout). should-flag-change is used if the flag decision hasn’t been made.MCP tools are used via the composed skills — create-flag/get-flag through flag-create, match-release-policies/create-automated-rollout-config through flag-release. This skill calls none directly.
Work from a clone so you can read the change and push the flag wiring back to its branch. Credentials are provided by the environment — never ask for, print, or store tokens.
git clone https://github.com/<owner>/<repo>.git && cd <repo>
git fetch origin pull/<pr_number>/head
git diff origin/HEAD...<head_sha> # three-dot: change relative to the PR's baseThe three-dot diff (base...head) shows exactly what the PR introduces. Read the changed files you need to understand the change and its risk. Stay in this clone through both phases — in implement you edit, commit, and push here. Full PR mechanics (clone, three-dot diff, commit/push to the branch): references/pr-wiring.md (opens in a new tab).
Create nothing in this phase.
should-flag-change already ran, act on its verdict. Otherwise apply the same judgment: favor a flag for user-facing or risky changes; skip config-only, dependency-bump, infra, test-only, or docs changes. If a flag clearly isn’t warranted, say so and stop.should-flag-change) surfaced a dependency on a parent flag/feature that isn’t live yet, note it — the release step can couple them with a prerequisite.flag-release‘s plan phase: pick target environments, preview each with match-release-policies, and capture the human’s release intent (release on merge / hold / notBefore / segment / prerequisite). Don't re-derive the rollout model here — that's flag-release's job.key, name, boolean, tags) and why it gates this change; where in the code the guard goes; the per-environment release plan + captured intent (and anything to be held). Then wait. Revise on feedback; proceed only on clear approval. Ask a focused question if you’re genuinely missing something (project key, environments, a missing policy) rather than guessing.Only after approval:
launchdarkly-flag-create (its Steps 3–4): flag created OFF with the agreed key/tags, guarding evaluation added with a safe default matching the codebase’s pattern. Fail closed on creation errors: only an “already exists” result is success-via-reuse. Any other create-flag failure (auth, permissions, not-found, server error) is a hard stop — do not wire the code, record the release, or report success. A false “flag created” yields a green PR referencing a flag that doesn’t exist, worse than an honest failure. Surface the error and stop.flag-release‘s implement phase: it records the automated rollout, honoring the captured intent (holding any environment the intent doesn’t clear) and returns a config_id. Don’t re-teach the rollout mechanics here.config_id; what was held (and why) versus what releases on merge. Report only what you verified.| Situation | Action |
|---|---|
| Change isn’t flag-worthy | Explain why (config-only, dep bump, infra, test-only, docs) and stop. Don’t create a flag. |
| Flag already exists | Reuse it — “already exists” is success. Wire the existing key; don’t duplicate. |
| Flag creation fails for any other reason (auth, permissions, 5xx) | Hard stop. Don’t wire code, record a release, or claim success — surface the error. |
| Codebase has no LaunchDarkly SDK | Wiring can’t evaluate a flag — SDK install is separate (onboarding/sdk-install). |
| Guarding needs more than a boolean | Prefer a boolean kill-switch. Only go multivariate if the change serves distinct variants; see flag-create’s flag-types (opens in a new tab). |
Release-specific cases (hold/notBefore, prerequisites, no matching policy, duplicate config, no useful metric) | Handled by flag-release — see its edge cases. |
launchdarkly-flag-create and flag-release. Link to them.should-flag-change: the flag-worthiness decision.launchdarkly-flag-create: flag creation + per-SDK guarding patterns.flag-release: recording the automated rollout (and its auto-release.md (opens in a new tab) release model).Install this repository
npx skills add launchdarkly/ai-tooling/plugin marketplace add launchdarkly/ai-toolingSkills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
Drive a pull request's change end to end: decide it's flag-worthy, create the guarding flag, wire the new code path behind it on the PR branch, and record an automated release so the change ships safely when the PR merges. A portable orchestrator that composes should-flag-change, launchdarkly-flag-create, and flag-release. Keywords: flag a PR, wrap change in a flag, dark launch, kill switch, auto-release, automated rollout, end-to-end flag workflow.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
skills/feature-flags/flag-and-release-change/SKILL.mdmain, last pushed 9 August 2026.SKILL.md, not by matching a directory convention. 8 distinct layouts observed: skills/agentcontrol/*/SKILL.md, skills/experiments/*/SKILL.md, skills/feature-flags/*/SKILL.md, skills/metrics/*/SKILL.md, skills/observability/*/SKILL.md, skills/onboarding/*/SKILL.md, skills/onboarding/sdk-install/*/SKILL.md, skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by LaunchDarkly, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./launchdarkly/ai-tooling.md, and each chapter at its own .md URL.3 files · 5 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of chapter 26.
Documentation the agent loads on demand, rather than up front.
Everything else published alongside the skill.