[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-launchdarkly-projects":3,"mdc-622d4k-key":34,"related-org-launchdarkly-projects":1543,"related-repo-launchdarkly-projects":1677},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":29,"sourceUrl":32,"mdContent":33},"projects","set up LaunchDarkly projects","Guide for setting up LaunchDarkly projects in your codebase. Helps you assess your stack, choose the right approach, and integrate project management that makes sense for your architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"launchdarkly","LaunchDarkly","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Flaunchdarkly.png",[12,16,19],{"name":13,"slug":14,"type":15},"Architecture","architecture","tag",{"name":17,"slug":18,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},20,"https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling","2026-05-22T06:55:31.042184",null,6,[26,27,28],"agent-skills","launchdarkly-ai","managed-by-terraform",{"repoUrl":21,"stars":20,"forks":24,"topics":30,"description":31},[26,27,28],"LaunchDarkly's official AI tooling","https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling\u002Ftree\u002FHEAD\u002Fskills\u002Fagentcontrol\u002Fprojects","---\nname: projects\ndescription: Guide for setting up LaunchDarkly projects in your codebase. Helps you assess your stack, choose the right approach, and integrate project management that makes sense for your architecture.\ncompatibility: Requires LaunchDarkly API access token with projects:write permission or LaunchDarkly MCP server.\nmetadata:\n  author: launchdarkly\n  version: \"0.4.0\"\n---\n\n# LaunchDarkly Projects Setup\n\nYou'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.\n\n## Prerequisites\n\n**Choose one:**\n- LaunchDarkly API access token with `projects:write` permission\n- LaunchDarkly MCP server configured in your environment\n\n## Core Principles\n\n1. **Understand First**: Explore the codebase to understand the stack and patterns.\n2. **Choose the Right Fit**: Select an approach that matches your architecture.\n3. **Follow Conventions**: Respect existing code style and structure.\n4. **Verify Integration**: Confirm the setup works: the agent performs checks and reports results.\n\n## API Key Detection\n\nBefore prompting the user for an API key, try to detect it automatically:\n\n1. **Check environment variables**: Look for `LAUNCHDARKLY_API_KEY`, `LAUNCHDARKLY_API_TOKEN`, or `LD_API_KEY`\n2. **Check MCP config**: If using Claude, read `~\u002F.claude\u002Fconfig.json` for `mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEY`\n3. **Prompt user**: Only if detection fails, ask the user for their API key\n\nSee [Quick Start](references\u002Fquick-start.md) for API usage patterns.\n\n## What Are Projects?\n\nProjects are LaunchDarkly's top-level organizational containers that hold:\n- All your configs\n- Feature flags and segments  \n- Multiple environments (Production and Test created by default)\n\nThink of projects as separate applications, services, or teams that need their own isolated set of configurations.\n\n## Project Setup Workflow\n\n### Step 1: Explore the Codebase\n\nBefore implementing anything, understand the existing architecture:\n\n1. **Identify the tech stack:**\n   - What language(s)? (Python, Node.js, Go, Java, etc.)\n   - What framework(s)? (FastAPI, Express, Spring Boot, etc.)\n   - Is there an existing LaunchDarkly integration?\n\n2. **Check environment management:**\n   - How are environment variables stored? (.env files, secrets manager, config files)\n   - Where is configuration loaded? (startup scripts, config modules)\n   - Are there existing LaunchDarkly SDK keys?\n\n3. **Look for patterns:**\n   - Are there existing API clients or service modules?\n   - How is external API integration typically done?\n   - Is there a CLI, scripts directory, or admin tooling?\n\n4. **Understand the use case:**\n   - Is this a new project being set up?\n   - Adding to an existing LaunchDarkly integration?\n   - Part of a multi-service architecture?\n   - Need for project cloning across regions\u002Fteams?\n\n### Step 2: Assess the Situation\n\nBased on your exploration, determine the right approach:\n\n| Scenario | Recommended Path |\n|----------|------------------|\n| New project, no LaunchDarkly integration | **Quick Setup** - Create project and save SDK keys |\n| Existing LaunchDarkly usage | **Add to Existing** - Create new project or use existing |\n| Multiple services\u002Fmicroservices | **Multi-Project** - Create projects per service |\n| Multi-region or multi-tenant | **Project Cloning** - Clone template project |\n| Infrastructure-as-Code (IaC) setup | **Automated Setup** - Script-based creation |\n| Need project management tooling | **CLI\u002FAdmin Tools** - Build project management utilities |\n\n### Step 3: Choose Your Implementation Path\n\nSelect the reference guide that matches your stack and use case:\n\n**By Language\u002FStack:**\n- [Python Implementation](references\u002Fpython-setup.md) - For Python applications (FastAPI, Django, Flask)\n- [Node.js\u002FTypeScript Implementation](references\u002Fnodejs-setup.md) - For Node.js\u002FExpress\u002FNestJS applications\n- [Go Implementation](references\u002Fgo-setup.md) - For Go services\n- [Multi-Language Setup](references\u002Fmulti-language-setup.md) - For polyglot architectures\n\n**By Use Case:**\n- [Quick Start](references\u002Fquick-start.md) - Create first project and get SDK keys\n- [Environment Configuration](references\u002Fenv-config.md) - Save SDK keys to .env, secrets, or config\n- [Project Cloning](references\u002Fproject-cloning.md) - Clone projects for regions\u002Fteams\n- [IaC\u002FAutomation](references\u002Fiac-automation.md) - Terraform, scripts, CI\u002FCD integration\n- [Admin Tooling](references\u002Fadmin-tooling.md) - Build CLI or admin utilities\n\n### Step 4: Implement the Integration\n\nFollow the chosen reference guide to implement project management. Key considerations:\n\n1. **API Authentication:**\n   - Store API token securely\n   - Follow existing secrets management patterns\n   - Never commit tokens to version control\n\n2. **Project Naming:**\n   - Use consistent, descriptive names\n   - Follow existing naming conventions\n   - Project keys: lowercase, hyphens, start with letter\n\n3. **SDK Key Management:**\n   - Extract and store SDK keys for each environment\n   - Use the same pattern as other secrets in your codebase\n   - Consider separate keys for test\u002Fstaging\u002Fproduction\n\n4. **Error Handling:**\n   - Handle existing projects gracefully (409 conflict)\n   - Provide clear error messages\n   - Don't fail silently\n\n### Step 5: Verify the Setup\n\nAfter creating the project, verify it works:\n\n1. **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:\n   ```bash\n   curl -X GET \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}?expand=environments\" \\\n     -H \"Authorization: {api_token}\"\n   ```\n   **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.\n\n2. **Test SDK integration:**\n   Run a quick verification to ensure the SDK key works:\n   ```python\n   import ldclient\n   from ldclient.config import Config\n\n   ldclient.set_config(Config(\"{sdk_key}\"))\n   # SDK initializes successfully\n\n   # Always flush events before closing — trailing events are at risk of being\n   # lost otherwise, in short-lived scripts and long-running services alike.\n   ldclient.get().flush()\n   ldclient.get().close()\n   ```\n\n3. **Report results:**\n   - ✓ Project exists and has environments\n   - ✓ SDK keys are present and valid\n   - ✓ SDK can initialize (or flag any issues)\n\n## Project Key Best Practices\n\nProject keys must follow these rules:\n\n```\n✓ Good examples:\n  - \"support-ai\"\n  - \"chat-bot-v2\"\n  - \"internal-tools\"\n\n✗ Bad examples:\n  - \"Support_AI\"     # No uppercase or underscores\n  - \"123-project\"    # Must start with letter  \n  - \"my.project\"     # No dots allowed\n```\n\n**Naming Recommendations:**\n- Keep keys short but descriptive\n- Use team\u002Fservice\u002Fpurpose as naming scheme\n- Be consistent across your organization\n\n## Common Organization Patterns\n\n### By Team\n```\nplatform-ai       → Platform Team Agent\ncustomer-ai       → Customer Success Team Agent\ninternal-ai       → Internal Tools Team Agent\n```\n\n### By Application\u002FService\n```\nmobile-ai         → Mobile App configs\nweb-ai            → Web App configs\napi-ai            → API Service configs\n```\n\n### By Region\u002FDeployment\n```\nai-us             → US Region\nai-eu             → Europe Region\nai-apac           → Asia-Pacific Region\n```\n\n## Edge Cases\n\n| Situation | Action |\n|-----------|--------|\n| Project already exists | Check if it's the right one; use it or create with different key |\n| Need multiple projects | Create separately for each service\u002Fregion\u002Fteam |\n| Shared configs across services | Use same project, separate by SDK context |\n| Token lacks permissions | Request `projects:write` or use MCP server |\n| Project name conflict | Keys must be unique, names can be similar |\n\n## What NOT to Do\n\n- Don't create projects without understanding the use case first\n- Don't commit API tokens or SDK keys to version control\n- Don't use production SDK keys in test\u002Fdevelopment environments\n- Don't create duplicate projects unnecessarily\n- Don't skip the exploration phase\n\n## Next Steps\n\nAfter setting up projects:\n\n1. **Create configs** - Use the `configs-create` skill\n2. **Set up SDK Integration** - Use the `sdk` skill\n3. **Configure Targeting** - Use the `configs-targeting` skill\n\n## Related Skills\n\n- `configs-create` - Create configs in projects\n- `sdk` - Integrate SDK in your application\n- `configs-targeting` - Configure config targeting\n- `configs-variations` - Manage config variations\n\n## References\n\n- [Python Implementation](references\u002Fpython-setup.md)\n- [Node.js Implementation](references\u002Fnodejs-setup.md)\n- [Go Implementation](references\u002Fgo-setup.md)\n- [Quick Start Guide](references\u002Fquick-start.md)\n- [Environment Configuration](references\u002Fenv-config.md)\n- [Project Cloning](references\u002Fproject-cloning.md)\n- [IaC\u002FAutomation](references\u002Fiac-automation.md)\n- [Admin Tooling](references\u002Fadmin-tooling.md)\n",{"data":35,"body":39},{"name":4,"description":6,"compatibility":36,"metadata":37},"Requires LaunchDarkly API access token with projects:write permission or LaunchDarkly MCP server.",{"author":8,"version":38},"0.4.0",{"type":40,"children":41},"root",[42,51,57,64,73,97,103,147,153,158,227,241,247,252,270,275,281,288,293,405,411,416,552,558,563,571,618,626,681,687,692,799,805,810,1124,1130,1135,1145,1153,1171,1177,1183,1192,1198,1207,1213,1222,1228,1322,1328,1356,1362,1367,1420,1426,1470,1476,1537],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"launchdarkly-projects-setup",[48],{"type":49,"value":50},"text","LaunchDarkly Projects Setup",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"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.",{"type":43,"tag":58,"props":59,"children":61},"h2",{"id":60},"prerequisites",[62],{"type":49,"value":63},"Prerequisites",{"type":43,"tag":52,"props":65,"children":66},{},[67],{"type":43,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":49,"value":72},"Choose one:",{"type":43,"tag":74,"props":75,"children":76},"ul",{},[77,92],{"type":43,"tag":78,"props":79,"children":80},"li",{},[81,83,90],{"type":49,"value":82},"LaunchDarkly API access token with ",{"type":43,"tag":84,"props":85,"children":87},"code",{"className":86},[],[88],{"type":49,"value":89},"projects:write",{"type":49,"value":91}," permission",{"type":43,"tag":78,"props":93,"children":94},{},[95],{"type":49,"value":96},"LaunchDarkly MCP server configured in your environment",{"type":43,"tag":58,"props":98,"children":100},{"id":99},"core-principles",[101],{"type":49,"value":102},"Core Principles",{"type":43,"tag":104,"props":105,"children":106},"ol",{},[107,117,127,137],{"type":43,"tag":78,"props":108,"children":109},{},[110,115],{"type":43,"tag":68,"props":111,"children":112},{},[113],{"type":49,"value":114},"Understand First",{"type":49,"value":116},": Explore the codebase to understand the stack and patterns.",{"type":43,"tag":78,"props":118,"children":119},{},[120,125],{"type":43,"tag":68,"props":121,"children":122},{},[123],{"type":49,"value":124},"Choose the Right Fit",{"type":49,"value":126},": Select an approach that matches your architecture.",{"type":43,"tag":78,"props":128,"children":129},{},[130,135],{"type":43,"tag":68,"props":131,"children":132},{},[133],{"type":49,"value":134},"Follow Conventions",{"type":49,"value":136},": Respect existing code style and structure.",{"type":43,"tag":78,"props":138,"children":139},{},[140,145],{"type":43,"tag":68,"props":141,"children":142},{},[143],{"type":49,"value":144},"Verify Integration",{"type":49,"value":146},": Confirm the setup works: the agent performs checks and reports results.",{"type":43,"tag":58,"props":148,"children":150},{"id":149},"api-key-detection",[151],{"type":49,"value":152},"API Key Detection",{"type":43,"tag":52,"props":154,"children":155},{},[156],{"type":49,"value":157},"Before prompting the user for an API key, try to detect it automatically:",{"type":43,"tag":104,"props":159,"children":160},{},[161,193,217],{"type":43,"tag":78,"props":162,"children":163},{},[164,169,171,177,179,185,187],{"type":43,"tag":68,"props":165,"children":166},{},[167],{"type":49,"value":168},"Check environment variables",{"type":49,"value":170},": Look for ",{"type":43,"tag":84,"props":172,"children":174},{"className":173},[],[175],{"type":49,"value":176},"LAUNCHDARKLY_API_KEY",{"type":49,"value":178},", ",{"type":43,"tag":84,"props":180,"children":182},{"className":181},[],[183],{"type":49,"value":184},"LAUNCHDARKLY_API_TOKEN",{"type":49,"value":186},", or ",{"type":43,"tag":84,"props":188,"children":190},{"className":189},[],[191],{"type":49,"value":192},"LD_API_KEY",{"type":43,"tag":78,"props":194,"children":195},{},[196,201,203,209,211],{"type":43,"tag":68,"props":197,"children":198},{},[199],{"type":49,"value":200},"Check MCP config",{"type":49,"value":202},": If using Claude, read ",{"type":43,"tag":84,"props":204,"children":206},{"className":205},[],[207],{"type":49,"value":208},"~\u002F.claude\u002Fconfig.json",{"type":49,"value":210}," for ",{"type":43,"tag":84,"props":212,"children":214},{"className":213},[],[215],{"type":49,"value":216},"mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEY",{"type":43,"tag":78,"props":218,"children":219},{},[220,225],{"type":43,"tag":68,"props":221,"children":222},{},[223],{"type":49,"value":224},"Prompt user",{"type":49,"value":226},": Only if detection fails, ask the user for their API key",{"type":43,"tag":52,"props":228,"children":229},{},[230,232,239],{"type":49,"value":231},"See ",{"type":43,"tag":233,"props":234,"children":236},"a",{"href":235},"references\u002Fquick-start.md",[237],{"type":49,"value":238},"Quick Start",{"type":49,"value":240}," for API usage patterns.",{"type":43,"tag":58,"props":242,"children":244},{"id":243},"what-are-projects",[245],{"type":49,"value":246},"What Are Projects?",{"type":43,"tag":52,"props":248,"children":249},{},[250],{"type":49,"value":251},"Projects are LaunchDarkly's top-level organizational containers that hold:",{"type":43,"tag":74,"props":253,"children":254},{},[255,260,265],{"type":43,"tag":78,"props":256,"children":257},{},[258],{"type":49,"value":259},"All your configs",{"type":43,"tag":78,"props":261,"children":262},{},[263],{"type":49,"value":264},"Feature flags and segments",{"type":43,"tag":78,"props":266,"children":267},{},[268],{"type":49,"value":269},"Multiple environments (Production and Test created by default)",{"type":43,"tag":52,"props":271,"children":272},{},[273],{"type":49,"value":274},"Think of projects as separate applications, services, or teams that need their own isolated set of configurations.",{"type":43,"tag":58,"props":276,"children":278},{"id":277},"project-setup-workflow",[279],{"type":49,"value":280},"Project Setup Workflow",{"type":43,"tag":282,"props":283,"children":285},"h3",{"id":284},"step-1-explore-the-codebase",[286],{"type":49,"value":287},"Step 1: Explore the Codebase",{"type":43,"tag":52,"props":289,"children":290},{},[291],{"type":49,"value":292},"Before implementing anything, understand the existing architecture:",{"type":43,"tag":104,"props":294,"children":295},{},[296,322,348,374],{"type":43,"tag":78,"props":297,"children":298},{},[299,304],{"type":43,"tag":68,"props":300,"children":301},{},[302],{"type":49,"value":303},"Identify the tech stack:",{"type":43,"tag":74,"props":305,"children":306},{},[307,312,317],{"type":43,"tag":78,"props":308,"children":309},{},[310],{"type":49,"value":311},"What language(s)? (Python, Node.js, Go, Java, etc.)",{"type":43,"tag":78,"props":313,"children":314},{},[315],{"type":49,"value":316},"What framework(s)? (FastAPI, Express, Spring Boot, etc.)",{"type":43,"tag":78,"props":318,"children":319},{},[320],{"type":49,"value":321},"Is there an existing LaunchDarkly integration?",{"type":43,"tag":78,"props":323,"children":324},{},[325,330],{"type":43,"tag":68,"props":326,"children":327},{},[328],{"type":49,"value":329},"Check environment management:",{"type":43,"tag":74,"props":331,"children":332},{},[333,338,343],{"type":43,"tag":78,"props":334,"children":335},{},[336],{"type":49,"value":337},"How are environment variables stored? (.env files, secrets manager, config files)",{"type":43,"tag":78,"props":339,"children":340},{},[341],{"type":49,"value":342},"Where is configuration loaded? (startup scripts, config modules)",{"type":43,"tag":78,"props":344,"children":345},{},[346],{"type":49,"value":347},"Are there existing LaunchDarkly SDK keys?",{"type":43,"tag":78,"props":349,"children":350},{},[351,356],{"type":43,"tag":68,"props":352,"children":353},{},[354],{"type":49,"value":355},"Look for patterns:",{"type":43,"tag":74,"props":357,"children":358},{},[359,364,369],{"type":43,"tag":78,"props":360,"children":361},{},[362],{"type":49,"value":363},"Are there existing API clients or service modules?",{"type":43,"tag":78,"props":365,"children":366},{},[367],{"type":49,"value":368},"How is external API integration typically done?",{"type":43,"tag":78,"props":370,"children":371},{},[372],{"type":49,"value":373},"Is there a CLI, scripts directory, or admin tooling?",{"type":43,"tag":78,"props":375,"children":376},{},[377,382],{"type":43,"tag":68,"props":378,"children":379},{},[380],{"type":49,"value":381},"Understand the use case:",{"type":43,"tag":74,"props":383,"children":384},{},[385,390,395,400],{"type":43,"tag":78,"props":386,"children":387},{},[388],{"type":49,"value":389},"Is this a new project being set up?",{"type":43,"tag":78,"props":391,"children":392},{},[393],{"type":49,"value":394},"Adding to an existing LaunchDarkly integration?",{"type":43,"tag":78,"props":396,"children":397},{},[398],{"type":49,"value":399},"Part of a multi-service architecture?",{"type":43,"tag":78,"props":401,"children":402},{},[403],{"type":49,"value":404},"Need for project cloning across regions\u002Fteams?",{"type":43,"tag":282,"props":406,"children":408},{"id":407},"step-2-assess-the-situation",[409],{"type":49,"value":410},"Step 2: Assess the Situation",{"type":43,"tag":52,"props":412,"children":413},{},[414],{"type":49,"value":415},"Based on your exploration, determine the right approach:",{"type":43,"tag":417,"props":418,"children":419},"table",{},[420,439],{"type":43,"tag":421,"props":422,"children":423},"thead",{},[424],{"type":43,"tag":425,"props":426,"children":427},"tr",{},[428,434],{"type":43,"tag":429,"props":430,"children":431},"th",{},[432],{"type":49,"value":433},"Scenario",{"type":43,"tag":429,"props":435,"children":436},{},[437],{"type":49,"value":438},"Recommended Path",{"type":43,"tag":440,"props":441,"children":442},"tbody",{},[443,462,480,498,516,534],{"type":43,"tag":425,"props":444,"children":445},{},[446,452],{"type":43,"tag":447,"props":448,"children":449},"td",{},[450],{"type":49,"value":451},"New project, no LaunchDarkly integration",{"type":43,"tag":447,"props":453,"children":454},{},[455,460],{"type":43,"tag":68,"props":456,"children":457},{},[458],{"type":49,"value":459},"Quick Setup",{"type":49,"value":461}," - Create project and save SDK keys",{"type":43,"tag":425,"props":463,"children":464},{},[465,470],{"type":43,"tag":447,"props":466,"children":467},{},[468],{"type":49,"value":469},"Existing LaunchDarkly usage",{"type":43,"tag":447,"props":471,"children":472},{},[473,478],{"type":43,"tag":68,"props":474,"children":475},{},[476],{"type":49,"value":477},"Add to Existing",{"type":49,"value":479}," - Create new project or use existing",{"type":43,"tag":425,"props":481,"children":482},{},[483,488],{"type":43,"tag":447,"props":484,"children":485},{},[486],{"type":49,"value":487},"Multiple services\u002Fmicroservices",{"type":43,"tag":447,"props":489,"children":490},{},[491,496],{"type":43,"tag":68,"props":492,"children":493},{},[494],{"type":49,"value":495},"Multi-Project",{"type":49,"value":497}," - Create projects per service",{"type":43,"tag":425,"props":499,"children":500},{},[501,506],{"type":43,"tag":447,"props":502,"children":503},{},[504],{"type":49,"value":505},"Multi-region or multi-tenant",{"type":43,"tag":447,"props":507,"children":508},{},[509,514],{"type":43,"tag":68,"props":510,"children":511},{},[512],{"type":49,"value":513},"Project Cloning",{"type":49,"value":515}," - Clone template project",{"type":43,"tag":425,"props":517,"children":518},{},[519,524],{"type":43,"tag":447,"props":520,"children":521},{},[522],{"type":49,"value":523},"Infrastructure-as-Code (IaC) setup",{"type":43,"tag":447,"props":525,"children":526},{},[527,532],{"type":43,"tag":68,"props":528,"children":529},{},[530],{"type":49,"value":531},"Automated Setup",{"type":49,"value":533}," - Script-based creation",{"type":43,"tag":425,"props":535,"children":536},{},[537,542],{"type":43,"tag":447,"props":538,"children":539},{},[540],{"type":49,"value":541},"Need project management tooling",{"type":43,"tag":447,"props":543,"children":544},{},[545,550],{"type":43,"tag":68,"props":546,"children":547},{},[548],{"type":49,"value":549},"CLI\u002FAdmin Tools",{"type":49,"value":551}," - Build project management utilities",{"type":43,"tag":282,"props":553,"children":555},{"id":554},"step-3-choose-your-implementation-path",[556],{"type":49,"value":557},"Step 3: Choose Your Implementation Path",{"type":43,"tag":52,"props":559,"children":560},{},[561],{"type":49,"value":562},"Select the reference guide that matches your stack and use case:",{"type":43,"tag":52,"props":564,"children":565},{},[566],{"type":43,"tag":68,"props":567,"children":568},{},[569],{"type":49,"value":570},"By Language\u002FStack:",{"type":43,"tag":74,"props":572,"children":573},{},[574,585,596,607],{"type":43,"tag":78,"props":575,"children":576},{},[577,583],{"type":43,"tag":233,"props":578,"children":580},{"href":579},"references\u002Fpython-setup.md",[581],{"type":49,"value":582},"Python Implementation",{"type":49,"value":584}," - For Python applications (FastAPI, Django, Flask)",{"type":43,"tag":78,"props":586,"children":587},{},[588,594],{"type":43,"tag":233,"props":589,"children":591},{"href":590},"references\u002Fnodejs-setup.md",[592],{"type":49,"value":593},"Node.js\u002FTypeScript Implementation",{"type":49,"value":595}," - For Node.js\u002FExpress\u002FNestJS applications",{"type":43,"tag":78,"props":597,"children":598},{},[599,605],{"type":43,"tag":233,"props":600,"children":602},{"href":601},"references\u002Fgo-setup.md",[603],{"type":49,"value":604},"Go Implementation",{"type":49,"value":606}," - For Go services",{"type":43,"tag":78,"props":608,"children":609},{},[610,616],{"type":43,"tag":233,"props":611,"children":613},{"href":612},"references\u002Fmulti-language-setup.md",[614],{"type":49,"value":615},"Multi-Language Setup",{"type":49,"value":617}," - For polyglot architectures",{"type":43,"tag":52,"props":619,"children":620},{},[621],{"type":43,"tag":68,"props":622,"children":623},{},[624],{"type":49,"value":625},"By Use Case:",{"type":43,"tag":74,"props":627,"children":628},{},[629,638,649,659,670],{"type":43,"tag":78,"props":630,"children":631},{},[632,636],{"type":43,"tag":233,"props":633,"children":634},{"href":235},[635],{"type":49,"value":238},{"type":49,"value":637}," - Create first project and get SDK keys",{"type":43,"tag":78,"props":639,"children":640},{},[641,647],{"type":43,"tag":233,"props":642,"children":644},{"href":643},"references\u002Fenv-config.md",[645],{"type":49,"value":646},"Environment Configuration",{"type":49,"value":648}," - Save SDK keys to .env, secrets, or config",{"type":43,"tag":78,"props":650,"children":651},{},[652,657],{"type":43,"tag":233,"props":653,"children":655},{"href":654},"references\u002Fproject-cloning.md",[656],{"type":49,"value":513},{"type":49,"value":658}," - Clone projects for regions\u002Fteams",{"type":43,"tag":78,"props":660,"children":661},{},[662,668],{"type":43,"tag":233,"props":663,"children":665},{"href":664},"references\u002Fiac-automation.md",[666],{"type":49,"value":667},"IaC\u002FAutomation",{"type":49,"value":669}," - Terraform, scripts, CI\u002FCD integration",{"type":43,"tag":78,"props":671,"children":672},{},[673,679],{"type":43,"tag":233,"props":674,"children":676},{"href":675},"references\u002Fadmin-tooling.md",[677],{"type":49,"value":678},"Admin Tooling",{"type":49,"value":680}," - Build CLI or admin utilities",{"type":43,"tag":282,"props":682,"children":684},{"id":683},"step-4-implement-the-integration",[685],{"type":49,"value":686},"Step 4: Implement the Integration",{"type":43,"tag":52,"props":688,"children":689},{},[690],{"type":49,"value":691},"Follow the chosen reference guide to implement project management. Key considerations:",{"type":43,"tag":104,"props":693,"children":694},{},[695,721,747,773],{"type":43,"tag":78,"props":696,"children":697},{},[698,703],{"type":43,"tag":68,"props":699,"children":700},{},[701],{"type":49,"value":702},"API Authentication:",{"type":43,"tag":74,"props":704,"children":705},{},[706,711,716],{"type":43,"tag":78,"props":707,"children":708},{},[709],{"type":49,"value":710},"Store API token securely",{"type":43,"tag":78,"props":712,"children":713},{},[714],{"type":49,"value":715},"Follow existing secrets management patterns",{"type":43,"tag":78,"props":717,"children":718},{},[719],{"type":49,"value":720},"Never commit tokens to version control",{"type":43,"tag":78,"props":722,"children":723},{},[724,729],{"type":43,"tag":68,"props":725,"children":726},{},[727],{"type":49,"value":728},"Project Naming:",{"type":43,"tag":74,"props":730,"children":731},{},[732,737,742],{"type":43,"tag":78,"props":733,"children":734},{},[735],{"type":49,"value":736},"Use consistent, descriptive names",{"type":43,"tag":78,"props":738,"children":739},{},[740],{"type":49,"value":741},"Follow existing naming conventions",{"type":43,"tag":78,"props":743,"children":744},{},[745],{"type":49,"value":746},"Project keys: lowercase, hyphens, start with letter",{"type":43,"tag":78,"props":748,"children":749},{},[750,755],{"type":43,"tag":68,"props":751,"children":752},{},[753],{"type":49,"value":754},"SDK Key Management:",{"type":43,"tag":74,"props":756,"children":757},{},[758,763,768],{"type":43,"tag":78,"props":759,"children":760},{},[761],{"type":49,"value":762},"Extract and store SDK keys for each environment",{"type":43,"tag":78,"props":764,"children":765},{},[766],{"type":49,"value":767},"Use the same pattern as other secrets in your codebase",{"type":43,"tag":78,"props":769,"children":770},{},[771],{"type":49,"value":772},"Consider separate keys for test\u002Fstaging\u002Fproduction",{"type":43,"tag":78,"props":774,"children":775},{},[776,781],{"type":43,"tag":68,"props":777,"children":778},{},[779],{"type":49,"value":780},"Error Handling:",{"type":43,"tag":74,"props":782,"children":783},{},[784,789,794],{"type":43,"tag":78,"props":785,"children":786},{},[787],{"type":49,"value":788},"Handle existing projects gracefully (409 conflict)",{"type":43,"tag":78,"props":790,"children":791},{},[792],{"type":49,"value":793},"Provide clear error messages",{"type":43,"tag":78,"props":795,"children":796},{},[797],{"type":49,"value":798},"Don't fail silently",{"type":43,"tag":282,"props":800,"children":802},{"id":801},"step-5-verify-the-setup",[803],{"type":49,"value":804},"Step 5: Verify the Setup",{"type":43,"tag":52,"props":806,"children":807},{},[808],{"type":49,"value":809},"After creating the project, verify it works:",{"type":43,"tag":104,"props":811,"children":812},{},[813,992,1098],{"type":43,"tag":78,"props":814,"children":815},{},[816,821,823,829,831,837,839,917,921,942,944,950,952,958,960,966,968,974,976,982,984,990],{"type":43,"tag":68,"props":817,"children":818},{},[819],{"type":49,"value":820},"Fetch to confirm it exists.",{"type":49,"value":822}," Prefer the MCP ",{"type":43,"tag":84,"props":824,"children":826},{"className":825},[],[827],{"type":49,"value":828},"get-project",{"type":49,"value":830}," tool over raw ",{"type":43,"tag":84,"props":832,"children":834},{"className":833},[],[835],{"type":49,"value":836},"curl",{"type":49,"value":838}," — it returns a typed object you can inspect directly. If you must call the REST API:",{"type":43,"tag":840,"props":841,"children":846},"pre",{"className":842,"code":843,"language":844,"meta":845,"style":845},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X GET \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}?expand=environments\" \\\n  -H \"Authorization: {api_token}\"\n","bash","",[847],{"type":43,"tag":84,"props":848,"children":849},{"__ignoreMap":845},[850,894],{"type":43,"tag":851,"props":852,"children":855},"span",{"class":853,"line":854},"line",1,[856,861,867,872,878,883,888],{"type":43,"tag":851,"props":857,"children":859},{"style":858},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[860],{"type":49,"value":836},{"type":43,"tag":851,"props":862,"children":864},{"style":863},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[865],{"type":49,"value":866}," -X",{"type":43,"tag":851,"props":868,"children":869},{"style":863},[870],{"type":49,"value":871}," GET",{"type":43,"tag":851,"props":873,"children":875},{"style":874},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[876],{"type":49,"value":877}," \"",{"type":43,"tag":851,"props":879,"children":880},{"style":863},[881],{"type":49,"value":882},"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}?expand=environments",{"type":43,"tag":851,"props":884,"children":885},{"style":874},[886],{"type":49,"value":887},"\"",{"type":43,"tag":851,"props":889,"children":891},{"style":890},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[892],{"type":49,"value":893}," \\\n",{"type":43,"tag":851,"props":895,"children":897},{"class":853,"line":896},2,[898,903,907,912],{"type":43,"tag":851,"props":899,"children":900},{"style":863},[901],{"type":49,"value":902},"  -H",{"type":43,"tag":851,"props":904,"children":905},{"style":874},[906],{"type":49,"value":877},{"type":43,"tag":851,"props":908,"children":909},{"style":863},[910],{"type":49,"value":911},"Authorization: {api_token}",{"type":43,"tag":851,"props":913,"children":914},{"style":874},[915],{"type":49,"value":916},"\"\n",{"type":43,"tag":918,"props":919,"children":920},"br",{},[],{"type":43,"tag":68,"props":922,"children":923},{},[924,926,932,934,940],{"type":49,"value":925},"Do not pipe the response straight into a ",{"type":43,"tag":84,"props":927,"children":929},{"className":928},[],[930],{"type":49,"value":931},".environments.items[]",{"type":49,"value":933},"-style ",{"type":43,"tag":84,"props":935,"children":937},{"className":936},[],[938],{"type":49,"value":939},"jq",{"type":49,"value":941}," filter.",{"type":49,"value":943}," The shape of ",{"type":43,"tag":84,"props":945,"children":947},{"className":946},[],[948],{"type":49,"value":949},"environments",{"type":49,"value":951}," varies by ",{"type":43,"tag":84,"props":953,"children":955},{"className":954},[],[956],{"type":49,"value":957},"expand",{"type":49,"value":959}," parameter — sometimes it's ",{"type":43,"tag":84,"props":961,"children":963},{"className":962},[],[964],{"type":49,"value":965},"{items: [...]}",{"type":49,"value":967},", sometimes a bare array — and a hand-rolled filter will fail with ",{"type":43,"tag":84,"props":969,"children":971},{"className":970},[],[972],{"type":49,"value":973},"Cannot index array with string \"items\"",{"type":49,"value":975},". Run ",{"type":43,"tag":84,"props":977,"children":979},{"className":978},[],[980],{"type":49,"value":981},"jq -e .",{"type":49,"value":983}," first to inspect the actual shape, or use ",{"type":43,"tag":84,"props":985,"children":987},{"className":986},[],[988],{"type":49,"value":989},"jq '.environments | if type == \"object\" then .items else . end'",{"type":49,"value":991}," to handle both.",{"type":43,"tag":78,"props":993,"children":994},{},[995,1000,1002],{"type":43,"tag":68,"props":996,"children":997},{},[998],{"type":49,"value":999},"Test SDK integration:",{"type":49,"value":1001},"\nRun a quick verification to ensure the SDK key works:",{"type":43,"tag":840,"props":1003,"children":1007},{"className":1004,"code":1005,"language":1006,"meta":845,"style":845},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import ldclient\nfrom ldclient.config import Config\n\nldclient.set_config(Config(\"{sdk_key}\"))\n# SDK initializes successfully\n\n# Always flush events before closing — trailing events are at risk of being\n# lost otherwise, in short-lived scripts and long-running services alike.\nldclient.get().flush()\nldclient.get().close()\n","python",[1008],{"type":43,"tag":84,"props":1009,"children":1010},{"__ignoreMap":845},[1011,1019,1027,1037,1046,1055,1062,1071,1080,1089],{"type":43,"tag":851,"props":1012,"children":1013},{"class":853,"line":854},[1014],{"type":43,"tag":851,"props":1015,"children":1016},{},[1017],{"type":49,"value":1018},"import ldclient\n",{"type":43,"tag":851,"props":1020,"children":1021},{"class":853,"line":896},[1022],{"type":43,"tag":851,"props":1023,"children":1024},{},[1025],{"type":49,"value":1026},"from ldclient.config import Config\n",{"type":43,"tag":851,"props":1028,"children":1030},{"class":853,"line":1029},3,[1031],{"type":43,"tag":851,"props":1032,"children":1034},{"emptyLinePlaceholder":1033},true,[1035],{"type":49,"value":1036},"\n",{"type":43,"tag":851,"props":1038,"children":1040},{"class":853,"line":1039},4,[1041],{"type":43,"tag":851,"props":1042,"children":1043},{},[1044],{"type":49,"value":1045},"ldclient.set_config(Config(\"{sdk_key}\"))\n",{"type":43,"tag":851,"props":1047,"children":1049},{"class":853,"line":1048},5,[1050],{"type":43,"tag":851,"props":1051,"children":1052},{},[1053],{"type":49,"value":1054},"# SDK initializes successfully\n",{"type":43,"tag":851,"props":1056,"children":1057},{"class":853,"line":24},[1058],{"type":43,"tag":851,"props":1059,"children":1060},{"emptyLinePlaceholder":1033},[1061],{"type":49,"value":1036},{"type":43,"tag":851,"props":1063,"children":1065},{"class":853,"line":1064},7,[1066],{"type":43,"tag":851,"props":1067,"children":1068},{},[1069],{"type":49,"value":1070},"# Always flush events before closing — trailing events are at risk of being\n",{"type":43,"tag":851,"props":1072,"children":1074},{"class":853,"line":1073},8,[1075],{"type":43,"tag":851,"props":1076,"children":1077},{},[1078],{"type":49,"value":1079},"# lost otherwise, in short-lived scripts and long-running services alike.\n",{"type":43,"tag":851,"props":1081,"children":1083},{"class":853,"line":1082},9,[1084],{"type":43,"tag":851,"props":1085,"children":1086},{},[1087],{"type":49,"value":1088},"ldclient.get().flush()\n",{"type":43,"tag":851,"props":1090,"children":1092},{"class":853,"line":1091},10,[1093],{"type":43,"tag":851,"props":1094,"children":1095},{},[1096],{"type":49,"value":1097},"ldclient.get().close()\n",{"type":43,"tag":78,"props":1099,"children":1100},{},[1101,1106],{"type":43,"tag":68,"props":1102,"children":1103},{},[1104],{"type":49,"value":1105},"Report results:",{"type":43,"tag":74,"props":1107,"children":1108},{},[1109,1114,1119],{"type":43,"tag":78,"props":1110,"children":1111},{},[1112],{"type":49,"value":1113},"✓ Project exists and has environments",{"type":43,"tag":78,"props":1115,"children":1116},{},[1117],{"type":49,"value":1118},"✓ SDK keys are present and valid",{"type":43,"tag":78,"props":1120,"children":1121},{},[1122],{"type":49,"value":1123},"✓ SDK can initialize (or flag any issues)",{"type":43,"tag":58,"props":1125,"children":1127},{"id":1126},"project-key-best-practices",[1128],{"type":49,"value":1129},"Project Key Best Practices",{"type":43,"tag":52,"props":1131,"children":1132},{},[1133],{"type":49,"value":1134},"Project keys must follow these rules:",{"type":43,"tag":840,"props":1136,"children":1140},{"className":1137,"code":1139,"language":49},[1138],"language-text","✓ Good examples:\n  - \"support-ai\"\n  - \"chat-bot-v2\"\n  - \"internal-tools\"\n\n✗ Bad examples:\n  - \"Support_AI\"     # No uppercase or underscores\n  - \"123-project\"    # Must start with letter  \n  - \"my.project\"     # No dots allowed\n",[1141],{"type":43,"tag":84,"props":1142,"children":1143},{"__ignoreMap":845},[1144],{"type":49,"value":1139},{"type":43,"tag":52,"props":1146,"children":1147},{},[1148],{"type":43,"tag":68,"props":1149,"children":1150},{},[1151],{"type":49,"value":1152},"Naming Recommendations:",{"type":43,"tag":74,"props":1154,"children":1155},{},[1156,1161,1166],{"type":43,"tag":78,"props":1157,"children":1158},{},[1159],{"type":49,"value":1160},"Keep keys short but descriptive",{"type":43,"tag":78,"props":1162,"children":1163},{},[1164],{"type":49,"value":1165},"Use team\u002Fservice\u002Fpurpose as naming scheme",{"type":43,"tag":78,"props":1167,"children":1168},{},[1169],{"type":49,"value":1170},"Be consistent across your organization",{"type":43,"tag":58,"props":1172,"children":1174},{"id":1173},"common-organization-patterns",[1175],{"type":49,"value":1176},"Common Organization Patterns",{"type":43,"tag":282,"props":1178,"children":1180},{"id":1179},"by-team",[1181],{"type":49,"value":1182},"By Team",{"type":43,"tag":840,"props":1184,"children":1187},{"className":1185,"code":1186,"language":49},[1138],"platform-ai       → Platform Team Agent\ncustomer-ai       → Customer Success Team Agent\ninternal-ai       → Internal Tools Team Agent\n",[1188],{"type":43,"tag":84,"props":1189,"children":1190},{"__ignoreMap":845},[1191],{"type":49,"value":1186},{"type":43,"tag":282,"props":1193,"children":1195},{"id":1194},"by-applicationservice",[1196],{"type":49,"value":1197},"By Application\u002FService",{"type":43,"tag":840,"props":1199,"children":1202},{"className":1200,"code":1201,"language":49},[1138],"mobile-ai         → Mobile App configs\nweb-ai            → Web App configs\napi-ai            → API Service configs\n",[1203],{"type":43,"tag":84,"props":1204,"children":1205},{"__ignoreMap":845},[1206],{"type":49,"value":1201},{"type":43,"tag":282,"props":1208,"children":1210},{"id":1209},"by-regiondeployment",[1211],{"type":49,"value":1212},"By Region\u002FDeployment",{"type":43,"tag":840,"props":1214,"children":1217},{"className":1215,"code":1216,"language":49},[1138],"ai-us             → US Region\nai-eu             → Europe Region\nai-apac           → Asia-Pacific Region\n",[1218],{"type":43,"tag":84,"props":1219,"children":1220},{"__ignoreMap":845},[1221],{"type":49,"value":1216},{"type":43,"tag":58,"props":1223,"children":1225},{"id":1224},"edge-cases",[1226],{"type":49,"value":1227},"Edge Cases",{"type":43,"tag":417,"props":1229,"children":1230},{},[1231,1247],{"type":43,"tag":421,"props":1232,"children":1233},{},[1234],{"type":43,"tag":425,"props":1235,"children":1236},{},[1237,1242],{"type":43,"tag":429,"props":1238,"children":1239},{},[1240],{"type":49,"value":1241},"Situation",{"type":43,"tag":429,"props":1243,"children":1244},{},[1245],{"type":49,"value":1246},"Action",{"type":43,"tag":440,"props":1248,"children":1249},{},[1250,1263,1276,1289,1309],{"type":43,"tag":425,"props":1251,"children":1252},{},[1253,1258],{"type":43,"tag":447,"props":1254,"children":1255},{},[1256],{"type":49,"value":1257},"Project already exists",{"type":43,"tag":447,"props":1259,"children":1260},{},[1261],{"type":49,"value":1262},"Check if it's the right one; use it or create with different key",{"type":43,"tag":425,"props":1264,"children":1265},{},[1266,1271],{"type":43,"tag":447,"props":1267,"children":1268},{},[1269],{"type":49,"value":1270},"Need multiple projects",{"type":43,"tag":447,"props":1272,"children":1273},{},[1274],{"type":49,"value":1275},"Create separately for each service\u002Fregion\u002Fteam",{"type":43,"tag":425,"props":1277,"children":1278},{},[1279,1284],{"type":43,"tag":447,"props":1280,"children":1281},{},[1282],{"type":49,"value":1283},"Shared configs across services",{"type":43,"tag":447,"props":1285,"children":1286},{},[1287],{"type":49,"value":1288},"Use same project, separate by SDK context",{"type":43,"tag":425,"props":1290,"children":1291},{},[1292,1297],{"type":43,"tag":447,"props":1293,"children":1294},{},[1295],{"type":49,"value":1296},"Token lacks permissions",{"type":43,"tag":447,"props":1298,"children":1299},{},[1300,1302,1307],{"type":49,"value":1301},"Request ",{"type":43,"tag":84,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":49,"value":89},{"type":49,"value":1308}," or use MCP server",{"type":43,"tag":425,"props":1310,"children":1311},{},[1312,1317],{"type":43,"tag":447,"props":1313,"children":1314},{},[1315],{"type":49,"value":1316},"Project name conflict",{"type":43,"tag":447,"props":1318,"children":1319},{},[1320],{"type":49,"value":1321},"Keys must be unique, names can be similar",{"type":43,"tag":58,"props":1323,"children":1325},{"id":1324},"what-not-to-do",[1326],{"type":49,"value":1327},"What NOT to Do",{"type":43,"tag":74,"props":1329,"children":1330},{},[1331,1336,1341,1346,1351],{"type":43,"tag":78,"props":1332,"children":1333},{},[1334],{"type":49,"value":1335},"Don't create projects without understanding the use case first",{"type":43,"tag":78,"props":1337,"children":1338},{},[1339],{"type":49,"value":1340},"Don't commit API tokens or SDK keys to version control",{"type":43,"tag":78,"props":1342,"children":1343},{},[1344],{"type":49,"value":1345},"Don't use production SDK keys in test\u002Fdevelopment environments",{"type":43,"tag":78,"props":1347,"children":1348},{},[1349],{"type":49,"value":1350},"Don't create duplicate projects unnecessarily",{"type":43,"tag":78,"props":1352,"children":1353},{},[1354],{"type":49,"value":1355},"Don't skip the exploration phase",{"type":43,"tag":58,"props":1357,"children":1359},{"id":1358},"next-steps",[1360],{"type":49,"value":1361},"Next Steps",{"type":43,"tag":52,"props":1363,"children":1364},{},[1365],{"type":49,"value":1366},"After setting up projects:",{"type":43,"tag":104,"props":1368,"children":1369},{},[1370,1388,1404],{"type":43,"tag":78,"props":1371,"children":1372},{},[1373,1378,1380,1386],{"type":43,"tag":68,"props":1374,"children":1375},{},[1376],{"type":49,"value":1377},"Create configs",{"type":49,"value":1379}," - Use the ",{"type":43,"tag":84,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":49,"value":1385},"configs-create",{"type":49,"value":1387}," skill",{"type":43,"tag":78,"props":1389,"children":1390},{},[1391,1396,1397,1403],{"type":43,"tag":68,"props":1392,"children":1393},{},[1394],{"type":49,"value":1395},"Set up SDK Integration",{"type":49,"value":1379},{"type":43,"tag":84,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":49,"value":1402},"sdk",{"type":49,"value":1387},{"type":43,"tag":78,"props":1405,"children":1406},{},[1407,1412,1413,1419],{"type":43,"tag":68,"props":1408,"children":1409},{},[1410],{"type":49,"value":1411},"Configure Targeting",{"type":49,"value":1379},{"type":43,"tag":84,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":49,"value":1418},"configs-targeting",{"type":49,"value":1387},{"type":43,"tag":58,"props":1421,"children":1423},{"id":1422},"related-skills",[1424],{"type":49,"value":1425},"Related Skills",{"type":43,"tag":74,"props":1427,"children":1428},{},[1429,1439,1449,1459],{"type":43,"tag":78,"props":1430,"children":1431},{},[1432,1437],{"type":43,"tag":84,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":49,"value":1385},{"type":49,"value":1438}," - Create configs in projects",{"type":43,"tag":78,"props":1440,"children":1441},{},[1442,1447],{"type":43,"tag":84,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":49,"value":1402},{"type":49,"value":1448}," - Integrate SDK in your application",{"type":43,"tag":78,"props":1450,"children":1451},{},[1452,1457],{"type":43,"tag":84,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":49,"value":1418},{"type":49,"value":1458}," - Configure config targeting",{"type":43,"tag":78,"props":1460,"children":1461},{},[1462,1468],{"type":43,"tag":84,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":49,"value":1467},"configs-variations",{"type":49,"value":1469}," - Manage config variations",{"type":43,"tag":58,"props":1471,"children":1473},{"id":1472},"references",[1474],{"type":49,"value":1475},"References",{"type":43,"tag":74,"props":1477,"children":1478},{},[1479,1486,1494,1501,1509,1516,1523,1530],{"type":43,"tag":78,"props":1480,"children":1481},{},[1482],{"type":43,"tag":233,"props":1483,"children":1484},{"href":579},[1485],{"type":49,"value":582},{"type":43,"tag":78,"props":1487,"children":1488},{},[1489],{"type":43,"tag":233,"props":1490,"children":1491},{"href":590},[1492],{"type":49,"value":1493},"Node.js Implementation",{"type":43,"tag":78,"props":1495,"children":1496},{},[1497],{"type":43,"tag":233,"props":1498,"children":1499},{"href":601},[1500],{"type":49,"value":604},{"type":43,"tag":78,"props":1502,"children":1503},{},[1504],{"type":43,"tag":233,"props":1505,"children":1506},{"href":235},[1507],{"type":49,"value":1508},"Quick Start Guide",{"type":43,"tag":78,"props":1510,"children":1511},{},[1512],{"type":43,"tag":233,"props":1513,"children":1514},{"href":643},[1515],{"type":49,"value":646},{"type":43,"tag":78,"props":1517,"children":1518},{},[1519],{"type":43,"tag":233,"props":1520,"children":1521},{"href":654},[1522],{"type":49,"value":513},{"type":43,"tag":78,"props":1524,"children":1525},{},[1526],{"type":43,"tag":233,"props":1527,"children":1528},{"href":664},[1529],{"type":49,"value":667},{"type":43,"tag":78,"props":1531,"children":1532},{},[1533],{"type":43,"tag":233,"props":1534,"children":1535},{"href":675},[1536],{"type":49,"value":678},{"type":43,"tag":1538,"props":1539,"children":1540},"style",{},[1541],{"type":49,"value":1542},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1544,"total":1676},[1545,1560,1569,1583,1594,1606,1614,1628,1639,1648,1658,1667],{"slug":1546,"name":1546,"fn":1547,"description":1548,"org":1549,"tags":1550,"stars":20,"repoUrl":21,"updatedAt":1559},"agent-graphs","create and manage agent graphs","Create and manage agent graphs — directed graphs of configs connected by edges with handoff logic. Use when building multi-agent workflows where configs route to each other.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1551,1554,1555,1556],{"name":1552,"slug":1553,"type":15},"Agents","agents",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1557,"slug":1558,"type":15},"Multi-Agent","multi-agent","2026-07-28T05:33:33.709407",{"slug":1561,"name":1561,"fn":1562,"description":1563,"org":1564,"tags":1565,"stars":20,"repoUrl":21,"updatedAt":1568},"aiconfig-agent-graphs","manage agent graphs","DEPRECATED redirect — this skill was renamed to agent-graphs. Do not use this skill; invoke agent-graphs instead. Kept only so old references to aiconfig-agent-graphs still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1566,1567],{"name":1552,"slug":1553,"type":15},{"name":13,"slug":14,"type":15},"2026-05-22T06:55:56.527064",{"slug":1570,"name":1570,"fn":1571,"description":1572,"org":1573,"tags":1574,"stars":20,"repoUrl":21,"updatedAt":1582},"aiconfig-ai-metrics","manage built-in AI metrics","DEPRECATED redirect — this skill was renamed to built-in-metrics. Do not use this skill; invoke built-in-metrics instead. Kept only so old references to aiconfig-ai-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1575,1578,1579],{"name":1576,"slug":1577,"type":15},"Analytics","analytics",{"name":9,"slug":8,"type":15},{"name":1580,"slug":1581,"type":15},"Metrics","metrics","2026-05-22T06:55:53.858749",{"slug":1584,"name":1584,"fn":1585,"description":1586,"org":1587,"tags":1588,"stars":20,"repoUrl":21,"updatedAt":1593},"aiconfig-create","redirect to configs-create skill","DEPRECATED redirect — this skill was renamed to configs-create. Do not use this skill; invoke configs-create instead. Kept only so old references to aiconfig-create still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1589,1590],{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},"Reference","reference","2026-05-22T06:55:41.790591",{"slug":1595,"name":1595,"fn":1596,"description":1597,"org":1598,"tags":1599,"stars":20,"repoUrl":21,"updatedAt":1605},"aiconfig-custom-metrics","configure custom metrics in LaunchDarkly","DEPRECATED redirect — this skill was renamed to custom-metrics. Do not use this skill; invoke custom-metrics instead. Kept only so old references to aiconfig-custom-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1600,1601,1604],{"name":1576,"slug":1577,"type":15},{"name":1602,"slug":1603,"type":15},"Feature Flags","feature-flags",{"name":9,"slug":8,"type":15},"2026-05-22T06:55:57.84851",{"slug":1607,"name":1607,"fn":1608,"description":1609,"org":1610,"tags":1611,"stars":20,"repoUrl":21,"updatedAt":1613},"aiconfig-migrate","redirect to migrate skill","DEPRECATED redirect — this skill was renamed to migrate. Do not use this skill; invoke migrate instead. Kept only so old references to aiconfig-migrate still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1612],{"name":1591,"slug":1592,"type":15},"2026-05-22T06:55:44.464733",{"slug":1615,"name":1615,"fn":1616,"description":1617,"org":1618,"tags":1619,"stars":20,"repoUrl":21,"updatedAt":1627},"aiconfig-online-evals","run online evaluations","DEPRECATED redirect — this skill was renamed to online-evals. Do not use this skill; invoke online-evals instead. Kept only so old references to aiconfig-online-evals still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1620,1623,1624],{"name":1621,"slug":1622,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":1625,"slug":1626,"type":15},"Testing","testing","2026-05-22T06:55:55.179617",{"slug":1629,"name":1629,"fn":1630,"description":1631,"org":1632,"tags":1633,"stars":20,"repoUrl":21,"updatedAt":1638},"aiconfig-projects","manage AI configuration projects","DEPRECATED redirect — this skill was renamed to projects. Do not use this skill; invoke projects instead. Kept only so old references to aiconfig-projects still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1634,1637],{"name":1635,"slug":1636,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},"2026-05-22T06:55:48.522229",{"slug":1640,"name":1640,"fn":1641,"description":1642,"org":1643,"tags":1644,"stars":20,"repoUrl":21,"updatedAt":1647},"aiconfig-snippets","manage AI configuration snippets","DEPRECATED redirect — this skill was renamed to snippets. Do not use this skill; invoke snippets instead. Kept only so old references to aiconfig-snippets still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1645,1646],{"name":1635,"slug":1636,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:47.16557",{"slug":1649,"name":1649,"fn":1650,"description":1651,"org":1652,"tags":1653,"stars":20,"repoUrl":21,"updatedAt":1657},"aiconfig-targeting","configure LaunchDarkly targeting rules","DEPRECATED redirect — this skill was renamed to configs-targeting. Do not use this skill; invoke configs-targeting instead. Kept only so old references to aiconfig-targeting still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1654,1655,1656],{"name":1635,"slug":1636,"type":15},{"name":1602,"slug":1603,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:49.845445",{"slug":1659,"name":1659,"fn":1660,"description":1661,"org":1662,"tags":1663,"stars":20,"repoUrl":21,"updatedAt":1666},"aiconfig-tools","redirect to tools skill","DEPRECATED redirect — this skill was renamed to tools. Do not use this skill; invoke tools instead. Kept only so old references to aiconfig-tools still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1664,1665],{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},"2026-05-22T06:55:39.13373",{"slug":1668,"name":1668,"fn":1669,"description":1670,"org":1671,"tags":1672,"stars":20,"repoUrl":21,"updatedAt":1675},"aiconfig-update","redirect to configs-update skill","DEPRECATED redirect — this skill was renamed to configs-update. Do not use this skill; invoke configs-update instead. Kept only so old references to aiconfig-update still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1673,1674],{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},"2026-05-22T06:55:40.464884",49,{"items":1678,"total":1676},[1679,1686,1691,1697,1702,1708,1712],{"slug":1546,"name":1546,"fn":1547,"description":1548,"org":1680,"tags":1681,"stars":20,"repoUrl":21,"updatedAt":1559},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1682,1683,1684,1685],{"name":1552,"slug":1553,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1557,"slug":1558,"type":15},{"slug":1561,"name":1561,"fn":1562,"description":1563,"org":1687,"tags":1688,"stars":20,"repoUrl":21,"updatedAt":1568},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1689,1690],{"name":1552,"slug":1553,"type":15},{"name":13,"slug":14,"type":15},{"slug":1570,"name":1570,"fn":1571,"description":1572,"org":1692,"tags":1693,"stars":20,"repoUrl":21,"updatedAt":1582},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1694,1695,1696],{"name":1576,"slug":1577,"type":15},{"name":9,"slug":8,"type":15},{"name":1580,"slug":1581,"type":15},{"slug":1584,"name":1584,"fn":1585,"description":1586,"org":1698,"tags":1699,"stars":20,"repoUrl":21,"updatedAt":1593},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1700,1701],{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},{"slug":1595,"name":1595,"fn":1596,"description":1597,"org":1703,"tags":1704,"stars":20,"repoUrl":21,"updatedAt":1605},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1705,1706,1707],{"name":1576,"slug":1577,"type":15},{"name":1602,"slug":1603,"type":15},{"name":9,"slug":8,"type":15},{"slug":1607,"name":1607,"fn":1608,"description":1609,"org":1709,"tags":1710,"stars":20,"repoUrl":21,"updatedAt":1613},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1711],{"name":1591,"slug":1592,"type":15},{"slug":1615,"name":1615,"fn":1616,"description":1617,"org":1713,"tags":1714,"stars":20,"repoUrl":21,"updatedAt":1627},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1715,1716,1717],{"name":1621,"slug":1622,"type":15},{"name":9,"slug":8,"type":15},{"name":1625,"slug":1626,"type":15}]