Skip to content
Back to skills

Create Pdf Fixture

ASecurity

Create complete PDF test fixtures combining ReportLab tables and AI-generated images. Orchestrates create-table and create-image skills. Creates PDFs designed to test/expose extractor bugs.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
testingbashtesting

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill create-pdf-fixture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Pdf Fixture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Create Pdf Fixture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-create-pdf-fixture/badge)](https://www.skillsdirectory.com/skills/majiayu000-create-pdf-fixture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: create-pdf-fixture
description: >
  Create complete PDF test fixtures combining ReportLab tables and AI-generated
  images. Orchestrates create-table and create-image skills. Creates PDFs designed
  to test/expose extractor bugs.
allowed-tools: Bash, Read, Write
triggers:
  - create pdf fixture
  - create test pdf
  - generate pdf fixture
  - make test pdf
  - pdf for testing
  - extractor test fixture
  - bug reproduction pdf
metadata:
  short-description: "Create PDF test fixtures (tables + images)"
---

# 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

```bash
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

| Preset | Description | Tests |
|--------|-------------|-------|
| `extractor-bugs` | Reproduces known extractor issues | Empty sections, false tables, malformed titles |
| `simple` | Basic PDF with table and text | Basic extraction |

## Sibling Skills Used

| Skill | Purpose |
|-------|---------|
| `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)

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

## JSON Spec Format (Legacy)

```json
{
  "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

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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.