study-notes · git:20261102.ca8ceec · 2026-11-02 · sha256 0b360a64d211cb48
study-notes git:20261102.ca8ceecA
Immutable. This exact content never changes and is served at /api/v1/blob/0b360a64d211cb48.
--- name: study-notes description: Turn study material — syllabus or course PDFs, markdown files, links — into study notes. Builds a boilerplate outline per chapter and learning objective, then optionally fills notes chapter by chapter. Writes to Notion, an Obsidian vault, or plain markdown. argument-hint: "Source(s) — PDF/.md path or URL — plus optional target (Notion page, Obsidian vault path, or .md path)" disable-model-invocation: true --- # Study Notes Notes exist to be studied: short, easy to scan, and faithful to the source. A wrong or invented point gets memorized, so the source decides every fact. ## Inputs Ask only for what the user did not give, all in one question round. - **Sources** — PDF, `.md`, URL, existing Notion page. Several allowed. Read every source; unreadable → say which and stop. - **Target** — Notion, Obsidian, or plain markdown. - Notion → page URL or name (search if name only). Notion connector missing → say so, offer markdown instead. - Obsidian → vault path, plus folder inside the vault (default: vault root). - Plain markdown → `.md` file or folder path, default current folder. - **Mode** — boilerplate only, or full notes. - **Style reference** (optional) — the user's earlier notes. Given → mirror their headings, markers, and colors over the defaults below. ## Large sources Token-heavy reads (long PDFs, big pages) → subagents, one per chapter, in parallel. Before the first one, ask once which model to use: Sonnet (recommended — cheaper, enough for digests and fact-checks) or Opus (stronger on dense or ambiguous material). Use that model for every subagent in the run. Ask each for a faithful digest: item names exact, learning objectives verbatim (code, level, exact text), ≤15-word gist per other item, every pro/con and ordered list, no outside knowledge, source oddities flagged. Short chapters → read inline. PDF → extract text once to a scratch file (`pypdf`), reuse it for every later read. Pages that extract empty or near-empty, or have images (`page.images`) → read them with the Read tool (renders pages); still unreadable → name them in the report. Source is also the target → snapshot it before Step 2 writes; later reads and Step 4 use the snapshot. ## Step 1 — Outline Extract from the source: chapters, sections, subsections, learning objectives (code, level, exact text), keywords, study time, exam structure. Missing info stays missing — never invent question counts, pass marks, or durations; use `?`. ## Step 2 — Boilerplate - **Introduction**: Paper Structure (per chapter: `? Questions` unless source gives counts, study time in gray), level legend with only levels the source uses, resource links the user gives. - **Per chapter**: `# N. Title`, gray `Keywords:` line (source says keywords are examinable when it lists them), `## N.M Section`, `### N.M.K Short title <level emoji>`, then an `Objective:` line with the exact LO text and an empty spacer for notes. - Headings are short topic names (e.g. "Framework Layering"), not the full LO sentence — the exact wording lives on the `Objective:` line. - Source has no LOs or levels → chapters and sections only; drop Objective lines, legend, and Paper Structure. Level emojis: K1 🟧, K2 🟩, K3 🟪, K4 🟥. Other level schemes → pick distinct square emojis and show them in the legend. Boilerplate only → stop here and report. ## Step 3 — Notes (full mode) One chapter at a time, in order: 1. Digest the chapter (see Large sources). 2. Propose in chat, per subsection: which blocks and their key points. Wait for approval. User said to do all chapters without stopping → skip approval. 3. Add notes under that subsection's `Objective:` line, else under the section heading. 4. Offer the next chapter. Blocks, chosen per content: - Italic definition line → one-sentence meaning of the core term. - Table → comparisons, pros/cons, "X vs Y", items with 2+ attributes. - List → enumerations; keep the source's order when it gives one. - Callout → key takeaway, limitation, rule the source stresses. - Gray line → secondary detail worth keeping but not memorizing first. Rules: - Only what the source says. Keep the source's item names. No outside knowledge, no inferred orderings or chains the source does not state. - Source oddity (typo, contradiction, "three" then lists four) → keep the source wording, add a short gray note. Exams follow the source wording. - Color sparingly: green pros, red cons or critical points, bold for key terms. - Short: 2–3 points per table cell, one line per list item. ## Step 4 — Verify (full mode) After the last chapter, a subagent (model chosen above, else ask) fact-checks this run's notes against the source. Report only: factual errors, unsupported claims, items missing from a list presented as complete. Ask for the verbatim note snippet and source location per finding. Re-check each finding against the source yourself before fixing — subagent output is a lead, not proof. Fix confirmed ones, skip the rest with a reason. Finding in the user's existing content → report, don't fix. ## Output - Notion → follow `references/notion.md`. - Obsidian or plain markdown → follow `references/markdown.md`. One file per course. - Existing note → keep the user's content and edits; insert, never replace the whole note. File exists and is not the target note → ask before overwriting. ## Done Report the page link or file path, chapters covered, and what is left as `?`.