← ClaudeAtlas

dxkit-schemalisted

Configure, read, and act on the dxkit model-schema drift gate — list the data-model inventory, preview drift before pushing, explain why the guardrail blocked a model change, and ship a deliberate breaking change the safe way (migration + expiring accepted-risk allowlist entry). Use when the user says "set up the schema gate", "what models does this repo declare", "the guardrail says I broke a model", "why is removing this field blocked", "we're intentionally changing this schema", or anything about data-model / schema drift gating.
vyuh-labs/dxkit · ★ 10 · Code & Development · score 72
Install: claude install-skill vyuh-labs/dxkit
# dxkit-schema This skill owns the **model-schema drift gate**: dxkit statically extracts every declared data model (ORM entities, tagged structs, spec schemas) and fails a PR that changes one in a breaking way — a removed field, a changed type, an optional field made required, a removed model. Additive changes surface as warnings or information, never blocks. It is **thin orchestration over the deterministic CLI.** It never re-implements extraction or diffing: it runs `schema` / `schema diff` / `guardrail check`, reads their structured output, and supplies judgment + code edits. The determinism stays in the CLI; the agent supplies the reasoning. **Language coverage.** Recognition is marker-based per language pack — precision over recall. TypeScript/JavaScript: decorator-marked entity classes (TypeORM/MikroORM `@Entity`, sequelize-typescript `@Table`, NestJS-mongoose `@Schema`, type-graphql `@ObjectType`/`@InputType`) plus `BaseEntity` heritage; field facts from the type annotations. Python: Django `models.Model`, SQLAlchemy `Base`/`DeclarativeBase`, pydantic `BaseModel`, SQLModel, and `@dataclass`; Django/SQLAlchemy field constructors supply types and `null=`/`nullable=` optionality. Go: a struct tagged `json:`/`gorm:`/`db:`/`bson:` IS a wire contract; the tag supplies the wire name, `omitempty` and pointer types read as optional. Java: JPA `@Entity`/`@Table`/`@Embeddable`/`@MappedSuperclass` classes; `@Column(nullable = …)` supplies optionality and `name = …` the wire na