academic-writing
FreeScholarly writing and research compliance. Use for CRediT, preregistration, Plan S, Nelson Memo, preprints, ORCID, LLM disclosure.
The English summary is being prepared. Showing the original description.
Creates print-ready HTML that exports to PDF. Use to make a proposal, report, one-pager, newsletter, slides, or flyer.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Create professional, print-ready HTML documents that export to PDF with customizable branding.
Before creating documents, check for pdf-playground.local.md in the project
root. If it is absent, check the legacy Claude Code path
.claude/pdf-playground.local.md. If both exist, use only the project-root
file. If neither exists, use sensible defaults or ask the user for their brand
colors.
Parse the selected config file's YAML frontmatter:
---
brand:
name: "Organization Name"
tagline: "Tagline"
website: "https://example.com"
email: "contact@example.com"
colors:
primary: "#CA3553"
secondary: "#000000"
background: "#FFFFFF"
text: "#2d2a28"
muted: "#666666"
fonts:
heading: "Playfair Display"
body: "Source Sans 3"
style:
headingCase: "sentence"
useOxfordComma: true
---
If no config exists, use these defaults:
#CA3553 (red)#000000 (black)Generate CSS variables from brand config:
:root {
--primary: [colors.primary];
--secondary: [colors.secondary];
--background: [colors.background];
--text: [colors.text];
--muted: [colors.muted];
/* Derived colors */
--primary-dark: [darken primary by 15%];
--gray-100: #f5f4f2;
--gray-200: #e8e6e3;
}
@page {
size: 8.5in 11in;
margin: 0;
}
@media print {
body {
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
.page {
page-break-after: always;
page-break-inside: avoid;
}
}
.page {
width: 8.5in;
height: 11in;
padding: 0.5in 0.75in;
padding-bottom: 1in; /* Space for footer */
position: relative;
box-sizing: border-box;
overflow: hidden;
}
.page-footer {
position: absolute;
bottom: 0.4in;
left: 0.75in;
right: 0.75in;
font-size: 9pt;
border-top: 1px solid var(--gray-200);
padding-top: 0.1in;
background: var(--background);
}
Content overlapping or touching the footer is a recurring issue.
Preferred layout, grid rows auto 1fr auto:
.page {
display: grid;
grid-template-rows: auto 1fr auto;
overflow: hidden;
}
This makes the header and footer take their natural height, and the content fills the remaining space. No magic-number calc() needed, the footer clearance is structural.
Required safeguards:
grid-template-rows: auto 1fr auto on the page so content automatically gets the space between header and footeroverflow: hidden on the content container to prevent text bleeding past its boundspadding-bottom: 0.3in (minimum) inside the content area as a bufferheight: calc(...) with magic numbers for header/footer heights, they drift when padding or font sizes change@import url('https://fonts.googleapis.com/css2?family=[heading-font]:wght@400;600;700&family=[body-font]:wght@400;500;600;700&display=swap');
body {
font-family: '[body-font]', Arial, sans-serif;
font-size: 11pt;
line-height: 1.6;
color: var(--text);
}
h1, h2, h3 {
font-family: '[heading-font]', Georgia, serif;
font-weight: 700;
}
.section-title {
font-size: 26pt;
color: var(--secondary);
margin-bottom: 0.25in;
}
.section-title::after {
content: '';
display: block;
width: 0.5in;
height: 3px;
background: var(--primary);
margin-top: 0.12in;
}
<header class="cover-header">
<div class="logo-bar">
<div class="logo-primary">[brand.name]</div>
</div>
<div class="cover-title-block">
<div class="cover-eyebrow">[Document type] • [Date]</div>
<h1 class="cover-title">[Title in configured case]</h1>
</div>
</header>
.budget-table thead {
background: var(--secondary);
color: white;
}
.budget-table tbody tr:last-child {
background: var(--primary);
color: white;
font-weight: 700;
}
.highlight-box {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
color: white;
padding: 0.3in;
}
pdf-playground.local.md, then
the legacy .claude/pdf-playground.local.md fallbackSKILL.md and resolve bundled resources from its
directory. Do not assume a plugin-root environment variable is available.templates/ directoryPre-built templates in the installed skill's templates/ directory:
proposal-template.htmlreport-template.htmlonepager-template.htmlnewsletter-template.htmlslides-template.htmlevent-template.htmlslides-template.html contains illustrative local photo and wordmark paths,
not bundled image assets. Before delivering a deck based on it, replace every
CSS url(...) and <img src> reference with an available asset. If the user
has no suitable images, remove every unresolved reference, use the template's
gradient or solid-color slide variants, and replace a missing wordmark image
with text. Never deliver a deck with an unresolved local asset path.
Example brand configurations in the installed skill's brands/ directory:
default.yaml - Default brand settingsccm.yaml - Center for Cooperative Mediaexample-newsroom.yaml - Sample newsroom configFor detailed CSS patterns, use the installed skill's
references/css-patterns.md.
Reusable preview assets are in the installed skill's controls/ directory.
These files are resources for document generation; they do not turn the
Claude-only preview command or plugin hook into Codex features.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Scholarly writing and research compliance. Use for CRediT, preregistration, Plan S, Nelson Memo, preprints, ORCID, LLM disclosure.
The English summary is being prepared. Showing the original description.
Web accessibility patterns for news and academic sites. Use for WCAG audits, alt text, accessible data viz, and assistive tech.
The English summary is being prepared. Showing the original description.
Eliminates AI-generated writing patterns that erode reader trust. Use when writing or editing articles, docs, or press releases.
The English summary is being prepared. Showing the original description.
API hardening for Express, FastAPI, and serverless. Use for rate limiting, CORS, input validation, API keys, or OWASP API Top 10.
The English summary is being prepared. Showing the original description.
Explores intent and design before implementation. MUST use before creating or modifying any feature, component, or behavior.
The English summary is being prepared. Showing the original description.
Public records requests under Brazil's Access to Information Law (LAI). Use for Fala.BR filings, e-SIC, and CGU/CMRI appeals.
The English summary is being prepared. Showing the original description.