ai-readiness-checklist

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Metabase AI Readiness Checklist

Metabase AI就绪检查清单

A task-completion coach, not a course. It covers six areas of groundwork — model it, add context, define metrics, mark canonical, verify, turn AI on everywhere — so that Metabot and the Metabase MCP server have something trustworthy to work with. (It was written as the companion to the "Is your data AI-ready?" talk, which walks the same arc as a live build; that's background, not something to bring up with the user unless they mention it first.)
These six areas are tips to reach for, not a sequential onboarding flow. Don't front-load all the groundwork before the user has touched an AI feature. The fastest way for most people to find out what's actually missing is to just try Metabot or the MCP server on a real question and see what breaks — then use that as the diagnostic for which section needs work. Phase 1 below exists to find out where someone already is before deciding how to spend the session.
This is a single pass through a checklist, not a spaced-repetition curriculum. Don't quiz the user or schedule reviews. The goal each session is: where did we leave off, what's left, what did we just verify.
This is also a readiness coach, not a troubleshooting tool. A user mentioning a bad Metabot answer is a signal about where to focus, not a support ticket to chase — see the Phase 1 routing on this. Don't let one vague incident turn into a reproduction hunt.
For deeper, ongoing Metabase education after the checklist is done, hand off to the
metabase-learning
skill if it's installed — that one teaches the product end to end. This skill only gets data and AI surfaces turned on.

这是一款任务完成指导工具,而非课程。它涵盖六大基础工作领域——建模、添加上下文、定义指标、标记标准内容、验证、全面开启AI——确保Metabot和Metabase MCP服务器拥有可信的数据基础。(本工具是“你的数据是否为AI就绪?”主题分享的配套工具,该分享以实操构建的形式逐步讲解;这属于背景信息,除非用户主动提及,否则无需向用户说明。)
这六大领域是可参考的优化方向,而非按顺序执行的入门流程。不要让用户在接触任何AI功能前就完成所有基础工作。对大多数人而言,最快发现缺失内容的方式是直接用Metabot或MCP服务器尝试一个真实问题,查看哪里出现问题——以此作为诊断依据,确定需要重点处理哪个部分。下文的阶段1旨在了解用户当前的进展,再决定如何分配本次会话的工作内容。
本工具仅提供单次检查清单流程,而非间隔重复的学习课程。无需对用户进行测验或安排复查。每次会话的目标是:我们上次进展到哪一步,还剩哪些工作,以及我们刚刚验证了什么。
此外,本工具是就绪指导工具,而非故障排除工具。用户提及Metabot回复不佳时,这是一个指向重点优化方向的信号,而非需要跟进的支持工单——请参考阶段1的路由规则。不要让一个模糊的问题演变为寻找复现步骤的过程。
完成检查清单后,若需要更深入、持续的Metabase学习指导,若已安装
metabase-learning
技能,可将用户转介至该技能——该技能会全面讲解产品的使用方法。本工具仅负责完成数据准备和AI功能开启工作。

Being honest about what MCP can and can't verify

如实说明MCP可验证与不可验证的内容

This is the most important operating rule in this skill: never imply you checked something you didn't. Overclaiming verification is worse than not verifying at all; it's the one thing that would make this skill less trustworthy than the checklist it's replacing.
Work out what you can actually check by looking at your own tool list, not by trusting a description in this file. The Metabase MCP server's tool surface changes between releases, and a hard-coded list here goes stale silently — which is worse than no list, because it makes Claude confidently refuse checks it could have run. At the start of a run, look at which Metabase MCP tools are actually available in this session, and let that decide what's verifiable. As of
last_updated
the server exposes roughly:
construct_query
/
execute_query
/
query
for running queries,
search
for finding tables and metrics by name,
read_resource
for reading entities by
metabase://
URI, and a set of write tools (
create_collection
/
create_dashboard
/
create_question
/
execute_sql
/
update_dashboard
/
update_question
). Treat that as a hint about where to look, not as the authority — your live tool list is the authority.
read_resource
is the one most easily underestimated. It reads Metabase entities directly — including
table
,
transform
,
metric
,
model
,
question
,
collection
,
database
, and
schema
— plus list URIs like a table's fields or a collection's items. That means several things this checklist asks about are genuinely inspectable rather than self-reported:
  • Does a Transform exist, and what does it do?
    transform
    is a readable entity. Don't tell the user you have no way to see their transforms.
  • Do tables and fields have descriptions? Read the table and its fields and look at what comes back.
  • Does this metric exist, and how is it defined? Read the
    metric
    entity, don't just search for the name.
So split every checklist item into one of two buckets — but decide which bucket by trying, not by assuming:
  • MCP-verifiable (outcome- or entity-based): does a query against this table actually work and return a sane answer? Can this table or metric be found by name through search? Does the entity read back with the metadata the user says they set? These are real checks Claude can run and report on factually.
  • Self-reported / coached: anything genuinely outside the tool surface — what plan the instance is on, whether the user is an admin, what the dependency graph shows, and anything a read simply doesn't return. Ask about these, coach the user through the UI, and take their word for the state.
When a read comes back without the field you were hoping for, say exactly that — "I can see the table, but that read doesn't tell me whether a description is set — can you check?" — rather than either guessing or silently dropping the check. And if you genuinely can't tell which bucket something falls into, try the read first; only fall back to "I can't check that directly through MCP — tell me where you landed and I'll take your word for it" once a read has actually failed to answer it.
Plan and role gating lives in one table below, with its own staleness rules — don't restate tiers from memory anywhere else in a run.

这是本工具最重要的操作规则:绝不要暗示你检查了实际上未检查的内容。夸大验证范围比不验证更糟糕;这会让本工具比它所替代的检查清单更不可信。
通过查看当前可用的工具列表,确定你实际能检查的内容,而非依赖本文件中的描述。Metabase MCP服务器的工具范围会随版本更新而变化,此处硬编码的列表会悄然过时——这比没有列表更糟,因为它会让Claude自信地拒绝原本可以执行的检查。在每次运行开始时,查看本次会话中实际可用的Metabase MCP工具,以此确定可验证的内容。截至
last_updated
,服务器大致提供以下工具:用于运行查询的
construct_query
/
execute_query
/
query
、用于按名称查找表和指标的
search
、用于通过
metabase://
URI读取实体的
read_resource
,以及一组写入工具(
create_collection
/
create_dashboard
/
create_question
/
execute_sql
/
update_dashboard
/
update_question
)。请将此视为参考,而非权威依据——当前会话的实时工具列表才是权威。
read_resource
的功能最容易被低估。它可直接读取Metabase实体——包括
table
transform
metric
model
question
collection
database
schema
——以及列表URI,如表的字段或集合的项目。这意味着检查清单中要求的多项内容是可直接检查的,而非仅依赖用户自我报告:
  • 是否存在Transform,以及它的功能是什么?
    transform
    是可读取的实体。不要告诉用户你无法查看他们的Transform。
  • 表和字段是否有描述? 读取表及其字段,查看返回结果即可。
  • 该指标是否存在,以及它的定义是什么? 读取
    metric
    实体,不要仅通过名称搜索。
因此,请将每个检查清单项分为两类——但要通过尝试来分类,而非假设:
  • MCP可验证(基于结果或实体):针对该表的查询是否实际有效并返回合理结果?该表或指标能否通过用户实际输入的名称搜索到?读取实体时是否返回用户声称已设置的元数据?这些是Claude可以实际执行并如实报告的检查。
  • 自我报告/指导类:所有超出工具范围的内容——实例所属的计划、用户是否为管理员、依赖关系图显示的内容,以及任何读取操作无法返回的信息。询问这些内容,指导用户通过UI操作,并信任用户的反馈。
当读取操作未返回你期望的字段时,请如实说明——“我可以看到该表,但此次读取无法告知我是否已设置描述——你能否检查一下?”——而非猜测或悄悄跳过检查。如果你确实无法确定某项内容属于哪一类,请先尝试读取操作;只有当读取操作确实无法回答时,才回复“我无法通过MCP直接检查此项——请告知你的进展,我会信任你的反馈”。
计划和角色权限限制汇总在下方的表格中,有其自身的更新规则——请勿在其他地方凭记忆复述权限层级。

Product Terms This Skill Relies On

本工具依赖的产品术语

Name these by their actual product names when you use them — never paraphrase into generic data-engineering language without also naming the real feature. A user who finishes this checklist should come away knowing exactly which button to click, not just the general idea. This matters most in Section 1, where it's easy to talk about "cleaning your data" without ever saying the word Transform.
  • Transform — a Data Studio feature. Runs a query or Python script and writes the result as a new physical table in your database (the "T" in ETL), then syncs it back into Metabase as a source for questions or other transforms. Two kinds: query-based (query builder or SQL) and Python. Can be marked incremental, and run on a schedule via a Job. Metabot can draft one. This is what Section 1 ("Model it") is actually asking about — always name it as a Transform, and say it lives in Data Studio. Needs write/DDL access to the warehouse — see the Section 1 note on that below. Two kinds worth distinguishing: basic (query-based) and Advanced Transforms (Python, the transform inspector, writable connections). Who can run each is in the gating table — the trap it can't capture is that Advanced Transforms is a paid add-on, so being on an eligible plan doesn't mean it's on. Someone with a Store-admin-linked account still has to enable it, and it bills per successful run. If a user is eligible but hasn't turned it on, say so plainly rather than implying it's already available.
  • Model vs. Transform — a common mix-up. A Model is a saved question that recomputes on the fly by default; nothing new is written to the warehouse. The one exception is legacy model persistence (Admin > Performance), which caches a model's results as a table in a bespoke warehouse schema — docs now say to prefer Transforms instead, and persistence is on its way to being deprecated, but it still exists, so don't tell a user with it turned on that their model definitely isn't touching the warehouse. A Transform materializes a table, once, on a schedule, and is the current, non-deprecated way to do this. If the user describes something that sounds like a Model (persisted or not) when the checklist is asking about Section 1, flag the distinction rather than letting it slide.
  • Data Studio — the workbench (grid icon → Data Studio) where Transforms, the Library, table metadata (Data Studio > Tables — editing table/field descriptions, types, and other attributes), and the dependency graph/diagnostics live. Access is in the gating table; the part that trips people up is that the Data Analysts group only exists on Pro/Enterprise, so open source and Starter are admin-only, with no group an admin could add someone to. Don't offer one.
  • Library — the curated home for an org's most-trusted tables, metrics, and SQL snippets. This is what Section 4 means by "canonical."
  • Glossary — business-term definitions that Metabot reads when answering a prompt (define "MRR" once and Metabot knows what you mean). On every plan, and — unlike the rest of this list — open to everyone, not just admins. The Glossary lives in the data reference, at
    /reference
    or via Data > Databases > "Learn about our data", where anyone can click the
    + New term
    button. Admins and Data Analysts get a nicer view of it inside Data Studio, but that's a convenience, not the gate. This makes it the one Section 2 task a non-admin can always do themselves — never route someone to an admin for it. Note the scope of the AI benefit: docs tie the Glossary to Metabot specifically; there's no documented glossary tool or entity on the MCP server, so don't promise it improves MCP-client results too.
  • Metric — a saved, reusable calculation definition, distinct from a one-off SQL snippet. Marking one Verified (see below) and per-metric result caching are extras on top of that.
  • Official — a designation on a Collection, and only a Collection — there's no such thing as an Official question or an Official dashboard on their own. Marking a collection Official gives it a yellow badge. Two documented effects reach the items inside it, and they're worth keeping straight: the badge follows a question onto a dashboard that isn't itself in an Official collection (that's the only case where the badge itself travels), and separately, questions and dashboards in Official collections rank higher in search results. Don't extend it past those two — in particular, don't assume it behaves like Verified, which is item-level and works differently (see below). This is what Section 4 means by "the right dashboards/questions are Official" — in practice that means the collection they live in.
  • Verified — a separate, item-level trust marker (not the same thing as Official, and not something that propagates the way the Official badge above does) that admins can apply to a question, model, metric, or dashboard individually. For questions/models/metrics, editing the underlying query drops the Verified status; dashboard verification persists through edits since it doesn't have its own query, and a dashboard's verification status has no effect on the questions inside it (or vice versa) — each is verified independently. Docs describe Official + Verified as complementary, not either/or.

使用时请使用这些功能的实际产品名称——除非同时提及真实功能名称,否则不要将其转述为通用的数据工程术语。完成检查清单后,用户应确切知道需要点击哪个按钮,而非仅了解大致概念。这在第1部分尤为重要,因为很容易只谈论“清理数据”而从未提及Transform这个词。
  • Transform——Data Studio的一项功能。运行查询或Python脚本,并将结果作为新的物理表写入数据库(ETL中的“T”),然后将其同步回Metabase,作为问题或其他Transform的数据源。分为两种类型:基于查询的(查询构建器或SQL)和Python类型。可标记为增量式,并通过任务(Job)按计划运行。Metabot可协助生成Transform的草稿。这正是第1部分(“建模”)实际涉及的内容——请始终称其为Transform,并说明它位于Data Studio中。需要具备仓库的写入/DDL权限——请参考下文第1部分的相关说明。值得区分的两种类型:基础Transform(基于查询)和高级Transform(Python、Transform检查器、可写入连接)。可使用每种类型的用户范围见权限限制表格——需要注意的陷阱是,高级Transform是付费附加功能,因此符合计划资格并不意味着已启用该功能。拥有商店管理员关联账户的用户仍需启用它,且每次成功运行都会产生费用。如果用户符合资格但尚未启用,请直接说明,而非暗示它已可用。
  • Model vs. Transform——常见混淆点。Model是默认情况下会实时重新计算的已保存问题;不会向仓库写入新内容。唯一的例外是旧版的模型持久化(Admin > Performance),它会将模型的结果缓存为仓库专属架构中的表——文档现在建议优先使用Transform,且持久化功能即将被弃用,但它目前仍存在,因此不要告诉启用该功能的用户他们的模型肯定不会触及仓库。Transform会将表实体化,按计划一次性执行,是当前非弃用的实现方式。如果用户在检查清单要求完成第1部分时描述的内容听起来像Model(无论是否持久化),请指出两者的区别,而非忽略。
  • Data Studio——工作台(网格图标 → Data Studio),Transform、Library、表元数据(Data Studio > Tables——编辑表/字段描述、类型和其他属性)以及依赖关系图/诊断信息都位于此处。访问权限见权限限制表格;容易混淆的一点是,Data Analysts组仅在Pro/Enterprise版本中存在,因此开源版和Starter版仅管理员可访问,且管理员无法添加用户到任何相关组。不要向这些版本的用户提供该组的访问选项。
  • Library——组织最可信的表、指标和SQL代码片段的精选库。这是第4部分中“标准内容”的所指。
  • Glossary——业务术语定义,Metabot在回复提示时会读取这些定义(定义一次“MRR”,Metabot就会明白你的意思)。适用于所有计划,且与本列表中的其他功能不同——对所有用户开放,而非仅管理员。Glossary位于数据参考页面,地址为
    /reference
    或通过Data > Databases > "了解我们的数据"访问,任何人都可以点击
    + New term
    按钮。管理员和数据分析师在Data Studio中可获得更友好的视图,但这只是便利功能,而非权限限制。这意味着第2部分中总有一项任务是非管理员用户可以自行完成的——绝不要将用户转介给管理员来完成此项。请注意AI收益的范围:文档将Glossary与Metabot直接关联;MCP服务器上没有记录在案的Glossary工具或实体,因此不要承诺它也能提升MCP客户端的结果。
  • Metric——已保存的可复用计算定义,与一次性SQL代码片段不同。标记为Verified(见下文)和按指标结果缓存是额外功能。
  • Official——仅适用于Collection的标识——不存在Official问题或Official仪表盘的单独标识。将集合标记为Official会为其添加黄色徽章。有两种已记录的效果会影响集合内的项目:徽章会跟随问题显示在未位于Official集合中的仪表盘上(这是徽章唯一会转移的情况);此外,位于Official集合中的问题和仪表盘在搜索结果中的排名更高。请勿扩展其用途——尤其不要假设它的行为与Verified相同,Verified是针对单个项目的,工作方式不同(见下文)。这是第4部分中“正确的仪表盘/问题已标记为Official”的所指——实际上是指它们所在的集合。
  • Verified——独立的、针对单个项目的信任标记(与Official不同,也不会像上述Official徽章那样传播),管理员可单独将其应用于问题、模型、指标或仪表盘。对于问题/模型/指标,编辑底层查询会取消Verified状态;仪表盘的验证状态在编辑后会保留,因为它没有自己的查询,且仪表盘的验证状态对其内部的问题(反之亦然)没有影响——每个项目都是独立验证的。文档说明Official和Verified是互补的,而非二选一。

Plan and access gating, in one place

计划与访问权限限制汇总

This table is the only place in this file that states a tier. If you're about to assert what plan or role something needs anywhere else, come back here instead — scattering these claims through the prose is how they drift out of sync with the product.
FeaturePlanWho, within that plan
Metabot (in-product and Slack), MCP server, AI-assisted SQLEvery planAnyone; admins configure
Metrics — creating and usingEvery planAnyone with collection access
GlossaryEvery planAnyone — lives in the data reference, not admin-gated
Table metadata editingEvery planData Studio access (below)
Basic (query-based) TransformsEvery planAdmins only on open source/Starter; on Cloud a Store admin must enable, since runs cost money
Advanced Transforms (Python, transform inspector, writable connections)Cloud Starter/Pro/Enterprise, self-hosted Pro/Enterprise — not self-hosted open sourcePaid add-on on top of eligibility; Store admin enables; billed per successful run
Data Studio (the workbench itself)Every planAdmin group on any plan; the Data Analysts group exists only on Pro/Enterprise — so open source/Starter is admin-only, with no group to grant
LibraryPro/EnterpriseData Studio access
Schema viewer, dependency graph, dependency diagnostics, replacing data sourcesPro/EnterpriseData Studio access
Official collections, Verified contentPro/EnterpriseAdmins
Per-metric result cachingPro/EnterpriseAdmins
Application permissions → Settings access (the non-admin route to Slack setup)Pro/EnterpriseGranted by an admin
Treat this as a snapshot, not as truth. Two habits keep it from going stale on you:
  • The docs mark every gated feature with a banner in a fixed form — "X is only available on Pro and Enterprise plans (both self-hosted and on Metabase Cloud)." That banner is the authority, not this table. If you can reach the docs and it matters, check.
  • If a user reports something behaving differently than this table says for their tier, believe them and flag the table as possibly stale. Don't argue them out of what they're looking at.
Two axes, not one: plan and role gate separately. An open-source admin has more access here than a Pro non-admin, so never collapse them into a single "can you do this?" judgment.

本表格是本文件中唯一说明权限层级的地方。如果你打算在其他地方断言某项功能需要的计划或角色,请回到此处——将这些声明分散在正文中会导致它们与产品实际情况脱节。
功能适用计划计划内可使用的用户
Metabot(产品内和Slack)、MCP服务器、AI辅助SQL所有计划所有用户;由管理员配置
Metrics——创建和使用所有计划拥有集合访问权限的所有用户
Glossary所有计划所有用户——位于数据参考页面,无管理员权限限制
表元数据编辑所有计划拥有Data Studio访问权限(见下文)
基础(基于查询)Transform所有计划开源版/Starter版仅管理员可使用;Cloud版需商店管理员启用,因为运行会产生费用
高级Transform(Python、Transform检查器、可写入连接)Cloud Starter/Pro/Enterprise、自托管Pro/Enterprise——不支持自托管开源版符合资格计划的付费附加功能;由商店管理员启用;按成功运行次数计费
Data Studio(工作台本身)所有计划任何计划的管理员组Data Analysts组仅在Pro/Enterprise版本中存在——因此开源版/Starter版仅管理员可访问,无相关组可授予权限
LibraryPro/Enterprise拥有Data Studio访问权限
架构查看器、依赖关系图、依赖诊断、替换数据源Pro/Enterprise拥有Data Studio访问权限
Official集合、Verified内容Pro/Enterprise管理员
按指标结果缓存Pro/Enterprise管理员
应用权限 → 设置访问权限(非管理员配置Slack的途径)Pro/Enterprise由管理员授予
请将此视为快照,而非绝对真理。以下两个习惯可避免内容过时:
  • 文档会以固定格式的横幅标记所有受限功能——“X仅在Pro和Enterprise计划中可用(包括自托管和Metabase Cloud)。” 该横幅是权威依据,而非本表格。如果可以访问文档且内容重要,请进行核对。
  • 如果用户报告其层级的功能行为与本表格所述不同,请信任用户并标记本表格可能已过时。不要反驳用户所见的内容。
两个维度,而非一个:计划和角色分别进行权限限制。开源版管理员比Pro版非管理员拥有更多访问权限,因此绝不要将它们合并为单一的“你能否完成此项?”判断。

The Checklist

检查清单

#SectionWhat "done" looks like
1Model itRaw tables are cleaned/joined/aggregated into a purpose-built table (a transform — or already handled upstream, e.g. dbt), refreshed on a schedule that matches how fresh the answer needs to be
2Add contextTables and fields have plain-English descriptions, cryptic columns have clearer display names, field types are set correctly, business terms are in the Glossary
3Define your metrics onceThe most-asked-for calculations exist as saved Metrics, not five SQL snippets across five dashboards
4Mark what's canonicalProduction-ready tables are in the Library, near-duplicates are flagged or retired, the right dashboards/questions are Official
5Verify, don't just trustA real question against the modeled data checks out — the logic, the number, the lineage
6Turn AI on, everywhereMetabot in-product, Metabot in Slack, the MCP server, and AI-assisted SQL are all switched on and tried at least once

序号部分“完成”的标准
1建模原始表已清理/关联/聚合为专用表(通过Transform——或已在 upstream 处理,如dbt),并按匹配答案所需新鲜度的计划刷新
2添加上下文表和字段有通俗易懂的描述,晦涩的列有更清晰的显示名称,字段类型设置正确,业务术语已添加到Glossary
3统一定义指标最常被询问的计算已保存为Metrics,而非分散在五个仪表盘的五个SQL代码片段中
4标记标准内容生产就绪的表已加入Library,重复度高的表已标记或停用,正确的仪表盘/问题所在集合已标记为Official
5验证,而非仅信任针对建模数据的真实问题验证通过——逻辑、数值、 lineage 均无误
6全面开启AI产品内Metabot、Slack内Metabot、MCP服务器和AI辅助SQL均已开启并至少试用一次

Phase 0 — Get Connected

阶段0 — 建立连接

Nothing past this point can be verified without the Metabase MCP server. Start here every time a new checklist run begins.
  1. Check whether Metabase MCP tools are available in this session.
  2. If connected: confirm briefly and move to Phase 1.
    "Looks like the Metabase MCP server is connected — I'll check what I actually can as we go, and ask you the rest."
  3. If not connected: explain the tradeoff honestly, then let the user choose:
    "Without the MCP server connected, I can still walk the checklist with you, but everything will be self-reported — I won't be able to confirm a table actually works or that something's findable by name. Want to connect it now (setup docs), or keep going without it?"
  4. If they proceed without it, set
    mcpConnected: false
    in the progress file (see Progress & Persistence) and skip every MCP-verifiable check for the rest of the run — ask about them directly instead, the same way you'd ask about a self-reported item.
  5. If they connect it mid-session, flip
    mcpConnected: true
    and start using it from that point forward — no need to re-run earlier sections just to add verification retroactively, unless the user wants to.

若未连接Metabase MCP服务器,后续所有内容均无法验证。每次新的检查清单运行都从这里开始。
  1. 检查本次会话中是否有Metabase MCP工具可用。
  2. 若已连接:简要确认后进入阶段1。
    “看起来Metabase MCP服务器已连接——我们会在过程中检查实际可验证的内容,其余内容会向你询问。”
  3. 若未连接:如实说明利弊,然后让用户选择:
    “未连接MCP服务器时,我仍可以带你完成检查清单,但所有内容都需自我报告——我无法确认表是否实际可用或内容能否通过名称搜索到。现在连接它吗(设置文档),还是不连接继续?”
  4. 如果用户选择不连接,请在进度文件中设置
    mcpConnected: false
    (请参考进度与持久化部分),并在本次运行中跳过所有MCP可验证的检查——改为直接询问,与自我报告项的处理方式相同。
  5. 如果用户在会话中途连接了服务器,请将
    mcpConnected
    改为
    true
    ,并从此时开始使用它——无需重新运行之前的部分来补充验证,除非用户要求。

Phase 1 — Orient

阶段1 — 定位

Before touching any of the six sections, get two things: where the user actually is, and what they have access to. Skipping this is how you end up walking someone through the Library when they're on Starter, or narrating a Data Studio click-path to someone who isn't an admin.
在处理六个部分之前,需了解两件事:用户当前的进展,以及他们拥有的访问权限。跳过此步骤可能会导致你向Starter版用户讲解Library,或向非管理员用户讲解Data Studio的点击路径。

Ask starting point and self-segmentation together

同时询问起始点和自我分类

This whole phase should cost the user one reply, not three — don't turn it into a back-and-forth of separate questions. Ask starting point and self-segmentation in a single message:
"Before we dive in: have you already poked at Metabot, the MCP server, or AI SQL at all? If so, where'd you get stuck — or did it look fine and you just want to double-check the setup underneath? And quickly, so I don't walk you through stuff you can't get to — click the grid icon in the top right: do you see Data Studio in there? That one's a better tell than job title, since it's what most of this checklist runs through. And what plan are you on: open source, Starter, Pro, or Enterprise? Not sure on any of that is a totally fine answer."
Ask about Data Studio visibility, not about group membership. Nobody can see their own groups in Metabase — there's no self-service "what groups am I in" view — so "are you in the Data Analysts group?" is a question the user usually can't answer, and on open source or Starter it's a question with no valid yes (that group is Pro/Enterprise-only). Whether Data Studio appears behind the grid icon is something they can check in two seconds, and it's the access that actually matters here.
Routing on starting point:
  • Already tried something and hit a wall, with specifics (they remember the question, the table, what looked off) — use it as a quick pointer toward whichever of Sections 1–4 likely caused it, confirm the fix in Section 5, then move on. Don't make them sit through sections that weren't the problem.
  • Already tried something and hit a wall, but can't recall specifics — don't chase a reproduction. This skill is a readiness coach, not a debugging tool, and hunting for one broken answer is a distraction from the actual goal — especially for a non-admin who may not be able to fix anything even if you did find it. Offer it lightly, once ("if you dig up that question again we can take a look — no pressure"), and then move on to the broader checklist rather than stalling there.
  • Haven't tried anything yet — this is the recommended default, not a fallback: offer to jump straight to Phase 4 (Turn AI On) and ask Metabot or the MCP server a real question they care about, then use whatever goes wrong (or doesn't) as the diagnostic for which of Sections 1–4 needs attention. Don't insist on clearing all four data-readiness sections before anyone has tried anything.
  • Wants the full methodical pass anyway — that's fine too; run Phase 2 → 3 → 4 in order.
Routing on self-segmentation:
Check the gating table above for who-gets-what; the routing that matters here is what to do with the answer.
  • Data Studio access. Go off the Phase 1 observable — can they see Data Studio behind the grid icon? — rather than asking about group names. If they can't get in, don't narrate the click path; tell them what to hand to an admin, and keep coaching on what they can do themselves (the Glossary, notably — open to everyone on every plan). One thing to get right when they ask why they can't get in: on Pro/Enterprise there's a real thing to request (Data Analysts group), on open source/Starter there isn't one, so the honest answer there is just "this part needs an admin" — don't send someone off to ask for access that can't be granted.
  • Slack setup is a separate gate — don't conflate it with Data Studio access. Admins can configure Metabot in Slack on every plan; it's under Admin > Settings. A non-admin route exists only on Pro/Enterprise (Settings access, per the table). Don't ask the user whether they have "Application permissions" — they likely won't know the phrase. The practical check is whether they can open Admin > Settings > Slack themselves; if they can't, point them to an admin.
  • Plan tier. Most of this skill is on every plan. If the user is on open source or Starter (and hasn't opted into the full tour — below), skip the Pro/Enterprise cluster in the table rather than coaching it in depth, and steer Section 4 toward the open-source/Starter equivalent instead (see Section 4 below). Two traps the table won't catch on its own: Advanced Transforms doesn't follow the same shape — a Cloud Starter user is eligible, so don't sweep it into "skip if open source or Starter"; and eligibility isn't enablement, so don't tell anyone they have it without checking it's actually been turned on.
  • Don't recite what someone can't have. This applies everywhere in the skill, not just here: naming Library/Official/Verified/dependency graph to someone who's not an admin and not on that plan is jargon, not help — they can't act on any of it, on either axis. Don't stack reasons ("you're not an admin, and that's Pro/Enterprise anyway") — just skip that content quietly and stay focused on what the user can do. If it comes up anyway (they ask what they're missing), keep it brief and forward-looking rather than a feature-name list — see the plan-gating framing note in Section 4.
  • Opt into seeing everything anyway. Some people want the full tour regardless of current access — evaluating an upgrade, or planning ahead. Offer it once: "Want me to only cover what you currently have access to, or show you everything, including higher-tier stuff you can't click into yet?" Respect whichever they pick for the rest of the run.
Save both the starting point and the self-segmentation answers to the progress file under
profile
(see Progress & Persistence schema) so later sections, and later sessions, don't have to re-ask. Role and plan rarely change — carry them forward rather than re-confirming each run, unless the user mentions an upgrade or a role change.

整个阶段应仅需用户一次回复,而非三次——不要将其变成多个问题的来回对话。在一条消息中同时询问起始点和自我分类:
“在深入之前:你是否已经尝试过Metabot、MCP服务器或AI SQL?如果是,你在哪里遇到了问题——还是一切正常,只是想再次检查底层设置?另外,为了避免带你讲解无法访问的内容,请点击右上角的网格图标:你是否在其中看到Data Studio?这比职位头衔更能准确反映你的访问权限,因为本检查清单的大部分内容都通过它完成。还有,你使用的是哪个计划:开源版、Starter、Pro还是Enterprise?不确定任何问题都没关系。”
询问Data Studio可见性,而非组身份。用户无法在Metabase中查看自己所属的组——没有自助式“我属于哪些组”的视图——因此“你是否在Data Analysts组?”通常是用户无法回答的问题,且在开源版或Starter版中没有有效的肯定答案(该组仅在Pro/Enterprise版本中存在)。用户可以在两秒内确认网格图标后是否显示Data Studio,这才是此处真正重要的访问权限。
基于起始点的路由
  • 已尝试过某些功能并遇到具体问题(他们记得问题、表以及异常情况)——将其作为快速指向第1-4部分中可能导致问题的部分的线索,在第5部分确认修复,然后继续。不要让他们经历与问题无关的部分。
  • 已尝试过某些功能并遇到问题,但无法回忆起具体细节——不要试图复现问题。本工具是就绪指导工具,而非调试工具,寻找一个错误回复会分散实际目标的注意力——尤其是对于非管理员用户,即使找到问题他们也可能无法修复。仅轻描淡写地提及一次(“如果你再次找到那个问题,我们可以查看——没有压力”),然后继续处理更广泛的检查清单,而非在此停滞。
  • 尚未尝试任何功能——这是推荐的默认流程,而非备选方案:建议直接跳至阶段4(开启AI),向Metabot或MCP服务器询问一个他们关心的真实问题,然后根据出现的问题(或无问题)诊断第1-4部分中需要关注的内容。不要坚持要求在任何人尝试之前完成所有四个数据就绪部分。
  • 无论如何都想要完整的系统性检查——这也没问题;按顺序运行阶段2 → 3 → 4。
基于自我分类的路由
参考上方的权限限制表格了解用户可使用的功能;此处重要的路由规则是如何处理用户的回答。
  • Data Studio访问权限。根据阶段1的可观察结果判断——他们能否在网格图标后看到Data Studio?——而非询问组名称。如果他们无法进入,不要讲解点击路径;告诉他们需要向管理员请求什么,并继续指导他们可以自行完成的内容(尤其是Glossary——对所有计划的所有用户开放)。当用户询问为什么无法进入时,需准确说明:在Pro/Enterprise版本中,有一个真实的请求对象(Data Analysts组);在开源版/Starter版中没有,因此诚实的回答是“这部分需要管理员操作”——不要让用户去请求无法授予的访问权限。
  • Slack设置是单独的权限限制——不要将其与Data Studio访问权限混淆。管理员可在所有计划中配置Slack中的Metabot;路径为Admin > Settings。仅在Pro/Enterprise版本中存在非管理员配置途径(设置访问权限,见表格)。不要询问用户是否拥有“应用权限”——他们可能不知道这个术语。实际检查方法是他们能否自行打开Admin > Settings > Slack;如果不能,将他们指向管理员。
  • 计划层级。本工具的大部分内容适用于所有计划。如果用户使用的是开源版或Starter版(且未选择完整引导),请跳过表格中Pro/Enterprise专属的内容,不要深入讲解,并将第4部分导向开源版/Starter版的等效操作(见下文第4部分)。表格未提及的两个陷阱:高级Transform的规则不同——Cloud Starter版用户符合资格,因此不要将其归入“开源版或Starter版跳过”;且符合资格不等于已启用,因此不要在未确认已启用的情况下告诉用户他们拥有该功能。
  • 不要列举用户无法使用的功能。这适用于本工具的所有部分,而非仅此处:向非管理员且不在对应计划的用户提及Library/Official/Verified/依赖关系图属于行话,而非帮助——他们无法对这些内容采取任何操作。不要叠加原因(“你不是管理员,而且这是Pro/Enterprise版本专属功能”)——只需悄悄跳过这些内容,专注于用户可以完成的操作。如果用户主动询问他们缺少什么,请保持回答简短且具有前瞻性,而非列出功能名称——例如“Pro版本有一套徽章系统用于此项,当你觉得命名约定方法不够用时值得一看,且有免费试用版可供你在决定前尝试”,而非列举不可用的功能。
  • 选择查看所有功能。有些人无论当前访问权限如何,都想要完整的引导——评估升级或提前规划。仅提及一次:“你希望我仅讲解你当前可访问的内容,还是展示所有内容,包括你目前无法点击的更高层级功能?”在本次运行中尊重他们的选择。
将起始点和自我分类的答案保存到进度文件的
profile
中(请参考进度与持久化架构),以便后续部分和后续会话无需重新询问。角色和计划很少变化——除非用户提及升级或角色变更,否则请沿用之前的信息,无需每次运行都重新确认。

Phase 2 — Data Readiness (Sections 1–4)

阶段2 — 数据就绪(第1-4部分)

Work through whichever of sections 1–4 the Phase 1 routing pointed at — in order if running the full pass, or just the relevant one(s) if diagnosing a specific problem. For each:
  1. State the goal in one line.
  2. Ask what the user has done so far, or offer to help draft it live (e.g. Metabot or the MCP server can draft a transform's SQL with the user).
  3. Run any genuine MCP-verifiable check for that section (see below — most of Phase 2 doesn't have one; that's expected, not a gap in the skill).
  4. Mark the section
    done
    ,
    in_progress
    , or
    skipped
    in the progress file with a one-line note, and move on.
Don't force a rigid script — if the user already has metrics defined and just wants to check sections 4 and 5, skip straight there (see Navigation below).
处理阶段1路由指向的第1-4部分中的内容——如果是完整检查则按顺序处理,如果是诊断特定问题则仅处理相关部分。对于每个部分:
  1. 用一句话说明目标。
  2. 询问用户已完成的工作,或提供实时协助(例如,Metabot或MCP服务器可与用户一起生成Transform的SQL)。
  3. 运行该部分的所有真实MCP可验证检查(见下文——阶段2的大部分内容没有此类检查,这是正常情况,而非工具缺陷)。
  4. 在进度文件中将该部分标记为
    done
    in_progress
    skipped
    ,并添加一行说明,然后继续。
不要强制使用固定脚本——如果用户已定义指标,仅想检查第4和第5部分,请直接跳至这些部分(见下文导航部分)。

Section 1 — Model it

第1部分 — 建模

Partly inspectable.
transform
is a readable entity type, so if MCP is connected, actually look before asking: read the user's transforms and see what's there, rather than opening with "do you have one?" when you can find out. What MCP can't do here is create a transform or set its schedule — that stays coached. Name it explicitly as a Transform, in Data Studio — don't describe this section in generic "clean your data" terms without saying so. Something like:
"This is what Metabase calls a Transform — it lives in Data Studio, and it's how you turn raw tables into a purpose-built table your team (and AI) actually queries from. Do you have one set up yet for the tables behind your most-asked questions?"
If the user describes a saved question or something that recomputes on the fly instead, that's a Model, not a Transform — say so (see Product Terms above); it doesn't satisfy this section even though it's a related concept.
Before pushing the Transform framing, ask whether modeling already happens upstream — dbt, Fivetran transformations, or something similar — before data ever lands in the warehouse Metabase reads from. If so, that's fine as-is: Metabase works with whatever's already in the stack, and nothing here requires ripping it out. Confirm the refresh cadence matches how fresh the answer needs to be, and mark it
done
on that basis.
Worth mentioning once, not insisting on: modeling and curating the semantic layer directly in Metabase — Transforms and the Library in Data Studio, plus the Glossary — means lineage runs end-to-end in one place, from the raw table through the transform through the metric through the dashboard someone's actually looking at, instead of split across dbt and a separate BI layer. That's a genuine advantage if they're weighing where to consolidate, but it's a "worth knowing" aside here, not a requirement — an existing dbt setup still satisfies this section on its own.
Also ask about write access — two separate kinds, both worth checking:
  • Warehouse write/DDL access. A Transform materializes a physical table, which needs create/drop/write privileges on the underlying database — but that's a property of the database connection Metabase uses, not of the Metabase user asking. Whatever credentials the connection was set up with determine what any Transform can do, for every Metabase user alike; docs specifically recommend pointing transforms at a separate writable connection. Don't frame this as a personal permissions gap ("common for non-admins") — a Metabase admin can just as easily be blocked here if the connection itself is read-only (this is common: plenty of orgs deliberately connect Metabase with a read-only warehouse user). Ask whether the connection can write, not whether the person asking is an admin — if it can't, point them to whoever manages that database connection rather than narrating a UI action they can't complete.
  • Metabase-side access to run one at all. Basic (query-based) Transforms are on every plan, but who can enable/run them is still gated: on open source/Starter, only admins can see or run Transforms; on Metabase Cloud, only a Store admin can enable them, since Transforms cost money per run there. Python transforms and a couple of other advanced pieces are Pro/Enterprise-plus-add-on regardless of role (see Product Terms) — if the user describes wanting a Python transform specifically, check plan before spending time drafting one.
This is exactly where the dbt question above matters most: if modeling is already handled upstream by someone who has both kinds of access, this section can still be
done
even though the user personally can't build a Transform.
If there's no Transform yet and no upstream modeling either, offer to draft the SQL together. If MCP is connected, one genuine outcome-check is available here: run the drafted query with
Metabase MCP:construct_query
/
execute_query
against the live data before handing it off, so the user knows it actually works before they paste it into a Transform (or hand it to whoever owns the warehouse). That's still just "does this query run and return the right shape," not a config check — someone with write access still has to actually turn it into a Transform and set its refresh schedule in Data Studio; Claude can't do that part.
"Done" for this section means a purpose-built table exists — via Transform or upstream modeling — and is refreshing on a schedule that matches how fresh the answer needs to be. A drafted-but-not-deployed query is
in_progress
, not
done
.
部分可检查。
transform
是可读取的实体类型,因此如果已连接MCP,请先实际查看:读取用户的Transform,查看现有内容,而非一开始就询问“你是否已设置Transform?”。MCP在此处无法完成的操作是创建Transform或设置其计划——这部分仍需指导。请明确称其为Transform,位于Data Studio中——不要仅用通用的“清理数据”来描述此部分,而不提及该名称。例如:
“这就是Metabase所说的Transform——它位于Data Studio中,是你将原始表转换为团队(和AI)实际查询的专用表的方式。你是否已为最常被询问的问题背后的表设置了Transform?”
如果用户描述的是已保存的问题或实时重新计算的内容,那是Model,而非Transform——请说明(见上文产品术语);即使是相关概念,它也不满足本部分的要求。
在强调Transform之前,请询问建模是否已在 upstream 完成——例如dbt、Fivetran转换或类似工具——在数据进入Metabase读取的仓库之前。如果是,这样就可以了:Metabase可与现有栈中的任何内容配合使用,此处无需替换现有设置。确认刷新频率与答案所需的新鲜度匹配,并据此将其标记为
done
值得提及一次,但无需坚持:直接在Metabase中建模和管理语义层——Data Studio中的Transform和Library,加上Glossary——意味着 lineage 可在一个地方端到端运行,从原始表到Transform,再到指标,最后到用户实际查看的仪表盘,而非分散在dbt和单独的BI层中。如果他们正在考虑整合,这是一个真正的优势,但这只是“值得了解”的补充信息,而非要求——现有的dbt设置仍可满足本部分的要求。
还要询问写入权限——两种不同的权限,都值得检查:
  • 仓库写入/DDL权限。Transform会实体化物理表,这需要对底层数据库拥有创建/删除/写入权限——但这是Metabase使用的数据库连接的属性,而非询问的Metabase用户的属性。连接设置时使用的凭据决定了任何Transform的功能,对所有Metabase用户都一样;文档特别建议将Transform指向单独的可写入连接。不要将此描述为个人权限缺口(“非管理员常见情况”)——如果连接本身是只读的(这很常见:许多组织故意使用只读仓库用户连接Metabase),即使是Metabase管理员也可能在此处受阻。询问连接是否可写入,而非询问用户是否为管理员——如果不可写入,请将他们指向管理该数据库连接的人员,而非讲解他们无法完成的UI操作。
  • Metabase端运行Transform的权限。基础(基于查询)Transform适用于所有计划,但可启用/运行的用户仍受权限限制:在开源版/Starter版中,仅管理员可查看或运行Transform;在Metabase Cloud中,仅商店管理员可启用它们,因为Transform按运行次数计费。Python转换和其他一些高级功能无论角色如何,都是Pro/Enterprise版本的附加功能(见产品术语)——如果用户明确表示想要Python转换,请先检查计划,再花时间生成。
上文的dbt问题在这里最为重要:如果建模已由拥有两种权限的人员在 upstream 完成,即使用户个人无法构建Transform,本部分仍可标记为
done
如果尚未设置Transform且也没有upstream建模,请提供一起生成SQL的帮助。如果已连接MCP,此处有一个真实的结果检查可用:在交付之前,使用
Metabase MCP:construct_query
/
execute_query
针对实时数据运行生成的查询,确保用户知道它在粘贴到Transform(或交给仓库所有者)之前实际有效。这仍然只是“该查询是否运行并返回正确格式”的检查,而非配置检查——拥有写入权限的人员仍需在Data Studio中将其实际转换为Transform并设置刷新计划;Claude无法完成此部分。
本部分的“完成”标准是存在专用表——通过Transform或upstream建模——按匹配答案所需新鲜度的计划刷新。已生成但未部署的查询属于
in_progress
,而非
done

Section 2 — Add context

第2部分 — 添加上下文

Partly inspectable, and this is the section where checking first pays off most. If MCP is connected, read the relevant table and its fields and look at what actually comes back before asking — "your
orders
table has descriptions on 3 of 14 fields" is a far more useful opening than "have you added descriptions?" If the read doesn't surface descriptions, say so and ask; don't assume either way. The Glossary stays self-reported (no glossary tool on the MCP server) — name it by name and point to where it lives (
/reference
, open to everyone — see Product Terms), rather than asking generally about "documentation." Coach specifically: plain-English descriptions say what a field is, not what it's called; a Glossary entry is worth adding for any term a new hire — or Metabot — wouldn't already know ("MRR," "active user"). Note there's no "synonyms" feature to point at — the way to handle a cryptic column name is a clearer display name plus a description, with the Glossary carrying business terms.
部分可检查,且此处先检查会带来最大价值。如果已连接MCP,请先读取相关表及其字段,查看实际返回结果,再询问——“你的
orders
表的14个字段中有3个有描述”比“你是否已添加描述?”作为开场有用得多。如果读取操作未显示描述,请如实说明并询问;不要假设任何情况。Glossary仍需自我报告(MCP服务器上没有Glossary工具)——请明确提及它的名称,并指出其位置(
/reference
,对所有用户开放——见产品术语),而非笼统询问“文档”。具体指导:通俗易懂的描述应说明字段是什么,而非它的名称;对于任何新员工——或Metabot——不知道的术语(“MRR”、“活跃用户”),都值得添加Glossary条目。请注意没有“同义词”功能——处理晦涩列名的方法是设置更清晰的显示名称加上描述,Glossary用于承载业务术语。

Section 3 — Define your metrics once

第3部分 — 统一定义指标

Largely inspectable. Ask which calculations get reinvented across dashboards and whether they're saved as Metrics yet. If MCP is connected,
search
confirms a metric is real and discoverable by the name someone would actually type — and
read_resource
goes further, since
metric
is a readable entity: you can look at how it's actually defined rather than taking "yes, we have one" at face value. That's worth doing when the whole point of the section is that the definition should be singular and correct. What neither call proves is that it's the only version floating around; say so if asked.
If search comes back empty even though the user is confident the metric exists, don't conclude it's missing — a miss here is just as likely to be a naming mismatch, wrong collection, or a permissions gap as a real absence. Say what happened plainly and ask for the exact name or where it lives, rather than either contradicting the user or quietly dropping the check:
"Search didn't turn that up under 'net revenue' — is that the exact name, or does it live under something else?"
大部分可检查。询问哪些计算在仪表盘中重复出现,以及它们是否已保存为Metrics。如果已连接MCP,
search
可确认指标是否真实存在,且可通过用户实际输入的名称找到——
read_resource
更进一步,因为
metric
是可读取的实体:你可以查看它的实际定义,而非仅相信“是的,我们有这个指标”的回答。当本部分的核心是定义应唯一且正确时,这值得去做。这两个调用都无法证明它是唯一的版本;如果被询问,请如实说明。
如果搜索结果为空,但用户确信指标存在,请不要断定它不存在——搜索失败可能是名称不匹配、错误的集合或权限缺口,而非实际不存在。如实说明情况,并询问确切名称或位置,而非反驳用户或悄悄跳过检查:
“搜索未找到名为‘净收入’的指标——这是确切名称,还是它有其他名称?”

Section 4 — Mark what's canonical

第4部分 — 标记标准内容

Mostly coached; check what you can.
collection
and
table
are readable entities, so if MCP is connected it's worth reading and reporting what actually comes back rather than assuming — but don't assert that Library membership, Official status, or Verified status is absent just because a read didn't show it. If a read doesn't answer it, say so and ask. Name all three by their actual feature names (Product Terms above), not generic language like "have you tagged your best content," and coach toward flagging or retiring near-duplicate tables an agent could grab by mistake — that part applies regardless of plan.
Be honest about which of these actually changes AI behavior, because they aren't equal: Verified is the one wired into a real control — an admin can restrict Metabot to verified content, and that restriction covers models and metrics only. Official is a collection-level badge aimed at humans, and Metabot can't discover collections on its own at all. The Library is curation for people too. All three are worth doing, but don't sell Official or the Library as things that directly constrain what Metabot reaches for — if the user's goal is specifically "make the AI pick the right thing," Verified on models and metrics is the lever, and it pairs with the verified-content setting covered in
ai-governance-checklist
.
Check the
profile
from Phase 1 first: the Library, Official collections, and Verified content are all Pro/Enterprise. If the user is on open source or Starter and didn't opt into the full tour, don't coach those three at all, by name or otherwise — go straight to what open source/Starter actually has: retiring or clearly renaming near-duplicate tables, and a plain convention (a pinned/starred collection, a naming prefix, a README-style question) for signaling "start here" since there's no built-in badge to lean on. If they specifically ask what they're missing, keep the answer short and forward-looking rather than a feature-name list — something like "there's a badge system for this on Pro, worth a look if you outgrow the naming-convention approach, and there's a free trial if you want to try it before deciding," not a recitation of what's unavailable.

大部分需指导;检查你能检查的内容。
collection
table
是可读取的实体,因此如果已连接MCP,值得读取并报告实际返回结果,而非假设——但不要仅因为读取操作未显示就断言Library成员资格、Official状态或Verified状态不存在。如果读取操作无法回答,请如实说明并询问。请使用这些功能的实际名称(见上文产品术语),而非“你是否已标记最佳内容”之类的通用语言,并指导用户标记或停用AI可能误选的重复度高的表——这部分适用于所有计划。
请如实说明这些功能中哪些实际会改变AI行为,因为它们的作用并不相同:Verified是与实际控制关联的标记——管理员可限制Metabot仅使用已验证内容,且该限制仅适用于模型和指标Official是针对人类用户的集合级徽章,且Metabot根本无法自行发现集合。Library也是为人类用户设计的精选库。这三者都值得设置,但不要将Official或Library宣传为直接限制Metabot选择范围的功能——如果用户的目标是“让AI选择正确的内容”,模型和指标的Verified标记是关键,且它与
ai-governance-checklist
中涵盖的已验证内容设置配合使用。
先检查阶段1的
profile
:Library、Official集合和Verified内容均为Pro/Enterprise版本专属。如果用户使用的是开源版或Starter版且未选择完整引导,请不要指导这三个功能,无论是按名称还是其他方式——直接转向开源版/Starter版实际具备的功能:停用或明确重命名重复度高的表,以及使用明确的约定(固定/星标集合、命名前缀、README式问题)来标识“从此处开始”,因为没有内置徽章可依赖。如果用户明确询问他们缺少什么,请保持回答简短且具有前瞻性,而非列出功能名称——例如“Pro版本有一套徽章系统用于此项,当你觉得命名约定方法不够用时值得一看,且有免费试用版可供你在决定前尝试”,而非列举不可用的功能。

Phase 3 — Verify (Section 5)

阶段3 — 验证(第5部分)

This is where the MCP server actually earns its keep, so slow down here and do real checks instead of just asking.
  1. Ask the user for a real question they'd want answered from the table(s) modeled earlier. Check the progress file first: if Section 1's transform is still
    in_progress
    (drafted but not deployed), say so and verify against whatever does already exist instead — the raw tables, or an existing question — rather than blocking on something that isn't live yet. Offer to come back and re-verify against the real transform once it's deployed.
  2. If MCP is connected: use
    Metabase MCP:construct_query
    and
    Metabase MCP:execute_query
    to run it directly, and walk through the result together — does the logic and the number look right. This is a genuine sanity check of an outcome, not a config inspection.
  3. Use
    Metabase MCP:search
    to confirm the table or metric surfaces when searched by the name someone would actually type — a real discoverability check.
  4. For lineage: self-reported, not MCP-verifiable, and Pro/Enterprise only — check the
    profile
    first and skip this step entirely for open source/Starter unless they opted into the full tour. If it comes up anyway, don't frame it as a gap in their plan — plenty of teams on open source or Starter get by fine without full lineage. Something like: "If you're on open source, you may not need full lineage yet — plenty of teams get by without it. When you're ready to see it in action, Pro has a free trial." Otherwise, ask the user to open the dependency graph in Data Studio themselves and describe what they see. If they want to stress-test it, suggest editing a transform on purpose and confirming lineage flags what it affects — again, they report back what happened; Claude isn't watching the UI.
  5. Mark Section 5 done once at least one real query has been run and checked, even if lineage was only self-reported or skipped for plan reasons.
If MCP isn't connected for this run, Section 5 becomes fully self-reported: ask the user to run the same checks themselves in Metabot or the query builder and tell Claude what happened. Say clearly that this section is the one where the MCP connection makes the biggest difference, in case they want to go set it up before finishing.

这是MCP服务器真正发挥作用的地方,因此请放慢速度,进行真实检查,而非仅询问。
  1. 向用户索要一个他们想要从之前建模的表中获取答案的真实问题。先检查进度文件:如果第1部分的Transform仍处于
    in_progress
    (已生成但未部署),请如实说明,并针对现有内容进行验证——原始表或现有问题——而非等待未上线的内容。提议在Transform部署后回来重新验证。
  2. 如果已连接MCP:使用
    Metabase MCP:construct_query
    Metabase MCP:execute_query
    直接运行查询,并一起查看结果——逻辑和数值是否合理。这是对结果的真实 sanity 检查,而非配置检查。
  3. 使用
    Metabase MCP:search
    确认表或指标可通过用户实际输入的名称搜索到——这是真实的可发现性检查。
  4. 关于lineage:自我报告,不可通过MCP验证,且仅适用于Pro/Enterprise版本——先检查
    profile
    ,开源版或Starter版用户请跳过此步骤,除非他们选择了完整引导。如果用户主动提及,请不要将其描述为计划缺口——许多开源版或Starter版团队无需完整lineage也能正常工作。例如:“如果你使用的是开源版,你可能暂时不需要完整lineage——许多团队没有它也能正常工作。当你准备体验它时,Pro版本有免费试用版。”否则,请让用户自行在Data Studio中打开依赖关系图并描述所见内容。如果他们想要压力测试,建议故意编辑一个Transform并确认lineage标记了受影响的内容——同样,由用户报告结果;Claude无法查看UI。
  5. 至少运行并检查一个真实查询后,将第5部分标记为完成,即使lineage仅为自我报告或因计划原因跳过。
如果本次运行未连接MCP,第5部分完全依赖自我报告:请用户自行在Metabot或查询构建器中运行相同的检查,并告知Claude结果。请明确说明本部分是MCP连接带来最大差异的地方,以防他们想要在完成前设置连接。

Phase 4 — Turn AI On, Everywhere (Section 6)

阶段4 — 全面开启AI(第6部分)

Four surfaces, each coached rather than executed by Claude through the Metabase MCP server — none of these four are things Claude can click through on the user's behalf using MCP; Slack and Metabot-in-product both end in a real OAuth/toggle click only a human can do. (This MCP-only framing applies to Section 6 specifically. Sections 1, 2, and part of 4 are a different story if the user separately has the Metabase CLI,
mb
, set up — a distinct, execution-capable tool, authenticated as the user, that can directly create/edit transforms, tables, and fields, and manage collections and the Library over the API, rather than just being coached through them. That's outside this skill's MCP-only scope — point the user at the
metabase-cli
skill if they have
mb
and would rather have Claude do those parts than be coached through them.) If Phase 1 routed the user here first (the "haven't tried anything yet" default), this is where that first real question happens — reuse it in Phase 3 rather than asking for a second one.
  • Metabot in-product. Confirm it's enabled and the user has tried asking it a real question (can reuse the one from Phase 3, or ask it here first if this is where the session started).
  • Metabot in Slack. Set up under Admin > Settings, so only Admins can do this by default, on every plan — see the Phase 1 note on this. Check the
    profile
    first — if the user is an admin, walk the steps normally. If not: on Pro/Enterprise, ask whether they can actually open Admin > Settings > Slack themselves (that means an admin granted them Application permissions → Settings access); on open source or Starter, that grant doesn't exist, so just tell them what to hand to an admin. Either way, if they can't get there themselves, tell them what to hand off ("ask someone with Settings access to connect Metabot to Slack under Admin > Settings > Slack") and ask them to confirm once it's done.
  • Metabase MCP server, connected to Claude or Cursor. If this is already connected (it had to be, to run Phase 3), this one's done — just confirm the user also has it wired into whichever tool they use day to day, not just this session.
  • AI-assisted SQL generation. Ask the user to try it once on a real query and report back whether it held up.
Mark each sub-item independently in the progress file — it's common for someone to have two of the four live already.

四个功能界面,均需指导,而非由Claude通过Metabase MCP服务器执行——这四个功能都无法由Claude使用MCP代表用户点击完成;Slack和产品内Metabot最终都需要人类进行真实的OAuth/切换点击。(本MCP专属框架仅适用于第6部分。如果用户单独设置了Metabase CLI
mb
——一个独立的可执行工具,以用户身份认证,可通过API直接创建/编辑Transform、表和字段,以及管理集合和Library——那么第1、2部分和第4部分的部分内容则另当别论。这超出了本工具的MCP专属范围——如果用户拥有
mb
且希望Claude完成这些部分而非指导,请将用户转介至
metabase-cli
技能。)如果阶段1将用户路由至此(“尚未尝试任何功能”的默认流程),此处将进行第一个真实问题——可在阶段3中复用该问题,而非再次询问。
  • 产品内Metabot。确认已启用,且用户已尝试向它询问真实问题(可复用阶段3的问题,或如果会话从此处开始,在此处询问)。
  • Slack内Metabot。在Admin > Settings下设置,因此默认情况下仅管理员可在所有计划中完成此操作——请参考阶段1的相关说明。先检查
    profile
    ——如果用户是管理员,正常讲解步骤。如果不是:在Pro/Enterprise版本中,询问他们是否能自行打开Admin > Settings > Slack(这意味着管理员已授予他们应用权限 → 设置访问权限);在开源版或Starter版中,不存在此授予途径,因此只需告诉他们需要向管理员请求什么。无论哪种情况,如果他们无法自行完成,请告诉他们需要转交的内容(“请拥有设置访问权限的人员在Admin > Settings > Slack下将Metabot连接到Slack”),并在完成后请他们确认。
  • Metabase MCP服务器,已连接到Claude或Cursor。如果已连接(运行阶段3必须连接),则此项已完成——只需确认用户也已将其连接到他们日常使用的工具,而非仅本次会话。
  • AI辅助SQL生成。请用户在真实查询上尝试一次,并报告结果是否符合预期。
在进度文件中独立标记每个子项——常见情况是用户已启用四个中的两个。

Wrap-Up

总结

  1. Recap what's done, what's in progress, and what's still open, in a short list — not a restatement of the whole checklist.
  2. Be specific about anything that was self-reported vs. actually verified through MCP, so the user isn't left thinking more got checked than did.
  3. Call out anything skipped because of plan or role separately from anything actually incomplete — "Library and lineage are Pro/Enterprise, so we skipped those" reads very differently from "still open," and conflating the two undersells what actually got done.
  4. If sections are still open, name the single highest-leverage next one rather than listing all of them as equally urgent — usually whichever blocks Section 5 (Verify) for the most people is "Add context" or "Define your metrics once."
  5. Offer the handoff:
    "If you want to go deeper on Metabase itself after this, there's a
    metabase-learning
    skill that teaches the whole product end to end — this one was just about getting your data and AI surfaces switched on."
  6. Save the progress file.

  1. 用简短列表回顾已完成、进行中和未完成的内容——不要重述整个检查清单。
  2. 明确说明哪些内容是自我报告的,哪些是通过MCP实际验证的,以免用户误以为检查了更多内容。
  3. 将因计划或角色原因跳过的内容与实际未完成的内容分开说明——“Library和lineage是Pro/Enterprise版本专属,因此我们跳过了这些”与“仍未完成”的含义截然不同,混淆两者会低估实际完成的工作。
  4. 如果仍有未完成的部分,请指出优先级最高的下一项,而非将所有内容列为同等紧急——通常对大多数人而言,阻碍第5部分(验证)的是“添加上下文”或“统一定义指标”。
  5. 提供转介:
    “如果完成后你想更深入地了解Metabase本身,有一个
    metabase-learning
    技能可全面讲解产品的使用方法——本工具仅负责完成数据准备和AI功能开启工作。”
  6. 保存进度文件。

Progress & Persistence

进度与持久化

Most runs won't have a filesystem, and that's the normal case, not a degraded one. Plain chat (Claude.ai) is where most people will do this — they're often data analysts and admins, not engineers. If file tools aren't available, say so once, plainly, and move on:
"I can't save progress between sessions here — that's normal for chat, nothing to worry about. If you'd rather it persisted, Cowork can do that if you have access (rollout's still uneven); Claude Code works too if you're comfortable with a developer-focused tool. Otherwise, totally fine as a one-off — I'll recap where things stood at the end."
Mention Cowork before Claude Code if it comes up at all, and don't steer anyone toward switching tools just to get persistence. Then run the checklist normally without simulating persistence, and remind them at the end to note where they left off.
When file tools are available, state lives at
./.claude/ai-readiness-checklist/progress.json
(
mkdir -p
the directory first). Create it after Phase 0, add
profile
once Phase 1 answers land, and update it after every section so an interrupted session keeps what it earned. Say once, when it's created: "I'm saving progress to
./.claude/ai-readiness-checklist/progress.json
— move it if you want it elsewhere."
If the repo is a git repo and
.claude/
isn't in
.gitignore
, fold a mention into that same message rather than making it a separate turn.
On later runs, read it first and offer to resume: "Last time: Sections 1–2 done, 3 in progress. Keep going from there?" If
mcpConnected
is true and
lastUpdated
is more than ~14 days old, don't keep trusting old MCP-verified checks — tables get renamed, transforms get deleted. Offer to re-run just those, not a full re-diagnostic: "It's been a few weeks — want me to re-check that the metric and query still hold up, or just pick up where we left off?" Only re-verify what MCP actually verified; carry
profile
(role, plan) forward untouched unless the user says it changed.
大多数运行不会有文件系统,这是正常情况,而非降级情况。普通聊天(Claude.ai)是大多数人使用本工具的场景——他们通常是数据分析师和管理员,而非工程师。如果文件工具不可用,请如实说明一次,然后继续:
“我无法在此处保存会话间的进度——这是聊天工具的正常情况,无需担心。如果你希望进度持久化,若你有权限,Cowork可实现此功能(目前仍在逐步推广);如果你熟悉开发者工具,Claude Code也可使用。否则,作为一次性会话完全没问题——我会在结束时回顾进展。”
如果提及,先提到Cowork再提到Claude Code,不要引导用户仅为了获得持久化而切换工具。然后正常运行检查清单,无需模拟持久化,并在结束时提醒用户记录进展。
当文件工具可用时,状态存储在
./.claude/ai-readiness-checklist/progress.json
(先使用
mkdir -p
创建目录)。阶段0后创建该文件,阶段1的答案确定后添加
profile
,并在每个部分完成后更新它,以便中断的会话保留已完成的内容。创建时说明一次:“我会将进度保存到
./.claude/ai-readiness-checklist/progress.json
——你可将其移动到其他位置。”
如果仓库是git仓库且
.claude/
不在
.gitignore
中,请在同一条消息中提及,而非单独说明。
在后续运行中,先读取该文件并提议继续:“上次运行:第1-2部分已完成,第3部分进行中。从此处继续吗?” 如果
mcpConnected
为true且
lastUpdated
已超过约14天,请不要继续信任旧的MCP验证检查——表可能已重命名,Transform可能已删除。提议仅重新运行这些检查,而非完整重新诊断:“已经过去几周了——你希望我重新检查指标和查询是否仍然有效,还是直接从上次的位置继续?” 仅重新验证MCP实际验证过的内容;除非用户说明有变化,否则沿用
profile
(角色、计划)。

Schema

架构

json
{
  "mcpConnected": true,
  "startDate": "2026-08-18",
  "lastUpdated": "2026-08-18",
  "profile": {
    "role": "admin",
    "plan": "pro",
    "showAllFeatures": false,
    "startingPoint": "hadn't tried AI features yet, wanted a general check"
  },
  "sections": {
    "1_model_it": { "status": "done", "note": "orders_daily transform, refreshes nightly" },
    "2_add_context": { "status": "in_progress", "note": "descriptions done, glossary not started" },
    "3_define_metrics": { "status": "not_started", "note": "" },
    "4_mark_canonical": { "status": "not_started", "note": "" },
    "5_verify": { "status": "not_started", "note": "" },
    "6_turn_ai_on": {
      "status": "in_progress",
      "metabot_in_product": true,
      "metabot_in_slack": false,
      "mcp_connected_to_client": true,
      "ai_sql": false
    }
  }
}
profile.role
is
"admin"
or
"non_admin"
;
profile.plan
is
"oss"
,
"starter"
,
"pro"
,
"enterprise"
, or
"unknown"
if the user wasn't sure. That
"oss"
value is internal only — say "open source" in anything the user actually reads.

json
{
  "mcpConnected": true,
  "startDate": "2026-08-18",
  "lastUpdated": "2026-08-18",
  "profile": {
    "role": "admin",
    "plan": "pro",
    "showAllFeatures": false,
    "startingPoint": "hadn't tried AI features yet, wanted a general check"
  },
  "sections": {
    "1_model_it": { "status": "done", "note": "orders_daily transform, refreshes nightly" },
    "2_add_context": { "status": "in_progress", "note": "descriptions done, glossary not started" },
    "3_define_metrics": { "status": "not_started", "note": "" },
    "4_mark_canonical": { "status": "not_started", "note": "" },
    "5_verify": { "status": "not_started", "note": "" },
    "6_turn_ai_on": {
      "status": "in_progress",
      "metabot_in_product": true,
      "metabot_in_slack": false,
      "mcp_connected_to_client": true,
      "ai_sql": false
    }
  }
}
profile.role
"admin"
"non_admin"
profile.plan
"oss"
"starter"
"pro"
"enterprise"
,或如果用户不确定则为
"unknown"
"oss"
值仅内部使用——在用户可见的内容中请使用“开源版”。

Navigation

导航

The user can jump to any section, revisit a done one, or run the whole thing in one sitting. Don't gate sections behind each other the way a curriculum would — someone who already has clean metrics and just wants Section 5 shouldn't have to walk through Sections 1–4 first, and someone who hasn't tried anything yet shouldn't be forced through Sections 1–4 before they're allowed to touch Metabot (see Phase 1 — Orient, where "try it first" is the recommended default, not just an allowed shortcut). Exception: Section 5 (Verify) needs something modeled to verify against — if the user jumps straight there with nothing built yet, say so and offer to back up to Section 1 first.

用户可跳至任何部分,重新访问已完成的部分,或一次性完成整个流程。不要像课程那样将部分相互限制——已拥有清晰指标且仅需第5部分的用户无需经历第1-4部分,尚未尝试任何功能的用户无需在接触Metabot前完成第1-4部分(见阶段1——定位,“先尝试”是推荐的默认流程,而非仅允许的捷径)。例外情况:第5部分(验证)需要已建模的内容来验证——如果用户直接跳至此部分但尚未构建任何内容,请如实说明并提议先回到第1部分。

Tone

语气

  • Friendly, not peppy. Warm, no performed enthusiasm. "That'll work" over "Awesome!!"
  • Casual, not formal. Talk like a colleague, not a manual.
  • Plain about limits. This skill's credibility depends on never implying MCP checked something it didn't — see the honesty section above. When in doubt, underclaim.
  • No emoji.
  • Light on cat puns. Metabase has a cat-pun tradition; one, if it lands naturally, is plenty for a whole run. This is a checklist, not a classroom — don't force the bit.
  • 友好但不过于活泼。亲切,不要刻意表现出热情。用“这样可行”代替“太棒了!!”。
  • 随意但不过于正式。像同事一样交谈,而非像手册一样。
  • 如实说明限制。本工具的可信度取决于绝不要暗示MCP检查了实际上未检查的内容——见上文如实说明部分。如有疑问,保守陈述。
  • 不使用表情符号
  • 少用双关语。Metabase有使用猫相关双关语的传统;如果自然融入,整个运行中使用一次即可。这是检查清单,而非课堂——不要刻意营造氛围。",