OpenParable
Skip to content
← Back to skills

Templating

Documents
templating

Templating is an Agent Skill for documents published in the decocms/studio repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

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.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/decocms/studio/blob/HEAD/packages/sandbox/image/skills/templating/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/templating, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

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 org/home/templates/ is a good durable place for organization-wide templates).