关于 feature-flag-system
用于实现功能开关的技能,可将部署与发布分离,并支持渐进式发布、实验和紧急开关。参考内容涵盖 TypeScript 服务、React Hook、分析、SDK 模式和管理界面。
主要功能
- 01渐进式功能发布
- 02A/B 测试与实验
- 03金丝雀部署
- 04紧急关闭开关
- 05服务、Hook 与管理界面指南
适用场景
- 01向指定用户发布功能
- 02开展功能实验
- 03逐步推出变更
- 04紧急情况下停用关键功能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill feature-flag-system安装后在 Claude Code 中输入/feature-flag-system确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/admin-ui-for-feature-flags.mdfeature-flag-service-typescript.mdfeature-flag-with-analytics.mdlaunchdarkly-style-sdk.mdreact-hook-for-feature-flags.mdscripts/scaffold-tests.shtemplates/test-template.js详细介绍
功能开关系统
目录
概述
实现功能开关,将部署与发布解耦,支持逐步推出、A/B 测试,并提供紧急关闭开关。
适用场景
- 逐步推出功能
- A/B 测试和实验
- 金丝雀部署
- 面向特定用户的 Beta 功能
- 紧急关闭开关
- 主干开发
- 暗发布
- 运维开关(维护模式)
- 用户专属功能
快速开始
最简可运行示例:
interface FlagConfig {
key: string;
enabled: boolean;
description: string;
rules?: FlagRule[];
variants?: FlagVariant[];
createdAt: Date;
updatedAt: Date;
}
interface FlagRule {
type: "user" | "percentage" | "attribute" | "datetime";
operator: "in" | "equals" | "contains" | "gt" | "lt" | "between";
attribute?: string;
values: any[];
}
interface FlagVariant {
key: string;
weight: number;
value: any;
}
interface EvaluationContext {
userId?: string;
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| 功能开关服务(TypeScript) | 功能开关服务(TypeScript) |
| 用于功能开关的 React Hook | 用于功能开关的 React Hook |
| 带分析功能的功能开关 | 带分析功能的功能开关 |
| LaunchDarkly 风格的 SDK | LaunchDarkly 风格的 SDK |
| 功能开关管理界面 | 功能开关管理界面 |
最佳实践
✅ 应该做
- 使用描述性开关名称
- 记录开关的用途和生命周期
- 逐步推出功能
- 跟踪开关评估情况
- 定期清理旧开关
- 使用功能开关进行实验
- 为关键功能实现关闭开关
- 测试启用和禁用两种状态
- 使用一致性哈希实现稳定的逐步推出
- 为非技术用户提供管理界面
❌ 不应该做
- 将开关用于永久配置
- 因旧开关而累积技术债务
- 跳过开关清理
- 将开关拆分得过于细碎
- 在各处硬编码开关检查
- 忽略分析和监控
评论
支持 Markdown