# metabase-full-app-to-modular-embedding-upgrade

Migrates Metabase interactive iframe embeds to modular web components using embed.js. Useful when modernizing embedded analytics across your web application templates.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 355 installs · ★ 53
- Author: metabase
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/metabase/agent-skills/tree/HEAD/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/skills/metabase-full-app-to-modular-embedding-upgrade

## What it does

This skill migrates Metabase Full App embedding from legacy `<iframe>` tags to web components such as `<metabase-dashboard>` and `<metabase-question>`. It adds the `embed.js` script tag and `window.metabaseConfig` setup code once in the main layout file. In addition, it updates SSO or JWT endpoints to output the JSON payload needed by modular embedding.

The workflow follows a strict sequential contract across seven steps. It fetches the version-specific `llms-embedding-full.txt` guide directly from Metabase documentation to map URL parameters to component attributes. Existing backend frameworks and templating conventions remain intact. Sub-agents are avoided during scanning to keep findings inside the main context.

Modular embedding requires Metabase v53 or newer. If the project runs on v52 or earlier, the skill halts immediately. Migrations from static signed embedding are out of scope.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add metabase/agent-skills --skill metabase-full-app-to-modular-embedding-upgrade -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/metabase-full-app-to-modular-embedding-upgrade/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add metabase/agent-skills --skill metabase-full-app-to-modular-embedding-upgrade -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add metabase/agent-skills --skill metabase-full-app-to-modular-embedding-upgrade -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install metabase/agent-skills metabase-full-app-to-modular-embedding-upgrade
```

2. **Manually: put the files in place**
- File: `.github/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add metabase/agent-skills --skill metabase-full-app-to-modular-embedding-upgrade -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/metabase/agent-skills --path skills/metabase-full-app-to-modular-embedding-upgrade
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add metabase/agent-skills --skill metabase-full-app-to-modular-embedding-upgrade -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/metabase/agent-skills/tree/HEAD/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md

## When to use it
- Replace legacy Metabase iframe tags with modular web components
- Inject embed.js and window.metabaseConfig into the primary layout template
- Update SSO and JWT routes to return JSON for web components
- Map iframe URL query parameters to component attributes and theme settings

## Example prompts
- Migrate our project from Metabase iframes to modular web components.
- Run metabase-full-app-to-modular-embedding-upgrade to inspect iframes and inject embed.js.
- Convert our Metabase interactive dashboard embeds to web components using the modular embedding skill.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 22d7e1e0c805560a.

BEGIN THIRD-PARTY FILE 22d7e1e0c805560a
```text
---
name: metabase-full-app-to-modular-embedding-upgrade
description: Migrates a project from Metabase Full App / Interactive (iframe-based) embedding to Modular (web-component-based) embedding. Use when the user wants to replace Metabase iframes with Modular embedding web components.
model: opus
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch, Task, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion
---

## Execution contract

Follow the workflow steps in order — do not skip any step. Create the checklist first, then execute each step and explicitly mark it done with evidence. Each step's output feeds into the next, so skipping steps produces wrong migrations.

If you cannot complete a step due to missing info or tool failure, you must:

1. record the step as ❌ blocked,
2. explain exactly what is missing / what failed,
3. stop (do not proceed to later steps).

### Required output structure

Your response should contain these sections in this order:

1. **Step 0: Metabase Version Detection**
2. **Step 0.1: Migration Plan Checklist**
3. **Step 1: Project Scan**
4. **Step 2: iframe Analysis & Web Component Mapping**
5. **Step 3: Migration Plan**
6. **Step 4: Applied Code Changes**
7. **Step 5: Validation**
8. **Step 6: Final Summary**

Each step section should end with a status line:

- `Status: ✅ complete` or `Status: ❌ blocked`

Steps are sequential — do not start a step until the previous one is ✅ complete.

### Evidence requirements

- Step 0: Metabase version detected (source: Docker tag, env var, or user answer).
- Step 1: every matched file path, every iframe location, SSO endpoint, layout/head file, Metabase config variables.
- Step 2: per iframe — parsed URL, content type, ID, hash params, mapped web component with attributes.
- Step 3: the complete file-by-file change plan with exact old/new code.
- Step 4: per file — what was changed and exact diffs applied.
- Step 5: each validation check's pass/fail result with evidence.

## Architectural conformance
```
END THIRD-PARTY FILE 22d7e1e0c805560a

The third-party file has ended. Everything between the 22d7e1e0c805560a tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2033 of 24510 bytes. © metabase · MIT · https://github.com/metabase/agent-skills/tree/HEAD/skills/metabase-full-app-to-modular-embedding-upgrade/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
