$npx -y skills add launchdarkly/ai-tooling --skill configs-createCreate and configure configs in LaunchDarkly. Helps you choose between agent vs completion mode, create the config, add variations with models and prompts, and verify the setup.
| 1 | # Create Config |
| 2 | |
| 3 | You're using a skill that will guide you through creating a config in LaunchDarkly. Your job is to understand the use case, choose the right mode, create the config and its variations, and verify everything is set up correctly. |
| 4 | |
| 5 | > **⚠️ This skill creates a config — it does not make it servable.** A freshly-created config has its **fallthrough pointing at an auto-generated disabled variation**, not at the variation you just created. The SDK will return `ai_config.enabled=False` on every evaluation until you flip targeting on and point the fallthrough at your new variation. This is not a bug — it's the default state. **You must run `/configs-targeting` (or the equivalent REST / CLI call shown in Step 5) before verifying against the SDK**, or verification will look like the LD-served path is broken when it isn't. The single most common failure mode users hit with this skill is skipping the targeting step and spending time debugging `enabled=False` in their application code. |
| 6 | |
| 7 | ## Prerequisites |
| 8 | |
| 9 | This skill requires the remotely hosted LaunchDarkly MCP server to be configured in your environment. |
| 10 | |
| 11 | **Primary MCP tool:** |
| 12 | - `setup-ai-config` -- create a config with its first variation in one step (recommended) |
| 13 | |
| 14 | **Alternative MCP tools (for more control):** |
| 15 | - `create-ai-config` -- create just the config shell (key, name, mode) |
| 16 | - `create-ai-config-variation` -- add a variation with model, prompts, and parameters |
| 17 | - `get-ai-config` -- verify the config was created correctly |
| 18 | |
| 19 | **Optional MCP tools (enhance workflow):** |
| 20 | - `list-ai-configs` -- browse existing configs to understand naming conventions |
| 21 | - `create-project` -- create a project if one doesn't exist yet |
| 22 | |
| 23 | ## Important: Bias Towards Action |
| 24 | |
| 25 | When the user provides enough context (use case, model, mode), proceed through the entire workflow without stopping to ask for details you can infer. Use reasonable defaults for unspecified fields: `default` for variation key, the use case as the basis for instructions/messages, kebab-case for config keys. Complete all steps (create + verify) in one pass. |
| 26 | |
| 27 | ## Workflow |
| 28 | |
| 29 | ### Step 1: Understand the Use Case |
| 30 | |
| 31 | Before creating, identify what you're building: |
| 32 | |
| 33 | - **What framework?** LangGraph, LangChain, CrewAI, Strands, OpenAI SDK, Anthropic SDK, custom |
| 34 | - **What does the agent need?** Just text generation, or tools/function calling? |
| 35 | - **Agent or completion?** See the decision matrix below |
| 36 | |
| 37 | ### Step 2: Choose Agent vs Completion Mode |
| 38 | |
| 39 | This choice is about **input schema and framework compatibility**, not execution behavior. Agent mode returns an `instructions` string; completion mode returns a `messages` array. Both provide provider abstraction, A/B testing, and metrics tracking. |
| 40 | |
| 41 | | Your Need | Mode | Why | |
| 42 | |-----------|------|-----| |
| 43 | | LangGraph, CrewAI, Strands, AutoGen frameworks | **Agent** | Frameworks expect goal/instruction input | |
| 44 | | Persistent instructions across interactions | **Agent** | Single instructions string, SDK method: `agent_config()` (Python) / `agentConfig()` (Node) | |
| 45 | | Direct OpenAI/Anthropic API calls | **Completion** | Messages array maps directly to provider APIs | |
| 46 | | Full control of message structure | **Completion** | System/user/assistant role-based messages | |
| 47 | | One-off text generation | **Completion** | Standard chat format | |
| 48 | | Need online evaluations (LLM-as-judge) | **Completion** | Online evals are only available in completion mode | |
| 49 | |
| 50 | **Both modes support tools.** Not all models support agent mode -- check model compatibility if using agent mode. If unsure, start with completion mode (it's the API default and more flexible). |
| 51 | |
| 52 | ### Step 3: Create the Config (Recommended: One Step) |
| 53 | |
| 54 | Use `setup-ai-config` to create the config and its first variation in one call. This is the recommended approach: it handles creation, variation setup, and verification automatically. |
| 55 | |
| 56 | **Config fields:** |
| 57 | - `key` -- unique identifier (lowercase, hyphens) |
| 58 | - `name` -- human-readable name |
| 59 | - `mode` -- `"agent"` or `"completion"` |
| 60 | - Optional: `description`, `tags` |
| 61 | |
| 62 | **Variation fields:** |
| 63 | - `variationKey`, `variationName` -- identifiers for the first variation |
| 64 | - `modelConfigKey` -- must be `Provider.model-id` format (e.g., `OpenAI.gpt-4o`, `Anthropic.claude-sonnet-4-5`) |
| 65 | - `modelName` -- the model identifier (e.g., `gpt-4o`). **Always pass this in the initial call** — leaving it off produces a variation that displays "NO MODEL" and forces a second PATCH to set it. The field is `modelName`; it is **not** `name` or `model.name` on this endpoint. |
| 66 | |
| 67 | **For agent mode**, provide: |
| 68 | - `instructions` -- a string with the agent's system instructions |
| 69 | |
| 70 | Example agent-mode c |