Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "launchdarkly",
"version": "1.0.0",
"description": "LaunchDarkly agent skills and MCP servers for feature flag management, AI configuration, and metrics",
"description": "LaunchDarkly agent skills and MCP servers for feature flag management, AgentControl, and metrics",
"author": {
"name": "LaunchDarkly",
"email": "support@launchdarkly.com"
Expand Down
8 changes: 4 additions & 4 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "launchdarkly-mcp",
"version": "0.6.1",
"description": "Connect Codex to LaunchDarkly over MCP: AI Configs and feature management (FM) hosted endpoints, plus bundled guidance for using the tools.",
"description": "Connect Codex to LaunchDarkly over MCP: configs and feature management (FM) hosted endpoints, plus bundled guidance for using the tools.",
"author": {
"name": "LaunchDarkly",
"url": "https://launchdarkly.com"
Expand All @@ -20,15 +20,15 @@
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "LaunchDarkly",
"shortDescription": "Feature flags, AI Configs, and environments via MCP.",
"longDescription": "Use LaunchDarkly’s hosted MCP servers for AI Configs and FM, or run the same surface locally with npx @launchdarkly/mcp-server (see repository README). Authenticate with your LaunchDarkly API access token when prompted.",
"shortDescription": "Feature flags, configs, and environments via MCP.",
"longDescription": "Use LaunchDarkly’s hosted MCP servers for configs and FM, or run the same surface locally with npx @launchdarkly/mcp-server (see repository README). Authenticate with your LaunchDarkly API access token when prompted.",
"developerName": "LaunchDarkly",
"category": "Developer tools",
"capabilities": ["Read", "Write"],
"websiteURL": "https://launchdarkly.com",
"defaultPrompt": [
"List my LaunchDarkly feature flags for this project.",
"Show AI Config targeting for the config I care about."
"Show config targeting for the config I care about."
],
"brandColor": "#3DD6F5"
}
Expand Down
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "launchdarkly",
"version": "1.0.2",
"description": "LaunchDarkly agent skills and mcp server for feature flag management, AI configuration, and skill authoring",
"description": "LaunchDarkly agent skills and mcp server for feature flag management, AgentControl, and skill authoring",
"author": {
"name": "LaunchDarkly",
"email": "support@launchdarkly.com"
Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# LaunchDarkly Agent Skills

LaunchDarkly's public collection of AI agent skills and playbooks. These skills encode repeatable workflows for working with LaunchDarkly, so coding agents can execute common tasks safely and consistently.
LaunchDarkly's public collection of agent skills and playbooks. These skills encode repeatable workflows for working with LaunchDarkly, so coding agents can execute common tasks safely and consistently.

## What Is This Repo?

Expand All @@ -18,19 +18,19 @@ Agent Skills are modular, text-based playbooks that teach an agent how to perfor
| `feature-flags/launchdarkly-flag-cleanup` | Safely remove flags from code using LaunchDarkly as the source of truth |
| `feature-flags/launchdarkly-guarded-rollout` | Configure guarded rollouts with progressive traffic, metric monitoring, and rollback |

### AI Configs
### AgentControl

| Skill | Description |
|-------|-------------|
| `agentcontrol/configs-create` | Create AI Configs with variations for agent or completion mode |
| `agentcontrol/migrate` | Migrate an app with hardcoded LLM prompts to AI Configs in five stages (extract, wrap, tools, tracking, evals) |
| `agentcontrol/configs-update` | Update and delete AI Configs, manage lifecycle |
| `agentcontrol/configs-variations` | Manage AI Config variations for A/B testing |
| `agentcontrol/configs-create` | Create configs with variations for agent or completion mode |
| `agentcontrol/migrate` | Migrate an app with hardcoded LLM prompts to AgentControl in five stages (extract, wrap, tools, tracking, evals) |
| `agentcontrol/configs-update` | Update and delete configs, manage lifecycle |
| `agentcontrol/configs-variations` | Manage config variations for A/B testing |
| `agentcontrol/tools` | Create and attach tools for function calling |
| `agentcontrol/projects` | Create and manage projects to organize AI Configs |
| `agentcontrol/online-evals` | Attach LLM-as-a-judge evaluators to AI Configs |
| `agentcontrol/configs-targeting` | Configure targeting rules for AI Config rollouts |
| `agentcontrol/snippets` | Create and manage reusable prompt snippets across AI Configs |
| `agentcontrol/projects` | Create and manage projects to organize configs |
| `agentcontrol/online-evals` | Attach LLM-as-a-judge evaluators to configs |
| `agentcontrol/configs-targeting` | Configure targeting rules for config rollouts |
| `agentcontrol/snippets` | Create and manage reusable prompt snippets across configs |
| `agentcontrol/agent-graphs` | Create and manage multi-agent graphs with routing and handoffs |

### Experiments
Expand Down
16 changes: 8 additions & 8 deletions eval-scores.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
"lastRun": "2026-05-20T19:16:00.930Z",
"perTest": [
{
"description": "Create an AI Config for my customer support bot. It uses LangGraph and needs per",
"description": "Create a config for my customer support bot. It uses LangGraph and needs per",
"pass": true,
"score": 1
},
{
"description": "I need an AI Config for our blog summarizer. We call the OpenAI API directly wit",
"description": "I need a config for our blog summarizer. We call the OpenAI API directly wit",
"pass": true,
"score": 1
},
{
"description": "Create a new AI Config for our analytics agent. Project key is \"data-platform\".\n",
"description": "Create a new config for our analytics agent. Project key is \"data-platform\".\n",
"pass": true,
"score": 1
},
{
"description": "Create an AI Config called \"email-assistant\" for composing emails. Project is \"c",
"description": "Create a config called \"email-assistant\" for composing emails. Project is \"c",
"pass": true,
"score": 0.8333333333333334
}
Expand All @@ -46,12 +46,12 @@
"score": 0.95
},
{
"description": "We no longer need the content-writer AI Config. Please remove it from active use",
"description": "We no longer need the content-writer config. Please remove it from active use",
"pass": true,
"score": 1
},
{
"description": "Update the support-chatbot AI Config in project \"support-app\": change the name t",
"description": "Update the support-chatbot config in project \"support-app\": change the name t",
"pass": true,
"score": 1
},
Expand All @@ -76,12 +76,12 @@
"lastRun": "2026-05-20T19:16:00.936Z",
"perTest": [
{
"description": "I need to give our support-chatbot AI Config the ability to search our knowledge",
"description": "I need to give our support-chatbot config the ability to search our knowledge",
"pass": true,
"score": 1
},
{
"description": "Create an AI tool called \"create-ticket\" that accepts title (required string), p",
"description": "Create an agent tool called \"create-ticket\" that accepts title (required string), p",
"pass": true,
"score": 1
},
Expand Down
10 changes: 5 additions & 5 deletions evals/aiconfig-create/promptfooconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ tests:
- description: "Happy path: creates agent-mode config for a LangGraph chatbot using setup-ai-config"
vars:
user_request: >
Create an AI Config for my customer support bot. It uses LangGraph and
Create a config for my customer support bot. It uses LangGraph and
needs persistent instructions. The project key is "acme-app".
Use Claude Sonnet as the model.
codebase_context: ""
Expand Down Expand Up @@ -82,7 +82,7 @@ tests:

- type: llm-rubric
value: |
Evaluate whether the agent correctly created an AI Config in agent mode.
Evaluate whether the agent correctly created a config in agent mode.
Score 1.0 if all of the following are met:
1. The agent chose agent mode (appropriate for LangGraph with persistent instructions).
2. The agent created a config with a meaningful key and name derived from the use case.
Expand All @@ -100,7 +100,7 @@ tests:
- description: "Completion mode: creates completion-mode config for direct OpenAI API use"
vars:
user_request: >
I need an AI Config for our blog summarizer. We call the OpenAI API
I need a config for our blog summarizer. We call the OpenAI API
directly with a messages array (system + user). Project key is "blog-app",
use gpt-4o.
codebase_context: >
Expand Down Expand Up @@ -151,7 +151,7 @@ tests:
- description: "Exploration: browses existing configs before creating when context is sparse"
vars:
user_request: >
Create a new AI Config for our analytics agent. Project key is "data-platform".
Create a new config for our analytics agent. Project key is "data-platform".
codebase_context: ""
assert:
- type: javascript
Expand Down Expand Up @@ -184,7 +184,7 @@ tests:
- description: "Post-creation: response mentions targeting step or aiconfig-targeting"
vars:
user_request: >
Create an AI Config called "email-assistant" for composing emails.
Create a config called "email-assistant" for composing emails.
Project is "comms-app", use gpt-4o-mini in completion mode.
codebase_context: ""
assert:
Expand Down
8 changes: 4 additions & 4 deletions evals/aiconfig-tools/promptfooconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# Run with shared defaults:
# promptfoo eval -c shared/defaults.yaml -c aiconfig-tools/promptfooconfig.yaml
#
# The aiconfig-tools skill covers creating AI tool definitions and attaching
# them to AI Config variations. Key invariant: tools must be created with
# The aiconfig-tools skill covers creating agent tool definitions and attaching
# them to config variations. Key invariant: tools must be created with
# raw JSON Schema format (not OpenAI function-calling wrapper), and must be
# created before being attached.
description: "End-to-end evaluation of the aiconfig-tools skill"
Expand All @@ -25,7 +25,7 @@ tests:
- description: "Creates a tool with correct raw JSON Schema and attaches it to a variation"
vars:
user_request: >
I need to give our support-chatbot AI Config the ability to search our
I need to give our support-chatbot config the ability to search our
knowledge base. Create a tool called "search-knowledge-base" with a
query parameter and a limit parameter, then attach it to the "default"
variation. Project key is "support-app".
Expand Down Expand Up @@ -82,7 +82,7 @@ tests:
- description: "Uses raw JSON Schema for tool schema, not the OpenAI function wrapper"
vars:
user_request: >
Create an AI tool called "create-ticket" that accepts title (required
Create an agent tool called "create-ticket" that accepts title (required
string), priority (enum: low, medium, high), and description (optional
string). Attach it to the default variation of the support-chatbot config.
Project key is "support-app".
Expand Down
4 changes: 2 additions & 2 deletions evals/aiconfig-update/promptfooconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ tests:
- description: "Archives a config instead of deleting when asked to remove it"
vars:
user_request: >
We no longer need the content-writer AI Config. Please remove it from
We no longer need the content-writer config. Please remove it from
active use. Project key is "marketing".
codebase_context: >
The content-writer config has 3 variations. It's been inactive for two
Expand Down Expand Up @@ -114,7 +114,7 @@ tests:
- description: "Updates config metadata — name, description, tags — without touching variations"
vars:
user_request: >
Update the support-chatbot AI Config in project "support-app":
Update the support-chatbot config in project "support-app":
change the name to "Customer Support Agent", add a description
"Handles tier-1 support inquiries", and add tags "support" and "production".
codebase_context: >
Expand Down
4 changes: 2 additions & 2 deletions evals/mocks/tool-responses.json
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@
"key": "support-chatbot",
"name": "Support Chatbot",
"mode": "agent",
"description": "AI-powered support agent for customer tickets",
"description": "Agent-powered support agent for customer tickets",
"tags": [
"support",
"production"
Expand Down Expand Up @@ -284,7 +284,7 @@
"key": "{{configKey}}",
"name": "{{configName}}",
"mode": "agent",
"description": "AI Config",
"description": "config",
"tags": [],
"archived": false,
"variations": [
Expand Down
Loading
Loading