<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: paperquire</title>
    <description>The latest articles on DEV Community by paperquire (@paperquire_e3fdb510bbe49c).</description>
    <link>https://dev.to/paperquire_e3fdb510bbe49c</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4003003%2F8345b35b-ac62-412e-adec-6b1bcc9a87b4.png</url>
      <title>DEV Community: paperquire</title>
      <link>https://dev.to/paperquire_e3fdb510bbe49c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paperquire_e3fdb510bbe49c"/>
    <language>en</language>
    <item>
      <title>I Was Tired of Fighting Google Docs to Make a PDF Look Professional</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Thu, 09 Jul 2026 19:05:22 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/i-was-tired-of-fighting-google-docs-to-make-a-pdf-look-professional-ihb</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/i-was-tired-of-fighting-google-docs-to-make-a-pdf-look-professional-ihb</guid>
      <description>&lt;h2&gt;
  
  
  The report that broke me
&lt;/h2&gt;

&lt;p&gt;Every Friday, I write a project status report. It has a table, some bullet points, a diagram, and a cover page. Pretty standard.&lt;/p&gt;

&lt;p&gt;The writing takes 15 minutes. The formatting takes 30.&lt;/p&gt;

&lt;p&gt;I'd paste my notes into Google Docs, fight with the table borders, nudge the logo into place, realize the page break moved, fix the heading sizes, export to PDF, notice the footer is wrong, go back, fix it, export again. Every. Single. Week.&lt;/p&gt;

&lt;p&gt;One Friday I caught myself manually adjusting cell padding for the third time and thought: this is absurd. I write the content in plain text anyway. Why can't I just... keep it in plain text and get a PDF that looks good?&lt;/p&gt;

&lt;h2&gt;
  
  
  What I wanted
&lt;/h2&gt;

&lt;p&gt;The requirements were simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write in Markdown.&lt;/strong&gt; I already think in Markdown. Every spec, every README, every set of notes — it's all Markdown.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;See what it looks like.&lt;/strong&gt; Not after export. While I'm writing. Side by side.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pick a template once.&lt;/strong&gt; Corporate branding, cover page, headers, footers — set it and forget it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Export to PDF.&lt;/strong&gt; One click. No reformatting, no surprises.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep everything local.&lt;/strong&gt; I don't want my internal documents on someone else's server.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. I didn't need collaboration. I didn't need comments. I didn't need a subscription to generate a PDF from my own text.&lt;/p&gt;

&lt;p&gt;I looked around. Pandoc can do Markdown to PDF, but you need LaTeX installed, the output looks academic, and there's no preview. Obsidian is great for notes but it's not a document tool — you can't set up cover pages or branded headers. Typora is close but no templates, no diagrams in PDFs, and development has stalled.&lt;/p&gt;

&lt;p&gt;Nothing did what I wanted. So I built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What PaperQuire does
&lt;/h2&gt;

&lt;p&gt;PaperQuire is a desktop app. You open it, you write Markdown, you see a live preview, you click Export. That's the workflow.&lt;/p&gt;

&lt;p&gt;Here's what makes it different from "just another Markdown editor":&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live split-pane preview.&lt;/strong&gt; The right side shows your formatted document in real time — exactly what your PDF will look like. Tables render. Code blocks highlight. Mermaid diagrams draw. Obsidian callouts style. What you see is what you export.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Templates that actually work.&lt;/strong&gt; Open Document Setup, pick "Executive Report" or "Technical Design" or "Minimal Clean." The template handles cover pages, headers, footers, page numbering, branding colors, typography. Your content doesn't change. The presentation does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mermaid diagrams.&lt;/strong&gt; Write a &lt;code&gt;mermaid&lt;/code&gt; code block, see a flowchart or sequence diagram in the preview. It embeds in your PDF. No screenshots, no external tools, no "paste this image here."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Export to everything.&lt;/strong&gt; PDF, Word, HTML, Confluence. Same document, every format. The command palette lets you do it all from the keyboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plugins.&lt;/strong&gt; Auto-linking URLs, emoji shortcodes, word count, Obsidian-style callouts. Install what you want, ignore what you don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI.&lt;/strong&gt; &lt;code&gt;paperquire report.md&lt;/code&gt; gives you &lt;code&gt;report.pdf&lt;/code&gt;. &lt;code&gt;paperquire batch ./docs&lt;/code&gt; renders an entire directory. Works in scripts, CI/CD pipelines, and cron jobs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100% offline.&lt;/strong&gt; PaperQuire uses Chromium's built-in print engine. No server, no account, no upload. Your documents never leave your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Friday report, after
&lt;/h2&gt;

&lt;p&gt;Now my Friday looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open PaperQuire. My template is already set — "Executive Report" with company branding.&lt;/li&gt;
&lt;li&gt;Write the report in Markdown. Tables in pipe syntax, bullets with dashes, a Mermaid diagram for the architecture overview.&lt;/li&gt;
&lt;li&gt;Watch the preview update as I type. If something looks off, I fix the Markdown.&lt;/li&gt;
&lt;li&gt;Click Export → PDF.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;15 minutes, start to finish. The formatting is handled. The cover page is there. The footer has the page numbers. I never touch a style menu.&lt;/p&gt;

&lt;p&gt;That 30 minutes of formatting every week? Gone. Over a year, that's 26 hours I got back. And every report looks consistent — not "close enough" but identical, because it's the same template every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I didn't expect
&lt;/h2&gt;

&lt;p&gt;I built PaperQuire for myself. But the CLI changed things.&lt;/p&gt;

&lt;p&gt;Once you can render Markdown to PDF from the terminal, you can automate it. We added a GitHub Action — now our docs repo generates fresh PDFs on every push. No one has to remember to export. No one sends a stale version. The CI pipeline handles it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
    &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;executive-report&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then came the MCP server. Claude, ChatGPT, Copilot — they can call PaperQuire directly. The AI writes the Markdown, PaperQuire renders the PDF. No copy-paste, no manual formatting step.&lt;/p&gt;

&lt;p&gt;The tool I built to fix my Friday report turned into something bigger. But the core is still the same: write in Markdown, get a professional document. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;PaperQuire is free. It runs on macOS, Windows, and Linux.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/downloads" rel="noopener noreferrer"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/docs" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/paperquire/render-action" rel="noopener noreferrer"&gt;GitHub Action&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or install via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; paperquire/paperquire/paperquire
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've ever spent more time formatting a document than writing it, give it a shot.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>markdown</category>
      <category>story</category>
    </item>
    <item>
      <title>The 10-Minute Document: A Complete Markdown-to-PDF Workflow</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Thu, 09 Jul 2026 19:05:10 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/the-10-minute-document-a-complete-markdown-to-pdf-workflow-16g1</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/the-10-minute-document-a-complete-markdown-to-pdf-workflow-16g1</guid>
      <description>&lt;p&gt;People ask us what a "real" PaperQuire workflow looks like. Not the marketing version — the actual, honest, here's-what-I-do-on-a-Tuesday version.&lt;/p&gt;

&lt;p&gt;So here it is. Start to finish, blank file to client-ready PDF, timed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 0–2: Dump Your Thoughts
&lt;/h2&gt;

&lt;p&gt;Open PaperQuire. New document. Start writing.&lt;/p&gt;

&lt;p&gt;Don't worry about structure yet. Get the content out of your head and into the editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project Proposal: Dashboard Redesign&lt;/span&gt;

client wants a modernized analytics dashboard
current one is slow, hard to read, built 4 years ago

&lt;span class="gu"&gt;## What we'll do&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; redesign the main dashboard view
&lt;span class="p"&gt;-&lt;/span&gt; add real-time data refresh (currently manual)
&lt;span class="p"&gt;-&lt;/span&gt; mobile responsive
&lt;span class="p"&gt;-&lt;/span&gt; new charting library (recharts or visx)
&lt;span class="p"&gt;-&lt;/span&gt; dark mode support

&lt;span class="gu"&gt;## Timeline&lt;/span&gt;
phase 1 - design mockups - 2 weeks
phase 2 - frontend rebuild - 4 weeks
phase 3 - data layer + API - 3 weeks
phase 4 - testing + launch - 2 weeks

&lt;span class="gu"&gt;## Cost&lt;/span&gt;
estimate around $45k for the full project
could do phase 1 standalone for $8k

team: 1 designer, 2 frontend devs, 1 backend dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's two minutes of typing. It's rough, but all the substance is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 2–4: Let AI Assist Polish It
&lt;/h2&gt;

&lt;p&gt;Select the entire document. Right-click, &lt;strong&gt;AI Assist &amp;gt; Rewrite&lt;/strong&gt; with the custom prompt: "Rewrite this as a professional client-facing project proposal. Keep all the details. Use confident, clear language."&lt;/p&gt;

&lt;p&gt;In about 10 seconds, your rough notes become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project Proposal: Analytics Dashboard Redesign&lt;/span&gt;

&lt;span class="gu"&gt;## Overview&lt;/span&gt;

We propose a complete redesign of your analytics dashboard to
address performance limitations, improve usability, and support
modern workflows including mobile access and dark mode.

The current dashboard, built four years ago, has served its purpose
but no longer meets the speed and flexibility requirements of your
growing team. Our redesign will modernize the technology stack,
introduce real-time data refresh, and deliver a responsive
experience across all devices.

&lt;span class="gu"&gt;## Scope of Work&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Dashboard redesign**&lt;/span&gt; — A modern, intuitive layout optimized
  for quick data comprehension
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Real-time data refresh**&lt;/span&gt; — Automated updates replacing the
  current manual refresh workflow
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Responsive design**&lt;/span&gt; — Full functionality on desktop, tablet,
  and mobile devices
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Modern charting**&lt;/span&gt; — Migration to a performant charting library
  for faster rendering and richer visualizations
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Dark mode**&lt;/span&gt; — System-aware theme switching for comfortable
  viewing in any environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Review it, tweak a sentence or two, move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 4–5: Add Structure
&lt;/h2&gt;

&lt;p&gt;Add a few finishing touches that the AI didn't know about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a pricing table using Markdown tables&lt;/li&gt;
&lt;li&gt;Add a Mermaid diagram showing the project phases&lt;/li&gt;
&lt;li&gt;Add a callout with the key decision point
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Investment&lt;/span&gt;

| Phase | Scope | Duration | Cost |
|-------|-------|----------|------|
| 1. Design | Mockups &amp;amp; prototypes | 2 weeks | $8,000 |
| 2. Frontend | UI rebuild | 4 weeks | $18,000 |
| 3. Backend | Data layer &amp;amp; API | 3 weeks | $13,000 |
| 4. Launch | Testing &amp;amp; deployment | 2 weeks | $6,000 |
| &lt;span class="gs"&gt;**Total**&lt;/span&gt; | | &lt;span class="gs"&gt;**11 weeks**&lt;/span&gt; | &lt;span class="gs"&gt;**$45,000**&lt;/span&gt; |
&lt;span class="gt"&gt;
&amp;gt; **Standalone option:** Phase 1 can be executed independently&lt;/span&gt;
&lt;span class="gt"&gt;&amp;gt; for $8,000 to validate the design direction before committing&lt;/span&gt;
&lt;span class="gt"&gt;&amp;gt; to the full build.&lt;/span&gt;

&lt;span class="gu"&gt;## Timeline&lt;/span&gt;

&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;mermaid
&lt;/span&gt;&lt;span class="sb"&gt;gantt
    title Project Timeline
    dateFormat  YYYY-MM-DD
    section Design
    Mockups &amp;amp; Prototypes    :a1, 2026-08-01, 14d
    section Frontend
    UI Rebuild              :a2, after a1, 28d
    section Backend
    Data Layer &amp;amp; API        :a3, after a1, 21d
    section Launch
    Testing &amp;amp; Deployment    :a4, after a2, 14d&lt;/span&gt;
&lt;span class="p"&gt;```&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two more minutes. Now you have a real proposal with a pricing breakdown and a visual timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 5–6: Apply a Template
&lt;/h2&gt;

&lt;p&gt;Click the template selector. Choose &lt;strong&gt;Corporate&lt;/strong&gt;. Set your branding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company logo (drag and drop or select from assets)&lt;/li&gt;
&lt;li&gt;Primary color to match your brand&lt;/li&gt;
&lt;li&gt;Subtitle: "Prepared for [Client Name]"&lt;/li&gt;
&lt;li&gt;Author: your name&lt;/li&gt;
&lt;li&gt;Date: today&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The live preview instantly shows your content in a polished, professional layout with a branded cover page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 6–7: Final Review
&lt;/h2&gt;

&lt;p&gt;Scroll through the preview. Check that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The cover page looks right&lt;/li&gt;
&lt;li&gt;Tables aren't breaking across pages awkwardly&lt;/li&gt;
&lt;li&gt;The Mermaid diagram rendered correctly&lt;/li&gt;
&lt;li&gt;Page breaks fall in sensible places&lt;/li&gt;
&lt;li&gt;Headers and footers show the document title and page numbers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an H1 heading is landing at the bottom of a page, toggle on &lt;strong&gt;H1 page breaks&lt;/strong&gt; in document settings. Done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 7: Export
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;Export &amp;gt; PDF&lt;/strong&gt;. A 6-page branded proposal downloads in about 3 seconds.&lt;/p&gt;

&lt;p&gt;That's it. Seven minutes from a blank file to a document you'd be comfortable sending to a client worth $45,000.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;The traditional version of this workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write notes in a text editor (5 min)&lt;/li&gt;
&lt;li&gt;Open Google Docs or Word (1 min)&lt;/li&gt;
&lt;li&gt;Copy-paste and reformat everything (15 min)&lt;/li&gt;
&lt;li&gt;Create a table manually (5 min)&lt;/li&gt;
&lt;li&gt;Make a diagram in a separate tool, export, embed (10 min)&lt;/li&gt;
&lt;li&gt;Apply brand colors and fonts manually (10 min)&lt;/li&gt;
&lt;li&gt;Add a cover page (5 min)&lt;/li&gt;
&lt;li&gt;Fix page breaks and layout issues (10 min)&lt;/li&gt;
&lt;li&gt;Export to PDF (1 min)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Total: ~62 minutes.&lt;/strong&gt; And you'll need to redo steps 3–8 for every similar document.&lt;/p&gt;

&lt;p&gt;With PaperQuire, that's 7 minutes. The template is reusable. The branding is automatic. The diagrams live in your Markdown. The AI handles the prose polish.&lt;/p&gt;

&lt;p&gt;That's not a marginal improvement — it's a fundamentally different way of working.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Compound Effect
&lt;/h2&gt;

&lt;p&gt;One document saves you 55 minutes. But teams don't produce one document.&lt;/p&gt;

&lt;p&gt;If your team produces 10 proposals a month, that's 550 minutes saved — over 9 hours. Per month. That's more than a full working day returned to actual work, every single month.&lt;/p&gt;

&lt;p&gt;And proposals are just one type. Add in weekly reports, project specs, SOPs, onboarding docs, and technical write-ups, and the numbers multiply fast.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;Download PaperQuire&lt;/a&gt; and try this workflow yourself. The free plan includes everything you need to go from Markdown to PDF.&lt;/p&gt;

</description>
      <category>workflow</category>
      <category>gettingstarted</category>
    </item>
    <item>
      <title>Plugins That Actually Matter: Diagrams, Math, and More Inside Your Documents</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Tue, 07 Jul 2026 22:50:15 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/plugins-that-actually-matter-diagrams-math-and-more-inside-your-documents-i8g</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/plugins-that-actually-matter-diagrams-math-and-more-inside-your-documents-i8g</guid>
      <description>&lt;p&gt;Most document tools force a choice: write in a simple editor and lose advanced features, or use a complex tool and spend half your time fighting it.&lt;/p&gt;

&lt;p&gt;PaperQuire's plugin system gives you a third option. Start simple, add capabilities when you need them, and everything renders cleanly in your exported PDFs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Plugins Do
&lt;/h2&gt;

&lt;p&gt;Plugins extend what PaperQuire can render from Markdown. Without plugins, you get standard Markdown — headings, lists, tables, links, images, code blocks. With plugins, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mermaid&lt;/strong&gt; — Flowcharts, sequence diagrams, Gantt charts, ER diagrams, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KaTeX&lt;/strong&gt; — Publication-quality math equations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax highlighting&lt;/strong&gt; — Language-aware code coloring for 190+ languages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emoji&lt;/strong&gt; — Shortcodes rendered as native emoji in your documents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Footnotes&lt;/strong&gt; — Proper footnotes with numbered references&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each plugin activates independently. Enable what you need, leave the rest off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mermaid: Diagrams That Live in Your Markdown
&lt;/h2&gt;

&lt;p&gt;This is the plugin that changes workflows. Instead of drawing diagrams in a separate tool, exporting PNGs, and embedding them (and then re-doing all of that when something changes), you write the diagram in your Markdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;mermaid
&lt;/span&gt;&lt;span class="sb"&gt;graph LR
    A[Write Markdown] --&amp;gt; B[PaperQuire]
    B --&amp;gt; C[Professional PDF]
    B --&amp;gt; D[Branded DOCX]
    B --&amp;gt; E[Clean HTML]&lt;/span&gt;
&lt;span class="p"&gt;```&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PaperQuire renders this as a crisp vector diagram directly in your document. When you update the diagram, you edit text — not an image file.&lt;/p&gt;

&lt;p&gt;This works for architecture docs, process flows, project timelines, database schemas, and anything else you'd normally draw in Lucidchart or draw.io.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supported diagram types:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flowcharts (graph TD, graph LR)&lt;/li&gt;
&lt;li&gt;Sequence diagrams&lt;/li&gt;
&lt;li&gt;Gantt charts&lt;/li&gt;
&lt;li&gt;Class diagrams&lt;/li&gt;
&lt;li&gt;Entity-relationship diagrams&lt;/li&gt;
&lt;li&gt;State diagrams&lt;/li&gt;
&lt;li&gt;Git graphs&lt;/li&gt;
&lt;li&gt;Pie charts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All rendered locally. No external service, no API call, no internet required.&lt;/p&gt;

&lt;h2&gt;
  
  
  KaTeX: Math That Doesn't Require LaTeX
&lt;/h2&gt;

&lt;p&gt;If you write technical or academic documents, you've probably wrestled with equation rendering. KaTeX gives you LaTeX-quality math without the LaTeX toolchain:&lt;/p&gt;

&lt;p&gt;Inline math with single dollar signs: &lt;code&gt;$E = mc^2$&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Block equations with double dollar signs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;$$
&lt;span class="se"&gt;\i&lt;/span&gt;nt_{-&lt;span class="se"&gt;\i&lt;/span&gt;nfty}^{&lt;span class="se"&gt;\i&lt;/span&gt;nfty} e^{-x^2} dx = &lt;span class="se"&gt;\s&lt;/span&gt;qrt{&lt;span class="se"&gt;\p&lt;/span&gt;i}
$$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This renders beautifully in both the preview and the exported PDF. No separate compilation step, no missing fonts, no "why is this equation a blurry image."&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax Highlighting: Code That's Actually Readable
&lt;/h2&gt;

&lt;p&gt;The syntax highlighting plugin uses Prism to color-code your code blocks. Specify the language after the opening backticks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;python
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;```&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This renders with proper color-coded syntax in your PDF — keywords, strings, comments, and functions all visually distinct. It supports 190+ languages out of the box.&lt;/p&gt;

&lt;p&gt;For technical documentation and engineering specs, this is the difference between "readable" and "I'll just look at the repo."&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Enable Plugins
&lt;/h2&gt;

&lt;p&gt;Open PaperQuire, go to &lt;strong&gt;Settings &amp;gt; Plugins&lt;/strong&gt;, and toggle on what you need. That's it. No package manager, no config files, no restart required.&lt;/p&gt;

&lt;p&gt;Plugins activate immediately in the editor preview and in all future exports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugins + Templates: The Full Picture
&lt;/h2&gt;

&lt;p&gt;Here's where it comes together. Say you're writing a technical architecture document:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Markdown&lt;/strong&gt; gives you the structure — headings, paragraphs, lists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mermaid plugin&lt;/strong&gt; gives you the system diagram and sequence flows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax highlighting plugin&lt;/strong&gt; gives you readable code samples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KaTeX plugin&lt;/strong&gt; gives you the performance equations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical template&lt;/strong&gt; gives you the professional layout, TOC, and branding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One file. One tool. One export. The output is a document that looks like it took a team of technical writers and a graphic designer to produce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Custom Plugins
&lt;/h2&gt;

&lt;p&gt;PaperQuire's plugin API is open and documented. If the built-in plugins don't cover your use case, you can build your own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Markdown-it plugins&lt;/strong&gt; — extend the Markdown parser to support new syntax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS plugins&lt;/strong&gt; — add custom styles for specific content types&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transform plugins&lt;/strong&gt; — modify the HTML output before it reaches the PDF renderer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://paperquire.com/docs/plugins.html" rel="noopener noreferrer"&gt;plugin documentation&lt;/a&gt; has examples and a starter template. If you've written a markdown-it plugin before, you already know how it works.&lt;/p&gt;




&lt;p&gt;All built-in plugins are included on every plan. &lt;a href="https://paperquire.com/plugins.html" rel="noopener noreferrer"&gt;See the full plugin list&lt;/a&gt; or &lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;download PaperQuire&lt;/a&gt; and enable them in Settings.&lt;/p&gt;

</description>
      <category>plugins</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Formatting, Start Writing: How Templates Save Hours Every Week</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Tue, 07 Jul 2026 22:50:03 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/stop-formatting-start-writing-how-templates-save-hours-every-week-3dnh</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/stop-formatting-start-writing-how-templates-save-hours-every-week-3dnh</guid>
      <description>&lt;p&gt;Every team has that one person who "owns" the document template. They spend hours tweaking margins, fixing font sizes, making sure the logo is in the right spot. And every time someone else creates a document, it looks... different.&lt;/p&gt;

&lt;p&gt;Templates fix this permanently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Manual Formatting
&lt;/h2&gt;

&lt;p&gt;Think about how much time goes into formatting a single document:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choosing fonts and sizes for headings, body, captions&lt;/li&gt;
&lt;li&gt;Setting margins and page breaks&lt;/li&gt;
&lt;li&gt;Adding a cover page with the right logo and colors&lt;/li&gt;
&lt;li&gt;Making sure tables don't break across pages in ugly ways&lt;/li&gt;
&lt;li&gt;Getting headers and footers consistent&lt;/li&gt;
&lt;li&gt;Adjusting all of this again when someone says "can you make the headings blue?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now multiply that by every document your team produces. Proposals, quarterly reports, SOPs, onboarding guides, project specs. That's hundreds of hours a year spent on work that adds zero value to the content.&lt;/p&gt;

&lt;h2&gt;
  
  
  How PaperQuire Templates Work
&lt;/h2&gt;

&lt;p&gt;A template in PaperQuire is a combination of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A CSS theme&lt;/strong&gt; — fonts, colors, spacing, page layout, table styles, code block styles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cover page settings&lt;/strong&gt; — logo, title placement, tagline, color bar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Page setup&lt;/strong&gt; — paper size, margins, header/footer content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typography rules&lt;/strong&gt; — how headings, lists, blockquotes, and images render in print&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You write your content in plain Markdown. When you export, the template handles everything else.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Q2 Business Review&lt;/span&gt;

&lt;span class="gu"&gt;## Revenue Summary&lt;/span&gt;

| Region    | Target | Actual | Variance |
|-----------|--------|--------|----------|
| Americas  | $4.2M  | $4.7M  | +12%     |
| EMEA      | $2.1M  | $2.0M  | -5%      |
| APAC      | $1.8M  | $1.6M  | -11%     |
&lt;span class="gt"&gt;
&amp;gt; **Key takeaway:** Americas overperformance offset&lt;/span&gt;
&lt;span class="gt"&gt;&amp;gt; shortfalls in international markets.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That same Markdown renders differently depending on which template you apply — corporate blue for the board, minimal for the engineering team, branded for client-facing proposals. Same content, different output, zero re-formatting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built-in Templates
&lt;/h2&gt;

&lt;p&gt;PaperQuire ships with templates designed for real work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Corporate&lt;/strong&gt; — Clean, professional layout with a branded cover page. Tables have alternating row colors, headings use your brand color, and page numbers appear in the footer. This is the one you send to clients and executives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical&lt;/strong&gt; — Optimized for specs, architecture docs, and engineering proposals. Code blocks are prominent, tables are compact, and there's generous spacing for readability. Supports table of contents with up to 4 levels of depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimal&lt;/strong&gt; — Understated typography with lots of whitespace. No cover page, no color accents — just clean text on clean pages. Good for internal memos, meeting notes, and anything where the content speaks for itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Report&lt;/strong&gt; — Structured for longer documents. Automatic table of contents, chapter-style H1 headings with page breaks, and running headers that show the current section. Built for 20+ page documents that need to feel organized.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom Templates: Your Brand, Every Time
&lt;/h2&gt;

&lt;p&gt;Every template is fully customizable through the branding panel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary color&lt;/strong&gt; — applied to headings, table headers, cover page accents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logo&lt;/strong&gt; — embedded in the cover page, automatically scaled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fonts&lt;/strong&gt; — choose from system fonts or bundled professional typefaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Margins&lt;/strong&gt; — set independently for each side, in inches or millimeters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;H1 underline&lt;/strong&gt; — adjust thickness and color, or turn it off entirely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Change these once, and every document you export uses them. When marketing updates the brand guidelines, you update one setting — not fifty documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Real Example: Proposal Workflow
&lt;/h2&gt;

&lt;p&gt;Here's what a proposal workflow looks like with templates:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open PaperQuire, start a new document&lt;/li&gt;
&lt;li&gt;Write the proposal content in Markdown — scope, timeline, pricing, terms&lt;/li&gt;
&lt;li&gt;Select the "Corporate" template&lt;/li&gt;
&lt;li&gt;Set your client's name as the subtitle, your company as author&lt;/li&gt;
&lt;li&gt;Click Export — a branded, professional PDF is ready in seconds&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No switching between apps. No copying content into a Word template. No "why does page 3 look different from page 1." The template guarantees consistency from the first page to the last.&lt;/p&gt;

&lt;h2&gt;
  
  
  Templates + AI Assist = Speed
&lt;/h2&gt;

&lt;p&gt;Combine templates with AI Assist for the fastest document workflow possible:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dump your rough notes or bullet points into the editor&lt;/li&gt;
&lt;li&gt;Use AI Assist to expand and polish the content&lt;/li&gt;
&lt;li&gt;Apply a template&lt;/li&gt;
&lt;li&gt;Export&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can go from a Slack thread to a client-ready proposal in under ten minutes. That's not a marketing claim — it's arithmetic. The writing takes five minutes, the AI polish takes two, and the export takes three seconds.&lt;/p&gt;




&lt;p&gt;Templates are available on all plans, with custom branding on Pro. &lt;a href="https://paperquire.com/templates.html" rel="noopener noreferrer"&gt;Browse the template gallery&lt;/a&gt; or &lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;download PaperQuire&lt;/a&gt; to try them with your own content.&lt;/p&gt;

</description>
      <category>templates</category>
      <category>productivity</category>
    </item>
    <item>
      <title>PaperQuire v0.3.0 — Your AI Agent's PDF Tool</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Sat, 04 Jul 2026 23:23:10 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-v030-your-ai-agents-pdf-tool-3c1n</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-v030-your-ai-agents-pdf-tool-3c1n</guid>
      <description>&lt;h2&gt;
  
  
  AI agents can now generate PDFs
&lt;/h2&gt;

&lt;p&gt;Large language models are great at producing Markdown. What they can't do is turn that Markdown into a polished, branded PDF. That's always been a manual step — copy the output, paste it somewhere, fiddle with formatting, export.&lt;/p&gt;

&lt;p&gt;PaperQuire v0.3.0 removes that step entirely. The app now includes a built-in &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; (MCP) server. Any MCP-compatible AI agent — Claude, ChatGPT, Copilot, or others — can call PaperQuire directly as a tool to render Markdown into professional documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP?
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol that lets AI applications call external tools over a standard JSON-RPC interface. Think of it as "USB-C for AI tools" — one protocol, many tools. When you configure PaperQuire as an MCP server, your AI agent discovers its capabilities automatically and can call them during a conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Run the MCP server as a CLI subcommand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server exposes four tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;render&lt;/strong&gt; — convert Markdown to PDF with full template and branding support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;list_templates&lt;/strong&gt; — discover all 8 built-in templates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;show_template&lt;/strong&gt; — inspect a template's design tokens, cover style, and page config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;batch_render&lt;/strong&gt; — render multiple documents in one call (Pro)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also exposes a &lt;code&gt;paperquire://config&lt;/code&gt; resource that returns your project's &lt;code&gt;.paperquire.yml&lt;/code&gt; configuration, so the agent can discover your preferred template and branding before rendering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Desktop
&lt;/h3&gt;

&lt;p&gt;Add this to your Claude Desktop config (&lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Claude Desktop, and you'll see PaperQuire's tools in the MCP panel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;Add to your project's &lt;code&gt;.mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  VS Code (GitHub Copilot)
&lt;/h3&gt;

&lt;p&gt;Add to &lt;code&gt;.vscode/mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"paperquire"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What you can ask your agent to do
&lt;/h2&gt;

&lt;p&gt;Once configured, you can ask things like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Write a project status report for Q2 and render it as a branded PDF."&lt;/p&gt;

&lt;p&gt;"What templates does PaperQuire have? Show me the technical design template, then use it to render my spec."&lt;/p&gt;

&lt;p&gt;"Render all the markdown files in my docs/ folder as PDFs with the corporate template."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent generates the content, calls PaperQuire's MCP tools, and reports back with the file path. No manual steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;The MCP server reuses PaperQuire's existing Electron-based render pipeline — the same Chromium engine behind the desktop app's live preview and PDF export. This means MCP-rendered PDFs are identical to what you'd get from the GUI or CLI.&lt;/p&gt;

&lt;p&gt;A few design decisions worth noting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-running renderer&lt;/strong&gt; — unlike the CLI (which creates and destroys a renderer per command), the MCP server keeps one alive and reuses it across all tool calls. First render takes a few seconds; subsequent ones are fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stdout isolation&lt;/strong&gt; — MCP uses stdout exclusively for JSON-RPC. PaperQuire suppresses Chromium's startup noise on stdout so it doesn't interfere with the protocol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render lock&lt;/strong&gt; — the Chromium renderer is single-threaded, so concurrent tool calls are serialized with a Promise-based mutex.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free tier
&lt;/h2&gt;

&lt;p&gt;The same daily limits apply: 3 free renders per day. &lt;a href="https://paperquire.com/pricing" rel="noopener noreferrer"&gt;Upgrade to Pro&lt;/a&gt; for unlimited renders and batch export.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/paperquire/releases/releases/tag/v0.3.0" rel="noopener noreferrer"&gt;Download v0.3.0&lt;/a&gt; for macOS, Windows, or Linux&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/mcp.html" rel="noopener noreferrer"&gt;MCP setup guide&lt;/a&gt; for full configuration and tool reference&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/cli.html" rel="noopener noreferrer"&gt;CLI Reference&lt;/a&gt; for all commands including &lt;code&gt;mcp-server&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or install via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; paperquire/paperquire/paperquire
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>release</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>How AI Assist Turns a Rough Draft into a Polished Document in Minutes</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Wed, 01 Jul 2026 00:22:08 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/how-ai-assist-turns-a-rough-draft-into-a-polished-document-in-minutes-15gm</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/how-ai-assist-turns-a-rough-draft-into-a-polished-document-in-minutes-15gm</guid>
      <description>&lt;p&gt;You've got a rough draft. Bullet points, half-finished paragraphs, maybe some notes you pasted from a meeting. It needs to become a real document — but rewriting takes time you don't have.&lt;/p&gt;

&lt;p&gt;That's exactly where AI Assist comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI Assist Does
&lt;/h2&gt;

&lt;p&gt;AI Assist lives inside PaperQuire's editor. Select any text, right-click, and choose an action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rewrite&lt;/strong&gt; — Rephrase your selection for clarity and tone, keeping the meaning intact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expand&lt;/strong&gt; — Turn bullet points or short notes into full paragraphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summarize&lt;/strong&gt; — Condense a long section into a concise summary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix grammar&lt;/strong&gt; — Clean up spelling, punctuation, and awkward phrasing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translate&lt;/strong&gt; — Convert your text to another language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom prompt&lt;/strong&gt; — Tell the AI exactly what you want ("make this more formal", "add examples", "simplify for a non-technical audience")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every action works on your selection — you stay in control of what gets changed and what doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring Your Own Key
&lt;/h2&gt;

&lt;p&gt;PaperQuire doesn't route your content through our servers. You plug in your own API key from any supported provider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; (GPT-4o, GPT-4o mini)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic&lt;/strong&gt; (Claude Sonnet, Claude Haiku)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google&lt;/strong&gt; (Gemini Pro)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local models&lt;/strong&gt; (Ollama, LM Studio — for fully air-gapped workflows)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your documents, your key, your choice. Nothing leaves your machine unless you explicitly configure an external provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Real Workflow: Meeting Notes to Executive Summary
&lt;/h2&gt;

&lt;p&gt;Here's a concrete example. You come out of a 45-minute meeting with this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Q2 revenue up 12% vs forecast
&lt;span class="p"&gt;-&lt;/span&gt; APAC expansion delayed, regulatory issues
&lt;span class="p"&gt;-&lt;/span&gt; New pricing tier launching Aug 1
&lt;span class="p"&gt;-&lt;/span&gt; Customer churn down to 3.2%, lowest ever
&lt;span class="p"&gt;-&lt;/span&gt; Engineering headcount: 3 open roles, 2 offers out
&lt;span class="p"&gt;-&lt;/span&gt; Board meeting moved to July 18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select all, click &lt;strong&gt;Expand&lt;/strong&gt;, and AI Assist turns it into:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Q2 revenue came in 12% above forecast, driven primarily by enterprise upsells in North America. The planned APAC expansion has been delayed due to unresolved regulatory requirements in two target markets; the team is working with local counsel to clear the path for a Q4 launch.&lt;/p&gt;

&lt;p&gt;A new pricing tier is scheduled to go live on August 1, targeting mid-market teams who've outgrown the free plan but don't need enterprise features. Early signals are positive — customer churn dropped to 3.2% this quarter, the lowest rate on record.&lt;/p&gt;

&lt;p&gt;Engineering is actively hiring for three open roles, with two offers currently outstanding. The next board meeting has been rescheduled to July 18.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From there, pick a template, add a cover page, and export. Five minutes from raw notes to a boardroom-ready PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for Getting the Most Out of AI Assist
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Be specific with custom prompts.&lt;/strong&gt; "Make this better" is vague. "Rewrite this for a technical audience, keep it under 200 words" gives the AI clear constraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Work in passes.&lt;/strong&gt; Expand first, then rewrite for tone, then fix grammar. Each pass is small and reviewable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for structure, not just prose.&lt;/strong&gt; Select a wall of text and ask "Break this into sections with H2 headings." AI Assist can reorganize, not just rewrite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pair it with templates.&lt;/strong&gt; AI Assist handles the content; templates handle the presentation. Together, they take you from zero to finished document faster than any other workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy First
&lt;/h2&gt;

&lt;p&gt;We built AI Assist with a hard rule: PaperQuire never sees your content. There's no PaperQuire backend involved — your editor talks directly to the provider you configured. If you use a local model through Ollama, your content never leaves your network at all.&lt;/p&gt;




&lt;p&gt;AI Assist is available on all plans. &lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;Download PaperQuire&lt;/a&gt; and try it with your own API key — the difference in your workflow will be immediate.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Introducing PaperQuire — Markdown to Beautiful PDFs, 100% Offline</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Wed, 01 Jul 2026 00:21:51 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/introducing-paperquire-markdown-to-beautiful-pdfs-100-offline-fan</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/introducing-paperquire-markdown-to-beautiful-pdfs-100-offline-fan</guid>
      <description>&lt;p&gt;We're excited to launch PaperQuire — a desktop app that turns plain Markdown into professional, print-ready PDFs. No cloud uploads, no accounts, no subscriptions required for personal use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Built PaperQuire
&lt;/h2&gt;

&lt;p&gt;If you write in Markdown, you've probably hit this wall: your content looks great in your editor, but the moment you need to share it as a polished document — a proposal, a report, a spec — you're stuck copy-pasting into Word or fighting with LaTeX.&lt;/p&gt;

&lt;p&gt;We wanted something simpler. Write in Markdown, click Export, and get a document that looks like a designer made it. No extra steps, no cloud dependency, no learning curve.&lt;/p&gt;

&lt;h2&gt;
  
  
  What PaperQuire Does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live preview&lt;/strong&gt; — See your formatted document side-by-side as you type. What you see is what you'll get in the PDF.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Professional templates&lt;/strong&gt; — Choose from templates designed for technical docs, proposals, reports, and more. Every template supports custom branding: your logo, your colors, your fonts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline-first&lt;/strong&gt; — Your documents never leave your machine. PaperQuire runs entirely on your desktop — macOS, Windows, and Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plugin system&lt;/strong&gt; — Extend PaperQuire with plugins for diagrams (Mermaid), math (KaTeX), syntax highlighting, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Assist&lt;/strong&gt; — Bring your own API key and get writing suggestions, grammar fixes, and content generation right inside the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open PaperQuire and start writing Markdown — or open an existing &lt;code&gt;.md&lt;/code&gt; file&lt;/li&gt;
&lt;li&gt;Choose a template and customize your branding (logo, colors, fonts)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Export&lt;/strong&gt; to generate a polished PDF instantly&lt;/li&gt;
&lt;li&gt;Share your document with confidence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The entire process takes seconds, not minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free for Personal Use
&lt;/h2&gt;

&lt;p&gt;PaperQuire is free for personal use with no restrictions on the core features. The Pro plan adds advanced exports (DOCX, HTML), batch processing, and priority support for teams that need more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Download PaperQuire for your platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;macOS (Apple Silicon)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;Windows (x64)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;Linux (x86_64)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the &lt;a href="https://paperquire.com/docs/getting-started.html" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for a quick walkthrough, or just start writing — PaperQuire is designed to get out of your way.&lt;/p&gt;




&lt;p&gt;We'd love to hear what you think. Drop us a line at &lt;a href="mailto:paperquire@gmail.com"&gt;paperquire@gmail.com&lt;/a&gt; or open an issue on &lt;a href="https://github.com/paperquire/releases" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>announcement</category>
      <category>gettingstarted</category>
    </item>
    <item>
      <title>PaperQuire v0.2.0 — CLI for Automating Your Docs Pipeline</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Mon, 29 Jun 2026 03:23:20 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-v020-cli-for-automating-your-docs-pipeline-2ima</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-v020-cli-for-automating-your-docs-pipeline-2ima</guid>
      <description>&lt;h2&gt;
  
  
  Your docs pipeline, from the terminal
&lt;/h2&gt;

&lt;p&gt;PaperQuire v0.2.0 ships with a full command-line interface. Everything you can do in the desktop app — render, template, brand — now works from your terminal.&lt;/p&gt;

&lt;p&gt;This means you can automate document generation, integrate PaperQuire into CI/CD pipelines, and batch-process entire directories of Markdown without opening the GUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;p&gt;If you installed via Homebrew, the &lt;code&gt;paperquire&lt;/code&gt; command is already on your PATH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; paperquire/paperquire/paperquire
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The simplest render is just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire report.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This produces &lt;code&gt;report.pdf&lt;/code&gt; in the same directory, using the default template.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Render with options
&lt;/h3&gt;

&lt;p&gt;Apply templates, set metadata, control output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire report.md &lt;span class="nt"&gt;-t&lt;/span&gt; corporate &lt;span class="nt"&gt;--title&lt;/span&gt; &lt;span class="s2"&gt;"Q2 Report"&lt;/span&gt; &lt;span class="nt"&gt;--author&lt;/span&gt; &lt;span class="s2"&gt;"Jane Doe"&lt;/span&gt;
paperquire spec.md &lt;span class="nt"&gt;--page-size&lt;/span&gt; a4 &lt;span class="nt"&gt;--margins&lt;/span&gt; 0.75,0.75,0.75,0.75 &lt;span class="nt"&gt;--no-toc&lt;/span&gt;
paperquire draft.md &lt;span class="nt"&gt;--watermark&lt;/span&gt; &lt;span class="s2"&gt;"DRAFT"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; drafts/draft.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All 22 flags from the desktop app's Document Setup panel are available. See the full list in the &lt;a href="https://paperquire.com/docs/cli.html#render-flags" rel="noopener noreferrer"&gt;CLI Reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pipe through stdin/stdout
&lt;/h3&gt;

&lt;p&gt;PaperQuire works in Unix pipelines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;notes.md | paperquire - &lt;span class="nt"&gt;--stdout&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; out.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;-&lt;/code&gt; as the input file to read from stdin, and &lt;code&gt;--stdout&lt;/code&gt; to write the PDF to stdout instead of a file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Batch render directories
&lt;/h3&gt;

&lt;p&gt;Render every Markdown file in a directory with one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire batch ./docs &lt;span class="nt"&gt;-o&lt;/span&gt; ./out
paperquire batch ./project &lt;span class="nt"&gt;--glob&lt;/span&gt; &lt;span class="s2"&gt;"**/*.md"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; corporate
paperquire batch ./docs &lt;span class="nt"&gt;--concurrency&lt;/span&gt; 8 &lt;span class="nt"&gt;--continue-on-error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;--dry-run&lt;/code&gt; to preview which files would be rendered without actually producing output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manage templates
&lt;/h3&gt;

&lt;p&gt;List, inspect, create, and share templates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paperquire templates list
paperquire templates show minimal-clean
paperquire templates init my-template
paperquire templates &lt;span class="nb"&gt;export &lt;/span&gt;corporate &lt;span class="nt"&gt;-o&lt;/span&gt; corporate.pqt
paperquire templates import ./shared-template.pqt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We also launched a &lt;a href="https://github.com/paperquire/templates" rel="noopener noreferrer"&gt;community templates repo&lt;/a&gt; where you can browse all built-in templates and submit your own via pull request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project configuration
&lt;/h3&gt;

&lt;p&gt;Drop a &lt;code&gt;.paperquire.yml&lt;/code&gt; in your project root and every render in that directory picks up your settings automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;corporate&lt;/span&gt;
&lt;span class="na"&gt;toc&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;h1-page-break&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;cover&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Project&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Documentation"&lt;/span&gt;
  &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Engineering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Team"&lt;/span&gt;
  &lt;span class="na"&gt;company&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Acme&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Corp"&lt;/span&gt;
&lt;span class="na"&gt;branding&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;primary-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#2563eb"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config files are resolved in order: global (&lt;code&gt;~/.paperquire/config.yml&lt;/code&gt;) then project (&lt;code&gt;.paperquire.yml&lt;/code&gt; walked upward), then CLI flags win.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD integration
&lt;/h2&gt;

&lt;p&gt;The CLI makes it straightforward to add document generation to your build pipeline. A GitHub Actions example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generate docs&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;paperquire batch ./docs -o ./dist/docs -t corporate --continue-on-error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;--dry-run&lt;/code&gt; in your CI to validate Markdown and options without producing output — useful as a pre-merge check.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This is the foundation. Future CLI updates will include watch mode for live rebuilding, PDF merge for combining multiple documents, and deeper CI integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/paperquire/releases/releases/tag/v0.2.0" rel="noopener noreferrer"&gt;Download v0.2.0&lt;/a&gt; for macOS, Windows, or Linux&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/cli.html" rel="noopener noreferrer"&gt;CLI Reference&lt;/a&gt; for the full flag and command documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/paperquire/templates" rel="noopener noreferrer"&gt;Community Templates&lt;/a&gt; to browse and share templates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or install via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; paperquire/paperquire/paperquire
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>release</category>
      <category>cli</category>
    </item>
    <item>
      <title>PaperQuire Render Action — PDFs in Your CI Pipeline</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Thu, 25 Jun 2026 21:38:41 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-render-action-pdfs-in-your-ci-pipeline-4bc8</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/paperquire-render-action-pdfs-in-your-ci-pipeline-4bc8</guid>
      <description>&lt;h2&gt;
  
  
  Your docs should build themselves
&lt;/h2&gt;

&lt;p&gt;You write your documentation in Markdown. You keep it in a Git repo. Every time someone updates a spec or runbook, someone else has to open PaperQuire (or the CLI), render the PDF, and upload it somewhere.&lt;/p&gt;

&lt;p&gt;That manual step is now gone. The &lt;strong&gt;PaperQuire Render Action&lt;/strong&gt; generates branded, print-ready PDFs directly in your GitHub Actions workflow — on every push, every PR, or every release.&lt;/p&gt;

&lt;h2&gt;
  
  
  One step. That's it.
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
    &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;executive-report&lt;/span&gt;
    &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/pdfs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every Markdown file matching the glob is rendered to PDF using the same Chromium engine as the desktop app. Same templates, same quality, no Pandoc or LaTeX to install.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can build
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Auto-generate docs on push
&lt;/h3&gt;

&lt;p&gt;Whenever someone pushes to &lt;code&gt;docs/&lt;/code&gt;, produce fresh PDFs and attach them as build artifacts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generate PDFs&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/**/*.md'&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;minimal-clean&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/pdfs&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pdfs&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/pdfs/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Team members download the latest PDFs from the Actions tab. No Slack messages, no "can you re-export this?"&lt;/p&gt;

&lt;h3&gt;
  
  
  Attach PDFs to releases
&lt;/h3&gt;

&lt;p&gt;Ship documentation alongside your code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
    &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;executive-report&lt;/span&gt;
    &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dist/&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Upload to release&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;GH_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.token }}&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gh release upload ${{ github.event.release.tag_name }} dist/*.pdf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every release automatically includes the latest versions of your specs, guides, and reports.&lt;/p&gt;

&lt;h3&gt;
  
  
  PR previews
&lt;/h3&gt;

&lt;p&gt;Use the action in pull request workflows so reviewers can download rendered PDFs before merging:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/**'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;preview&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;preview/&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pdf-preview&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;preview/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Inputs and outputs
&lt;/h2&gt;

&lt;p&gt;Three inputs — only &lt;code&gt;files&lt;/code&gt; is required:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;files&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Glob pattern (e.g. &lt;code&gt;docs/*.md&lt;/code&gt;, &lt;code&gt;**/*.md&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;template&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;minimal-clean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Any built-in template ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;output/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Where to write PDFs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The action outputs &lt;code&gt;pdf-files&lt;/code&gt; — a newline-separated list of generated paths you can reference in later steps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;render&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;echo "${{ steps.render.outputs.pdf-files }}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works under the hood
&lt;/h2&gt;

&lt;p&gt;The action runs in a Docker container with Node.js and all Chromium dependencies pre-installed. It globs your files, runs &lt;code&gt;paperquire render&lt;/code&gt; for each one, and collects the output paths. No shell tricks, no external binaries to install — everything is baked into the image.&lt;/p&gt;

&lt;p&gt;The Docker image is published to GHCR (&lt;code&gt;ghcr.io/paperquire/render-action&lt;/code&gt;), so subsequent runs pull from cache instead of rebuilding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Add the step to your workflow (copy the YAML above)&lt;/li&gt;
&lt;li&gt;Push to your repo&lt;/li&gt;
&lt;li&gt;Check the Actions tab for your PDFs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full documentation: &lt;a href="https://paperquire.com/docs/github-action.html" rel="noopener noreferrer"&gt;GitHub Action docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Action source: &lt;a href="https://github.com/paperquire/render-action" rel="noopener noreferrer"&gt;paperquire/render-action&lt;/a&gt;&lt;/p&gt;

</description>
      <category>githubaction</category>
      <category>cicd</category>
      <category>automation</category>
    </item>
    <item>
      <title>Docs as Code: Build a CI/CD Pipeline for Your Documentation</title>
      <dc:creator>paperquire</dc:creator>
      <pubDate>Thu, 25 Jun 2026 21:37:07 +0000</pubDate>
      <link>https://dev.to/paperquire_e3fdb510bbe49c/docs-as-code-build-a-cicd-pipeline-for-your-documentation-3278</link>
      <guid>https://dev.to/paperquire_e3fdb510bbe49c/docs-as-code-build-a-cicd-pipeline-for-your-documentation-3278</guid>
      <description>&lt;h2&gt;
  
  
  Your code has CI/CD. Your docs don't.
&lt;/h2&gt;

&lt;p&gt;Every modern engineering team has automated builds, tests, and deployments for their code. But documentation? That's still someone manually exporting a PDF, uploading it to Confluence, and hoping it's the latest version.&lt;/p&gt;

&lt;p&gt;This post shows you how to treat documentation like code: version-controlled Markdown in a Git repo, automatically rendered to branded PDFs on every push. No manual steps, no stale documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;PaperQuire gives you three tools that work together:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.paperquire.yml&lt;/code&gt;&lt;/strong&gt; — project config that locks in your template, branding, and document options&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI&lt;/strong&gt; — &lt;code&gt;paperquire render&lt;/code&gt; and &lt;code&gt;paperquire batch&lt;/code&gt; for scripting and local builds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Action&lt;/strong&gt; — &lt;code&gt;paperquire/render-action&lt;/code&gt; for automated builds in CI&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each one builds on the previous. The config file means no one has to remember flags. The CLI means you can test locally. The action means it happens automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Add a project config
&lt;/h2&gt;

&lt;p&gt;Drop a &lt;code&gt;.paperquire.yml&lt;/code&gt; in your repo root. Every render — GUI, CLI, and CI — picks up these settings automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;corporate&lt;/span&gt;
&lt;span class="na"&gt;toc&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;toc-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;span class="na"&gt;h1-page-break&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;cover&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Project&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Documentation"&lt;/span&gt;
  &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Engineering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Team"&lt;/span&gt;
&lt;span class="na"&gt;branding&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;primary-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#2563eb"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is your single source of truth for how documents look. Change it once, and every PDF across every environment updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Test locally with the CLI
&lt;/h2&gt;

&lt;p&gt;Before committing, verify your docs render correctly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Render a single file&lt;/span&gt;
paperquire docs/architecture.md &lt;span class="nt"&gt;-o&lt;/span&gt; out/architecture.pdf

&lt;span class="c"&gt;# Batch render the entire docs directory&lt;/span&gt;
paperquire batch ./docs &lt;span class="nt"&gt;-o&lt;/span&gt; ./out

&lt;span class="c"&gt;# Dry run — validate without producing output&lt;/span&gt;
paperquire batch ./docs &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI reads &lt;code&gt;.paperquire.yml&lt;/code&gt; automatically. The output is identical to what CI will produce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Automate with the GitHub Action
&lt;/h2&gt;

&lt;p&gt;Add one workflow file and your docs build themselves:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/docs.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build Documentation&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/**/*.md'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.paperquire.yml'&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/pdfs&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;documentation&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/pdfs/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every push that touches a Markdown file or the config triggers a fresh build. PDFs are available as downloadable artifacts from the Actions tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-world patterns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gate docs in pull requests
&lt;/h3&gt;

&lt;p&gt;Catch formatting issues before they hit main. Reviewers can download the rendered PDFs directly from the PR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/**'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.paperquire.yml'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;preview&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;preview/&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pdf-preview&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;preview/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ship docs with releases
&lt;/h3&gt;

&lt;p&gt;Attach the latest PDFs to every GitHub release automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;release&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;published&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dist/&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Attach to release&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GH_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.token }}&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gh release upload ${{ github.event.release.tag_name }} dist/*.pdf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Customers downloading your release get up-to-date documentation bundled right in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nightly builds for large doc sets
&lt;/h3&gt;

&lt;p&gt;For repos with dozens of documents where you don't want to rebuild on every push:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;6&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1-5'&lt;/span&gt;  &lt;span class="c1"&gt;# Weekdays at 6 AM UTC&lt;/span&gt;
  &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;        &lt;span class="c1"&gt;# Plus manual trigger&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;paperquire/render-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;docs/**/*.md'&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/docs&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nightly-docs&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/docs/&lt;/span&gt;
          &lt;span class="na"&gt;retention-days&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Non-GitHub CI
&lt;/h3&gt;

&lt;p&gt;The CLI works in any CI system. GitLab CI, Jenkins, CircleCI, Azure Pipelines — anywhere you can run a shell command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# GitLab CI example&lt;/span&gt;
&lt;span class="na"&gt;build-docs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;node:20&lt;/span&gt;
  &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;npm install -g paperquire&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;paperquire batch ./docs -o ./out --continue-on-error&lt;/span&gt;
  &lt;span class="na"&gt;artifacts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;out/*.pdf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project structure
&lt;/h2&gt;

&lt;p&gt;Here's what a well-organized docs-as-code repo looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── .paperquire.yml          # Shared doc config
├── .github/
│   └── workflows/
│       └── docs.yml         # CI pipeline
├── docs/
│   ├── architecture.md
│   ├── api-reference.md
│   ├── onboarding.md
│   └── runbook.md
└── src/
    └── ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Markdown lives alongside code. The config file and workflow are checked in. Anyone cloning the repo can render docs locally with &lt;code&gt;paperquire batch ./docs&lt;/code&gt;, and CI handles the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No stale docs.&lt;/strong&gt; Every merge to main produces fresh PDFs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No manual steps.&lt;/strong&gt; No one has to remember to export and upload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent branding.&lt;/strong&gt; The config file enforces the same template and style everywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditable.&lt;/strong&gt; Git history shows exactly when a document changed and who changed it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewable.&lt;/strong&gt; PR previews let reviewers see the final PDF before merging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your documentation pipeline should be as reliable as your deployment pipeline. With PaperQuire, it takes one config file and one workflow to get there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/cli.html" rel="noopener noreferrer"&gt;CLI Reference&lt;/a&gt; — full command and flag documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/github-action.html" rel="noopener noreferrer"&gt;GitHub Action docs&lt;/a&gt; — inputs, outputs, and examples&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://paperquire.com/docs/templates.html" rel="noopener noreferrer"&gt;Templates&lt;/a&gt; — browse built-in templates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paperquire.com/downloads.html" rel="noopener noreferrer"&gt;Download PaperQuire&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cicd</category>
      <category>automation</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
