Convert one changed historic-SQL table usage bucket into typed table usage evidence for deterministic _schema projection.
Use this skill when the WorkUnit raw file is one tables/<schema>.<name>.json file from the historic-sql adapter.
read_raw_file for the single tables/<schema>.<name>.json raw file.manifest.json only if the table JSON omits the dialect or the WorkUnit notes are unclear.emit_historic_sql_evidence exactly once with kind: "table_usage".Before writing a wiki page or SL source on any topic:
discover_data({query: "<topic>"}) - see what wikis, SL sources, and raw
tables already exist. Prefer updating existing pages over creating new ones.Before emitting any schema.table or schema.table.column into a wiki body,
SL source, tables: frontmatter, sl_refs, or emit_unmapped_fallback:
entity_details({connectionId, targets: [{display: "<identifier>"}]}) -
confirm the identifier resolves; inspect native types, FK/PK, and
sampleValues.entity_details sampleValues for the relevant
column. If sampleValues is short or the sample may have missed real values,
run a sql_execution probe with the same warehouse connection id:
sql_execution({connectionId, sql: "SELECT DISTINCT <col> FROM <ref> LIMIT 50"}).sql_execution({connectionId, sql: "SELECT 1 FROM <ref> LIMIT 0"}).
If it errors, the identifier is fictional.[unverified - from <rawPath>] in the wiki body,
citing the exact raw path that mentioned it.emit_unmapped_fallback with no_physical_table, include
the failing probe error in clarification.<schema>.<table> placeholder strings from these instructions
into output.Call emit_historic_sql_evidence with this shape:
{
"kind": "table_usage",
"table": "public.orders",
"usage": {
"narrative": "Orders are repeatedly queried for paid/refunded lifecycle analysis and customer-level rollups.",
"frequencyTier": "high",
"commonFilters": ["status", "created_at"],
"commonGroupBys": ["status"],
"commonJoins": [{ "table": "public.customers", "on": ["customer_id"] }],
"staleSince": null
}
}The usage object must match tableUsageOutputSchema.
columnsByClause.where as common filters.columnsByClause.groupBy as common group-bys.observedJoins as common joins.stats.executionsBucket, stats.distinctUsersBucket, and stats.recencyBucket to choose frequencyTier.frequencyTier: "high" only when executions and distinct users are both broad.frequencyTier: "mid" for repeated team usage that is not broad enough for high.frequencyTier: "low" for low-volume but present usage.frequencyTier: "unused" only when the table input explicitly says the table is stale or has no recent templates.narrative short and concrete.49a4ae6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.