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.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Study Notes?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mithunwijayasiri-study-notes)
---
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 `?`.