invokes this skill with the
whole session, not
a single table. The target you receive is a
whose
is a list of table records matching this skill's
filter. When a node writes multiple tables (CTAS
scaffolding, layered ETL),
loop over and run the
checks below independently for each
. Transfer targets are
covered by
. Emit one
per (target,
check) pair so the retry prompt can tell the agent which specific table
failed.
Run the column-contract checks in this order. Stop on the first blocking
failure for a given table, then continue with the next target table if the
session contains multiple table targets.
For every executed check, report the check name, observed value, expected
value or threshold, pass/fail decision, and a short failure reason.
If the caller did not supply an expected column set / type map, there is
nothing for this skill to check — emit the JSON block with
and return without calling tools. The builtin layer has
already confirmed existence and row count; duplicating that check here only
produces false negatives when catalog/database/schema identifiers are
ambiguous.
Use
and
to introspect the target. Do
not
run
for counting rows or sampling data — out of scope.
The following checks are intentionally not bundled here. Add them in a
project-level validator skill under
or
with
and a
filter when
the table actually needs them:
Emit the standard validator JSON block (see the output contract appended by
the hook). Use
only for column contract violations
that would break downstream consumers. Mismatches that are cosmetic or
widening-safe should be
.