metabase-flightsql-driver: Skill for Claude Code

.claude/skills/tutorial-generator/SKILL.md

tutorial-generator is a skill for Claude Code from J0hnG4lt/metabase-flightsql-driver. It costs 74 tokens per session (1,782 once invoked), scanned A, original, Apache-2.0.

A process for writing end-to-end tutorials for the Arrow Flight SQL driver, a way for applications to query data over the Arrow Flight protocol. It deploys a real demo, prepares Metabase content, captures screenshots with Playwright, and writes Markdown documentation.

In plain words
What is it for?
Adding use-case tutorials under docs/tutorials, demonstrating supported backends, and documenting data workflows through Metabase.
Why use it?
It grounds tutorials in a working example and actual screenshots, so the instructions reflect what the software really does.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

This is J0hnG4lt/metabase-flightsql-driver's own configuration. It tells Claude Code how to work on metabase-flightsql-driver itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything metabase-flightsql-driver configures →

Reuse

Borrowing it

Nothing to install: this file belongs to J0hnG4lt/metabase-flightsql-driver. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/J0hnG4lt/metabase-flightsql-driver/main/.claude/skills/tutorial-generator/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/J0hnG4lt/metabase-flightsql-driver

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for tutorial-generator

README.md
[![agentmods](https://agentmods.dev/badge/skills/j0hng4lt/metabase-flightsql-driver/tutorial-generator.svg)](https://agentmods.dev/skills/j0hng4lt/metabase-flightsql-driver/tutorial-generator)
Your own site
<a href="https://agentmods.dev/skills/j0hng4lt/metabase-flightsql-driver/tutorial-generator"><img src="https://agentmods.dev/badge/skills/j0hng4lt/metabase-flightsql-driver/tutorial-generator.svg" alt="Measured on agentmods" height="20"></a>
Per session 74 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,782 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00074 $0.01782
Opus 5 $0.00037 $0.00891
Sonnet 5 $0.00015 $0.00356
Haiku 4.5 $0.00007 $0.00178

Measured 6d ago against content hash fb3400901678, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

tutorial-generator scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl -sf -H "x-api-key: $K" -H 'Content-Type: application/json' -X POST \
.claude/skills/tutorial-generator/SKILL.md · 128 lines

How it starts

The opening of the file, as written. The whole thing — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Tutorial generator

Produces a runnable, screenshot-illustrated tutorial under docs/tutorials/, grounded in a live PoC. This is the process proven on iceberg-lakehouse.md — copy its shape.

Each tutorial pairs one use case with the backend that showcases it (see the matrix in docs/tutorials/README.md). Everything is real: you deploy the backend, drive Metabase, and screenshot what actually renders.

Prerequisites

  • podman-compose available (this repo uses podman, not docker — the setup scripts auto-detect via CONTAINER_CLI).
  • The Playwright MCP tools available.
  • Metabase admin login: [email protected] / Metabase123!.

Process (6 phases)

Phase 1 — Choose use case + backend

Pick a row from the matrix (docs/tutorials/README.md). Confirm the backend has a compose profile (docker-compose.<backend>.yaml) and a setup script (scripts/setup_<backend>.py). If not, that PoC has to exist first — model it on docker-compose.dremio.yaml + scripts/setup_dremio.py.

Phase 2 — Deploy + seed + verify

podman-compose -f docker-compose.yaml -f docker-compose.<backend>.yaml up -d <backend>
python scripts/setup_<backend>.py

Verify the backend actually serves data before touching the UI (fresh backends often need the setup re-run — e.g. Dremio's metadata store is ephemeral):

K=$(grep METABASE_API_KEY .env | cut -d= -f2-)
curl -sf -H "x-api-key: $K" -H 'Content-Type: application/json' -X POST \
  http://localhost:3000/api/dataset \
  -d '{"type":"native","database":<DBID>,"native":{"query":"SELECT 1"}}'

Phase 3 — Provision demo content

Create a persistent Metabase connection (the e2e tests delete theirs) and any demo dashboard, using the repo's own helpers so shapes are correct:

import sys; sys.path.insert(0, "scripts")
from metabase_setup import MetabaseConfig, MetabaseClient
c = MetabaseClient(MetabaseConfig()); c.api_key = <API_KEY_FROM_ENV>
# c._request("POST","database",{...})           # create connection
# c.create_native_card(name, db_id, sql, display="bar",
#     visualization_settings={"graph.dimensions":["x"],"graph.metrics":["y"]})
# c.create_dashboard(...) ; c.add_cards_to_dashboard(dash_id, [...])

Chart cards MUST set graph.dimensions/graph.metrics or the card renders "Which fields do you want to use for the X and Y axes?". Scalars and tables need nothing. If a card won't render on the dashboard, drop it — a clean 3-card board beats a broken 4th.

Read the full file on GitHub · 128 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 128 lines · 74 tokens per session scan A fb3400901678

Subscribe to this mod's changes

tutorial-generator is a skill published in the GitHub repository J0hnG4lt/metabase-flightsql-driver (11 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 74 tokens to every session and 1,782 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.