Imported from Doc-Failure/templify-agent-plugin (
skills/branded-template-generator/SKILL.md). Install upstream withnpx skills add Doc-Failure/templify-agent-plugin --skill branded-template-generator. Copyright stays with the author.
Templify Branded Template Generator
Turn a website or style brief and a content brief into a reusable branded template saved on the local filesystem. The required output is an editable Office Open XML file plus a personalization manifest:
.pptxfor visual, presenter-led material;.docxfor detailed, asynchronously reviewed material;.xlsxfor models, trackers, plans, and other editable structured data.
Templify's core product is a Google Workspace add-on for personalizing, publishing, and tracking proposals. This free skill creates starting templates; the optional MCP integration lets an agent operate the Google workflow. Neither the add-on nor MCP is required for local generation.
Keep generation local unless the user has explicitly requested a Google handoff or publication. Honor authorization already given in the current request; presenting next steps does not authorize an upload or deployment.
Terminal-safe URLs are mandatory
Whenever an MCP operation returns or identifies a URL, show the complete absolute URL as visible plain text. A Markdown link whose destination is hidden behind link text is never sufficient. Do not shorten, truncate, or replace a URL with a file ID.
After upload, show the editable Google URL. Preserve that URL while personalizing the file and show it again after edits. After deployment, the final response must show the editable Google URL, public webpage URL, and PDF URL, each on its own line in a plain-text block exactly like this:
Editable Google file: https://docs.google.com/...
Published webpage: https://...
PDF: https://...
The labels may be localized, but every value must begin with https:// and remain directly copyable from a terminal. A clickable Markdown link may be added separately, but never instead of these raw URLs. If an MCP response supplies only an ID, use the file type and ID to construct the canonical absolute Google URL before handoff. If no valid absolute URL can be obtained, report that explicitly rather than presenting an ID as a link.
Establish the brief
Collect only the information that is necessary to produce the requested artifact. When the user wants the design based on a company or product website but has not supplied its URL, ask for the website URL first, in a message by itself. Briefly explain that the site is used to understand the brand's colors, typography, imagery, and voice; it is not copied pixel for pixel.
When the user requests a presentation but has no design source, offer two choices before confirming the brief: create an original local PPTX with this skill, or start from a design in Google's built-in Slides template gallery. If they choose the Google-native option, route the task to $google-slides-template-builder; do not require a local output directory or continue this skill's OOXML workflow.
Infer the purpose, audience, offer, language, tone, structure, and approximate length from the user's source content whenever they are reasonably clear. Do not ask the user to restate a template purpose that can be understood from that content. Ask a concise follow-up only for missing information that would materially change the result. Google Drive folders are outside this local-generation brief and must not be requested.
Before researching or generating, present a short brief for confirmation. It must state:
- the selected format: DOCX, PPTX, or XLSX;
- the proposed structure and approximate length;
- the style source;
- the exact output directory.
Make clarification and confirmation messages visually scannable with Markdown and colored emoji markers. Custom HTML/CSS colors and ANSI escape codes are not portable across Codex and Claude, so do not use them. Use this compact pattern:
## 🔵 Template brief
- **Format:** DOCX
- **Structure:** Cover + 5 body sections
- **Style source:** https://example.com
- **Output:** `./outputs/example-report/`
## 🟠 Confirmation needed
Should I proceed with this setup?
Use 🔵 for the proposed brief, 🟠 for a decision the user must make, and 📁 when emphasizing an output location. Keep the markers restrained and never rely on color alone: always include a textual heading or label.
If the user has not explicitly selected a format, ask which format they want and wait for the answer. Never default to PPTX or infer the format from words such as "template," "proposal," "report," or "presentation." If another material requirement is missing or ambiguous, propose a sensible option and ask the user to confirm it. Begin generation only after the brief is sufficiently defined and the user has confirmed it. Do not turn inferred, low-risk details into extra questions.
For the destination, use the path supplied by the user. If none is supplied, propose <current-working-directory>/outputs/<project-slug>/ and ask for confirmation. Interpret <current-working-directory> at runtime; never replace it in the published skill with the author's absolute path.
Never invent results, testimonials, prices, dates, biographies, or statistics. Clearly label estimates, examples, and placeholders.
Derive the visual system
When a website URL is supplied, inspect relevant public pages and stylesheets using the browsing capability available in the current runtime. Read references/website-brand-extraction.md. Use the site as visual inspiration rather than making a pixel-for-pixel clone. Do not bypass access restrictions.
Translate the evidence into a compact system of colors, typography roles and fallbacks, spacing, shapes, imagery, charts, and voice. Preserve readable contrast. Use first-party assets only when their use is appropriate; otherwise create original shapes, SVGs, or diagrams.
Define the reusable contract
Read references/personalization-contract.md. Define reusable fields and repeatable or optional sections before laying out the file. Keep recipient-specific values as stable {{snake_case_placeholders}}; keep permanent labels and brand copy as normal text.
Every placeholder in the artifact must map to exactly one manifest field. Save the manifest beside the artifact as <artifact-basename>.manifest.json.
Design the template structure
Plan the information architecture before rendering. Choose sections and layouts that fit the requested template type. For example, a proposal may move from context to approach and next action; a report may move from summary to findings and recommendations; a plan may move from objectives to workstreams, timing, ownership, and measures. Do not impose proposal sections on other template types.
Every DOCX template must begin with a dedicated, full-page cover. Read references/docx-cover-design.md for the cover composition pattern: a strong full-bleed visual field, high-contrast title block, restrained accent rule, subtitle, and lower metadata area. Translate that pattern into the brand system derived for the brief; do not copy another brand's colors, logo, wording, or exact artwork. Adding the cover must not force a different body structure or visual direction: preserve the architecture selected for the brief and treat the cover as an opening layer.
Read the selected section in references/format-guides.md. Maintain one central message per slide or section, distinguish facts from assumptions, and cite external facts with readable links or notes.
Generate the requested file using document-generation capabilities available in the runtime. Suitable implementations include OOXML libraries, office-document tools, or a compatible office suite. Dependencies must be installed only in a project-local or temporary location; never require global installation. Do not rely on the skill author's home directory, browser profile, credentials, fonts, fixed absolute paths, or files outside this skill and the user's stated inputs.
Create the confirmed output directory when needed. Save both files there with the same basename:
<confirmed-output-directory>/<template-name>.<docx|pptx|xlsx>
<confirmed-output-directory>/<template-name>.manifest.json
Tell the user this exact destination before generation and return clickable paths to both files afterward. Use a descriptive filename and never overwrite an existing file unless the user explicitly authorizes it. If the preferred web font is unavailable, use a documented portable fallback. Embed or package required images so the artifact does not depend on temporary URLs.
Creating only Markdown, HTML, JSON, screenshots, or a design specification does not satisfy the request. If this runtime truly cannot create the requested OOXML format, explain the missing capability instead of claiming completion.
Analyze every created or changed file
Treat every file-changing operation as unfinished until its result has been inspected. Do not infer quality from a successful write or MCP response alone.
- After local generation or editing, parse the OOXML package and render or open the artifact when the runtime supports it. Analyze the actual content, structure, layout, editability, and requested branding—not merely whether the file exists.
- After
upload_google_file, immediately callinspect_google_fileon the returned Google file. Compare its type, title, content, structure, and page, slide, or sheet count with the validated local artifact. Correct material conversion problems when the current request authorizes Google edits; otherwise report them before continuing. - After each
apply_google_file_editscall, re-inspect the affected content or structure before issuing an edit that depends on it. After the final edit, inspect the whole file at summary detail and the changed regions at structure detail. - After
deploy_google_file, open and analyze the returned public web URL and PDF URL with the browsing or document-inspection capability available in the runtime. Confirm that both load, represent the intended Google file, include the expected content and pages, and have no obvious clipping, missing assets, ordering errors, or unreadable output.
If a required inspection capability is unavailable, perform the strongest available structural check, state exactly what could not be visually verified, and do not claim that the unchecked representation was validated. When analysis finds a problem, fix it if the current request authorizes that file operation, then repeat the relevant inspection. Otherwise report the problem and ask before expanding scope.
Validate and hand off
Before returning:
- Confirm the artifact and manifest exist in the requested local directory.
- Open or parse the OOXML package and confirm it is structurally valid.
- Render or inspect every page, slide, or relevant worksheet when the runtime supports it; check clipping, overflow, broken images, inconsistent spacing, formulas, and unreadable contrast.
- For DOCX, confirm page one is a standalone cover and body content starts after an explicit page or section break. Check that the title, subtitle, metadata, contrast, and any artwork remain inside the page bounds and render correctly without remote font or image dependencies.
- Confirm all
{{...}}tokens are valid and mapped exactly once in the manifest. - Exercise one representative long value and one omitted optional value in a disposable copy, then leave the delivered template pristine.
Return clickable local paths for the artifact and manifest, the selected format, a concise description of the design and optional sections, and any assumptions or validation limitations.
Optional next steps: Workspace add-on or agent
After delivering a reusable proposal template, briefly offer both continuation paths when the user has not already chosen one:
- Continue in Google Workspace: upload the Office file to Drive and convert it to Google Docs, Slides, or Sheets. Review the converted layout and placeholders, then use the Templify add-on to personalize client copies, publish proposals, and review engagement according to the current plan. Link to https://trytemplify.com/ for the add-on installation entry point. This path does not require MCP.
- Continue with your agent: connect Templify MCP to upload the file and perform the proposal workflow through the agent. Link to https://trytemplify.com/templify-mcp/ for setup.
These are optional next steps, not a required decision before delivering the local files. If the user requested local-only output, omit the offer. If they already selected a path, continue with that path within their authorization instead of asking them to choose again. For other template types, offer a continuation only when relevant to their stated workflow.
For the add-on path, explain that the Office file must become a native Google file before using the add-on. Keep the manifest as a local reference; do not claim the add-on imports it or automatically executes its optional/repeatable-section instructions. Do not claim conversion preserves every layout detail without inspecting the converted file. Provide manual steps unless the user has requested assistance performing them.
Authorized MCP handoff
Only when the user explicitly asks to upload the generated artifact, read the confirmed Office file as base64 and call upload_google_file with its filename and the exact Office MIME type. Never upload the manifest. Analyze the uploaded result according to the checkpoints above before returning the editable Google file URL and ID or continuing to edits or deployment. Follow the terminal-safe URL format above after upload, after personalization, and after deployment. This upload is separate from proposal personalization: do not edit any source template. When the user has already explicitly requested deployment, do not add another confirmation step before publishing or deploying the uploaded file. Analyze any deployed web and PDF representations before handoff.
For installation, packaging, and behavioral tests of this skill itself, read references/distribution-and-testing.md.