From coquill
Document renderer for CoQuill. Takes a template, variable values, and produces rendered documents (docx or html+pdf). Validates output for unfilled placeholders. Called by the coquill orchestrator — not triggered directly by the user.
How this skill is triggered — by the user, by Claude, or both
Slash command
/coquill:coquill-rendererThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running the CoQuill document renderer. Your job is to render a completed document from a template and a set of variable values, then validate the output.
You are running the CoQuill document renderer. Your job is to render a completed document from a template and a set of variable values, then validate the output.
This skill is called by the CoQuill orchestrator. You receive:
templates/_examples/Bonterms_Mutual_NDA/Bonterms-Mutual-NDA.docxdocx, html, or markdownTrue/False, and loop collections as lists of dictsoutput/Each rendering job gets its own folder inside the output directory:
output/
└── {template_name}_{key_variable}_{date}/
├── {template_name}_{key_variable}_{date}.docx
└── {template_name}_{key_variable}_{date}.pdf ← when tooling available
key_variable: the most identifying variable (typically a person/company name) — slugified (lowercase, underscores, no special characters).date: today's date in YYYY-MM-DD format._2, _3, etc. if the folder already exists.Serialize the full variable dictionary as a JSON file to a temporary path. The render script reads this file.
The render script lives at scripts/render.py relative to the project root. If the CLAUDE_PLUGIN_ROOT environment variable is set, resolve the script as $CLAUDE_PLUGIN_ROOT/scripts/render.py.
python <script_path> \
--template <template_path> \
--format <docx|html|markdown> \
--context <context_file> \
--output-dir <output_dir> \
--job-name <job_name> \
[--pdf]
The script handles boolean coercion, job folder creation, template rendering (docxtpl for docx, jinja2 for html/markdown), PDF conversion, and output validation. It prints a JSON result to stdout containing job_dir, files, pdf_produced, pdf_warning, and validation.
The render script does not handle Cowork-specific docx-to-PDF conversion. If you are running inside Cowork (check for /home/user/.claude/ or the COWORK environment variable) and the format is docx with PDF requested:
--pdf to produce the .docx.docx skill to read the rendered .docx file.pdf skill to produce a .pdf from it.{job_name}.pdf.Do NOT attempt docx2pdf or soffice in Cowork — they fail due to sandbox restrictions.
The script's JSON output includes a validation object:
validation.passed == true: All placeholders and control tags were processed. The document is ready.validation.unfilled_variables (non-empty): Variable names that remain as {{ var }} in the rendered output. Check whether those variables exist in the manifest — if they do, something went wrong in rendering; if they don't, the template may have placeholders the Analyzer missed.validation.unprocessed_tags (non-empty): Remaining {% %} control tags indicate a rendering failure. Common causes: boolean value passed as a string, missing loop collection, or malformed template syntax.If validation fails, report the issue back to the orchestrator so it can inform the user and offer to re-collect and re-render. Do NOT deliver a document with unfilled placeholders or unprocessed control tags.
Return to the orchestrator:
job_dir and files list from the script outputpdf_produced); if not, include pdf_warningSoft-fail semantics for PDF: Always deliver the primary document (.docx, .html, or .md). Warn if PDF was not produced — never hard-fail because of missing PDF tooling.
docxtpl — not raw python-docx with string replacement. docxtpl preserves formatting around placeholders and natively supports Jinja2 control tags.npx claudepluginhub houfu/coquill --plugin coquillFills .docx templates for contracts and forms with structured data using docxtpl library and Jinja2 {{variables}}. Extracts schema via Python scripts, gathers data, handles missing fields by asking user, generates output .docx.
Creates reusable Documenso templates and generates documents from them with prefilled fields. Implements direct signing links for public/anonymous signers.
Generate and manipulate Word DOCX files programmatically. Supports template-based generation with branding compliance and from-scratch creation. Analyze templates, replace placeholders, extract content.