projects について
コードベースに LaunchDarkly のプロジェクト管理を導入するためのスキルです。コードベースの調査から実装方法の選択、統合、動作確認までを案内します。
主な機能
- 01技術スタックと既存パターンの調査
- 02プロジェクト設定方法の選択
- 03LaunchDarkly プロジェクトの作成・利用
- 04SDK キーの設定と管理
- 05プロジェクトと SDK 統合の検証
活用シーン
- 01新しいコードベースへの LaunchDarkly 導入
- 02サービスや地域別のプロジェクト編成
- 03プロジェクト作成スクリプトや管理ツールの構築
MCP 対応
LaunchDarkly MCP サーバーのツールでプロジェクトの作成、確認、一覧表示を行います。MCP ツールはサーバー側 SDK キーを返さず、README では別の取得方法を説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ launchdarkly/ ai-tooling --skill projectsインストール後、Claude Code で/projectsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/admin-tooling.mdenv-config.mdgo-setup.mdiac-automation.mdmulti-language-setup.mdnodejs-setup.mdproject-cloning.mdpython-setup.mdquick-start.md詳細
LaunchDarkly プロジェクトのセットアップ
このスキルを使って、コードベースに LaunchDarkly のプロジェクト管理を設定します。コードベースを調査して、技術スタックやパターンを把握し、適切な方法を判断し、参考資料から適切な実装方法を選んでセットアップを実行し、動作を検証します。
前提条件
- 環境に設定済みのリモートホスト型 LaunchDarkly MCP サーバー
- プロジェクトを作成するコード(スクリプト、IaC、管理ツール)を構築する場合に限り、
projects:write権限を持つ API アクセストークン
基本原則
- まず理解する:コードベースを調査して、技術スタックやパターンを把握します。
- 最適な方法を選ぶ:アーキテクチャに合った方法を選択します。
- 規約に従う:既存のコードスタイルと構成を尊重します。
- 統合を検証する:セットアップが機能することを確認します。エージェントがチェックを実行し、結果を報告します。
API アクセス
プロジェクトを自分で作成または確認する場合は、LaunchDarkly MCP サーバーのツールである create-project、get-project、list-projects を使用します。これらは OAuth で認証されるため、トークンは不要です。
MCP ツールが返すのはクライアント側の ID とモバイルキーのみで、サーバー側の SDK キーは返しません。アプリに必要な SDK キーを取得するには、Project settings → Environments からコピーするようユーザーに依頼します。または、希望する場合は、このセッション用の API アクセストークンを貼り付けてもらい、REST API 経由で取得します(クイックスタート)。環境変数、.env ファイル、エージェント/MCP 設定ファイルから認証情報を探してはいけません。
参考ガイドでは、エージェントなしで実行するコードを構築するため、REST API を呼び出しています。
プロジェクトとは?
プロジェクトは LaunchDarkly の最上位の組織コンテナーで、次のものを含みます。
- すべての設定
- フィーチャーフラグとセグメント
- 複数の環境(Production と Test がデフォルトで作成されます)
プロジェクトは、それぞれ独立した設定を必要とする別個のアプリケーション、サービス、またはチームと考えてください。
プロジェクトのセットアップワークフロー
ステップ 1:コードベースを調査する
実装を始める前に、既存のアーキテクチャを把握します。
-
技術スタックを特定する:
- 使用している言語は何ですか?(Python、Node.js、Go、Java など)
- 使用しているフレームワークは何ですか?(FastAPI、Express、Spring Boot など)
- 既存の LaunchDarkly 統合はありますか?
-
環境管理を確認する:
- 環境変数はどのように保存されていますか?(
.envファイル、シークレットマネージャー、設定ファイル) - 設定はどこで読み込まれますか?(起動スクリプト、設定モジュール)
- 既存の LaunchDarkly SDK キーはありますか?
- 環境変数はどのように保存されていますか?(
-
パターンを調べる:
- 既存の API クライアントやサービスモジュールはありますか?
- 外部 API との統合は通常どのように行われていますか?
- CLI、スクリプトディレクトリ、または管理ツールはありますか?
-
ユースケースを把握する:
- 新しいプロジェクトをセットアップしていますか?
- 既存の LaunchDarkly 統合に追加していますか?
- 複数サービスのアーキテクチャの一部ですか?
- リージョンやチームをまたいでプロジェクトを複製する必要がありますか?
ステップ 2:状況を評価する
調査結果に基づいて、適切な方法を判断します。
| シナリオ | 推奨される方法 |
|---|---|
| 新規プロジェクトで、LaunchDarkly 統合がない | クイックセットアップ - create-project でプロジェクトを作成し、SDK キーを保存する |
| 既存の LaunchDarkly の使用 | 既存環境への追加 - 新しいプロジェクトを作成するか、既存のプロジェクトを使用する |
| 複数のサービス/マイクロサービス | マルチプロジェクト - サービスごとにプロジェクトを作成する |
| マルチリージョンまたはマルチテナント | プロジェクトの複製 - テンプレートプロジェクトを複製する |
| Infrastructure-as-Code(IaC)のセットアップ | 自動セットアップ - スクリプトベースで作成する |
| プロジェクト管理ツールが必要 | CLI/管理ツール - プロジェクト管理ユーティリティを構築する |
ステップ 3:実装方法を選択する
ご利用の技術スタックとユースケースに合ったリファレンスガイドを選択してください。
言語/スタック別:
- Python の実装 - Python アプリケーション向け(FastAPI、Django、Flask)
- Node.js/TypeScript の実装 - Node.js/Express/NestJS アプリケーション向け
- Go の実装 - Go サービス向け
- 複数言語のセットアップ - 複数言語を組み合わせたアーキテクチャ向け
ユースケース別:
- クイックスタート - 最初のプロジェクトを作成して SDK キーを取得する
- 環境設定 - SDK キーを .env、シークレット、または設定に保存する
- プロジェクトのクローン - リージョン/チーム向けにプロジェクトをクローンする
- IaC/自動化 - Terraform、スクリプト、CI/CD との統合
- 管理ツール - CLI または管理ユーティリティを構築する
ステップ 4:統合を実装する
選択したリファレンスガイドに従って、プロジェクト管理を実装してください。主な注意事項は次のとおりです。
-
API 認証:
- API トークンを安全に保管する
- 既存のシークレット管理パターンに従う
- トークンをバージョン管理にコミットしない
-
プロジェクト名:
- 一貫性のある、わかりやすい名前を使用する
- 既存の命名規則に従う
- プロジェクトキー:小文字、ハイフンを使用し、英字で始める
-
SDK キーの管理:
- 各環境の SDK キーを取り出して保存する
- アプリケーションが使用するキーを
LD_SDK_KEYとして保存します。Python と Node.js の AI SDK はこの変数を読み取り、最初の AI 呼び出し時に初期化します。LAUNCHDARKLY_SDK_KEYは読み取りません。 - コードベース内の他のシークレットと同じパターンを使用する
- テスト/ステージング/本番環境で個別のキーを使用することを検討する
-
エラー処理:
- 既存のプロジェクトを適切に処理する(409 conflict)
- 明確なエラーメッセージを表示する
- エラーを黙って無視しない
ステップ 5:セットアップを確認する
プロジェクトの作成後、正常に動作することを確認してください。
-
取得して存在を確認します。
get-projectMCP ツールを呼び出し、プロジェクトに環境があることを確認します。MCP にアクセスできないコードからは、代わりに REST API を呼び出せます。curl -X GET "https://app.launchdarkly.com/api/v2/projects/{projectKey}?expand=environments" \ -H "Authorization: {api_token}"レスポンスをそのまま
.environments.items[]のようなjqフィルターにパイプしないでください。environmentsの形式はexpandパラメーターによって異なり、{items: [...]}の場合もあれば、配列そのものの場合もあります。独自に作成したフィルターはCannot index array with string "items"というエラーで失敗します。まずjq -e .を実行して実際の形式を確認するか、両方に対応するためにjq '.environments | if type == "object" then .items else . end'を使用してください。 -
SDK 統合をテストします。
.envにキーをLD_SDK_KEYとして設定し、プロジェクトディレクトリから AI SDK を初期化します。Python ではpip install launchdarkly-server-sdk launchdarkly-ai-server python-dotenvが必要です。import asyncio from dotenv import load_dotenv from launchdarkly_ai_server import init_client, get_client, shutdown load_dotenv() async def main(): await init_client() print("SDK initialized:", get_client().is_initialized()) # shutdown() flushes pending events before closing the connection. await shutdown() asyncio.run(main())Node.js では
npm install @launchdarkly/ai-node dotenvが必要です。import 'dotenv/config'; import { initClient, shutdown } from '@launchdarkly/ai-node'; // Resolves once connected; throws LDTimeoutError if the key is invalid await initClient(); console.log('SDK initialized: true'); await shutdown();有効なキーの場合、
SDK initialized: True(Python)またはtrue(Node.js)が出力されます。無効なキーの場合、Python はHTTP error 401 (invalid SDK key)をログに記録してFalseを出力し、Node.js は 10 秒後にLDTimeoutErrorをスローします。キーがない場合は、どちらもLD_SDK_KEYを求めるエラーを発生させます。 -
結果を報告します:
- ✓ プロジェクトが存在し、環境がある
- ✓ SDK キーが設定され、有効である
- ✓ SDK が初期化できる(または問題があれば報告する)
プロジェクトキーのベストプラクティス
プロジェクトキーは次のルールに従う必要があります。
✓ Good examples:
- "support-ai"
- "chat-bot-v2"
- "internal-tools"
✗ Bad examples:
- "Support_AI" # No uppercase or underscores
- "123-project" # Must start with letter
- "my.project" # No dots allowed
命名の推奨事項:
- キーは短く、わかりやすいものにする
- チーム/サービス/目的を命名の基準にする
- 組織全体で一貫性を保つ
よくある組織のパターン
チーム別
platform-ai → Platform Team Agent
customer-ai → Customer Success Team Agent
internal-ai → Internal Tools Team Agent
アプリケーション/サービス別
mobile-ai → Mobile App configs
web-ai → Web App configs
api-ai → API Service configs
リージョン/デプロイ別
ai-us → US Region
ai-eu → Europe Region
ai-apac → Asia-Pacific Region
エッジケース
| 状況 | 対応 |
|---|---|
| プロジェクトがすでに存在する | それが適切なプロジェクトか確認し、使用するか、別のキーで作成します |
| 複数のプロジェクトが必要 | サービス/リージョン/チームごとに個別に作成します |
| 複数のサービスで設定を共有する | 同じプロジェクトを使用し、SDK コンテキストで分けます |
| トークンに権限がない | projects:write をリクエストするか、MCP サーバーを使用します |
| プロジェクト名が競合する | キーは一意である必要がありますが、名前は似ていてもかまいません |
やってはいけないこと
- ユースケースを事前に把握せずにプロジェクトを作成しないでください
- API トークンや SDK キーをバージョン管理にコミットしないでください
- テスト/開発環境で本番用 SDK キーを使用しないでください
- 不必要に重複したプロジェクトを作成しないでください
- 調査段階を省略しないでください
次のステップ
プロジェクトのセットアップ後:
- 設定を作成する -
configs-createスキルを使用します - SDK 統合をセットアップする -
sdk-installスキルを使用します - ターゲティングを設定する -
configs-targetingスキルを使用します
関連スキル
configs-create- プロジェクト内に設定を作成しますsdk-install- アプリケーションに SDK を統合しますconfigs-targeting- 設定のターゲティングを行いますconfigs-variations- 設定のバリエーションを管理します