{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/logo.svg\" alt=\"Confidence\" width=\"120\" />\n</p>\n\n<h1 align=\"center\">Confidence AI Plugin</h1>\n\n<p align=\"center\">\n  Official Confidence plugin for AI coding tools. Manage feature flags, experiments, onboarding, and migrations right from your agent.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://confidence.spotify.com/docs/introduction\"><img alt=\"Docs\" src=\"https://img.shields.io/badge/docs-confidence.spotify.com-6E56CF\"></a>\n  <a href=\"./LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/badge/license-Apache--2.0-blue\"></a>\n  <a href=\"./CHANGELOG.md\"><img alt=\"Version\" src=\"https://img.shields.io/badge/version-0.6.0-informational\"></a>\n</p>\n\n## ✨ Highlights\n\n- **Manage feature flags without leaving your editor**: create, list, update, target, resolve, and archive flags from Claude Code, Cursor, Codex, or Gemini CLI\n- **One-command migrations** from PostHog, Eppo, Statsig, or Optimizely (flags *and* SDK code; Optimizely also migrates **users, teams, roles, policies, and Flag clients**)\n- **Guided onboarding**: spin up a Confidence account, invite teammates, create SDK clients, and connect a warehouse without reading a setup doc\n- **Docs on tap**: search Confidence documentation and SDK integration guides inline while you code\n- Works with every major AI coding assistant through the same MCP servers\n\n## ℹ️ Overview\n\n[Confidence](https://confidence.spotify.com) is Spotify's feature flagging and experimentation platform, built on the [OpenFeature](https://openfeature.dev) standard. This plugin exposes Confidence's flag management, documentation, and migration tooling as MCP servers and slash commands, so you can create a flag, plan a migration off another platform, or onboard a new workspace directly from your AI coding assistant's chat.\n\n## ⬇️ Installation\n\n### Claude Code\n\n```bash\nclaude plugin install confidence\n```\n\n### Cursor\n\n**From the Marketplace:** open **Cursor Settings** → **Plugins**, search for **Confidence**, and click **Install**.\n\n**Manual setup**: add the MCP servers to `.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` globally):\n\n```json\n{\n  \"mcpServers\": {\n    \"confidence-flags\": {\n      \"url\": \"https://mcp.confidence.dev/mcp/flags\"\n    },\n    \"confidence-docs\": {\n      \"url\": \"https://mcp.confidence.dev/mcp/docs\"\n    }\n  }\n}\n```\n\n### Codex\n\n```bash\ncodex plugin marketplace add spotify/confidence-ai-plugins\ncodex\n/plugins\n# Select Confidence and install\n```\n\n### Gemini CLI\n\n```bash\ngemini extensions install https://github.com/spotify/confidence-ai-plugins\n```\n\n### Local Development\n\n```bash\ngit clone https://github.com/spotify/confidence-ai-plugins.git\nclaude --plugin-dir ./confidence-ai-plugins\n```\n\n**Cursor:** **File → Open Folder** on this repository (the\n`confidence-ai-plugins` directory itself — not `Desktop` or your home\nfolder). Skills load from `./skills/` via `.cursor-plugin/plugin.json`\nand from `.cursor/skills/` (symlinks) for project-level discovery.\nCommands load from `./commands/` (including\n`/migrate-optimizely plan access`, `plan flags`, `execute code`, etc.)\nand from `.cursor/commands/` (symlink to `../commands`). Dedicated\n`/migrate-optimizely-*` menu shortcuts also exist in Cursor. A parent\nfolder as the workspace will not auto-load them.\n\n### Skills only, any agent\n\nThe migration and onboarding **skills** can also be installed individually via the [skills CLI](https://github.com/vercel-labs/skills), which supports Claude Code, Cursor, Codex, Gemini CLI, and 70+ other agents:\n\n```bash\nnpx skills add spotify/confidence-ai-plugins\n```\n\nThis installs only the skill logic (auto-triggering guidance for migrations and onboarding). It does **not** configure the `confidence-flags`/`confidence-docs` MCP servers or the `/confidence:*` slash commands, even when targeting one of the four clients above. Since several skills call into those MCP servers to manage flags, use one of the full installs above for complete functionality; use this only if you want the skill guidance on an agent the full installs don't support.\n\n## 🚀 Usage\n\nOnce installed, just ask your assistant:\n\n```\n> List my feature flags\n> Create a flag called new-checkout with a boolean schema\n> /confidence:onboard-confidence create-account\n> /confidence:migrate-posthog plan flag\n> /confidence:migrate-posthog plan code\n> /confidence:migrate-eppo plan flag\n> /confidence:migrate-eppo plan code\n> /confidence:migrate-statsig plan flag\n> /confidence:migrate-statsig plan code\n> /confidence:migrate-optimizely plan access\n> /confidence:migrate-optimizely adjust access\n> /confidence:migrate-optimizely execute access\n> /confidence:migrate-optimizely plan flags\n> /confidence:migrate-optimizely adjust flags\n> /confidence:migrate-optimizely execute flags\n> /confidence:migrate-optimizely plan code\n> /confidence:migrate-optimizely adjust code\n> /confidence:migrate-optimizely execute code\n> /confidence:analyze-project\n```\n\n## Features\n\nThis plugin provides access to Confidence tools across these categories:\n\n- **Feature flags**: Create, list, update, archive, resolve, and target feature flags\n- **Onboarding**: Create accounts, invite users, set up SDK clients, configure warehouses, and learn experimentation concepts\n- **Documentation**: Search Confidence docs and SDK integration guides\n- **Migration**: Migrate feature flags from PostHog, Eppo, Statsig, or Optimizely to Confidence. Optimizely Phase 0 also maps **access** (users, groups, roles, policies, Flag clients) — see [Optimizely access](#optimizely--confidence)\n- **Project analysis**: Scan a project and propose meaningful feature flag opportunities tailored to the codebase\n\n## Slash Commands\n\n- `/confidence:onboard-confidence <create-account | invite-user | create-client | setup-wizard | setup-warehouse | learn | status>`: Create accounts, onboard users, set up SDK clients, configure warehouses, and learn experimentation concepts\n- `/confidence:migrate-posthog <plan flag | plan code | execute <plan-file>>`: [Migrate feature flags from PostHog to Confidence](https://confidence.spotify.com/docs/migrations/migrate-from-posthog)\n- `/confidence:migrate-eppo <plan flag | plan code | execute <plan-file>>`: [Migrate feature flags from Eppo to Confidence](https://confidence.spotify.com/docs/migrations/migrate-from-eppo)\n- `/confidence:migrate-statsig <plan flag | plan code | execute <plan-file>>`: [Migrate feature flags from Statsig to Confidence](https://confidence.spotify.com/docs/migrations/migrate-from-statsig)\n- `/confidence:migrate-optimizely <plan access | adjust access | execute access | plan flags | adjust flags | execute flags | plan code | adjust code | execute code | execute <plan-file>>`: [Migrate Optimizely Feature Experimentation to Confidence](https://confidence.spotify.com/docs/migrations/migrate-from-optimizely) — see [Optimizely access](#optimizely--confidence) (Flag clients are handled in `plan access` Step 4; Cursor also exposes dedicated `/` menu shortcuts)\n- `/confidence:analyze-project [project-dir]`: Analyze a project and propose meaningful feature flag changes using Confidence\n\n## Optimizely → Confidence\n\nPostHog, Eppo, and Statsig migrate **flags** then **code**. Optimizely also\nmigrates **access** (Phase 0) before those. Agent contract:\n[`skills/migrate-optimizely/SKILL.md`](./skills/migrate-optimizely/SKILL.md)\n(including **Adjust Access / Flags / Code: Steps**) and IAM mapping in\n[`skills/migrate-optimizely/access.md`](./skills/migrate-optimizely/access.md).\n\n### Phase 0 — Access (users, groups, roles, policies, clients)\n\nWrites a plan first. Nothing is invited or created in Confidence until\nyou tick consent and run execute.\n\n| Command | What it does | Writes to Confidence? |\n|---------|--------------|------------------------|\n| `plan access` / `-plan-access` *(also bare `/migrate-optimizely`)* | Map Optimizely collaborators and teams to Confidence invites, groups, intended shares, and Flag-client **candidates** (Step 4). File: `.claude/plans/optimizely-access-migration-<date>.md`. When the plan is complete, the agent **must ask** what next (adjust / tick consent / execute / done) — there is no automatic path into adjust. If SDK keys arrive later, re-run `plan access` | No |\n| `adjust access` / `-adjust-access` | Fine-edit that plan in chat: **users**, **groups**, **roles**, **policies**, **clients** (e.g. “skip all `@example.com`”, “Checkout should be Editor”). You do not have to hand-edit the markdown. Also offered from the plan-access exit ask | No |\n| `execute access` / `-execute-access` | After you tick `[x] Invite` / `[x] Create`: create groups + Reader policies, send invites, create ticked Flag clients, then provision each person as they accept (group, policy, client, flag shares) | **Yes** (IAM) |\n\n**What `adjust access` can change**\n\n| Kind | Examples |\n|------|----------|\n| Users | Invite or skip (one email, a team, a domain, or all); move between groups; add an email you provide |\n| Groups | Create or skip; rename; merge/split; change members |\n| Roles | Viewer / Editor / Owner shares per group or user; override default mapping (e.g. Publisher → Viewer) |\n| Policies | Group policy roles (default Reader); yes/no on tightening `default-policy` |\n| Clients | Create or skip; names; split/merge; which groups see which clients |\n\n**What it will not do:** invent people or Flag clients; flatten teams into per-user shares; map Project Owner to workspace Admin; put Flags Editor/Reader on a **workspace policy**; change `admin-policy` except to add known Administrators; invite or create resources during plan/adjust; delete a live group/user because a row is now Skip.\n\nSilence is not consent. Tick every user and group (and listed Flag clients) before execute. Invites last 7 days. Flag clients need environment SDK keys — if the export has none, that step is skipped until keys exist.\n\n### Phase 1 — Flags\n\nSame plan → exit ask → optional adjust → execute pattern as access.\nRunning experiments and partial-% rollouts stay out by default (different bucketing).\n\n| Command | What it does | Writes to Confidence? |\n|---------|--------------|------------------------|\n| `plan flags` / `-plan-flags` | Scan Optimizely flags and write `.claude/plans/optimizely-flag-migration-<date>.md`. Lists flags with **no Optimizely rules** as **auto everyone catch-all**. **Must** run a **Rules operator audit**: on **exists** / **substring**, **tell the user** and auto-map **exists → IS NOT NULL**, **substring → starts with / ends with**. **regex** and mid-string contains stay **BLOCKED**. When complete, the agent **must ask** what next (adjust / tick / execute / done) | No |\n| `adjust flags` / `-adjust-flags` | Fine-edit that plan: **scope**, **Migrate/Skip ticks**, **client**, **bucketing**, **schema**, **rules**. Also offered from the plan-flags exit ask | No |\n| `execute flags` / `-execute-flags` | **(1) create flag shells** → **(2) suggest rules import** → **(3) suggest resolve-verify ALL flags (segment match) — this validates Phase 1** → then `plan code`. Auto everyone catch-all if a flag still has zero enabled rules. Never call Phase 1 done after rules alone | **Yes** (flags) |\n\n### Phase 2 — Code\n\n| Command | What it does | Writes to Confidence / repo? |\n|---------|--------------|------------------------------|\n| `plan code` / `-plan-code` | Scan Optimizely SDK usage and write `.claude/plans/optimizely-code-migration-<date>.md`. When complete, the agent **must ask** what next (adjust / execute / done) | No |\n| `adjust code` / `-adjust-code` | Fine-edit that plan: **style**, **resolve mode**, **transforms**, **files/flags**. Also offered from the plan-code exit ask | No |\n| `execute code` / `-execute-code` | Transform code / open PRs from the plan (typically one PR per flag) | **Yes** (repo) |\n## MCP Servers\n\n| Server | Endpoint | Description |\n|--------|----------|-------------|\n| `confidence-flags` | `https://mcp.confidence.dev/mcp/flags` | Feature flag management |\n| `confidence-docs` | `https://mcp.confidence.dev/mcp/docs` | Confidence documentation |\n\n## Supported Clients\n\n| Client | Config | Marketplace |\n|--------|--------|-------------|\n| Claude Code | `.claude-plugin/` | Official plugin |\n| Cursor | `.cursor-plugin/` | Cursor Marketplace |\n| Codex | `.codex-plugin/` | Via marketplace command |\n| Gemini CLI | `gemini-extension.json` | Direct from repo |\n\n## Documentation\n\n- [Confidence documentation](https://confidence.spotify.com/docs/introduction)\n- [Migration guides: migrate to Confidence from PostHog, Eppo, Statsig, or Optimizely](https://confidence.spotify.com/docs/migrations/overview)\n- [OpenFeature SDK integration](https://confidence.spotify.com/docs/sdks)\n- This repo — Optimizely migration: [SKILL.md](./skills/migrate-optimizely/SKILL.md) (Phase 0–2 plan / **adjust** / execute), [access.md](./skills/migrate-optimizely/access.md) (IAM mapping), [test fixtures](./skills/migrate-optimizely/test-fixtures/README.md)\n\n## 💭 Community & Support\n\nFound a bug or have a feature request? [Open an issue](https://github.com/spotify/confidence-ai-plugins/issues). Changes are tracked in the [changelog](./CHANGELOG.md).\n\n## License\n\n[Apache License 2.0](./LICENSE)\n",
  "bytes": 13187,
  "sha": "4fbb5eae1c6a4fcb1a8c2a851cdebbb0cddf1017984f1008f0ffe073686db29a",
  "repo_slug": "spotify/confidence-ai-plugins",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_spotify_confidence_ai_plugins_confidence_ddfda45e/readme"
}