Agent Skillswarpdotdev/warp › promote-feature

promote-feature

GitHub

指导将 FeatureFlag 功能按阶段(Dogfood/Preview/Stable)推广上线,包括修改运行时配置、编译时桥接及清理步骤。

.agents/skills/promote-feature/SKILL.md warpdotdev/warp

Trigger Scenarios

需要启用新功能标志 将功能从预览推向稳定版

Install

npx skills add warpdotdev/warp --skill promote-feature -g -y
More Options

Non-standard path

npx skills add https://github.com/warpdotdev/warp/tree/master/.agents/skills/promote-feature -g -y

Use without installing

npx skills use warpdotdev/warp@promote-feature

指定 Agent (Claude Code)

npx skills add warpdotdev/warp --skill promote-feature -a claude-code -g -y

安装 repo 全部 skill

npx skills add warpdotdev/warp --all -g -y

预览 repo 内 skill

npx skills add warpdotdev/warp --list

SKILL.md

Frontmatter
{
    "name": "promote-feature",
    "description": "Promote a feature-flagged feature to Dogfood, Preview, or Stable in the Warp codebase. Use when a feature behind a FeatureFlag is ready to roll out to a broader audience, including wiring up the compile-time\/runtime bridge and deferring flag cleanup safely."
}

promote-feature

Guides the staged promotion of a gated FeatureFlag variant to Dogfood, Preview, or Stable, and schedules the follow-up cleanup.

Overview

Feature flags have two interacting layers:

  • Runtime (warp_core/src/features.rs): DOGFOOD_FLAGS, PREVIEW_FLAGS, RELEASE_FLAGS — enabled per-channel at startup.
  • Compile-time (app/Cargo.toml + app/src/lib.rs): Cargo features in [features]. The default = [...] array enables a feature for all builds. enabled_features() in app/src/lib.rs bridges each Cargo feature to its FeatureFlag variant via #[cfg(feature = "...")].

Do not remove the flag immediately after promoting to Stable. Keep it for at least 1–2 release cycles so a rollback is a one-line PR (remove the entry from default). Use the remove-feature-flag skill for the cleanup step later.

TUI note

The per-channel arrays in warp_core/src/features.rs (DOGFOOD_FLAGS/PREVIEW_FLAGS/RELEASE_FLAGS) are shared and drive both the GUI desktop app (app/) and the headless TUI (crates/warp_tui) at runtime. The app/Cargo.toml default + app/src/lib.rs enabled_features() compile-time bridge is GUI-app-only. If a promoted feature should also reach the TUI, make sure it is enabled at runtime for the target channel (the shared arrays already do this) and, if the feature relies on a compile-time Cargo feature, that the TUI binary (crates/warp_tui/Cargo.toml) enables it too.

Promote to Dogfood

Add the flag to DOGFOOD_FLAGS in warp_core/src/features.rs:

pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
    // ...
    FeatureFlag::YourFeature,
];

No other file changes needed.

Promote to Preview

  1. Add to PREVIEW_FLAGS in warp_core/src/features.rs.
  2. Remove from DOGFOOD_FLAGS if present — Preview flags are automatically included in Dogfood builds.
pub const PREVIEW_FLAGS: &[FeatureFlag] = &[
    // ...
    FeatureFlag::YourFeature,
];

Promote to Stable

This requires changes in three files.

1. app/Cargo.toml — add to default

Add the snake_case feature name to the default = [...] array:

default = [
    # ...
    "your_feature_name",
]

Prefer this over adding to RELEASE_FLAGS (see comment at warp_core/src/features.rs:787-790). It compiles the feature into all builds and enables a one-line rollback.

2. app/src/lib.rs — add to enabled_features() bridge

Add a #[cfg(...)] entry inside the flags.extend([...]) block in enabled_features(), following the existing pattern:

#[cfg(feature = "your_feature_name")]
FeatureFlag::YourFeature,

Place it near logically related entries.

3. warp_core/src/features.rs — remove from PREVIEW_FLAGS / DOGFOOD_FLAGS

Remove the variant from whichever arrays it currently lives in:

pub const PREVIEW_FLAGS: &[FeatureFlag] = &[
    // Remove FeatureFlag::YourFeature,
];

Validate

cargo clippy -p warp_core --all-targets --tests -- -D warnings
# Also lint the GUI app when app/Cargo.toml or app/src/lib.rs changed.
cargo clippy -p warp --all-targets --tests -- -D warnings
# Also lint the TUI when crates/warp_tui/Cargo.toml changed.
cargo clippy -p warp_tui --all-targets --tests -- -D warnings
./script/format

If the promotion changes behavior beyond flag lists or configuration, run affected tests before Clippy. Format once after all other changes are complete. Do not rerun earlier checks after formatting or add a full presubmit unless explicitly required; CI owns broader platform and workspace coverage.

Create a follow-up Linear issue

After the PR lands, create a Linear issue to remind the team to remove the flag. Use the Linear MCP tool:

save_issue(
  title: "Remove FeatureFlag::YourFeature after stabilization",
  team: <your team>,
  assignee: "me",
  description: "FeatureFlag::YourFeature was promoted to Stable in <PR link>. Remove the flag and dead code branches after 1–2 release cycles. Follow the `remove-feature-flag` skill.",
  labels: ["tech-debt"],
  priority: 4  // Low
)

Version History

  • f4f9b88 Current 2026-09-22 10:13
  • 726c1b6 2026-07-24 20:21

Same Skill Collection

.agents/skills/add-feature-flag/SKILL.md
.agents/skills/add-telemetry/SKILL.md
.agents/skills/changelog-draft/SKILL.md
.agents/skills/classify-changelog-pr/SKILL.md
.agents/skills/cross-platform-cloud-verification/SKILL.md
.agents/skills/dedupe-issue-local/SKILL.md
.agents/skills/gui-create-launch-modal/SKILL.md
.agents/skills/gui-integration-test/SKILL.md
.agents/skills/gui-reproduce-bug-report-local/SKILL.md
.agents/skills/gui-settings-ui/SKILL.md
.agents/skills/gui-ui-guidelines/SKILL.md
.agents/skills/logging-and-error-reporting/SKILL.md
.agents/skills/remove-feature-flag/SKILL.md
.agents/skills/review-pr-local/SKILL.md
.agents/skills/rust-unit-tests/SKILL.md
.agents/skills/triage-issue-local/SKILL.md
.agents/skills/tui-testing/SKILL.md
.agents/skills/tui-ui-guidelines/SKILL.md
.agents/skills/tui-verify-change/SKILL.md
resources/bundled/mcp_skills/figma/figma-code-connect-components/SKILL.md
resources/bundled/mcp_skills/figma/figma-create-design-system-rules/SKILL.md
resources/bundled/mcp_skills/figma/figma-create-new-file/SKILL.md
resources/bundled/mcp_skills/figma/figma-generate-library/SKILL.md
resources/bundled/mcp_skills/figma/figma-implement-design/SKILL.md
resources/bundled/skills/add-mcp-server/SKILL.md
resources/bundled/skills/change-keybinding/SKILL.md
resources/bundled/skills/create-skill/SKILL.md
resources/bundled/skills/create-tab-config/SKILL.md
resources/bundled/skills/factory-files/SKILL.md
resources/bundled/skills/factory-mcp/SKILL.md
resources/bundled/skills/modify-settings/SKILL.md
resources/bundled/skills/oz-platform/SKILL.md
resources/bundled/skills/pr-comments/SKILL.md
resources/bundled/skills/tab-configs/SKILL.md
resources/bundled/skills/tui-migrate-setup/SKILL.md
resources/bundled/skills/update-tab-config/SKILL.md
resources/bundled/skills/warpctrl/SKILL.md
resources/channel-gated-skills/dogfood/test-warp-ui/SKILL.md
resources/channel-gated-skills/dogfood/triage-vulnerabilities/SKILL.md
resources/channel-gated-skills/dogfood/verify-ui-change-in-cloud/SKILL.md
.agents/skills/gui-onboarding-verification-skill/SKILL.md
.warp/skills/gui-integration-test-video/SKILL.md
resources/bundled/mcp_skills/figma/edit-figma-design/SKILL.md
resources/bundled/mcp_skills/figma/figma-generate-design/SKILL.md
resources/bundled/mcp_skills/figma/figma-use/SKILL.md
resources/bundled/skills/claude-api/SKILL.md

Metadata

Files
0
Version
f4f9b88
Hash
f622ce1d
Indexed
2026-07-24 20:21

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-22 11:22
浙ICP备14020137号-1