Slot scaffolder
Bundled sub-skill of testdata-generation: turn an OpenAPI directory plus a
domain name into a slot that matches ../slots/SLOT_SPEC.md,
the single copy of that contract.
Inputs
domain and openapi are the prerequisite materials. If either is missing, or the OpenAPI directory has no .yaml / .yml / .json files, stop and ask. Do not invent operations or scaffold an empty slot. After the user provides them, generate the slot. Do not collect executor fields.
| Field | Meaning | Required |
|---|---|---|
domain |
Short English slug (payments, logistics) |
yes |
openapi |
Directory of OpenAPI YAML/JSON files (at least one spec) | yes |
output |
Destination directory (default ../slots/<domain>) |
no |
Run
node scripts/scaffold_slot.ts \
--domain <domain> \
--openapi <openapi-dir> \
--output <output-dir>
The script writes slot.yaml (the one config), executor stubs, generated SKILL.md / tools-guide.md, and copies OpenAPI into assets/openapi/.
Slots under ./slots/<domain> are discovered automatically. If the skill lives elsewhere, add one line:
workspace:
slot_roots:
- /path/to/company-slots
After generation
- Implement each stub
main(params)againstDATA_BUILD_API_BASE(timeouts; nevershell: true; missing required IDs must fail) - Add
scenes(and optionalaliases/invokeParams) inslot.yamlonly. List more specific entities before generic ones - Refresh generated docs:
node ../scripts/sync_slot.ts --dir <slot>
Hand-writtenSKILL.mdis left alone unless it isgenerated-from: slot.yamlor you pass--force - Smoke-test:
node ../scripts/search_data_build.ts --keywords <domain> --json
Do not add skill_marketplace.paths or api_catalog.paths. Search, OpenAPI index, and case-pipeline bind all read slots/ + workspace.slot_roots. If slot.yaml is omitted, entities are inferred from scripts/executors/* and assets/openapi operationIds.
Human operators: ../HOW_IT_WORKS.md. Agents stay on this file and ../slots/SLOT_SPEC.md.