Communitygithub.com

featurevisor/featurevisor

创作、测试、查询并集成 Featurevisor 特性标志、A/B 实验和远程配置。适用于 Featurevisor 项目(featurevisor.config.js)中的特性、分段、属性、全局变量和组合、条件、灰度发布、测试规范和场景、数据文件、目标、集合和推广、目录及 CLI,并用于解释上下文为何获得某个值。也适用于 JavaScript、React、Vue 及其他语言中的 Featurevisor SDK、OpenFeature 提供程序、CLI 插件,以及从 v2 或 v3 升级。单独在 Featurevisor 项目之外发出的通用特性标志请求不足以完成任务。

featurevisor 是什么?

这个技能是关于 Featurevisor 的全面指南,Featurevisor 是一种基于 Git 的特性管理工具。它涵盖了两个主要方面:项目端,即通过 YAML 或 JSON 定义创作和查询特性、分段、属性、全局变量,并运行 `featurevisor` CLI;以及应用端,即通过 SDK(如 `@featurevisor/sdk`、React、Vue 等)加载数据文件并本地评估。技能强调在做出更改前了解项目配置(如环境、集合、解析器和命名空间分隔符)的重要性,并提供了核心创作规则,例如分桶和规则键是合约、第一个匹配的规则获胜、仅引用已存在的定义、变异权重总和必须为 100,以及条件在各个 SDK 间保持可移植。它指导用户完成一个完成的定义循环:包括代码检查、测试、评估和构建,并提供针对风险变更(如重命名规则键或改变变异权重)的安全建议。该技能支持 Featurevisor v4,并提供了处理 v3 和 v2 项目的兼容性指导。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/featurevisor/featurevisor/tree/HEAD/skills/featurevisor

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

featurevisor 是做什么的?

你正在帮助用户使用 Featurevisor,通过 Git 进行特性管理。一个 Featurevisor 项目是一个 YAML(默认)或 JSON 定义的仓库。CLI 会对其进行检查和测试,并构建静态的 JSON 数据文件,应用程序通过 SDK 在本地对其进行评估。每项任务都位于以下两个方面之一:

  • 项目端:创作和查询定义(特性、分段、属性、全局变量、测试)并运行 featurevisor CLI。
  • 应用端:加载数据文件并通过 SDK(@featurevisor/sdk、React、Vue 或其他语言)进行评估。

这个技能涵盖了这两方面,适用于 Featurevisor v4。文档索引位于 https://featurevisor.com/llms.txt,完整文本位于 https://featurevisor.com/llms-full.txt。当某个主题未包含在以下参考资料中时,请获取它们。

了解你的受众

工程师、产品经理、营销人员以及那些描述需求但不了解 YAML 的人都在使用 Featurevisor。请相应调整:

  • 翻译意图。“为 10% 的荷兰用户打开横幅”是一个灰度发布规则。你自己完成映射,然后用他们的语言报告结果:发生了什么变化,谁受到影响,以及接下来会发生什么。
  • 常规更改: 提高百分比、在全局捕获规则上方添加规则、添加特性、为 QA 强制启用特性。自信地完成这些操作。
  • 风险更改: 重命名规则键、更改 bucketBy、更改变异权重、降低百分比、归档仍被引用的内容。这些操作会在用户结果之间移动。直接说明(“一些用户会在会话中途丢失特性”)并在继续之前确认。
  • 闭环。 更改后,用一两句话说明一旦发布会发生什么。例如:“一旦合并并且 CI 部署了数据文件,大约 10% 的荷兰用户会看到横幅,其他用户什么都看不到。”
  • 提供目录 给任何希望查看项目而不是阅读 YAML 的人(使用目录进行视觉审查)。

首先了解情况

此技能中的示例使用默认脚手架,该脚手架没有环境。当项目配置了环境时,在 evaluate、benchmark、assess-distribution 和 build --print 中添加 --environment=<名称>。常规的文件构建涵盖所有环境。

尚无项目?先访谈,再生成脚手架

如果工作树中没有 featurevisor.config.js,则不存在 Featurevisor 项目。如果用户在应用程序仓库中,这是 SDK 的工作:请参阅应用程序集成(SDK),并在项目仓库(而不是这里)创作定义。如果他们想要一个新项目,请先询问这些问题,因为之后编写的每个文件都依赖于它们:

  1. 环境? 默认没有环境,规则是直接列表。--example=with-environments 会给出明确的 staging 和 production。
  2. 集合? 默认无。仅为独立审查的树提供集合:从开发到暂存再到生产的发布渠道,或无关的表面区域,如店面和管理后台。首先阅读 sets-promotions.md。
  3. 消费者? 一个应用程序可以使用默认的 all 目标,该目标没有选择器,包含所有活动定义。多个表面通常会有类似 web、ios 和 android 的标签,以及每个表面一个目标。
  4. 文件格式? YAML(默认)或 JSON。
  5. 什么标识用户? userId、deviceId,或两者兼有(bucketBy: { or: [userId, deviceId] })。lint 要求每个特性都有 bucketBy,因此这决定了每个特性声明什么以及哪些属性首先出现。

在一个空目录中生成脚手架,放在自己的仓库中,与应用代码分离:

npx @featurevisor/cli@latest init
npm install

--example=with-environments 会给出环境键化的规则,--example=environments 会给出作为发布渠道的集合,--example=sets 会给出独立的表面。CLI 设置表列出了所有示例。然后根据访谈答案调整 featurevisor.config.js。templates/example-project/ 是一个完整的 v4 项目,通过了 lint 和测试,可用作了解各部分如何组合的参考。

现有项目?在接触任何内容之前检测版本和形态

确认项目在其包清单和 lockfile 中已安装 @featurevisor/cli,并通过 npm ls @featurevisor/cli 确认。然后在项目中运行已安装的 CLI:

npx featurevisor --version

它必须解析项目自己的二进制文件。如果缺少或 npx 提供下载包,请停下来询问有关恢复项目锁定依赖项的问题。不要仅仅为了检测版本而安装远程 CLI 或升级依赖项。

  • 4.x:本技能中的所有内容均适用。
  • 3.x:v3 语法不同。它在规则中使用 segments 和 requiredFeatures 而不是统一的 conditions,并且缺少变量条件、组合、continue、测试 checks、场景和几个运算符。不要将 v4 语法写入 v3 项目。保持在 upgrading-to-v4.md 中列为 v3 语法的范围内,并在请求需要 v4 时提供升级。
  • 2.x:例如 scopes:、environments/ 目录或应用代码中的 createInstance 等形态。首先提供 upgrading-to-v3.md。

消费者决定你可以发布什么。 v4 数据文件需要 v4 SDK:v3 SDK 不理解统一的 conditions,因此规则会停止匹配。数据文件 schemaVersion 只是信息性的,不会使旧 SDK 拒绝该文件。在引入运行时能力(如累积覆盖或更新的运算符)之前,请确认每个使用该数据文件的应用程序的 SDK 版本。如果未知,请询问用户。针对 SDK 兼容性矩阵 检查每个 SDK。原生版本号不同,因此不要假设每个兼容的 SDK 都是 4.x 版本。仅仅 CLI lint 成功并不能确定运行时支持。测试检查和场景需要兼容的 CLI 运行程序,这与消费者支持什么是一个独立的问题。

然后读取配置:

npx featurevisor config --json --pretty
npx featurevisor info

四个值会改变你编写的一切的形态:

  • sets:当为 true 时,每个定义都位于 sets/<set>/ 下,命令需要 --set。首先阅读 sets-promotions.md。
  • environments:当声明时,特性 rules、force 和 expose,以及全局变量 overrides,是按键环境映射的。没有它们时,它们是直接列表,并且 expose 是布尔值或标签列表。
  • parser:对于 `

相关技能