SchemaSmith has a customization layer that doesn't get nearly enough airtime: Extensions. You can embed any structured JSON metadata at every level of a schema definition — tables, columns, indexes, foreign keys, check constraints, statistics, full-text indexes, XML indexes, and indexed views. That metadata round-trips through extraction and quenching untouched, and it's available to your own scripts via the {{TableMetadata}} and {{IndexedViewMetadata}} tokens. So your schema files can become the source of truth for things the tools don't directly manage — and a single custom script can turn that metadata into real work.
Today there's no showcase for this. This issue tracks building one: a guide, working demo products, and an optional CI validation pattern. Contributions and use-case ideas are welcome — see the note at the bottom.
What you can do with Extensions (idea starters):
- Replication topology — mark which tables replicate, where, and how; generate the replication setup from the schema
- Data dictionary — business names, descriptions, sensitivity levels, data owners — queryable, and always in sync with the schema
- Column obfuscation rules — how to sanitize production data for dev/test
- Team ownership — which team owns which tables
- BI / reporting access — which tables and columns are exposed downstream
- Code-generation inputs — metadata that drives stored-procedure or script generation
Any platform — SQL Server, PostgreSQL, or MySQL. Some use cases are naturally cross-platform (a data dictionary works the same everywhere); others are engine-specific (replication setup is a SQL Server example). A demo for one engine, or parallel demos across all three, are equally welcome. We expect to end up with several realistic examples rather than one — people often need a demo close to their own situation before the pattern clicks, so variety is the point.
Two worked demos we're planning (and would love community takes on):
- Data dictionary (cross-platform) — table-level
BusinessDomain / DataOwner / Description / RetentionPolicy and column-level BusinessName / Description / SensitivityLevel / DataSteward. A custom script populates a queryable DataDictionary table on every quench.
- Replication setup (SQL Server) — table-level
ReplicationEnabled / ReplicationTarget / ReplicationMode and column-level ReplicateColumn / ConflictResolution. A custom script reads {{TableMetadata}}, walks the tables marked for replication, and generates the DDL.
Validating your Extensions in CI (optional, for teams that want enforcement):
SchemaSmith's generated schema validates the structure of your tables (Name, Columns, Indexes, …). Your custom metadata is yours to shape, so it's validated in a second pass: a JSON Schema you write that's permissive everywhere (additionalProperties: true) except inside your own Extensions blocks, where you lock down required fields, allowed values, and types at each level. Wire it into CI with the same GrantBirki/json-yaml-validate action the SchemaSmith demos already use. This issue includes shipping a starter .schema template you can copy and fill in only for the levels you use.
The technical foundation is already in place — no tool changes needed:
Extensions accepts any valid JSON on 9 entity types
- Custom metadata is preserved through extraction round-trips
{{TableMetadata}} serializes the full table graph (including all Extensions at every level) for use in any custom script
- Base schema validation already treats
Extensions as "accept anything," leaving the strict rules to your second-pass schema
Want to get involved? Share the Extensions use case you'd build (or already have), or contribute a demo on any engine. We're building these showcases ourselves too, so maintainers may adapt a contributed demo — or build a companion — to round out the set; we'll talk it through on the issue either way.
SchemaSmith has a customization layer that doesn't get nearly enough airtime: Extensions. You can embed any structured JSON metadata at every level of a schema definition — tables, columns, indexes, foreign keys, check constraints, statistics, full-text indexes, XML indexes, and indexed views. That metadata round-trips through extraction and quenching untouched, and it's available to your own scripts via the
{{TableMetadata}}and{{IndexedViewMetadata}}tokens. So your schema files can become the source of truth for things the tools don't directly manage — and a single custom script can turn that metadata into real work.Today there's no showcase for this. This issue tracks building one: a guide, working demo products, and an optional CI validation pattern. Contributions and use-case ideas are welcome — see the note at the bottom.
What you can do with Extensions (idea starters):
Any platform — SQL Server, PostgreSQL, or MySQL. Some use cases are naturally cross-platform (a data dictionary works the same everywhere); others are engine-specific (replication setup is a SQL Server example). A demo for one engine, or parallel demos across all three, are equally welcome. We expect to end up with several realistic examples rather than one — people often need a demo close to their own situation before the pattern clicks, so variety is the point.
Two worked demos we're planning (and would love community takes on):
BusinessDomain/DataOwner/Description/RetentionPolicyand column-levelBusinessName/Description/SensitivityLevel/DataSteward. A custom script populates a queryableDataDictionarytable on every quench.ReplicationEnabled/ReplicationTarget/ReplicationModeand column-levelReplicateColumn/ConflictResolution. A custom script reads{{TableMetadata}}, walks the tables marked for replication, and generates the DDL.Validating your Extensions in CI (optional, for teams that want enforcement):
SchemaSmith's generated schema validates the structure of your tables (Name, Columns, Indexes, …). Your custom metadata is yours to shape, so it's validated in a second pass: a JSON Schema you write that's permissive everywhere (
additionalProperties: true) except inside your ownExtensionsblocks, where you lock down required fields, allowed values, and types at each level. Wire it into CI with the sameGrantBirki/json-yaml-validateaction the SchemaSmith demos already use. This issue includes shipping a starter.schematemplate you can copy and fill in only for the levels you use.The technical foundation is already in place — no tool changes needed:
Extensionsaccepts any valid JSON on 9 entity types{{TableMetadata}}serializes the full table graph (including all Extensions at every level) for use in any custom scriptExtensionsas "accept anything," leaving the strict rules to your second-pass schemaWant to get involved? Share the Extensions use case you'd build (or already have), or contribute a demo on any engine. We're building these showcases ourselves too, so maintainers may adapt a contributed demo — or build a companion — to round out the set; we'll talk it through on the issue either way.