type-definition-creator
Installation
SKILL.md
Type Definition Creator
Author or modify a Datex Studio type definition (configurationTypeId=22) on a branch — a -customType.json file that declares either an interface (i_<name>) or an enum (e_<name>). Both shapes live in the same component type and share the suffix, but the internal body differs substantially. Type definitions are consumed across the platform: flow inParams / outParams, datasource objectTypeDef, other type defs, and (with one important constraint) UI-component params.
References
- ../datex-studio-shared/branch-setup.md — Branch/connection selection (shared across skills)
- ../datex-studio-shared/context-navigation.md#discovering-custom-types-and-enum-members —
dxs configuration nomenclature -b <id>(optionally--package/--kind/--search): a fast, flat catalog of every<Package>.<Type>(and each enum's members) on the branch — run it before authoring to check whether a type/enum already exists and to confirm exactreferenceNames and member names, without fetching full bodies - references/type-definitions.md — Authoritative type-definition reference: file shape, the six property-descriptor shapes for interfaces, the two value-descriptor shapes for enums, self-reference prohibition with inline-to-depth workaround, UI-component enum FQN constraint and the primitive-plus-cast workaround, the tightening-ripples-to-consumers impact rule
- ../datex-studio-conventions/file-format.md —
configurationTypeIdtable; JSON file locations - ../datex-studio-conventions/naming-conventions.md —
i_*/e_*prefix rules;-customType.jsonsuffix; filename stem matching - ../datex-studio-conventions/defaults.md —
accessModifierdefaults (interfaces and enums require an explicit choice — ask the user when authoring from scratch)
Dependencies
requirements-gatheringskill — invoked to produce a requirements brief if one doesn't already exist in the conversation contextimpact-analysisskill — invoked before any tightening edit on an existing type that's already in use: adding a required field, removing an optional one, narrowing a property from genericobjectto a specific shape, rewritingobjectTypeDeffromnullto strict, renaming a property, or removing the type entirely. The type's FQN (<Package>.<referenceName>) is the trace target; every consumer that referenced the loose shape and accessed properties the new shape doesn't declare will break on the platform's strict pass. Net-new types skip this step