<h1 align="center">
<a href="https://prompts.chat">
Extract every concept, definition, formula, algorithm, code snippet, and diagram from the course PDFs, **strictly aligned to page numbers**. Zero information loss is the target.
Loading actions...
<a href="https://prompts.chat">
TypeScript and ESLint rules that MUST be followed when creating, modifying, or reviewing any file under apps/frontend/, including .ts, .tsx, .js, and .jsx files. Also apply when discussing frontend linting, type safety, or ESLint configuration.
risks
Extract every concept, definition, formula, algorithm, code snippet, and diagram from the course PDFs, strictly aligned to page numbers. Zero information loss is the target.
Always use the /pdf skill to read PDF files. Do not use Python, bash, or any direct file I/O. Invoke /pdf with the uploaded file, then work from its output.
If a file is not already a PDF, stop and ask the user to convert it using /pdf first before continuing.
| Input type | Unit | Reference format |
|---|---|---|
| PDF / slide file | Page number | Lecture X, p. Y |
| Topic list | Section item | Section X.Y |
| Generated syllabus | Syllabus entry | Module X, Section Y |
Use the same format throughout all phases. Do not mix formats.
Invoke the /pdf skill on the uploaded file. Note total page count from the output.
For EVERY page, output one block. Keep blocks dense — no padding:
### Page X (of N) — [Slide title]
**Key content:**
- [Definitions — exact wording]
- [Formulas — $LaTeX$]
- [Algorithms — pseudocode or code block]
- [Diagrams — describe structure, name all labeled elements]
- [Tables — reproduce as Markdown]
- [Examples — reproduce in full]
**Concepts introduced:** [comma-separated]
**[EXPAND]:** [concept — reason] *(omit if nothing to flag)*
Empty/title pages still get a block:
### Page 1 (of 30) — Course Title
**Key content:** [Title page — no substantive content]
**Concepts introduced:** —
Apply the tier set in Phase 0:
| Tier | Page handling |
|---|---|
| Light (≤60p) | Full block per page |
| Medium (61–200p) | Full block per page; write lecture summary after each lecture |
| Heavy (201–400p) | Full block per page; after each lecture, compress to concept-inventory format (concept + location + type only) before moving to next lecture |
For Heavy tier, the concept-inventory format is:
- [Concept name] | Lecture X, pp. Y-Z | [definition/theorem/algorithm/pattern]
This replaces the full block in memory but the full blocks are still written to the extract file.
Pages in file: N → "### Page X" blocks in output: must = N
Content-rich pages: each block ≥ 5 lines of substantive content. If shorter, re-read the page.
## Lecture Summary
**Topic:** [main topic]
**Total pages:** N
**Key concepts (by appearance):** [numbered list — keep brief]
**Prerequisites assumed:** [from earlier lectures]
**[EXPAND] markers:** [list with page refs]
**Open questions:** [unclear or contradictory items]
When the user pastes a topic list instead of a PDF:
1.1, 1.2, 2.1, etc.course-backbone.md with the full outline[From: world knowledge — no source PDF]lecture-XX-extract.md per PDF (zero-padded)course-backbone.md if input was a topic list/pdf skill only