snippets — Claude Code skill: reusable prompt blocks
A skill for managing reusable prompt text in LaunchDarkly configs: shared personas, guardrails and output formats.
npx skills add launchdarkly/ai-tooling --skill snippets -a claude-codeWhat snippets does
The skill walks you through finding repeated text across config variation prompts and pulling it into named snippets. A snippet lives at the project level with a key, a name, tags and a version. Edit a snippet and a new version appears, so configs pointing at it can pick up the latest text.
Everything runs through MCP tools: create-prompt-snippet makes a block, list-prompt-snippets lists what exists, get-prompt-snippet shows the contents of one. There are also update-prompt-snippet, delete-prompt-snippet and update-ai-config-variation, which wires a snippet into a variation prompt. The skill advises creating a snippet only when the text is used in two places or more, and keeping one concern per snippet — a persona or guardrails, not both.
You need the remotely hosted LaunchDarkly MCP server configured first. Without it the tools never fire and the skill has nothing to call. Deleting a snippet that configs reference breaks those links, so the skill warns you and asks for confirmation.
What it helps with
- pull a shared agent persona out of five configs into one block
- keep safety guardrails from drifting between variations
- enforce one JSON response format across several prompts
- update a compliance disclaimer everywhere at once
- check which configs reference a snippet before removing it
Example prompts for the agent
- find repeated text across the project's config prompts and suggest what to extract into snippets
- create a
support-personasnippet with the support persona text and tags persona, support - list every snippet in the project and confirm the new one is at version 1
How to install snippets
1Skills CLI (Vercel)
npx skills add launchdarkly/ai-tooling --skill snippets -a claude-code2Manually: put the files in place
~/.claude/skills/snippets/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/snippets/
1Skills CLI (Vercel)
npx skills add launchdarkly/ai-tooling --skill snippets -a codex2Manually: put the files in place
.agents/skills/snippets/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add launchdarkly/ai-tooling --skill snippets -a cursor2Manually: put the files in place
.cursor/skills/snippets/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install launchdarkly/ai-tooling snippets2Manually: put the files in place
.github/skills/snippets/SKILL.md1Skills CLI (Vercel)
npx skills add launchdarkly/ai-tooling --skill snippets -a gemini-cli2Platform CLI
gemini skills install https://github.com/launchdarkly/ai-tooling --path skills/agentcontrol/snippetsManually: put the files in place
.devin/skills/snippets/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add launchdarkly/ai-tooling --skill snippets -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about snippets
How do I install snippets in Claude?
Run npx skills add launchdarkly/ai-tooling --skill snippets -a claude-code. The skill file then lands at ~/.claude/skills/snippets/SKILL.md.
What does the snippets skill do?
It guides you through creating and editing prompt snippets in LaunchDarkly: spotting reusable text, creating blocks through MCP tools, and checking that config references hold.
What do I need for snippets to work?
A configured remotely hosted LaunchDarkly MCP server. The skill calls create-prompt-snippet, list-prompt-snippets and the other tools through it.
Source text
SKILL.md · Apache-2.0
---
name: snippets
description: "Create and manage prompt snippets — reusable text blocks referenced inside config variation prompts. Keeps common instructions, personas, and guardrails consistent across multiple configs."
license: Apache-2.0
compatibility: Requires the remotely hosted LaunchDarkly MCP server
metadata:
author: launchdarkly
version: "0.1.0"
---
# Config Prompt Snippets
You're using a skill that will guide you through creating and managing prompt snippets in LaunchDarkly. Your job is to identify reusable text, create snippets, reference them in config variations, and verify everything is wired correctly.
## Prerequisites
This skill requires the remotely hosted LaunchDarkly MCP server to be configured in your environment.
**Required MCP tools:**
- `create-prompt-snippet` -- create a new reusable text block
- `list-prompt-snippets` -- browse existing snippets in the project
- `get-prompt-snippet` -- inspect a specific snippet's content
**Optional MCP tools:**
- `update-prompt-snippet` -- edit a snippet's text, name, or tags
- `delete-prompt-snippet` -- permanently remove a snippet
- `update-ai-config-variation` -- update variation prompts to reference snippets
## Core Concepts
### What Are Prompt Snippets?
Prompt snippets are named, versioned text blocks stored at the project level. They contain reusable pieces of prompt text — personas, guardrails, output format instructions, domain knowledge — that can be shared across multiple config variations.
When a snippet is updated, a new version is created. Config variations that reference the snippet can pick up the latest version, keeping all your configs in sync.
### When to Use Snippets
| Scenario | Example |
|----------|---------|
| **Shared persona** | "You are a helpful customer support agent for Acme Corp..." used by 5 different configs |
| **Safety guardrails** | "Never reveal internal pricing. Never generate code that accesses production databases." |
| **Output format** | "Always respond in JSON with keys: answer, confidence, sources." |
| **Domain knowledge** | Company-specific terminology, product names, or process descriptions |
| **Regulatory text** | Compliance disclaimers that must appear in every response |
### When NOT to Use Snippets
- Text that is unique to a single variation — just put it in the prompt directly
- Dynamic content that changes per-request — use template variables instead
- Entire prompts — snippets are building blocks, not complete prompts
## Core Principles
1. **Reusability First**: Only create a snippet if the text will be used in 2+ places
2. **Single Responsibility**: Each snippet should cover one concern (persona OR guardrails, not both)
3. **Descriptive Keys**: Use keys like `safety-guardrails`, `json-output-format`, `support-persona`
4. **Tag for Discovery**: Add tags so teammates can find snippets by category
5. **Verify References**: After creating a snippet, confirm it appears in the project
## Workflow
### Step 1: Identify Reusable Text
Before creating snippets, understand what's shared:
1. List existing configs in the project using `get-ai-config` for each
2. Look for repeated text across variation prompts
3. Identify text that should stay consistent (guardrails, personas, formats)
4. Check existing snippets with `list-prompt-snippets` to avoid duplicates
### Step 2: Create Snippets
Use `create-prompt-snippet` with:
- `key` -- unique identifier (lowercase, hyphens, e.g. `safety-guardrails`)
- `name` -- human-readable display name
- `text` -- the reusable prompt text content
- `description` (optional) -- explain when/why to use this snippet
- `tags` (optional) -- categorize for discovery (e.g. `["guardrails", "safety"]`)
```json
{
"projectKey": "my-project",
"key": "support-persona",
"name": "Customer Support Persona",
"text": "You are a friendly, knowledgeable customer support agent for Acme Corp. Always greet the customer by name when available. Be empathetic but concise. If you don't know the answer, say so honestly and offer to escalate.",
"description": "Standard persona for all customer-facing support configs",
"tags": ["persona", "support"]
}
```
### Step 3: Verify
1. Use `get-prompt-snippet` to confirm the snippet was created with the correct text
2. Use `list-prompt-snippets` to see it in the project listing
3. Check that version is 1 for newly created snippets
**Report results:**
- Snippet created with key, name, and text
- Version number confirmed
- Tags applied correctly
### Step 4: Update Snippets (When Needed)
Use `update-prompt-snippet` to modify an existing snippet. Only pass the fields you want to change:
```json
{
"projectKey": "my-project",
"snippetKey": "safety-guardrails",
"text": "Updated guardrail text with new compliance requirements..."
}
```
Each update creates a new version. Existing config variations referencing the snippet can pick up the new version.
## Edge Cases
| Situation | Action |
|-----------|--------|
| Snippet key already exists | Use `get-prompt-snippet` to check, then either update or choose a different key |
| Very long text | Snippets can hold large blocks — but consider splitting into multiple snippets for modularity |
| Snippet referenced by configs | Update carefully — changes propagate to all referencing configs |
| Deleting a referenced snippet | Warn the user that configs will lose the reference. Use `delete-prompt-snippet` with `confirm: true` |
## What NOT to Do
- Don't create snippets for text used in only one place
- Don't put an entire prompt in a single snippet — break it into focused pieces
- Don't delete snippets without checking which configs reference them
- Don't duplicate existing snippets — check `list-prompt-snippets` first
## More resources
To learn more about setting up prompt snippets in the LaunchDarkly UI, read [Prompt snippets](https://launchdarkly.com/docs/home/agentcontrol/snippets.md).
© launchdarkly · Apache-2.0 · launchdarkly/ai-tooling