Use when JPEG scans are present in sans_to_parse/ directory, or when the user asks to process, transcribe, or convert handwritten math scans into Obsidian notes
Converts handwritten math JPEG scans from sans_to_parse/ into structured Obsidian Markdown notes via a 7-step pipeline. LaTeX conventions, output format, and wikilink rules are defined in the project CLAUDE.md — this skill provides the execution workflow.
REQUIRED SUB-SKILLS: Use obsidian:obsidian-markdown for Obsidian-flavored syntax (callouts, properties, embeds, block IDs).
VAULT TOOL: Use the obsidian CLI to query the running Obsidian instance:
obsidian search:context query="<query>" — full-text search with matching line contextobsidian search query="<query>" — search across notes (file matches)obsidian aliases — list all aliases in the vault (quick topic check)obsidian files folder="math" — list notes in a folderobsidian tag name="<tag>" verbose — list notes with a specific tagobsidian file file="<name>" — resolve a wikilink-style name to file infoobsidian backlinks file="<note>" — find all notes that link to a given noteobsidian unresolved — find unresolved wikilinks across the vaultobsidian tags counts sort=count — list all tags with countsobsidian orphans — find notes with no incoming links (isolated notes)obsidian deadends — find notes with no outgoing links (missing See Also sections)obsidian property:read name="<prop>" file="<note>" — read a frontmatter propertyobsidian property:set name="<prop>" value="<val>" file="<note>" — set a frontmatter propertyobsidian outline file="<name>" — get heading structure of a noteobsidian read file="<name>" — read note content by wikilink-style nameCreate a todo per step. Complete each step for ALL scans before advancing.
sans_to_parse/ to understand contentpower-series-1.jpeg, riemann-integration.jpegScan.jpeg, Scan 1.jpeg, ...) = writing order — use for contextobsidian:obsidian-markdown for full Obsidian syntax reference%%clarification%% (Obsidian comment — hidden in reading view)> [!theorem] callout for theorem statements> [!definition] callout for definitions> [!proof]- foldable callout for proofs (collapsed by default)> [!example] callout for worked examples> [!warning] callout for common pitfalls or subtle points==highlighted text== for key conclusions or critical conditionsobsidian search query="<topic>" and obsidian aliases to check if a note on the topic exists, then obsidian search:context query="<topic>" for full-text matches with context if needednotes/math/ in topic subfolders:
ls notes/math/) and review their contents to understand each folder's scopenotes/math/ directlynotes/Odds & Ends/obsidian:obsidian-markdown Properties section):
aliases, tags, source, date — all requiredsource: field points to final archived path: sources/YYYY-MM-DD/filename.jpeg# > ## > ##### See Also containing wikilinks to related concepts![[note#^block-id]] embeds to reference specific theorems/definitions from other notes rather than restating themflashcards/<subfolder> tag matching the note's folder (e.g., flashcards/analysis-foundations, flashcards/special-topics, flashcards/series-and-convergence, flashcards/integration-and-measure). Then add Q&A cards for ==only the core concepts== a student must internalize:
? format:
State Theorem X.
?
Concise statement with key hypotheses.
[[...]] must use piped kebab-case: [[kebab-filename|Display Name]][[Display Name]] — Obsidian won't resolve itobsidian unresolved to find broken wikilinks across the vaultobsidian backlinks file="<note>" to verify incoming links resolve correctlyobsidian tags counts sort=count to check tag consistency with existing vault conventionsobsidian orphans to find notes with no incoming links — consider adding wikilinks to connect themobsidian deadends to find notes with no outgoing links — candidates for See Also sectionsmkdir -p sources/YYYY-MM-DD # today's date
mv sans_to_parse/*.jpeg sources/YYYY-MM-DD/
Present a final summary that includes:
notes/Odds & Ends/, notes/.obsidian/, notes/copilot/Use subagents to parallelize steps 1-3: