agentsclimarketplace

Run2 pdf parser

Skill cxcscmu/SkillLearnBench/skills/b2-self-feedback-gemini-3.1-pro-preview/schedule-planning/run2_pdf-parser

An improved skill to programmatically parse PDF calendars, mapping drawing coordinates to precise time intervals using PyMuPDF.From its SKILL.md

Install
npx -y skills add cxcscmu/SkillLearnBench --skill run2_pdf-parser

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

1.8 KB, 398 tokens by cl100k_base, as published. Nobody here has run it

Improved PDF Schedule Parsing

This advanced skill automates the extraction of schedules from visual PDFs. Instead of manual inference, it mathematically calculates time blocks by using baseline anchor lines.

Dynamic Time Calculation

By identifying the top-most timeline grid line (e.g., the 12:00 AM line), you can calculate any Y-coordinate's corresponding time.

import fitz

def parse_calendar(pdf_path):
    doc = fitz.open(pdf_path)
    page = doc.load_page(0)
    
    # Extract lines to find the 15-minute grid spacing
    lines = [d["rect"] for d in page.get_drawings() if d.get("fill") is None and d["rect"].height < 2]
    lines.sort(key=lambda r: r.y0)
    
    base_y = lines[0].y0  # The 12:00 AM line
    interval_y = lines[1].y0 - lines[0].y0  # Height of 15 minutes
    hour_height = interval_y * 4
    
    # Extract rectangles (appointments)
    # Exclude the background/grid lines and thin borders by checking width/height and colors
    blocks = []
    for d in page.get_drawings():
        rect = d["rect"]
        color = d.get("fill")
        if color and rect.width > 100:  # Assuming meeting blocks span the column width
            start_hour = (rect.y0 - base_y) / hour_height
            end_hour = (rect.y1 - base_y) / hour_height
            blocks.append({
                "start": start_hour,
                "end": end_hour,
                "color": color
            })
    return blocks

Identifying Flexible Slots

By checking the RGB values of the fill color, we can identify "blue-colored" blocks that denote flexible time and drop them from our strict occupied schedule list.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.