<required_reading>
conventions.mdtemplate-structure.mdparameter-widgets.mdassets/examples/minimal-template/template.yamlassets/examples/nodejs-backend/template.yaml— full publish/register pipelineassets/examples/java-springboot/template.yaml— Spring Boot + Maven
</required_reading>
Use when no reference codebase exists. For converting existing code, use templatize instead.
Ask (one round, not necessarily one question each):
- Template purpose — what golden path does this enable?
- Target type —
service,website,library,plugin, etc. - Parameters — minimum form fields (name, owner, repo URL, …)
- Steps — fetch skeleton only, or publish + register too?
- SCM — GitHub, GitLab, Bitbucket?
Before writing files, query the curated catalog and suggest 1–3 study references:
python <skill-dir>/scripts/list_examples.py \
--match "<template purpose and stack from Step 1>" \
--limit 3 --jsonPresent upstream URLs from the matches. When a match includes local_bundled, also point at assets/examples/<name>/ for offline patterns. Ask whether to mirror a reference's step sequence or start from assets/examples/minimal-template/.
Load example-catalog.md when the user asks what customers typically build.
If no template repo exists, run init first.
templates/<kebab-name>/
├── template.yaml
├── skeleton/
│ ├── README.md
│ └── catalog-info.yaml # when registering a Component
└── README.md # optional
Use assets/examples/minimal-template/ as the starting skeleton for simple templates.
metadata— descriptivename,title,description, meaningfultags(seebest-practices.mdtip 8)spec.type— set to a discoverable category, not generic default when possiblespec.parameters— at least one section with required fields; use EntityPicker/Secret widgets perbest-practices.mdtips 4 and 7spec.steps— minimal path:
steps:
- id: fetch-base
name: Fetch skeleton
action: fetch:template
input:
url: ./skeleton
values:
componentId: ${{ parameters.componentId }}
owner: ${{ parameters.owner }}
description: ${{ parameters.description }}Add publish/register steps when user wants full end-to-end flow.
Keep skeleton minimal but valid:
README.mdwith{{ values.componentId }}placeholdercatalog-info.yamlwhen usingcatalog:register
python <skill-dir>/scripts/create_location.py --path <repo-root> [--json]python <skill-dir>/scripts/fix_gotchas.py --path templates/<name>/template.yaml [--apply] [--json]Before finishing, verify:
-
Parameters use appropriate widgets from
parameter-widgets.md -
Steps match the user's SCM choice (publish + register when requested)
-
fix_gotchas.pyreports zero critical findings after--apply -
create_location.pylists the new template -
Add
README.md(or TechDocs perbest-practices.mdtip 9) for non-trivial templates
Exit bar: minimal but complete template for the described use case, passes validate, ready for Template Editor (best-practices.md tip 2).
<success_criteria>
- Valid v1beta3
template.yamlwith parameters, steps, and output appropriate to use case skeleton/contains at least one templated filelocation.yamlregisters the new template- fix-gotchas passes with no critical findings
</success_criteria>