Skip to content
Education
Skill

/cheatsheet-generator

Generate LaTeX exam cheatsheets from course materials (PDF/PPTX/MD/images). Use when user says "generate cheatsheet", "make a cheat sheet", "create exam reference sheet", "condense notes", or has course materials to turn into a compact LaTeX review sheet for exams.

From plugin
cheatsheet-generator-skill
1821 skill
Install
$ npx -y skills add evan715823/cheatsheet-generator-skill --skill cheatsheet-generator --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/cheatsheet-generator

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generate LaTeX exam cheatsheets from course materials (PDF/PPTX/MD/images). Use when user says "generate cheatsheet", "make a cheat sheet", "create exam reference sheet", "condense notes", or has course materials to turn into a compact LaTeX review sheet for exams.

SKILL.md

cheatsheet-generator.SKILL.md
name: cheatsheet-generator
description: >
  Generate LaTeX exam cheatsheets from course materials (PDF/PPTX/MD/images).
  Use when user says "generate cheatsheet", "make a cheat sheet",
  "create exam reference sheet", "condense notes", or has course materials to
  turn into a compact LaTeX review sheet for exams.
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Glob
  - Grep

Cheatsheet Generator

You are a cheatsheet generation assistant. Help a university student turn course materials into a dense, color-coded LaTeX cheatsheet that compiles in Overleaf (with XeLaTeX).

The skill directory is `${CLAUDE_SKILL_DIR}`. The working directory is the current working directory unless `$ARGUMENTS` specifies a different path.

Execute the three phases below **in order**.

---

Phase 1: Configuration Collection

Step 1.1 — Scan for materials

Use Glob to find all supported files in the working directory: `**/*.pptx`, `**/*.pdf`, `**/*.md`, `**/*.txt`, `**/*.png`, `**/*.jpg`, `**/*.jpeg`

Step 1.2 — Launch config server

python "${CLAUDE_SKILL_DIR}/scripts/config_server.py" --workdir "<WORKDIR>"

This blocks until the user submits the form and exits.

Step 1.3 — Read config

Read `<WORKDIR>/output/.cheatsheet_config.json`.

---

Phase 2: Read Materials & Generate LaTeX

Step 2.1 — Read all materials

Read every file the user selected. Use the approach below for each file type:

  • **PDF files**: Use pymupdf (fitz) for both text and visual extraction:

1. **Text extraction** — extract all text from every page:

     PYTHONIOENCODING=utf-8 python -c "
     import fitz, sys
     doc = fitz.open(sys.argv[1])
     for i, page in enumerate(doc):
         text = page.get_text()
         if text.strip():
             print(f'=== PAGE {i+1} ===')
             print(text)
     " "<FILE_PATH>"

2. **Page rendering** — render pages with diagrams, charts, or handwritten content as PNG images, then Read them visually (you are multimodal):

     python -c "
     import fitz, os, sys
     doc = fitz.open(sys.argv[1])
     out_dir = os.path.splitext(sys.argv[1])[0] + '_pages'
     os.makedirs(out_dir, exist_ok=True)
     for i, page in enumerate(doc):
         pix = page.get_pixmap(dpi=200)
         out = os.path.join(out_dir, f'page_{i+1:03d}.png')
         pix.save(out)
         print(out)
     " "<FILE_PATH>"

Then use the Read tool on the rendered PNGs to see diagrams, formulas written in images, charts, and handwritten content. For large PDFs (>20 pages), only render pages that likely contain visual content (diagrams, figures) — skip text-heavy pages already captured by step 1.

Combine text and visual information for full understanding.

  • **PPTX files**: A `.pptx` is a zip archive containing XML slides and media.

Use this two-step extraction process: 1. **Text extraction** — run a Python script with `python-pptx` to parse all slides and extract text, tables, notes, and shape structure:

     PYTHONIOENCODING=utf-8 python -c "
     from pptx import Presentation
     import sys, os
     prs = Presentation(sys.argv[1])
     for i, slide in enumerate(prs.slides, 1):
         print(f'=== SLIDE {i} ===')
         for shape in slide.shapes:
             if shape.has_text_frame:
                 for para in shape.text_frame.paragraphs:
                     text = para.text.strip()
                     if text: print(text)
             if shape.has_table:
                 for row in shape.table.rows:
                     cells = [cell.text.strip() for cell in row.cells]
                     print(' | '.join(cells))
         if slide.has_notes_slide and slide.notes_slide.notes_text_frame:
             notes = slide.notes_slide.notes_text_frame.text.strip()
             if notes: print(f'[Notes: {notes}]')
     " "<FILE_PATH>"

2. **Image extraction** — extract all images from the pptx media folder, then read them (you are multimodal and can see images directly):

     python -c "
     import zipfile, os, sys
     pptx_path = sys.argv[1]
     out_dir = os.path.splitext(pptx_path)[0] + '_media'
     os.makedirs(out_dir, exist_ok=True)
     with zipfile.ZipFile(pptx_path) as z:
         media = [n for n in z.namelist() if n.startswith('ppt/media/')]
         for m in media:
             data = z.read(m)
             fname = os.path.basename(m)
             with open(os.path.join(out_dir, fname), 'wb') as f:
                 f.write(data)
             print(os.path.join(out_dir, fname))
     " "<FILE_PATH>"

Then use the Read tool on each extracted image — you can see diagrams, formulas, charts, and read text from images.

Combine the text and image information to understand the full slide deck.

  • **Markdown / Text**: Read directly
  • **Images (PNG/JPG)**: Read directly — you can see images, extract diagrams,

formulas, tables from them

As you read, build a mental outline of key concepts, definitions, theorems, formulas, algorithms, and examples. Prioritize `exam_focus` topics.

Step 2.2 — Read template and example

Read these for reference:

  • `${CLAUDE_SKILL_DIR}/templates/cheatsheet_base.tex`
  • `${CLAUDE_SKILL_DIR}/examples/sample_output.tex`

The example shows the exact style from the student's previous cheatsheets. Match this style precisely.

Step 2.3 — Generate cheatsheet.tex

**CRITICAL: Read the config values from `.cheatsheet_config.json` and apply them exactly. Do NOT use hardcoded defaults. Double-check that the generated tex matches the config before writing the file.**

Read the base template from `${CLAUDE_SKILL_DIR}/templates/cheatsheet_base.tex` and replace every `%%PLACEHOLDER%%` with the value from config:

| Placeholder | Config path | Example | |---|---|---| | `%%PAPER_SIZE%%` | `layout.paper_size` | `letterpaper` | | `%%MARGIN%%` | `layout.margin_mm` + `mm` | `4mm` | | `%%FONT_FAMILY%%` | `layout.font_

Read more
Ships withcheatsheet-generator-skill

Turn your course slides and PDFs into dense, exam-ready LaTeX cheatsheets — powered by Claude Code. One command. Browser-based config. AI-generated LaTeX. Iterative editing loop. Done.

Get the whole plugin
Stats
183
Stars
18
Forks
Maintained
Maintenance
HTML
Language
MIT
License
4mo ago
Last commit
4mo ago
Created

Repo: evan715823/cheatsheet-generator-skill