
Metabase
FreeManage Metabase questions and dashboards efficiently.
Free · Opens the source repo
What Metabase does
The Metabase skill allows users to create, manage, and share data visualizations and queries directly from Civitai's Metabase instance. This skill is particularly useful for developers and data analysts who need to build metrics dashboards, generate saved SQL questions, and make analytics accessible to stakeholders through public links. By leveraging the command-line interface, users can execute a variety of commands to interact with their Metabase setup, making it easier to handle data insights without navigating through a graphical interface.
With commands like run-query, users can execute ad-hoc SQL queries on specified databases, enabling quick data retrieval for immediate analysis. The create-question command allows users to save frequently used queries, with support for variable definitions to customize the output. This is particularly beneficial for creating dynamic reports that can adapt based on user input, enhancing the interactivity of dashboards.
The skill also supports dashboard management, allowing users to create new dashboards, add questions to them, and even apply interactive filters to refine the displayed data. For those looking to share insights publicly, the share command generates links to questions or dashboards, facilitating easy access for external stakeholders. This comprehensive set of features makes the Metabase skill a valuable tool for anyone involved in data analysis and reporting, streamlining the process of data visualization and sharing.
Overall, the Metabase skill is designed for teams that rely on data-driven decision-making and need a straightforward way to manage their analytics workflows. By integrating SQL query capabilities with dashboard management, it provides a powerful solution for building and sharing metrics effectively.
When to use it
Use this skill when you need to build and manage dashboards or SQL queries in Metabase, especially for data analysis and reporting.
When not to use it
This skill may not be suitable for users who prefer a purely graphical interface or those who do not use Metabase for their analytics needs.
What you can build with it
Building a Metrics Dashboard
Quickly create a new dashboard to visualize key performance indicators and metrics for your team.
Executing Ad-Hoc Queries
Run SQL queries on the fly to analyze data without needing to navigate through the Metabase UI.
Sharing Analytics with Stakeholders
Generate public links to share specific questions or dashboards with external stakeholders for transparency.
How to install Metabase
View source1. Install with the skills CLI
npx skills add civitai/civitai/metabase --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by civitaiMetabase Skill
Create questions, dashboards, and public links on Civitai's Metabase instance.
Running Commands
node .claude/skills/metabase/metabase.mjs <command> [options]
Commands
run-query — Ad-hoc SQL query
node .claude/skills/metabase/metabase.mjs run-query --database 3 --query "SELECT count() FROM views"
create-question — Saved question with optional variables
Variables are auto-detected from {{variable}} syntax in the query, or can be specified explicitly.
# Auto-detected variables
node .claude/skills/metabase/metabase.mjs create-question \
--name "Challenge Review Purchases" \
--database 3 \
--collection 232 \
--query "SELECT * FROM buzzTransactions WHERE description LIKE 'Challenge review:%' AND toDate(date) >= {{start_date}}" \
--description "Tracks guaranteed review buzz purchases"
# Explicit variable definitions (for types like date, number, etc.)
node .claude/skills/metabase/metabase.mjs create-question \
--name "User Activity" \
--database 3 \
--query "SELECT * FROM views WHERE userId = {{user_id}}" \
--variables '{"user_id":{"id":"user_id","name":"user_id","display-name":"User ID","type":"number"}}'
Variable types: text, number, date, date/single, date/range, date/month-year, date/quarter-year, date/relative, date/all-options
update-question — Change display type or visualization
# Change to bar chart
node .claude/skills/metabase/metabase.mjs update-question --id 123 --display bar
# Change to line chart with custom settings
node .claude/skills/metabase/metabase.mjs update-question --id 123 --display line \
--visualization '{"graph.dimensions":["date"],"graph.metrics":["count"]}'
Display types: table, bar, line, area, pie, scalar, row, funnel, map, scatter, waterfall, combo, smartscalar, progress, gauge, pivot
create-dashboard — New dashboard
node .claude/skills/metabase/metabase.mjs create-dashboard \
--name "Challenge Metrics" \
--collection 232 \
--description "Overview of challenge engagement and revenue"
add-to-dashboard — Add questions to a dashboard
# Add 3 cards in a 2-column layout
node .claude/skills/metabase/metabase.mjs add-to-dashboard \
--dashboard 456 \
--cards "101,102,103" \
--cols 2
The --cols flag controls cards per row (default: 2). Uses Metabase's 24-column grid.
add-dashboard-filter — Add interactive filters
node .claude/skills/metabase/metabase.mjs add-dashboard-filter \
--dashboard 456 \
--filtername "Date Range" \
--filtertype "date/range" \
--slug "date_range" \
--target '[{"card_id":101,"target":["variable",["template-tag","start_date"]]}]'
set-dropdown — Make a variable a dropdown list
Converts a {{variable}} template tag into a dropdown with a static list of values. The variable must already exist in the question's SQL query.
# Basic dropdown
node .claude/skills/metabase/metabase.mjs set-dropdown \
--id 2608 \
--variable period \
--values "day,week,month,year" \
--default day \
--required
# Metric selector
node .claude/skills/metabase/metabase.mjs set-dropdown \
--id 2608 \
--variable as \
--values "purchases,buzz,users" \
--default purchases \
--required
| Flag | Description |
|---|---|
--id | Question (card) ID |
--variable | Name of the {{variable}} in the SQL query |
--values | Comma-separated list of allowed values |
--default | Default selected value |
--required | Make the filter required |
set-date-picker — Make a variable a date picker
Converts a {{variable}} template tag into a date picker widget.
node .claude/skills/metabase/metabase.mjs set-date-picker \
--id 2608 \
--variable since \
--default "2026-02-13" \
--required
| Flag | Description |
|---|---|
--id | Question (card) ID |
--variable | Name of the {{variable}} in the SQL query |
--default | Default date (YYYY-MM-DD) |
--required | Make the filter required |
set-parameters — Full parameter JSON (advanced)
Set all parameters at once with full Metabase parameter JSON. Use get --type question --id <id> to see the current parameter structure.
node .claude/skills/metabase/metabase.mjs set-parameters \
--id 2608 \
--parameters '[{"slug":"as","type":"string/=","values_source_type":"static-list",...}]'
share — Generate public link
# Share a question
node .claude/skills/metabase/metabase.mjs share --type question --id 101
# Share a dashboard
node .claude/skills/metabase/metabase.mjs share --type dashboard --id 456
list — Browse a collection
node .claude/skills/metabase/metabase.mjs list --collection 232
node .claude/skills/metabase/metabase.mjs list --collection 232 --type question
search — Find questions/dashboards
node .claude/skills/metabase/metabase.mjs search --query "challenge" --type question
get — View full details
node .claude/skills/metabase/metabase.mjs get --type question --id 101
node .claude/skills/metabase/metabase.mjs get --type dashboard --id 456
list-collections / list-databases
node .claude/skills/metabase/metabase.mjs list-collections
node .claude/skills/metabase/metabase.mjs list-databases
Databases
| ID | Name | Engine | Notes |
|---|---|---|---|
| 3 | ClickHouse | clickhouse | Analytics, events, buzz transactions |
| 2 | Prod | postgres | Main application database |
| 35 | Buzz DB | postgres | Buzz-specific database |
Key Collections
| ID | Name |
|---|---|
| 232 | Challenges |
| 100 | Buzz Analytics |
| 102 | Daily Analytics |
| 430 | Community Analytics |
| 331 | Feature Performance |
| 530 | Revenue |
| 133 | Social Metrics |
| 106 | System Performance |
Workflow: Build a Question with Dropdowns
# 1. Create the question with {{variables}} in SQL
node .claude/skills/metabase/metabase.mjs create-question \
--name "My Metric" \
--database 3 \
--collection 232 \
--display bar \
--query "SELECT date_trunc({{period}}, date) AS period, CASE WHEN {{as}} = 'count' THEN count()::Int64 WHEN {{as}} = 'sum' THEN sum(amount)::Int64 END AS total FROM buzzTransactions WHERE date >= {{since}} GROUP BY period ORDER BY period"
# 2. Configure dropdowns and date pickers
node .claude/skills/metabase/metabase.mjs set-dropdown --id <id> --variable as --values "count,sum" --default count --required
node .claude/skills/metabase/metabase.mjs set-dropdown --id <id> --variable period --values "day,week,month,year" --default day --required
node .claude/skills/metabase/metabase.mjs set-date-picker --id <id> --variable since --default "2026-01-01" --required
# 3. Share publicly
node .claude/skills/metabase/metabase.mjs share --type question --id <id>
Workflow: Build a Dashboard End-to-End
# 1. Create questions (see above for dropdown setup)
node .claude/skills/metabase/metabase.mjs create-question --name "Daily Revenue" --database 3 --collection 530 --query "SELECT toDate(date) as day, sum(amount) FROM buzzTransactions GROUP BY day ORDER BY day DESC LIMIT 30"
# 2. Create dashboard
node .claude/skills/metabase/metabase.mjs create-dashboard --name "Revenue Overview" --collection 530
# 3. Add questions to dashboard
node .claude/skills/metabase/metabase.mjs add-to-dashboard --dashboard <id> --cards "<q1>,<q2>,<q3>" --cols 3
# 4. Share publicly
node .claude/skills/metabase/metabase.mjs share --type dashboard --id <id>
How Dropdowns Work
Metabase has two layers for variables in native queries:
-
Template tags — defined in
dataset_query.native.template-tags. These create the{{variable}}placeholders in the SQL. Set via--variablesoncreate-question. -
Parameters — defined in the top-level
parametersarray on the card. These control the UI widget (text input, dropdown, date picker). Set viaset-dropdown,set-date-picker, orset-parameters.
By default, {{variable}} template tags render as plain text inputs. To make them dropdowns:
- Use
set-dropdownto configure a static list of values - Use
set-date-pickerto configure a date picker widget - Each command reads the existing template tag ID and wires it up correctly
Important: Each call to set-dropdown or set-date-picker preserves other existing parameters. You can call them one at a time.
Tips
- Always specify
--collectionwhen creating questions/dashboards to keep things organized - Use
--displaywithupdate-questionorcreate-questionto set chart type - Variables in queries (
{{var}}) are auto-detected — no need to manually define simple text variables - For date/number variables, use
--variableswith explicit type definitions - After creating a question, use
set-dropdownandset-date-pickerto configure widgets - The
add-to-dashboardcommand auto-positions cards in a grid layout - Public links work for both questions and dashboards
- Use
[[AND col < {{optional_var}}]]syntax for optional filters (omitted when empty)
Frequently asked questions about Metabase
Similar skills
D3.js Visualisation
Create interactive and custom data visualisations with D3.js.
LeRobot Visualizer
Easily visualize and inspect LeRobot datasets in your browser.
Social Media Dashboard
Create a streamlined analytics dashboard for social media.
Seaborn Statistical Visualization
Create attractive statistical graphics with minimal code.
Scientific Visualization
Create publication-ready scientific figures with integrity.
Matplotlib
Create highly customizable plots for scientific visualization.
