Help us improve
Share bugs, ideas, or general feedback.
From launchdarkly
Guides you through setting up LaunchDarkly projects in your codebase. Explores your stack, chooses the right approach, and integrates project management with API or MCP.
npx claudepluginhub launchdarkly/ai-toolingHow this skill is triggered — by the user, by Claude, or both
Slash command
/launchdarkly:projectsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You're using a skill that will guide you through setting up LaunchDarkly project management in a codebase. Your job is to explore the codebase to understand the stack and patterns, assess what approach makes sense, choose the right implementation path from the references, execute the setup, and verify it works.
Guides LaunchDarkly onboarding: roadmap, resumable log, repo exploration, MCP configuration, SDK installation, and first feature flag.
Automates LaunchDarkly feature flag management: list projects and environments, create/delete trigger workflows, and track code references via Composio MCP integration.
Produces a feature flag management playbook covering taxonomy, rollout strategy, monitoring, cleanup, and governance. Use when asked to document flag practices or create a rollout plan.
Share bugs, ideas, or general feedback.
You're using a skill that will guide you through setting up LaunchDarkly project management in a codebase. Your job is to explore the codebase to understand the stack and patterns, assess what approach makes sense, choose the right implementation path from the references, execute the setup, and verify it works.
Choose one:
projects:write permissionBefore prompting the user for an API key, try to detect it automatically:
LAUNCHDARKLY_API_KEY, LAUNCHDARKLY_API_TOKEN, or LD_API_KEY~/.claude/config.json for mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEYSee Quick Start for API usage patterns.
Projects are LaunchDarkly's top-level organizational containers that hold:
Think of projects as separate applications, services, or teams that need their own isolated set of configurations.
Before implementing anything, understand the existing architecture:
Identify the tech stack:
Check environment management:
Look for patterns:
Understand the use case:
Based on your exploration, determine the right approach:
| Scenario | Recommended Path |
|---|---|
| New project, no LaunchDarkly integration | Quick Setup - Create project and save SDK keys |
| Existing LaunchDarkly usage | Add to Existing - Create new project or use existing |
| Multiple services/microservices | Multi-Project - Create projects per service |
| Multi-region or multi-tenant | Project Cloning - Clone template project |
| Infrastructure-as-Code (IaC) setup | Automated Setup - Script-based creation |
| Need project management tooling | CLI/Admin Tools - Build project management utilities |
Select the reference guide that matches your stack and use case:
By Language/Stack:
By Use Case:
Follow the chosen reference guide to implement project management. Key considerations:
API Authentication:
Project Naming:
SDK Key Management:
Error Handling:
After creating the project, verify it works:
Fetch to confirm it exists. Prefer the MCP get-project tool over raw curl — it returns a typed object you can inspect directly. If you must call the REST API:
curl -X GET "https://app.launchdarkly.com/api/v2/projects/{projectKey}?expand=environments" \
-H "Authorization: {api_token}"
Do not pipe the response straight into a .environments.items[]-style jq filter. The shape of environments varies by expand parameter — sometimes it's {items: [...]}, sometimes a bare array — and a hand-rolled filter will fail with Cannot index array with string "items". Run jq -e . first to inspect the actual shape, or use jq '.environments | if type == "object" then .items else . end' to handle both.
Test SDK integration: Run a quick verification to ensure the SDK key works:
import ldclient
from ldclient.config import Config
ldclient.set_config(Config("{sdk_key}"))
# SDK initializes successfully
# Always flush events before closing — trailing events are at risk of being
# lost otherwise, in short-lived scripts and long-running services alike.
ldclient.get().flush()
ldclient.get().close()
Report results:
Project keys must follow these rules:
✓ 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
Naming Recommendations:
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
| Situation | Action |
|---|---|
| Project already exists | Check if it's the right one; use it or create with different key |
| Need multiple projects | Create separately for each service/region/team |
| Shared configs across services | Use same project, separate by SDK context |
| Token lacks permissions | Request projects:write or use MCP server |
| Project name conflict | Keys must be unique, names can be similar |
After setting up projects:
configs-create skillsdk skillconfigs-targeting skillconfigs-create - Create configs in projectssdk - Integrate SDK in your applicationconfigs-targeting - Configure config targetingconfigs-variations - Manage config variations