LLMSkillHub
mirroredCopied from decocms/studio under MIT. decocms has not claimed this page, and is not affiliated with LLM SkillHub.

decocms / templating

Render any text file (HTML, markdown, config, SQL, email) from a mustache template plus JSON data. Use when an output's shape is fixed ahead of time and only the values change.

0
SKILL.md
3.2 KB

templating — fill data into text-file templates

Render any text file (HTML, markdown, config, SQL, email, …) from a
mustache template plus JSON data. Use this whenever the shape of an output
is known ahead of time and only the values change — it is faster and less
error-prone than writing the file by hand.

Other skills build on this one (e.g. slides composes presentation decks
from slide templates).

Quick reference

TaskCommand
Render with inline datacreate-from-template --template t.html --data '{"name":"Ada"}' --output out.html
Render with a data filecreate-from-template --template t.html --data @data.json --output out.html
Fail on missing keysadd --strict
Overwrite existing outputadd -f
Use partials ({{>name}})add --partials-dir ./partials

The command prints the absolute output path on success and exits non-zero
with a message on any error (bad JSON, missing template, existing output
without -f, missing keys under --strict).

Template syntax (mustache)

SyntaxMeaning
{{name}}Insert value, HTML-escaped
{{{name}}}Insert value raw (no escaping) — for trusted HTML fragments
{{#items}}…{{/items}}Repeat block for each array item; also renders for truthy values
{{.}}The current item inside a list block
{{^items}}…{{/items}}Render block only when the value is empty/falsy/missing
{{user.name}}Dotted path lookup
{{>header}}Include partial header (resolved from --partials-dir as header or header.html)
{{!comment}}Comment, never rendered

Example:

<ul>
  {{#items}}<li><b>{{label}}</b>: {{value}}</li>{{/items}}
  {{^items}}<li>No items</li>{{/items}}
</ul>
create-from-template --template list.template.html \
  --data '{"items":[{"label":"CPU","value":"42%"}]}' \
  --output list.html

Workflow tips

  • Keep data in a JSON file (--data @data.json) when it is more than a
    couple of fields — easier to iterate on than a long inline string.

  • Use --strict while developing a template to catch typos in key names;
    drop it when optional keys are intentional.

  • Templates are plain text files — author your own anywhere (the org home
    folder under /app/org/home/templates/ is a good durable place for
    organization-wide templates).