Copying Flags Across Projects
PostHogOfficialPublished by PostHog
- Skill
- Workflow
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured procedure for replicating feature flag configurations between PostHog projects. It handles the complexities of cohort remapping, encrypted payloads, and dependency management, ensuring that flags are moved safely without disrupting existing environments. The workflow emphasizes verification and user confirmation, defaulting to secure settings like disabling the flag in the target project to prevent accidental production changes.
What it does
- Identifies and retrieves feature flag definitions from a source project.
- Validates target project availability within the same organization.
- Checks for and reports on flag dependencies before execution.
- Automatically remaps cohort references to the target project's context.
- Executes the flag copy with configurable options for state, schedules, and dependencies.
- Reports detailed success and failure outcomes for each target project.
When to use it
- Promoting a feature flag from a staging project to a production project.
- Syncing flag configurations across multiple workspaces.
- Replicating a specific flag setup in a new project environment.
- Duplicating a flag to test configuration changes in a different project.
Advantages
- Ensures safe deployment by defaulting to disabled flags in target projects.
- Automates the complex task of remapping cohort dependencies.
- Provides a clear preview of dependencies and potential warnings before copying.
- Supports bulk copying to multiple target projects in a single operation.
- Maintains integrity of encrypted payloads and remote configurations.
Usage examples
- “Copy the new-checkout flag from project 12345 to project 67890.”
- The agent retrieves the flag definition, checks for dependencies, and asks for confirmation to copy it as a disabled flag to the target project.
- “Promote the beta-feature flag from staging to production and include the rollout schedule.”
- The agent verifies the source flag, confirms the target project, and executes the copy with the copy_schedule option enabled.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/posthog/copying-flags-across-projects/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip copying-flags-across-projects.zip -d .agents/skills
Documentation by PostHog
Copying feature flags across projects
This skill guides you through duplicating a feature flag from a source project into one or more target projects within the same PostHog organization.
When to use this skill
The user asks to "copy a flag to another project", "duplicate this flag", or "sync a flag between projects"
The user wants to promote a flag from a staging project to a production project (or vice versa)
The user wants to replicate a flag configuration in a different workspace and keep cohort dependencies intact
The user is working around the absence of true environments by using projects-as-environments
What this skill does not cover
Cross-organization copy is not supported. The endpoint requires source and target projects to belong to the same org.
Bulk copying every flag in a project. The tool copies one flag at a time. For batch copies, loop through flag keys; each call is independent.
Cleaning up old or stale flags — see the
cleaning-up-stale-feature-flagsskill instead.
Workflow
1. Resolve the source flag
You need the flag's key and the source project's id.
If the user gave a flag key and a project id, use them directly.
If the user gave a flag name (e.g. "the new pricing flag"), call
posthog:feature-flag-get-allin the source project to find the matching flag and read itskey.If the user only gave a flag and not a project, ask which project it lives in. Don't assume the active MCP project — copying out of the wrong source is a common foot-gun.
2. Resolve target project ids
Targets must be in the same organization as the source. Call posthog:projects-get to list available projects and confirm membership before issuing the copy.
For a multi-target copy, the tool accepts up to 50 target project ids in a single call. Successes and failures are reported per target, so a partial failure does not block the rest.
3. Preview the source flag and its dependencies
Call posthog:feature-flag-get-definition on the source flag. Then always call posthog:feature-flags-copy-dependencies-check with feature_flag_key, from_project, and target_project_ids, rather than trying to detect dependencies first — it copies nothing, and returns an empty result with no warnings when the flag has none, so running it on every copy is cheap and never skips a real dependency.
A false can_copy_dependencies does not always mean the copy is blocked. It is also false when there is nothing to copy. Report a problem only when warnings is non-empty.
Present a concise summary to the user before copying:
Flag key, name, and active state in the source
Filter groups (rollout %, property filters, variant splits)
Any cohort references in
filters.groups[].properties[]— these will be remapped server-side, but the user should know whether the target project already has matching cohortsWhether the flag has encrypted payloads (
has_encrypted_payloads) or is remote configuration (is_remote_configuration)Whether scheduled changes exist (the user can opt to copy them in step 4)
The dependency check's
copied_dependency_keys(dependencies a copy would create in a target),reused_dependency_keys(dependencies a target already satisfies), and anywarnings
4. Confirm copy options
One confirmation covers all three options. Default to the safest combination and ask the user to override only if they explicitly want different behavior:
disable_copied_flag: true— the copied flag lands disabled in the target. Recommended by default; turning a flag on in a new project should be a deliberate, observed action.copy_schedule: false— scheduled changes do not come along. Recommended by default; schedules are usually project-specific.copy_dependencies: false— dependency flags do not come along. Set it totrueonly when the user approves copying the keys step 3's check reported.
If the user says "promote it as-is" or "turn it on in prod", switch disable_copied_flag to false. If they say "include the rollout schedule" or "with the scheduled rollout", switch copy_schedule to true.
5. Execute the copy
Call posthog:feature-flags-copy-flags-create with:
feature_flag_key: the source flag's keyfrom_project: the source project idtarget_project_ids: the resolved list of target project idsdisable_copied_flag: from step 4 (defaulttrue)copy_schedule: from step 4 (defaultfalse)copy_dependencies: from step 4 (defaultfalse). Omitting it silently skips dependency copying, even when the user approved it.
6. Report per-target outcome
The response includes a success array (one entry per copied flag) and a failed array (per-target errors). Surface both:
For each success: target project id, the new flag's id, and its
activestate in the target.For each failure: target project id and the error message. Common causes are missing editor access on the target team, or the flag already existing as a non-overridable resource in the target.
If any targets failed, ask the user whether to retry the failed ones, skip them, or fix the underlying issue (e.g. grant access, then retry).
Important notes
Cohorts are remapped automatically. When the source flag references a cohort, the endpoint creates or reuses an equivalent cohort in each target project and rewrites the flag's filters to point at the target-project cohort id. You don't need to handle this — but tell the user it's happening so they understand the new cohorts that may appear in the target.
Encrypted payloads are preserved. Remote-configuration flags with encrypted payloads keep their encryption when copied; the payload is re-encrypted under the target project's key.
Scheduled changes copy with cohort remap too. If
copy_schedule: true, any scheduled cohort references are remapped just like the live filter conditions.Auth requirements. The user's API key must include explicit
feature_flag:write(orfeature_flag:*) scope. A*-only key will be rejected — this endpoint is gated by an INTERNAL viewset and*consent does not satisfy it. Team-scoped keys cannot reach this endpoint either; an org-scoped or unscoped key is required.Editor access on the source. The user must have at least editor-level access on the source flag's team. The endpoint enforces this via PostHog's access control before copying.
Per-target access on targets. Targets the user can't see are silently dropped from the result; targets they can see but lack edit rights on appear in the
failedarray with a permission error.No undo. A copy creates a new flag in the target (or overwrites an existing flag with the same key). Always confirm with the user before issuing the copy, especially when the target is a production project.
Example interaction
User: Copy the
new-checkoutflag from project 12345 to project 67890.Agent: Looking at the source flag in project 12345.
(calls
posthog:feature-flag-get-definition)The
new-checkoutflag is currently a boolean at 25% rollout in project 12345, with no cohort filters and no scheduled changes. I'll copy it as disabled in project 67890 with no scheduled changes — this is the safer default. Confirm?User: Yes, but enable it in the target.
Agent: Got it — enabling in the target.
(calls
posthog:feature-flags-copy-flags-createwithdisable_copied_flag: false,copy_schedule: false)Done. Created flag id 99887 in project 67890 (
active: true). No failed targets.
Available tools
posthog:feature-flags-copy-flags-create— performs the copy. Required fields:feature_flag_key,from_project,target_project_ids. Optional:disable_copied_flag,copy_schedule,copy_dependencies.posthog:feature-flags-copy-dependencies-check— previews what a copy would do to the flag's transitive flag dependencies. Copies nothing. Call it before every copy; it returns an empty result when the flag has no dependencies.posthog:feature-flag-get-all— find a flag by key/name in a given project when the user only gave a friendly name.posthog:feature-flag-get-definition— fetch the full source flag (filters, variants, cohort references, encryption flags) so you can preview before copying.posthog:projects-get— list projects in the active organization, used to resolve and validate target project ids.
Files
- ATTRIBUTION.mdAdded by AutoGineer877 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md8.8 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "copying-flags-across-projects", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: a5d30e775d092e16e198f7b582f1f66dac2cee45
Published by: PostHog (https://github.com/PostHog)
Publisher: PostHog (https://github.com/PostHog)
Licence: MIT License (https://github.com/PostHog/skills/blob/a5d30e775d092e16e198f7b582f1f66dac2cee45/LICENSE)
Licence evidence: repository licence LICENSE
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/omnibus/copying-flags-across-projects · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by PostHog or PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download copying-flags-across-projects.zip