name: config-authoring
description: "Design, inspect, validate, and serialize DataDesigner configs:
builders, columns, samplers, seeds, person data, validators, processors,
model/tool configs, custom columns, skip/drop rules, and Jinja references."
disable-model-invocation: true
metadata:
disco-role: operating
license: NOASSERTION
Config Authoring
Use this sub-skill when the user needs to create, edit, inspect, validate, or serialize data_designer.config objects or a Python script that returns a DataDesignerConfigBuilder.
Route here for
- Builder API questions:
DataDesignerConfigBuilder, shorthand add_column(...), from_config(...), build(), and write_config(...).
- Column design: sampler, LLM text/code/structured/judge, expression, validation, embedding, image, seed dataset, and custom column configs.
- Sampler parameters, sampler constraints, conditional sampler params, person/person-from-faker fields, and managed persona schema inspection.
- Seed source configs and seed/person Jinja references.
- Config-only model/tool declarations:
ModelConfig, inference params, ModelProvider, ToolConfig, and MCP provider config objects.
- Troubleshooting Pydantic validation, discriminators, missing fields, bad Jinja syntax/references, drop/skip propagation, and serialization errors.
Do not handle here
- Running generation,
preview, create, result artifacts, resume, or model readiness probes. Route to generation-runtime, especially for preview, create, and check_models.
- CLI state files,
data-designer command syntax, agent context/types/state, or non-TTY behavior. Route to cli-and-agent-tools.
- Installing/discovering plugin packages or building package entry points. Route to
plugins-and-extensions.
- Long recipe selection or adaptation narratives. Route to
recipes-and-integrations.
For package topology and cross-cutting behavior, also use the root package overview. For install/import/global failures that are not config-specific, use root troubleshooting.
Operating workflow
- Classify the request. Decide whether the user is asking to author a new config, inspect an existing builder/YAML/JSON/script, fix a config error, add seed/person data, add validators/processors, or serialize a config.
- Load the right reference.
- Prefer public imports. Use
import data_designer.config as dd and public dd.* exports unless a reference explicitly names a lower-level public module for inspection.
- Author a builder, not an execution. Return or update a
DataDesignerConfigBuilder; do not call preview, create, or check_models from this sub-skill.
- Validate locally before handoff. At minimum instantiate the config objects and call
builder.build() to trigger Pydantic validation. If the DataDesigner interface and non-model resources are available, DataDesigner().validate(builder) performs compile-time validation without running generation; generation/runtime failures still route to generation-runtime.
- Be explicit about model aliases. The installed-package evidence found no usable model aliases by default in the agent context. Config-only sampler/expression/seed workflows can still build and validate without model calls. Model-backed columns need explicit
ModelConfig aliases before runtime checks.
- Serialize only serializable configs.
builder.write_config("config.yaml") or .json is valid for normal seed sources; DataFrameSeedSource intentionally cannot be serialized, so convert it to LocalFileSeedSource first.
- Use bundled inspectors when facts may be stale. Run
python scripts/dump_config_type_catalog.py to refresh live installed field sets and python scripts/inspect_person_schema.py <locale> to inspect managed person fields when assets are present.
Output expectations
- For new scripts, expose
load_config_builder() -> dd.DataDesignerConfigBuilder and keep dependencies explicit.
- For fixes, state the minimal field/key/discriminator change and the validation command or snippet used.
- For seed/person configs, name which columns remain in final output and which helper columns use
drop=True.
- For validation handoff, distinguish config validation from runtime generation/model errors and link to
generation-runtime when model calls or artifacts are involved.