Claude-skill-registry create-pdf-fixture

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/create-pdf-fixture" ~/.claude/skills/majiayu000-claude-skill-registry-create-pdf-fixture && rm -rf "$T"
manifest: skills/data/create-pdf-fixture/SKILL.md
source content

create-pdf-fixture

Generate complete PDF test fixtures that combine:

  • Proper ReportLab tables via
    create-table
    (detectable by Marker/Camelot)
  • AI-generated images via
    create-image
    (diagrams, decorative elements)
  • Text content with various formatting challenges

Why This Exists

Creating test PDFs that properly exercise extractors requires:

  1. Tables built with ReportLab (not raw drawing commands)
  2. Images that test VLM classification (decorative vs data)
  3. Edge cases: empty sections, malformed titles, nested structures

This skill orchestrates sibling skills for modular, reusable fixtures.

Quick Start

cd .pi/skills/create-pdf-fixture

# Generate the extractor bug reproduction fixture
uv run generate.py extractor-bugs --output test.pdf

# Generate a simple fixture
uv run generate.py simple --output simple_test.pdf

# List available presets
uv run generate.py list-presets

# Verify table detection
uv run generate.py verify test.pdf

Presets

PresetDescriptionTests
extractor-bugs
Reproduces known extractor issuesEmpty sections, false tables, malformed titles
simple
Basic PDF with table and textBasic extraction

Sibling Skills Used

SkillPurpose
create-table
Creates ReportLab tables (Marker-detectable)
create-image
AI-generated images with caching

Cached images from

create-image/cached_images/
:

  • decorative.png
    - Cover illustration
  • flowchart.png
    - Process diagram
  • network_arch.png
    - Architecture diagram

Legacy Usage (Still Supported)

# Via wrapper (uses extractor project)
./run.sh --example --name test_fixture
./run.sh --spec content_spec.json --name my_fixture

JSON Spec Format (Legacy)

{
  "style": "standard",
  "sections": [
    {
      "title": "1. Requirements",
      "level": 1,
      "content": [
        {"type": "text", "text": "This document describes requirements."},
        {"type": "table", "columns": ["ID", "Name"], "rows": [["1", "Alice"]]},
        {"type": "figure", "description": "Architecture diagram"}
      ]
    }
  ]
}

Output

  • extractor_bugs_fixture.pdf
    - Cached in
    cached_fixtures/
  • Custom output via
    --output
    flag

Dependencies

dependencies = [
    "pymupdf>=1.23.0",
    "reportlab>=4.0.0",
    "typer>=0.9.0",
    "pillow>=10.0.0",
]