Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ All notable changes to this repository will be documented in this file.

## Unreleased

- Add `agentcontrol/legacy-sdk-migrate` 0.1.0: migrate an app from the legacy AI SDKs (`launchdarkly-server-sdk-ai`, `@launchdarkly/server-sdk-ai`) to the current handler-based SDKs, following [Migrate from the legacy AI SDKs](https://launchdarkly.com/docs/sdk/ai/migration). Inventories legacy calls, maps each to a convenience function, `config().invoke()`, or `graph()`, moves tools into `tool_handlers` / `toolHandlers` or a `Registry`, replaces trackers with automatic metrics (and `track_feedback` with `result.track_data`), ports `enabled=False` fallbacks to error handling and `inspect_config()` / `inspectConfig()`, and covers streaming, history, async judges, and graphs. `references/api-mapping.md` has before/after code in Python and Node.js using the handler factory names the packages export.
- `observability/investigate` 0.4.0: uses the response fields from launchdarkly/mcp#508, each with a fallback for servers that predate it. `get-changes` versions carry `error_spans` and `error_span_rate`, so a failing build can be quoted without a follow-up breakdown; its truncation keeps version and alert rows first; flag changes less than 10 minutes apart on one flag and environment are one row. `search-aggregations` series line up with `bucket_starts`, and `Min`/`Max` of `timestamp` are ISO 8601 UTC times, not Unix seconds. Step 1 adds a spread check: group the failing signal by `service_name` across the whole service family and cluster its error logs before narrowing to the busiest service, and step 6 reports that reach.
- Add `observability/observability-plugin-setup` 0.1.0: turns on LaunchDarkly observability for an app that already uses a LaunchDarkly SDK. When an observability tool reports a project has never received data (`observability_set_up` / `observabilitySetUp` false, from launchdarkly/mcp#501), or the user asks for observability or session replay, the skill explains the change and asks first. It then adds the observability plugin to the app's existing client (same key, strict session replay privacy, no extra options), opens a pull request on a new branch, and confirms data arrives with `find-o11y-project` and `get-keys`. Its own `references/plugin-wiring.md` mirrors the onboarding observability-plugin table so the hosted MCP can embed it. The README gains an Observability section. Not added to the Claude Code or Cursor plugins, matching the other observability skills, which reach agents through the hosted MCP.
- `release-autopilot/launchdarkly-release-autopilot-onboarding` 1.0.0: sets up auto-releasing with environment release plans (renamed tools) with no release policies path, and offers a progressive starter plan (production: 10% → 25% → 50%; other environments: 10% → 50%; guarded when a metric with a matching `analysisUnits` entry exists) set as each environment's default, after checking the randomization unit against stored contexts (a project with no stored contexts uses `user`). When the GitHub App install cannot be read (`reposError`) twice, setup pauses before repo mapping, and Preview lists the mapping for later with no "Connect GitHub" item. Only a `user` unit gets rollback metrics, because no read shows whether another context kind is available for guarded rollouts. Production is the environment marked critical, or the user says which. When the release plans read fails, release setup stops for that project with auto-releasing off, and for the 403 `Plan does not allow this operation` the user is told to contact LaunchDarkly support. A release plan tool missing from the server skips release setup with an update-or-reconnect message, and the rest of setup continues. Sets auto-cleanup through the MCP after confirmation, and checks auto-archival before the browser step to turn it on. Verification says GitHub is connected only without `githubConnectUrl` or `reposError`, counts archival as verified when the archival read shows it on, and lists each configured repo, default plan, and cleanup and archival setting, then offers a test pull request, the MCP and CLI, and local-agent flagging skills. A new default says which default it replaces. Evals mock the per-project cleanup and archival settings and default release plans, reject plan steps over 50% with metrics (99% without), and add starter-plan, existing-plan, running-cleanup, archival-already-on, guarded-starter, failed plan read, release plans 403 (no policy reads), missing plan tools, replaced-default, unreadable-install (setup and Preview), and no-stored-contexts cases.
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ Agent Skills are modular, text-based playbooks that teach an agent how to perfor
| Skill | Description |
|-------|-------------|
| `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/migrate` | Migrate an app with hardcoded LLM prompts (not on AgentControl yet) to the current AI SDKs in five stages |
| `agentcontrol/legacy-sdk-migrate` | Migrate between LaunchDarkly AI SDKs: from the legacy Python and Node.js AI SDKs to the current handler-based SDKs (packages, init, `config()`, tools, registries, judges, graphs, fallbacks) |
| `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 |
Expand Down
8 changes: 8 additions & 0 deletions skills.json
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,14 @@
"mcp"
]
},
{
"name": "legacy-sdk-migrate",
"description": "Migrate an app from the legacy LaunchDarkly AI SDKs (Python `launchdarkly-server-sdk-ai` / `ldai`, Node.js `@launchdarkly/server-sdk-ai`) to the current handler-based AI SDKs (`launchdarkly-ai-server`, `@launchdarkly/ai-node` / `@launchdarkly/ai-server` plus handler packages). Use when code calls `LDAIClient`, `initAi`, `completion_config` / `completionConfig`, `agent_config` / `agentConfig`, `agent_configs`, `create_tracker` / `trackMetricsOf`, `create_judge`, `create_model`, or `agent_graph`, or when the user asks to upgrade between LaunchDarkly AI SDKs. For apps with hardcoded LLM prompts that aren't on LaunchDarkly yet, use `migrate` instead.",
"path": "skills/agentcontrol/legacy-sdk-migrate",
"version": "0.1.0",
"license": "Apache-2.0",
"compatibility": "Python 3.12+ (`launchdarkly-ai-server` 1.0.0+ with `launchdarkly-server-sdk`) or Node.js (`@launchdarkly/ai-node` 1.0.0+). No LaunchDarkly MCP tools needed; the AgentControl configs already exist."
},
{
"name": "mcp-configure",
"description": "Configure the LaunchDarkly hosted MCP server during onboarding. Use when the parent LaunchDarkly onboarding skill reaches the MCP offer, after the first flag works. Supports Cursor, Claude Code, Windsurf, GitHub Copilot, and other MCP-compatible agents. OAuth authentication; no API keys for the hosted server.",
Expand Down
Loading
Loading