Pdf logo

Pdf

Organization
okou-ai
pdf

Create, read, edit, fill, or reformat PDF files. Use this skill for PDF output. CREATE (generate from scratch): "make a PDF", "generate a report", "write a proposal", "create a resume", "beautiful PDF", "professional document", "cover page", "polished PDF", "client-ready document". FILL (complete form fields): "fill in the form", "fill out this PDF", "complete the form fields", "write values into PDF", "what fields does this PDF have". REFORMAT (apply design to an existing doc): "reformat this document", "apply our style", "convert this Markdown/text to PDF", "make this doc look good", "re-style this PDF". This skill uses a token-based design system: color, typography, and spacing are derived from the document type and flow through every page. The output is print-ready. For a PDF companion to a Word document, render that DOCX through ../docx/SKILL.md so both deliverables retain the same content and layout.

Overview

Publisherokou-ai
Repositoryokou-skills
Skill namepdf
Stars
81
Forks
19
Bundled files
12
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 12 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by okou-ai on GitHub. Read the source before you install it.

Installation

Install the Pdf AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/okou-ai/okou-skills/tree/main/office/pdf
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/okou-ai/okou-skills.git /tmp/okou-skills
mkdir -p .claude/skills
cp -r /tmp/okou-skills/office/pdf .claude/skills/pdf
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Pdf in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Pdf on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Pdf is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

pdf

Three tasks. One skill.

Environment and delivery

Set SKILL_DIR to the absolute directory containing this file (the pdf/ subdirectory of the Office package). Resolve reference paths relative to it.

Run bash "$SKILL_DIR/scripts/make.sh" check once per session before CREATE/REFORMAT. It verifies an actual Chromium launch. If needed, install dependencies with bash "$SKILL_DIR/scripts/make.sh" fix in an activated Python virtual environment; on Linux, Chromium may also need npx playwright install-deps chromium. FILL and read-only inspection need Python and pypdf, not the browser pipeline. Read only the guide and scripts relevant to the selected route. Explicit user or template formatting takes precedence over the design defaults.

For a user-requested rendered preview or visual review, use pdftoppm -png -r 120 output.pdf preview/page (create preview/ first) and inspect the images.

Read design/design.md before any CREATE or REFORMAT work.


Route table

User intentRouteScripts used
Generate a new PDF from scratchCREATEpalette.py → cover.py → render_cover.js → render_body.py → merge.py
Fill / complete form fields in an existing PDFFILLfill_inspect.py → fill_write.py
Reformat / re-style an existing documentREFORMATreformat_parse.py → then full CREATE pipeline

Rule: when in doubt between CREATE and REFORMAT, ask whether the user has an existing document to start from. If yes → REFORMAT. If no → CREATE.


Route A: CREATE

Full pipeline — content → design tokens → cover → body → merged PDF.

bash
bash "$SKILL_DIR/scripts/make.sh" run \
  --title "Q3 Strategy Review" --type proposal \
  --author "Strategy Team" --date "October 2025" \
  --accent "#2D5F8A" \
  --content content.json --out report.pdf

Doc types: report · proposal · resume · portfolio · academic · general · minimal · stripe · diagonal · frame · editorial · magazine · darkroom · terminal · poster

TypeCover patternVisual identity
reportfullbleedDark bg, dot grid, Playfair Display
proposalsplitLeft panel + right geometric, Syne
resumetypographicOversized first-word, DM Serif Display
portfolioatmosphericNear-black, radial glow, Fraunces
academictypographicLight bg, classical serif, EB Garamond
generalfullbleedDark slate, Outfit
minimalminimalWhite + single 8px accent bar, Cormorant Garamond
stripestripe3 bold horizontal color bands, Barlow Condensed
diagonaldiagonalSVG angled cut, dark/light halves, Montserrat
frameframeInset border, corner ornaments, Cormorant
editorialeditorialGhost letter, all-caps title, Bebas Neue
magazinemagazineWarm cream bg, centered stack, hero image, Playfair Display
darkroomdarkroomNavy bg, centered stack, grayscale image, Playfair Display
terminalterminalNear-black, grid lines, monospace, neon green
posterposterWhite bg, thick sidebar, oversized title, Barlow Condensed

Cover extras (inject into tokens via --abstract, --cover-image):

  • --abstract "text" — abstract text block on the cover (magazine/darkroom)
  • --cover-image "url" — hero image URL/path (magazine, darkroom, poster)

Color overrides — always choose these based on document content:

  • --accent "#HEX" — override the accent color; accent_lt is auto-derived by lightening toward white
  • --cover-bg "#HEX" — override the cover background color

Accent color selection guidance:

You have creative authority over the accent color. Pick it from the document's semantic context — title, industry, purpose, audience — not from generic "safe" choices. The accent appears on section rules, callout bars, table headers, and the cover: it carries the document's visual identity.

ContextSuggested accent range
Legal / compliance / financeDeep navy #1C3A5E, charcoal #2E3440, slate #3D4C5E
Healthcare / medicalTeal-green #2A6B5A, cool green #3A7D6A
Technology / engineeringSteel blue #2D5F8A, indigo #3D4F8A
Environmental / sustainabilityForest #2E5E3A, olive #4A5E2A
Creative / arts / cultureBurgundy #6B2A35, plum #5A2A6B, terracotta #8A3A2A
Academic / researchDeep teal #2A5A6B, library blue #2A4A6B
Corporate / neutralSlate #3D4A5A, graphite #444C56
Luxury / premiumWarm black #1A1208, deep bronze #4A3820

Rule: choose a color that a thoughtful designer would select for this specific document — not the type's default. Muted, desaturated tones work best; avoid vivid primaries. When in doubt, go darker and more neutral.

content.json block types:

BlockUsageKey fields
h1Section heading + accent ruletext
h2Subsection headingtext
h3Sub-subsection (bold)text
bodyJustified paragraph; supports <b> <i> markuptext
bulletUnordered list item (• prefix)text
numberedOrdered list item — counter auto-resets on non-numbered blockstext
calloutHighlighted insight box with accent left bartext
tableData table — accent header, alternating row tintsheaders, rows, col_widths?, caption?
imageEmbedded image scaled to column widthpath/src, caption?
figureImage with auto-numbered "Figure N:" captionpath/src, caption?
codeMonospace code block with accent left bordertext, language?
mathDisplay math — LaTeX syntax via matplotlib mathtexttext, label?, caption?
chartBar / line / pie chart rendered with matplotlibchart_type, labels, datasets, title?, x_label?, y_label?, caption?, figure?
flowchartProcess diagram with nodes + edges via matplotlibnodes, edges, caption?, figure?
bibliographyNumbered reference list with hanging indentitems [{id, text}], title?
dividerAccent-colored full-width rule—
captionSmall muted labeltext
pagebreakForce a new page—
spacerVertical whitespacept (default 12)

chart / flowchart schemas:

json
{"type":"chart","chart_type":"bar","labels":["Q1","Q2","Q3","Q4"],
 "datasets":[{"label":"Revenue","values":[120,145,132,178]}],"caption":"Q results"}

{"type":"flowchart",
 "nodes":[{"id":"s","label":"Start","shape":"oval"},
          {"id":"p","label":"Process","shape":"rect"},
          {"id":"d","label":"Valid?","shape":"diamond"},
          {"id":"e","label":"End","shape":"oval"}],
 "edges":[{"from":"s","to":"p"},{"from":"p","to":"d"},
          {"from":"d","to":"e","label":"Yes"},{"from":"d","to":"p","label":"No"}]}

{"type":"bibliography","items":[
  {"id":"1","text":"Author (Year). Title. Publisher."}]}

Route B: FILL

Fill form fields in an existing PDF without altering layout or design.

bash
# Step 1: inspect
python3 "$SKILL_DIR/scripts/fill_inspect.py" --input form.pdf

# Step 2: fill
python3 "$SKILL_DIR/scripts/fill_write.py" --input form.pdf --out filled.pdf \
  --values '{"FirstName": "Jane", "Agree": "true", "Country": "US"}'
Field typeValue format
textAny string
checkbox"true" or "false"
dropdownMust match a choice value from inspect output
radioMust match a radio value (often starts with /)

Always run fill_inspect.py first to get exact field names.


Route C: REFORMAT

Parse an existing document → content.json → CREATE pipeline.

bash
bash "$SKILL_DIR/scripts/make.sh" reformat \
  --input source.md --title "My Report" --type report --out output.pdf

Supported input formats: .md .txt .pdf .json


Environment

bash
bash "$SKILL_DIR/scripts/make.sh" check   # verify all deps
bash "$SKILL_DIR/scripts/make.sh" fix     # auto-install missing deps
bash "$SKILL_DIR/scripts/make.sh" demo    # build a sample PDF
ToolUsed byInstall
Python 3.9+all .py scriptssystem
reportlabrender_body.pypip install reportlab
pypdffill, merge, reformatpip install pypdf
Node.js 18+render_cover.jssystem
playwright + Chromiumrender_cover.jsnpm install -g playwright && npx playwright install chromium

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Pdf AI skill do?

Create, read, edit, fill, or reformat PDF files. Use this skill for PDF output. CREATE (generate from scratch): "make a PDF", "generate a report", "write a proposal", "create a resume", "beautiful PDF", "professional document", "cover page", "polished PDF", "client-ready document". FILL (complete form fields): "fill in the form", "fill out this PDF", "complete the form fields", "write values into PDF", "what fields does this PDF have". REFORMAT (apply design to an existing doc): "reformat this document", "apply our style", "convert this Markdown/text to PDF", "make this doc look good", "re-...

Why use Pdf on TypingMind?

Because you install it once and use it with any model. Pdf is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Pdf in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/okou-ai/okou-skills/tree/main/office/pdf. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Pdf?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Pdf?

As many as you like. As long as a model supports skills, you can use Pdf with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Pdf AI skill free?

Yes. It is published on GitHub by okou-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇