SuperAPI AI 工具集

promote-feature

部署与运维

查看项目

更新于 10-16 05:39

技能介绍

promote-feature 是一个用于在 Warp 代码库中按阶段推广受功能开关(FeatureFlag)控制的功能的技能,目标渠道为 Dogfood、Preview 或 Stable,并安排后续清理工作。

用途 当某个位于 FeatureFlag 之后的功能已准备好向特定渠道推广时使用该技能。它指导完成从 Dogfood 到 Preview 再到 Stable 的分阶段推广,并提醒创建后续清理任务。

功能开关的两层机制 功能开关有两个相互作用的层次:

  1. 运行时层(warp_core/src/features.rs):DOGFOOD_FLAGS、PREVIEW_FLAGS、RELEASE_FLAGS,在启动时按渠道启用。
  2. 编译期层(app/Cargo.toml + app/src/lib.rs):[features] 中的 Cargo features。default = [...] 数组为所有构建启用某个功能。app/src/lib.rs 中的 enabled_features() 通过 #[cfg(feature = "...")] 将每个 Cargo feature 桥接到对应的 FeatureFlag 变体。

重要提醒:推广到 Stable 后不要立即移除标志。至少保留 1–2 个发布周期,以便回滚只需一行 PR(从 default 中移除条目)。后续清理步骤使用 remove-feature-flag 技能。

TUI 注意事项 warp_core/src/features.rs 中按渠道划分的数组(DOGFOOD_FLAGS/PREVIEW_FLAGS/RELEASE_FLAGS)是共享的,在运行时同时驱动 GUI 桌面应用(app/)和无头 TUI(crates/warp_tui)。app/Cargo.toml 的 default 加 app/src/lib.rs 的 enabled_features() 编译期桥接仅适用于 GUI 应用。如果推广的功能也应到达 TUI,需确保它在目标渠道的运行时被启用(共享数组已做到这一点),并且如果该功能依赖编译期 Cargo feature,TUI 二进制(crates/warp_tui/Cargo.toml)也要启用它。

推广到 Dogfood 在 warp_core/src/features.rs 的 DOGFOOD_FLAGS 中添加该标志:

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

无需其他文件更改。

推广到 Preview 在 warp_core/src/features.rs 的 PREVIEW_FLAGS 中添加。 如果该标志存在于 DOGFOOD_FLAGS 中,则将其移除——Preview 标志会自动包含在 Dogfood 构建中。

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

推广到 Stable 这需要修改三个文件。

  1. app/Cargo.toml — 添加到 default 将 snake_case 功能名添加到 default = [...] 数组:

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

优先使用这种方式,而不是添加到 RELEASE_FLAGS(参见 warp_core/src/features.rs:787-790 的注释)。这样会将功能编译进所有构建,并支持一行回滚。

  1. app/src/lib.rs — 添加到 enabled_features() 桥接 在 enabled_features() 的 flags.extend([...]) 块内添加一个 #[cfg(...)] 条目,遵循现有模式:

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

将其放在逻辑相关的条目附近。

  1. warp_core/src/features.rs — 从 PREVIEW_FLAGS / DOGFOOD_FLAGS 中移除 从它当前所在的数组中移除该变体:

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

验证 ./script/format cargo clippy --workspace --all-targets --all-features --tests -- -D warnings

创建后续 Linear 事项 PR 合并后,创建一个 Linear 事项提醒团队移除该标志。使用 Linear MCP 工具:

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 )

适用场景 适用于 Warp 代码库中需要将受功能开关控制的功能按渠道逐步放量的开发流程,包括桌面 GUI 应用和 TUI。

限制 该技能针对 Warp 代码库的特定文件结构与流程,不适用于其他项目。资料未提供该技能在其他环境下的通用性说明。