- Use lowercase, hyphenated IDs.
- Prefer
{category}-{slug}for real templates and scaffolds. - IDs must be globally unique.
- Use lowercase, hyphen-separated slugs.
- Keep slugs stable because future routes will depend on them.
- Category directory names should match
registry/categories.json. - Multiword categories should use hyphens, for example
lecture-notes.
- Use concise, stable subcategory labels such as
beamer,report-family, oracademic-cv. - Prefer a single consistent subcategory per package unless there is a clear structural reason otherwise.
- Store thumbnail previews in
assets/previews/images/. - Store preview PDFs in
assets/previews/documents/. - Prefer
{slug}.pngor{slug}.jpgfor images and{slug}.pdffor preview documents. - Set
preview_ready = trueonly whenpreview_imagepoints to a real file.
- Store optional downloadable bundles in
assets/downloads/. - Prefer
{slug}.zip. - The static site will expose a download action only when the matching archive exists.
Real template and scaffold READMEs should usually include:
- classification
- compile instructions
- package notes
- preservation or promotion notes when relevant
Every real template or scaffold must include all required metadata fields.
The validator enforces:
- known category membership
- required README presence
- path validity
- preview readiness consistency
- unique IDs and slugs
- Do not relabel a scaffold as a real template in place.
- Create a new package derived from the scaffold.
- Preserve the scaffold as the reusable family baseline unless intentionally retired.
- Use
status = deprecatedwhen an entry still exists but should no longer be the recommended option. - Use
status = archivedwhen the entry is retained only for history or compatibility. - Archived entries may later move to
listing_visibility = hiddenif they should disappear from normal browsing.