mcpField
F
feature-flag-system

feature-flag-system

github.com/aj-geddes开发373442 次安装34 周前更新
代码仓库

关于 feature-flag-system

用于实现功能开关的技能,可将部署与发布分离,并支持渐进式发布、实验和紧急开关。参考内容涵盖 TypeScript 服务、React Hook、分析、SDK 模式和管理界面。

主要功能

  1. 01渐进式功能发布
  2. 02A/B 测试与实验
  3. 03金丝雀部署
  4. 04紧急关闭开关
  5. 05服务、Hook 与管理界面指南

适用场景

  1. 01向指定用户发布功能
  2. 02开展功能实验
  3. 03逐步推出变更
  4. 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.md
feature-flag-service-typescript.md
feature-flag-with-analytics.md
launchdarkly-style-sdk.md
react-hook-for-feature-flags.md
scripts/
scaffold-tests.sh
templates/
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 风格的 SDKLaunchDarkly 风格的 SDK
功能开关管理界面功能开关管理界面

最佳实践

✅ 应该做
  • 使用描述性开关名称
  • 记录开关的用途和生命周期
  • 逐步推出功能
  • 跟踪开关评估情况
  • 定期清理旧开关
  • 使用功能开关进行实验
  • 为关键功能实现关闭开关
  • 测试启用和禁用两种状态
  • 使用一致性哈希实现稳定的逐步推出
  • 为非技术用户提供管理界面
❌ 不应该做
  • 将开关用于永久配置
  • 因旧开关而累积技术债务
  • 跳过开关清理
  • 将开关拆分得过于细碎
  • 在各处硬编码开关检查
  • 忽略分析和监控

评论

支持 Markdown