name: generate-doc-template
description: |
Generates on-brand document and deck templates — letterhead, slide, and
one-pager — as SVG from the active brand profile, with editable title,
subtitle, and body zones. Vector output needs no account, key, or network.
Use when a user asks for a letterhead, a slide or deck master, or a branded
one-pager.
Trigger with "make a letterhead", "branded slide", or "/brand-make letterhead".
allowed-tools: Read, Write, Glob, Bash(node:*)
argument-hint: '[kind] [title] [optional subtitle] [optional body]'
version: "0.5.1"
author: localplugins localplugins@proton.me
license: MIT
compatibility: Designed for Claude Code
tags:
- branding
- documents
- svg
- templates
- design
Generate Doc Template
Generates a branded, print- or screen-ready document template as SVG from the active brand profile, with editable content zones.
Overview
The generate-doc-template skill turns a title (and optional subtitle and body) into a
branded document or deck master. Output is vector SVG, so it scales cleanly, prints
crisply, and needs no account, key, or network call. The generator (lib/doctpl.mjs)
draws a shared margin grid, brand mark, and accent rules, then fills the requested
kind; the skill resolves the active profile, picks the kind, runs the generator, and
saves the file. Convert to PDF or PNG downstream with /brand-export.
Prerequisites
- An active brand profile created with
/brand-new (a brand/ directory, or brands/[slug]/). Read loads its color-system.json and typography.json.
- Node.js on the PATH — the generator runs as
node lib/doctpl.mjs.
- Write access to an
output/ directory in the working repository.
- A title string; subtitle and body are optional parameters.
Instructions
-
Run /brand-status to confirm the active brand; if none exists, tell the user to run /brand-new and stop.
-
Use Glob to locate the active brand directory, then Read and validate the profile with validateProfile. Stop with the offending field if validation fails.
-
Choose the kind — letterhead (default), slide, or one-pager. Ask the user when it is unclear.
-
Generate the template by running the node generator:
import { loadProfile } from '../../lib/brand.mjs';
import { buildDoc } from '../../lib/doctpl.mjs';
const profile = loadProfile(activeDir);
const { svg, kind } = buildDoc(profile, {
kind: 'letterhead',
title: 'Offer of Employment',
body: 'Dear candidate, we are delighted to extend an offer.',
});
-
Write the result with the Write tool to output/[slug]-[kind].svg.
-
Hand the file to the visual-guardian subagent for a palette, contrast, and type pass; apply its fixes or surface its flags.
-
Report the saved path and point out the editable zones so the user can customize or adapt the copy: id="title", id="subtitle", and id="body".
Output
One SVG file under output/, named for the slug and kind:
output/northwind-letterhead.svg
- Sized to the chosen kind —
letterhead and one-pager at 816×1056 (US Letter @96dpi), slide at 1280×720 (16:9).
- Content sits in editable zones —
id="title", id="subtitle", id="body" — that wrap automatically. A letterhead with no body ships with sample content rules the user replaces.
- All copy is HTML-escaped before it enters the markup; colors come from the palette only.
Error Handling
| Condition | Behavior |
|---|
| No active brand profile | Stop and direct the user to /brand-new. |
Profile fails validateProfile | Report the offending field and stop. |
| Title missing | Ask the user for a title before generating. |
| Unknown kind requested | List the three supported kinds and ask the user to pick one. |
| Body font unavailable at render time | The declared fallback in typography.json applies — flag the substitution, never mismatch silently. |
To troubleshoot a crowded page, verify the copy against the margins in references/layout-grids.md, then re-run and re-check with the guardian.
Examples
Example — formal letterhead
/brand-make a letterhead for an offer letter
Builds an 816×1056 letterhead with the brand mark, an accent rule, the title, and the body, saved as output/northwind-letterhead.svg.
Example — deck title slide
/brand-make a title slide for our pitch deck
Generates a 1280×720 slide with a left accent bar, the brand mark, and a large title zone.
Example — executive one-pager
/brand-make a one-pager summarizing Q3 results
Produces an 816×1056 one-pager with a primary header band, then title and body zones ready to edit.
Resources
references/layout-grids.md — every kind's size, the shared grid, per-kind layout, editable zones, and how to add a kind.
- Sibling skills: generate-logo for marks, and generate-social for platform posts — route between them with the
/brand-make command.
- Paper sizes reference (ISO 216) — background on the print dimensions used.
- Agent Skills documentation — how skills are authored and invoked.