Skip to main content

paper-slides

Generate conference presentation slides (beamer LaTeX → PDF + editable PPTX) from a compiled paper, with speaker notes and full talk script. Use when user says "做PPT", "做幻灯片", "make slides", "conference talk", "presentation slides", "生成slides", "写演讲稿", or wants beamer slides for a conference talk.

설치로 이동

소스 정보

저장소
wanshuiyin/Auto-claude-code-research-in-sleep
최근 소스 활동
2026년 9월 6일 17:32
감지된 SKILL.md 언어
영어
스타
16,461
포크
1,401

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
paper-slides
description
Generate conference presentation slides (beamer LaTeX → PDF + editable PPTX) from a compiled paper, with speaker notes and full talk script. Use when user says "做PPT", "做幻灯片", "make slides", "conference talk", "presentation slides", "生成slides", "写演讲稿", or wants beamer slides for a conference talk.
argument-hint
[paper-directory-or-talk-length] [— style-ref: <source>]
allowed-tools
Bash(*), Read, Write, Edit, Grep, Glob, mcp__codex__codex, mcp__codex__codex-reply
# Paper Slides: From Paper to Conference Talk Generate conference presentation slides from: **$ARGUMENTS** ## Context This skill runs **after** Workflow 3 (`/paper-writing`). It takes a compiled paper and generates a presentation slide deck for conference oral talks, spotlight presentations, or poster lightning talks. Unlike posters (single page, visual-first), slides tell a **temporal story**: each slide builds on the previous one, with progressive revelation of the research narrative. A good talk makes the audience understand *why this matters* before showing *what was done*. ## Constants - **VENUE = `NeurIPS`** — Target venue, determines color scheme. Supported: `NeurIPS`, `ICML`, `ICLR`, `AAAI`, `ACL`, `EMNLP`, `CVPR`, `ECCV`, `GENERIC`. Override via argument. - **TALK_TYPE = `spotlight`** — Talk format. Options: `oral` (15-20 min), `spotlight` (5-8 min), `poster-talk` (3-5 min), `invited` (30-45 min). Determines slide count and content depth. - **TALK_MINUTES = 15** — Talk duration in minutes. Auto-adjusts slide count (~1 slide/minute for oral, ~1.5 slides/minute for spotlight). Override explicitly if needed. - **ASPECT_RATIO = `16:9`** — Slide aspect ratio. Options: `16:9` (default, modern projectors), `4:3` (legacy). - **SPEAKER_NOTES = true** — Generate `\note{}` blocks in beamer and corresponding PPTX notes. Set `false` for clean slides without notes. - **PAPER_DIR = `paper/`** — Directory containing the compiled paper. - **OUTPUT_DIR = `slides/`** — Output directory for all slide files. - **REVIEWER_MODEL = `gpt-6-astra`** — Model used via Codex MCP for slide review. - **AUTO_PROCEED = false** — At each checkpoint, **always wait for explicit user confirmation**. - **COMPILER = `latexmk`** — LaTeX build tool. - **ENGINE = `pdflatex`** — LaTeX engine. Use `xelatex` for CJK text. > 💡 Override: `/paper-slides "paper/" — talk_type: oral, venue: ICML, minutes: 20, aspect: 4:3` ## Optional: Style reference (`— style-ref: <source>`, opt-in) Lets the user steer the talk's **structural** rhythm (story beats, theorem density, figure density inherited from the source paper) toward a reference paper. **Default OFF — when the user does not pass `— style-ref`, do nothing differently from before.** Only when `— style-ref: <source>` appears in `$ARGUMENTS`, run the helper FIRST: ```bash # Resolve $STYLE_HELPER via the canonical strict-safe chain (see # shared-references/integration-contract.md §2). Policy A — gate: # unresolved helper means --style-ref cannot be satisfied, so abort. cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1 if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true fi if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true fi STYLE_HELPER=".aris/tools/extract_paper_style.py" [ -f "$STYLE_HELPER" ] || STYLE_HELPER="tools/extract_paper_style.py" [ -f "$STYLE_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && STYLE_HELPER="$ARIS_REPO/tools/extract_paper_style.py"; } [ -f "$STYLE_HELPER" ] || { echo "ERROR: extract_paper_style.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2 echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2 echo " --style-ref cannot be satisfied; aborting." >&2 exit 1 } STYLE_STATUS=0 CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$? case "$STYLE_STATUS" in 0) ;; # use $CACHE/style_profile.md as structural guidance 2) echo "warning: style-ref skipped (missing optional dep)" >&2 ;; 3) echo "error: --style-ref source failed; aborting slides" >&2 ; exit 1 ;; *) echo "error: helper failed unexpectedly; aborting slides" >&2 ; exit 1 ;; esac ``` Sources accepted: local TeX dir / file, local PDF, arXiv id, http(s) URL. Overleaf URLs/IDs are rejected — clone via `/overleaf-sync setup <id>` first and pass the local clone path. **Strict rules** (full contract in `tools/extract_paper_style.py` docstring): - Use `style_profile.md` to align section-budget tendency and theorem-environment density. Talk-type slide count above still takes precedence. - **Never copy speaker-note prose, slide titles, or examples** from anything reachable through the cache. The talk content is from the user's paper, not the reference. - **Never pass `— style-ref` (or the cache contents) to the GPT-6-Astra reviewer sub-agent** — the reviewer must judge the talk's clarity on its own merits. ## Talk Type → Slide Count | Talk Type | Duration | Slides | Content Depth | |-----------|----------|:------:|---------------| | `poster-talk` | 3-5 min | 5-8 | Problem + 1 method slide + 1 result + conclusion | | `spotlight` | 5-8 min | 8-12 | Problem + 2 method + 2 results + conclusion | | `oral` | 15-20 min | 15-22 | Full story with motivation, method detail, experiments, analysis | | `invited` | 30-45 min | 25-40 | Comprehensive: background, related work, deep method, extensive results, discussion | ## Venue Color Schemes Same as `/paper-poster-html`: | Venue | Primary | Accent | Background | Text | |-------|---------|--------|------------|------| | NeurIPS | `#8B5CF6` | `#2563EB` | `#FFFFFF` | `#1E1E1E` | | ICML | `#DC2626` | `#1D4ED8` | `#FFFFFF` | `#1E1E1E` | | ICLR | `#059669` | `#0284C7` | `#FFFFFF` | `#1E1E1E` | | CVPR | `#2563EB` | `#7C3AED` | `#FFFFFF` | `#1E1E1E` | | GENERIC | `#334155` | `#2563EB` | `#FFFFFF` | `#1E1E1E` | ## State Persistence (Compact Recovery) Persist state to `slides/SLIDES_STATE.json` after each phase: ```json { "phase": 3, "venue": "NeurIPS", "talk_type": "spotlight", "slide_count": 10, "codex_thread_id": "019cfcf4-...", "status": "in_progress", "timestamp": "2026-03-18T15:00:00" } ``` **On startup**: if `SLIDES_STATE.json` exists with `"status": "in_progress"` and within 24h → resume. Otherwise → fresh start. ## Workflow ### Phase 0: Input Validation & Setup 1. **Check prerequisites**: ```bash which pdflatex && which latexmk ``` 2. **Verify paper exists**: ```bash ls $PAPER_DIR/main.tex || ls $PAPER_DIR/main.pdf ls $PAPER_DIR/sections/*.tex ls $PAPER_DIR/figures/ ``` 3. **Backup existing slides**: if `slides/` exists, copy to `slides-backup-{timestamp}/` 4. **Create output directory**: `mkdir -p slides/figures` 5. **Detect CJK**: if paper contains Chinese/Japanese/Korean, set ENGINE to `xelatex` 6. **Determine slide count**: from TALK_TYPE and TALK_MINUTES using the table above 7. **Check for resume**: read `slides/SLIDES_STATE.json` if it exists **State**: Write `SLIDES_STATE.json` with `phase: 0`. ### Phase 1: Content Extraction & Slide Outline Read `paper/sections/*.tex` and build a slide-by-slide outline. **Slide template by talk type**: #### Oral (15-22 slides) | Slide | Purpose | Content Source | Figure? | |:-----:|---------|----------------|:-------:| | 1 | Title | Paper metadata | No | | 2 | Outline | Section headers | No | | 3-4 | Motivation & Problem | Introduction | Optional | | 5 | Key Insight | Introduction (contribution) | No | | 6-9 | Method | Method section | Yes (hero figure) | | 10-14 | Results | Experiments | Yes (per slide) | | 15-16 | Analysis / Ablations | Experiments | Yes | | 17 | Limitations | Conclusion | No | | 18 | Conclusion / Takeaway | Conclusion | No | | 19 | Thank You + QR | — | QR code | #### Spotlight (8-12 slides) | Slide | Purpose | Content Source | Figure? | |:-----:|---------|----------------|:-------:| | 1 | Title | Paper metadata | No | | 2-3 | Problem + Why It Matters | Introduction | Optional | | 4 | Key Insight | Contribution | No | | 5-6 | Method | Method (condensed) | Yes (hero) | | 7-9 | Results | Key results only | Yes | | 10 | Takeaway | Conclusion | No | | 11 | Thank You + QR | — | QR code | #### Poster-talk (5-8 slides) | Slide | Purpose | Content Source | Figure? | |:-----:|---------|----------------|:-------:| | 1 | Title | Paper metadata | No | | 2 | Problem | Introduction (1 slide) | No | | 3 | Method | Method (1 slide) | Yes | | 4-5 | Results | Key result only | Yes | | 6 | Takeaway + QR | Conclusion | QR | **For each slide, specify**: - Title (max 8 words) - 3-5 bullet points (max 8 words each) - Figure reference (if any) from paper/figures/ - Speaker note (2-3 sentences of what to say) - Time allocation (in seconds) **Output**: `slides/SLIDE_OUTLINE.md` **🚦 Checkpoint:** ``` 📊 Slide outline ready: - Talk type: [TALK_TYPE] ([TALK_MINUTES] min) - Slide count: [N] slides - Figures used: [N] from paper/figures/ - Time budget: [breakdown] Slide-by-slide outline: 1. [Title slide] 2. [Motivation — 1.5 min] 3. [Problem statement — 1 min] ... Proceed to drafting? Or adjust the outline? ``` **⛔ STOP HERE and wait for user response.** This is the most critical checkpoint — the outline determines the entire talk flow. Options: - **"go"** → proceed to Phase 2 - **adjustments** (e.g., "merge slides 3-4", "add a demo slide", "cut the ablation") → revise - **"stop"** → save to `slides/SLIDE_OUTLINE.md` **State**: Write `SLIDES_STATE.json` with `phase: 1`. ### Phase 2: Slide-by-Slide Content Drafting For each slide in the outline, draft the actual content. **Presentation rules (enforced strictly)**: | Rule | Rationale | |------|-----------| | **One message per slide** | If a slide has two ideas, split it | | **Max 6 lines per slide** | More than 6 lines = wall of text | | **Max 8 words per line** | Audience reads, not listens, if text is long | | **Sentence fragments, not sentences** | "Improves F1 by 3.2%" not "Our method improves the F1 score by 3.2 percentage points" | | **Figure slides: figure ≥60% area** | The figure IS the content; bullets are annotations | | **Bold key numbers** | "Achieves **94.3%** accuracy" |
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기