accessibility-complian…
Web accessibility patterns for news and academic sites. Use for WCAG audits, alt text, accessible data viz, and assistive tech.
Creates print-ready HTML that exports to PDF. Use to make a proposal, report, one-pager, newsletter, slides, or flyer.
$ npx -y skills add jamditis/claude-skills-journalism --skill document-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/document-designContext preview
The summary Claude sees to decide when to auto-load this skill.
Creates print-ready HTML that exports to PDF. Use to make a proposal, report, one-pager, newsletter, slides, or flyer.
name: document-design description: Creates print-ready HTML that exports to PDF. Use to make a proposal, report, one-pager, newsletter, slides, or flyer.
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:
1. **Print-first design**: All documents target 8.5" × 11" letter size with proper margins 2. **Brand compliance**: Use colors and fonts from brand configuration 3. **Sentence case by default**: Unless brand config specifies "title" case 4. **Clean exports**: Documents must render correctly when printed to PDF
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:** 1. Use `grid-template-rows: auto 1fr auto` on the page so content automatically gets the space between header and footer 2. Set `overflow: hidden` on the content container to prevent text bleeding past its bounds 3. Include `padding-bottom: 0.3in` (minimum) inside the content area as a buffer 4. Never use hardcoded `height: calc(...)` with magic numbers for header/footer heights, they drift when padding or font sizes change 5. After rendering, always screenshot and visually verify the bottom of the page before delivering 6. If content overflows, **reduce content**, never shrink the footer gap. Tighten the header first if you need more room.
@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;
}1. **Check for brand config** at project-root `pdf-playground.local.md`, then the legacy `.claude/pdf-playground.local.md` fallback 2. **Locate this installed `SKILL.md`** and resolve bundled resources from its directory. Do not assume a plugin-root environment variable is available. 3. **Load template** from the skill-relative `templates/` directory 4. **Apply brand settings** to CSS variables and content 5. **Customize content** based on user requirements 6. **Save HTML file** in current working directory 7. **Offer preview** with Playwright browser tools
1. Open t
A collection of Agent Skills for journalists, researchers, academics, media professionals, and communications practitioners. The same repository serves Claude Code and Codex while keeping Claude-only commands, agents, and hooks clearly labeled.
Repo: jamditis/claude-skills-journalism
Web accessibility patterns for news and academic sites. Use for WCAG audits, alt text, accessible data viz, and assistive tech.
Scans the session for lessons and workflows, then proposes scoped CLAUDE.md edits. Use for save this lesson or add to context.
Manages attention and evidence in long agent sessions. Use for lost instructions, dropped evidence, or large multi-agent contexts.
Directs the current request through configured lower-tier agents. Use only for explicit /director or /dev-toolkit:director invocation.
Electron desktop apps with React, TypeScript, and Vite. Use for IPC, window/tray, PTY terminals, WebRTC, and packaging.
Remote JavaScript console and debugging on mobile. Use for phone/tablet console errors, responsive testing, Eruda, and vConsole.