$npx -y skills add luwill/research-skills --skill scholar-slidesUse when the user wants a research paper, arXiv/DOI link, or research topic turned into academic slides — journal club / lab meeting (组会汇报), thesis defense (答辩幻灯片), conference or job talk (学术报告), poster, or grant pitch — or shares a paper and asks to "make slides / 做成 PPT / 讲一下这篇
| 1 | # scholar-slides |
| 2 | |
| 3 | Turn a research paper (or topic) into a **fidelity-first** academic slide deck. Academia |
| 4 | inverts the priorities of a normal deck tool: **source fidelity > polish, evidence > |
| 5 | persuasion, editability > flash.** Equations, tables, numbers, figures, and citations stay |
| 6 | **true text/vector and traceable to the source** — never rasterized by an image model, |
| 7 | never fabricated. |
| 8 | |
| 9 | Design rationale and the survey it is built on live in `docs/`; build plan in `IMPLEMENTATION_PLAN.md`. |
| 10 | |
| 11 | ## Locked stack (see docs/03-design-proposal.md §0) |
| 12 | - **Render backend:** reveal.js + KaTeX → vector PDF (Playwright). Editable PPTX / Beamer later. |
| 13 | - **Default deck type:** lab meeting / journal club (组会) — reading-first, high density. |
| 14 | - **Citations:** Zotero-first (`mcp__zotero__*`), Crossref/arXiv/DOI fallback. |
| 15 | - **Language:** bilingual, English-default. |
| 16 | |
| 17 | ## The non-negotiable integrity gate (ALWAYS on — see references/integrity.md) |
| 18 | Apply at every stage; enforced at Checkpoint 3: |
| 19 | - **Never fabricate** numbers, citations, or figures. Everything traces to the source digest. |
| 20 | - **Math/tables/citations stay vector/text** — never an image model's pixels. |
| 21 | - **Reuse real figures** (bbox-cropped + `Figure N [cite]`); a conceptual schematic may be |
| 22 | redrawn only if labeled "redrawn, not from source". |
| 23 | - **Flag, don't invent:** an unresolved figure/number/citation emits a visible |
| 24 | `[MISSING: …]` / `[UNVERIFIED: …]` placeholder surfaced to the user — never a silent fill. |
| 25 | - **Provenance is mandatory:** every reused asset carries its source; every claim is traceable. |
| 26 | |
| 27 | ## Pipeline (7 stages, 3 human checkpoints) |
| 28 | |
| 29 | ``` |
| 30 | INPUT → 1.INGEST/DIGEST → [CKPT-1] → 2.DECK-TYPE → 3.OUTLINE → [CKPT-2] |
| 31 | → 4.PER-SLIDE SPEC → 5.RENDER → 6.SELF-REVIEW(QA) → [CKPT-3] → 7.EXPORT |
| 32 | ``` |
| 33 | |
| 34 | 1. **Ingest → typed digest** — `references/ingestion.md`. Run |
| 35 | `scripts/prepare_source.py <pdf|arXiv id|arXiv URL>` to build the digest-input bundle |
| 36 | (text, figure/table inventory with bboxes, cropped figures), then synthesize the typed |
| 37 | **paper digest** from it (grounded in the bundle, never invented). |
| 38 | **→ [CKPT-1]** confirm the digest with the user (contributions, headline result, |
| 39 | figure→slide map, any FLAGGED asset). |
| 40 | 2. **Deck-type & parameters** — `references/deck-types.md`. Pick deck type (default 组会), |
| 41 | audience, time budget → slide budget, density register, required archetypes. |
| 42 | 3. **Narrative outline** — `references/narrative.md`. Re-sequence the paper into talk order; |
| 43 | action-title per slide; arc-tension check. |
| 44 | **→ [CKPT-2]** approve the story arc. |
| 45 | 4. **Per-slide spec** — `references/slide-spec.md`. One self-contained, on-disk spec per slide |
| 46 | (layout, content, equations, figures, citations, speaker notes). |
| 47 | 5. **Render** — `references/math.md`, `references/figures-tables.md`, `references/citations.md`, |
| 48 | `references/charts.md`, `references/design-system.md`, `references/export.md`. reveal.js + KaTeX; |
| 49 | real tables; real bbox-cropped figures (furniture-stripped; one panel per slide for multi-panel); |
| 50 | data-bound redrawn charts; Zotero/BibTeX citations. Pick the visual theme via `meta.theme` |
| 51 | (`journal-club` default / `conference`). |
| 52 | 6. **Self-review QA** — `references/qa-self-review.md` + `references/integrity.md`, then the |
| 53 | **aesthetics loop** in `references/aesthetics-review.md`. Integrity scan + static validator + |
| 54 | render screenshots + narrative/timing checks; the render pass also measures geometry |
| 55 | deterministically (canvas voids, figure-text projected below the 12px legibility floor). Then |
| 56 | score the rendered *pixels* on the 6-dimension rubric (adversarial persona), **write the scores |
| 57 | to `<deck>/aesthetics_report.json`** (schema in aesthetics-review.md), and rework any slide with |
| 58 | a dimension ≤ 2 or total < 18 until the report's `rework` list is empty — the QA gate flags a |
| 59 | missing report (P3) and an unspent rework list (P2). It also nudges on bullet-ratio and layout |
| 60 | monotony. |
| 61 | **→ [CKPT-3]** truth sign-off: review every `[MISSING]`/`[UNVERIFIED]` and generated asset. |
| 62 | 7. **Export** — `references/export.md`. Vector PDF (projection) + speaker notes + editable PPTX; |
| 63 | verify the PPTX preserves the spec natively with `scripts/verify_pptx_parity.py` (protects the |
| 64 | minimal-manual-edits promise). Regress the whole corpus with `node scripts/run_benchmark.mjs`. |
| 65 | |
| 66 | Read **only** the reference file for the stage you are in (progressive disclosure — never glob |
| 67 | `references/`). Each stage reads the **confirmed |