mcpField
P
plan

plan

github.com/launchdarkly开发282.3k 次安装1 天前更新
代码仓库

关于 plan

这是 LaunchDarkly SDK 引导流程中的规划技能,根据已检测的项目技术栈选择 SDK,并列出所需文件和变更。它涵盖单 SDK 与双 SDK 方案,并在实施前向用户展示计划。

主要功能

  1. 01根据项目类型匹配 SDK
  2. 02确定需修改的文件和入口
  3. 03规划通过环境变量配置凭据
  4. 04分别列出服务端与客户端步骤
  5. 05应用变更前展示计划

适用场景

  1. 01为已检测的技术栈选择 SDK
  2. 02规划 Next.js 服务端与浏览器端集成
  3. 03准备 LaunchDarkly 安装计划

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/launchdarkly/ai-tooling --skill plan

安装后在 Claude Code 中输入/plan确认已加载。

详细介绍

生成集成计划(SDK 安装)

根据检测到的信息,选择合适的 SDK,并规划所需的最少更改。

此技能位于 LaunchDarkly SDK Install (onboarding) 下;父级 Step 2 是 plan。前一步:检测代码库技术栈。下一步:应用代码更改。

选择合适的 SDK

使用 SDK 配方参考资料,将检测到的技术栈与 SDK 匹配。对于常见技术栈,请先查看该文件中的 Top 10 SDKs (start here);对于较少见的 SDK,请查看 (other) 部分。

关键决策:

项目类型SDK 类型密钥类型
后端 API、服务端渲染应用、CLI 工具服务端 SDKSDK Key
浏览器 SPA(React、Vue、Angular、原生 JS)客户端 SDKClient-side ID
iOS 或 Android 原生应用移动 SDKMobile Key
React Native移动 SDKMobile Key
Flutter(iOS、Android 或桌面 app 目标)客户端 SDK(Flutter)Mobile Key
Flutter web客户端 SDK(Flutter)Client-side ID
Electron 桌面应用客户端 SDK(Node.js)Client-side ID
Cloudflare Workers、Vercel Edge、AWS Lambda@EdgeEdge SDKSDK Key
.NET 客户端(MAUI、Xamarin、WPF、UWP)移动 SDK(.NET)Mobile Key
C/C++ 客户端应用客户端 SDK(C/C++)Mobile Key
C/C++ 服务端应用服务端 SDK(C/C++)SDK Key
Haskell 服务端服务端 SDK(Haskell)SDK Key
Lua 服务端服务端 SDK(Lua)SDK Key
Roku(BrightScript)客户端 SDK(Roku)Mobile Key

对于每个受支持的 SDK,软件包名称、安装提示和官方 Docs 链接,请使用 SDK 配方以及 snippets/ 下链接的文件。

双 SDK 集成

当用户要求同时集成服务端和客户端,或技术栈明显需要两个 LaunchDarkly SDK 时,请使用本节(例如,使用服务端评估并且在浏览器 UI 中使用标志的 Next.js 项目、同一工作区目标中包含独立后端和 SPA 仓库等)。

不要只集成一个 SDK,却对第二个 SDK 含糊带过,就算完成入门配置(没有在 package.json 中添加第二个包、没有第二条初始化路径、没有遵循第二份配置指南)。每个 SDK 都是独立的产品,有各自的安装命令和初始化流程。

对于这两个 SDK,计划都必须明确列出以下内容,不能遗漏:

服务端轨道:

  1. 配置指南/SDK 配置指南中的条目或代码片段名称
  2. 包名称(确切的制品名称)
  3. 安装命令(配置指南中的完整命令)
  4. 依赖文件(添加依赖项的位置)
  5. 入口文件(例如,instrumentation.ts、API 入口、main.py)
  6. 环境变量(通常为 LAUNCHDARKLY_SDK_KEY)
  7. 初始化摘要(初始化运行的位置;使用的文档/代码片段)

客户端轨道:

  1. 配置指南/代码片段名称(必须与服务端对应的条目不同)
  2. 包名称(例如,React Web 与 Node 服务端不同,必须使用客户端制品)
  3. 安装命令(第二条命令,不能省略)
  4. 依赖文件
  5. 入口文件(例如,app/providers.tsx、根布局、main.tsx)
  6. 环境变量(打包工具前缀的客户端 ID,例如 NEXT_PUBLIC_...)
  7. 初始化摘要(使用客户端配置指南中的 provider/wrapper/hook)

如果无法明确列出两个包和两个入口文件,就说明计划还没完成——请返回SDK 配置指南并重新检测。

重要区别:

  • Next.js:服务端 SDK 用于在服务器上进行评估的 API 路由/服务端组件/RSC 上下文;React 客户端 SDK 用于客户端组件。如果用户要求两者都要,计划就必须完整列出两条轨道。如果用户只想先集成一种使用场景,请在计划中明确说明。
  • Node.js:如果是后端服务(Express、Fastify 等),请使用服务端 SDK。桌面/Electron 应用也可以使用 Node.js 客户端 SDK。
  • React:如果是独立 SPA,请使用 launchdarkly-react-client-sdk。如果属于 Next.js 项目,请参阅上文。
  • .NET:ASP.NET 和后端服务请使用服务端 SDK(LaunchDarkly.ServerSdk)。MAUI、Xamarin、WPF 和 UWP 请使用 .NET 移动 SDK(LaunchDarkly.ClientSdk,移动密钥)——参见 SDK 配置指南——.NET(客户端)。Blazor WebAssembly(以及其他托管在浏览器中的 .NET 客户端 UI)仍使用 LaunchDarkly.ClientSdk,但要使用客户端 ID,而不是移动密钥——参见同一份配置指南。
  • Flutter:请使用 Flutter 客户端 SDK(launchdarkly_flutter_client_sdk——SDK 配置指南——Flutter)。典型的 iOS/Android/桌面应用构建请使用移动密钥;Flutter Web 请使用客户端 ID(并遵循项目对公开环境变量的处理方式)。如果用户要发布多个目标平台,请确认优先接入哪个平台,或为每个平台分别规划环境变量/配置。

规划变更

你的集成计划应准确指出:

1. 要修改的文件

使用在检测仓库技术栈期间收集的信息,具体包括检测到的包管理器、依赖文件和应用入口点:

  • 依赖文件:检测期间识别出的文件(例如 package.json、requirements.txt、go.mod)——使用检测到的包管理器添加 SDK
  • 入口点文件:检测期间识别出的应用入口点——SDK 初始化代码将放在此处。双 SDK 方案会列出两个入口点(参见双 SDK 集成)。
  • 环境变量/配置文件:对于真实密钥,优先使用集成根目录下的 .env(如果不存在则创建);确保该目录下的 .gitignore 中列有 .env。仅在 .env.example / .env.sample 中放置占位符。如果项目不使用 dotenv,则遵循现有配置模式——关于征求同意、写入密钥以及服务器与客户端混合场景,请参见应用代码更改第 2 步。
2. 代码更改

对于范围内的每个 SDK(一条或两条轨道),描述具体更改:

  1. 添加 SDK 依赖项——使用 SDK 配方中的安装命令(双 SDK 时对每个包重复此操作)
  2. 添加 SDK 导入——在该轨道入口点顶部添加导入语句
  3. 添加 SDK 初始化——将该 SDK 配方/代码片段中的初始化代码,放在正确生命周期的前期(服务器端或客户端)
  4. 配置凭据——通过环境变量配置,绝不硬编码(根据轨道使用 SDK 密钥或客户端 ID)
3. 环境变量约定

检查项目如何处理配置:

  • .env: 如果技术栈使用 dotenv(或为 LaunchDarkly 引入 dotenv),则在 .env 不存在时,计划在集成根目录下创建该文件,然后根据需要添加 LAUNCHDARKLY_SDK_KEY、LAUNCHDARKLY_CLIENT_SIDE_ID / 带打包工具前缀的客户端 ID,或 LAUNCHDARKLY_MOBILE_KEY(关于变量名称、使用真实值前征求同意以及服务器与客户端混合场景,请参见应用代码更改第 2 步)。计划检查该目录下的 .gitignore 是否包含 .env(如果缺少则添加,并遵循其他仓库修改所需的相同用户许可)。
  • .env.example / .env.sample: 如果存在,计划仅添加占位符条目(不得包含真实密钥)。
  • 配置模块或 process.env: 如果项目不使用 .env,则计划遵循现有的密钥配置模式。

呈现计划

进行任何更改前,先向用户概述计划。

单个 SDK:

  1. 使用 [install command] 安装 [package name]
  2. 将 SDK 依赖项添加到 [dependency file]
  3. 在 [entrypoint file] 中添加导入和初始化代码
  4. 将 [env var] 添加到 .env(如果文件不存在,则创建;获得用户同意后再填写真实值)
  5. 确保 .env 位于 .gitignore 中
  6. 如果项目使用 .env.example,则在其中添加占位符

除非用户明确批准其他依赖项变更,否则只添加 LaunchDarkly SDK 软件包。

双 SDK: 对每个轨道分别使用相同的编号格式(例如,“服务端:”步骤 1-7,然后“客户端:”步骤 1-7),并遵循双 SDK 集成。不要遗漏第二个轨道。

呈现计划后:

D6——非阻塞(除非用户反对,否则继续): 向用户呈现计划摘要,并附上类似“接下来我会按此计划操作——如果有任何问题,请说‘停止’或告诉我。”的说明。然后继续执行应用代码更改,无需等待用户明确批准。如果用户反对或指出问题,则停止并调整计划后再继续。

此流程特意设为非阻塞,以减少繁琐步骤。用户可以随时查看计划并打断。真正的安全门槛是应用步骤中的 D7(密钥同意)和 D8(非 LD 依赖项变更)。

如果入口点不明确,或可能适用多个 SDK,则这些特定问题必须阻塞流程——在呈现计划时使用结构化提问工具提出问题,并等待答复后再继续。

不要在计划确认时索要 SDK 密钥、客户端 ID 或移动端密钥——父流程会在应用代码更改时收集这些信息。上方的密钥类型列仅用于技术规划,不是索取机密信息的提示。

不要承诺或暗示会升级无关依赖项以满足最新 SDK 的要求——应用要求在更改任何非 LaunchDarkly 软件包前获得明确批准。


完成后:应用代码更改

评论

支持 Markdown