| name | governance-coverage-reporter |
| description | Report Unity Catalog governance coverage — table comments, ownership, tags, and column documentation — from system.information_schema. Ask me which tables lack owners, descriptions, or classification tags across a catalog. |
Illustrative example — demonstrates a well-formed SKILL.md for this reference
implementation. Adapt the content to your own org; do not deploy verbatim.
governance-coverage-reporter
Overview
Measures Unity Catalog governance hygiene from the live system.information_schema
metadata views: it reports which tables lack an owner, a description/comment, or classification
tags, and summarizes documentation coverage across a catalog. This is metadata-only — it reads
the catalog's structure and annotations, never the data inside any table — which keeps it a
clean Tier-2 (internal) skill.
When to use this skill
Reach for this skill when a data-governance or privacy user asks about catalog hygiene:
- "Which tables in the
main catalog have no description?"
- "How many tables are missing an owner?"
- "Show me governance coverage — what share of tables have comments and tags?"
- "Which schemas have the worst documentation coverage?"
Instructions
When the user asks a governance-coverage question:
- Identify the catalog/schema scope (default: the
main catalog).
- Query
system.information_schema.tables for table inventory, owners, and comments.
- Join
system.information_schema.table_tags to assess classification-tag coverage.
- Present results as a coverage summary + a ranked list of the least-documented schemas
(see the Recommendations framework).
Examples
Tables missing a description or owner (in main)
SELECT
table_schema,
table_name,
table_owner,
comment
FROM system.information_schema.tables
WHERE table_catalog = 'main'
AND (comment IS NULL OR comment = '' OR table_owner IS NULL)
ORDER BY table_schema, table_name
Documentation coverage by schema
SELECT
table_schema,
COUNT(*) AS total_tables,
SUM(CASE WHEN comment IS NOT NULL AND comment <> '' THEN 1 ELSE 0 END) AS documented,
ROUND(
SUM(CASE WHEN comment IS NOT NULL AND comment <> '' THEN 1 ELSE 0 END) / COUNT(*),
3
) AS doc_coverage
FROM system.information_schema.tables
WHERE table_catalog = 'main'
GROUP BY table_schema
ORDER BY doc_coverage ASC
Classification-tag coverage
SELECT
t.table_schema,
COUNT(DISTINCT t.table_name) AS total_tables,
COUNT(DISTINCT tg.table_name) AS tagged_tables
FROM system.information_schema.tables t
LEFT JOIN system.information_schema.table_tags tg
ON t.table_catalog = tg.catalog_name
AND t.table_schema = tg.schema_name
AND t.table_name = tg.table_name
WHERE t.table_catalog = 'main'
GROUP BY t.table_schema
ORDER BY tagged_tables ASC
Recommendations framework
After presenting results, always include:
- Biggest gap — the schema with the lowest documentation or tag coverage, named.
- Coverage headline — the overall share of tables with owners / comments / tags.
- Quick win — one prioritized action (e.g. "assign owners to the N ownerless tables in schema X first").
Edge cases
- Empty catalog — if the requested catalog has no tables, say so rather than returning
a zero-row summary with no context.
- Permission scope —
information_schema only surfaces objects the caller can see; note
that coverage is relative to visible objects, not necessarily the whole metastore.
- Metadata only — this skill never reads table contents. If asked about the data inside
a table, redirect: that is a data-query task, not a governance-coverage task.
Data scope
system.information_schema.tables — table inventory, owner, and comment metadata
system.information_schema.table_tags — classification/governance tag assignments
- No PII or table contents are accessed — this skill reads catalog metadata only.