بنقرة واحدة
academic-notes
Content conventions, examples, and tooling for course notes under special/academia.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Content conventions, examples, and tooling for course notes under special/academia.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Repository-wide tooling including init wrapper, pack/publish utilities, and all helper scripts. Links to tools-special and tools-templates for subfolder details.
Ingest Wikipedia HTML, normalize links/media, and archive to knowledge base.
Create and maintain assignment pages (problem sets, homework, project milestones) under special/academia/<INSTITUTION>/<COURSE>/assignments/.
Help the user add spaced-repetition flashcards (cloze deletions or Q/A pairs) to existing Markdown notes across the repository. The skill encapsulates the multi‑step process the user follows in their finance lecture notes (e.g. FINA 3103) and elsewhere: read the prose, identify key terms, dates, formulas and logical assertions, and wrap them using flashcard markup (`{@{ }@}`, `::@::`, `:@:`). There are three supported forms: - **Cloze** (`{@{ }@}`) hides arbitrary text inside paragraphs. - **Two-sided QA** (`::@::`) on a single line, yielding two cards. - **One-sided QA** (`:@:`) on a single line, yielding a single card. For the QA formats remember the line-only rule; if visual separation is needed insert `<br/>`/`<p>` instead of newline characters. Representative examples later in this document illustrate all three types. Use existing flashcard files as style guides and adapt the output based on user feedback. The skill also suggests regeneration commands once flashcards are inserted.
Archive online content into archives/ with automatic index.md updates via pyarchivist tool.
Regenerate programmatically-generated content blocks in knowledge base notes using pytextgen.
| name | academic-notes |
| description | Content conventions, examples, and tooling for course notes under special/academia. |
This skill is the authoritative long-form guide for creating and maintaining course notes under special/academia/<INSTITUTION>. The matching instruction file is a quick-reference checklist for agents; this file owns the detailed policy. The course template owns only scaffold-facing reminders.
Flashcards are generated automatically by the build system; do not run
init generate manually.
SKILL.md — authoritative workflow and policy reference.course-template.md — scaffold for new course index.md pages.check.py — validator entry point. The validator is always at
.agents/skills/academic-notes/check.py; do not recurse through the repository to find it.check_mods/* — validator rules and implementation modules.find_wikipedia.py — helper for discovering canonical general/ article
titles when a course note wants to link outward.tests_a7392be/* — validator and helper tests for this skill folder.🔥 NEVER run
uvcommands from inside this folder. This folder has its ownpyproject.toml(fortytype-checker config only), so running ANYuv runcommand here (pytest, check.py, or anything else) will create trash (.venv/,uv.lock) inside the skill folder AND fail because dependencies are missing.The ONLY safe cwd for
uv runis the repo root (/Users/polyipseity/dev/monorepo/self/information/). Alwayscdback to repo root first, or use absolute paths from wherever you are.Correct examples (run from repo root):
uv run pytest .agents/skills/academic-notes/tests_a7392be/ -k "test_name"uv run .agents/skills/academic-notes/check.py --max-per-rule 0 special/academia/HKUST/MATH\ 2431/Wrong examples (DON'T do this):
cd .agents/skills/academic-notes/ && uv run pytest ...← WRONGcd .agents/skills/academic-notes/ && uv run check.py ...← WRONG
SKILL.md owns detailed writing, restructuring, validator, and note-family
policy..agents/instructions/academic-notes.instructions.md is the short,
agent-facing checklist for quick triage.course-template.md owns the minimal scaffold and fill-in reminders for new
course indexes.index.md section link in the same task.$...$ or $$...$$, keep math on one
source line, and avoid putting LaTeX inside emphasis. Use $$...$$ on the same line as surrounding text (not on its own line). Accounting notes should avoid LaTeX entirely._italic_ and __bold__.AGENTS.md. Keep it concise,
course-specific, titled exactly # <course code> agent instructions, and free of flashcard markup.AGENTS.md. Suppression
comments belong in the content file that needs them.general/ files automatically. Use the Wikipedia
helper only to discover canonical titles for links; course content still lives under special/academia/<INSTITUTION>/<COURSE>/.Use this workflow whenever you add or revise course content.
course-template.md when creating a new course index.md.<course folder>/AGENTS.md
with the exact title # <course code> agent instructions.flashcard/active/special/academia/HKUST/COMP_3031 or
flashcard/active/special/academia/Pusan_National_University/IT3000504.logistics with grading and chosen-section metadata.children: in teaching order and include [AGENTS](AGENTS.md) only
when the file actually exists.index.md pages, order major top-level sections as
## children, then ## logistics, then ## overview; keep later sections in functional or chronological order after that.## overview section in the course root for official scope
bullets, topic-to-file mapping, and other high-value orientation material.index.md anchors and session links in the same pass.When building scaffolds, keep index.md pages lean. Avoid duplicating long calendars or schedule prose across course roots, folder indexes, and leaf pages when a child page can own the details more cleanly. Use a flat leaf file such as tutorial 1.md when no subpages or local attachments are expected; use a folder with index.md only when the item is likely to accumulate children of its own.
Korea_University/ISC213/questions/quiz_1.function/index and
language/in/<language>.institution, name, credits), insert --- before
the course description.## children first, then ## logistics, then ## overview.sections:, use one key for the chosen stream, then list all stream IDs
and their logistics under that key.## week N lecture, ## week N lecture 2,
## week N tutorial, and ## week N lab.status: metadata rather than silently skipping the week.topic:. Use status: public holiday: <name>
when known, otherwise status: no class.When a regular lecture, tutorial, or lab slot is used for an examination (midterm, final, quiz, or other formal assessment), keep the session's week heading continuous rather than dropping it. This preserves the chronological skeleton and reminds readers that the slot was occupied. Use this pattern:
## week N lecture, ## week N tutorial,
etc.) as-is.datetime: and venue: — the exam occupies the regular time and
room.status: unscheduled; <exam name> to mark the slot (e.g.,
status: unscheduled; midterm examination). This mirrors the existing status: no class / status: public holiday: <name> convention for other non-lecture sessions.topic: since no new subject matter is taught.[§ <exam section>](#<anchor>) link pointing to the dedicated exam
section elsewhere in the index (typically a separate ## <exam name> heading later in the file). The section symbol § makes the link visually distinct from topic references.Each exam gets its own top-level section elsewhere in the course index.md, typically near the end after all regular sessions. Use a lowercase heading: ## midterm examination or ## final examination. The section documents the exam's logistics, the student's performance, and a reflective error report.
Metadata fields (order within the section is flexible; list them grouped by function). Links to course materials (e.g., [questions / ...](...)) must appear after the report: field, not before it.
datetime: — ISO 8601 with duration, same format as session blocks.
venue: — Room or hall name.
scope: — Optional simple inline list of topics covered (
e.g., scope: topic 1, topic 2, topic 3). Omit if the exam is cumulative and the course overview already lists all topics.
format: — Document the exam conditions as a YAML list of single-key
mappings (bullet items), not as a flat map. Common keys:
calculator: — yes / nocheatsheet: — yes / no / yes (unlimited) / yes (one A4 page)referencing: — e.g., closed book, closed notesprovided: — Materials handed out with the exam, or (none)questions: — e.g., long questions ×8 or question ×5 (with subquestions)note: — Optional free-form note about unexpected exam conditions (e.g.,
an error found mid-exam that added extra time). Always present this field even if empty; use (none) for no content.
grade: — Personal score (e.g., 89/100). When bonus marks are
included, use the form base+bonus/max+max bonus
(e.g., 80+5/100+10). Nested fields:
letter grade: — Letter grade (e.g., A+), or (none) if unknown.statistics: — Class statistics. Group values under a session key
that identifies the lecture section the exam belongs to (the course section identifier such as L1, not the week number). Include all of the following keys, using (none) for any value that is unavailable: timestamp, count, mean, standard deviation, low, lower quartile, median, upper quartile, high, distribution, and data.timestamp: — Set to the Canvas announcement posting datetime (ISO 8601 with timezone), not the exam start/end time. Extract from the announcement page's "Posted" metadata. When no announcement is available, use the data-extraction date.
data: — Use (none). Do not link to Canvas or any external
LMS. Source data belongs in a course-local source folder (e.g.,
.math2431sources/).
Canvas single-student view provides: mean, median, high, low, upper quartile, lower quartile (displayed as "Upper Quartile", "Lower Quartile"). It does not provide: standard deviation, count, distribution — use (none) for those fields.
breakdown: — Optional per-question scores. One bullet per question
using score/max format (e.g., Q11: 8/10). When the per-question max is unknown, omit the /max part entirely (e.g., Q11: 5). If a question includes bonus marks, use base+bonus/max+max bonus (e.g., Q13: 8+0.5/8+2).report: — Optional retrospective analysis using flashcards (::@::). Each
bullet covers a mistake, surprise, or lesson learned. Use nested bullets for sub-topics. This section is the most valuable part for future review; write substantive cards that explain why the mistake happened and what to do differently. Include the point deduction in parentheses (e.g., (–1) or (+1.5)) after the topic name. Always present this field even if empty; use (none) as the sole bullet for no content (not (to be filled) or other placeholders).
check: — Optional paper-checking session. Sub-fields:
datetime: and venue: as usual.report: — Optional nested section documenting what was
contested and whether the score changed. Use the same (–N) / (+N) notation as in the main report.A course-grade summary placed in an ## aftermath section after the final exam. Uses a subset of the exam metadata fields:
grade: — Overall course grade as score out of total (e.g., 89.15/100).
Do not write the marking scheme formula or percentage.
letter grade: — Always present; the letter grade (e.g., A+), or
(none) if unknown.statistics: — Class statistics. Group values under the course's lecture
section key (e.g., - L1:), using the same format as exam statistics.Announcement preservation: Official exam announcements (typically from Canvas or other LMS) contain authoritative logistics and can shift in time or venue. Preserve them as quoted blocks (>) after the exam section, and preserve the original formatting (bold, italic, underline, color, etc.). Use --- to separate the structured metadata from the announcement prose. For Canvas-specific extraction patterns, see § Extracting exam data.
Linking: Each exam section is the target of [§ <exam name>](#<anchor>) links from the week sessions in the same index.md. Ensure the section heading's auto-generated anchor matches the link target.
When gathering scores and logistics from Canvas or other LMS sources, these practical patterns apply across courses.
Statistics from Canvas grades page: Open a single assessment column in the Canvas gradebook's single-student view. The page HTML embeds per-assessment statistics as plain text. In Python, extract with:
import re
pattern = (
r"Score\s+out\s+of\s+(\d+\.?\d*)\s+([^Z]+?)"
r"(?:Your\s+Score[^Z]+?)?"
r"Mean\s+([\d.]+)\s+Upper\s+Quartile\s+([\d.]+)\s+"
r"Lower\s+Quartile\s+([\d.]+)\s+Median\s+([\d.]+)\s+"
r"High\s+([\d.]+)\s+Low\s+([\d.]+)"
)
for m in re.finditer(pattern, html_text, re.DOTALL):
print(m.groups())
Alternatively, filter the page's stripped text for "out of" lines followed by "Median" to locate stat blocks. Each extracted block maps to one assessment (problem set, midterm, final, etc.).
Exam announcements from Canvas: Canvas announcement HTML is densely styled. Strip <style>, <script>, and all HTML tags to recover readable plain text, then preserve the result as a quoted block (>) under the exam section. Include the announcement author and timestamp if visible in the source to maintain provenance.
Per-question breakdown from PDF: When the instructor releases a scanned
PDF with per-question scores, extract using PyMuPDF (import fitz) if
pdftotext is unavailable:
import fitz
doc = fitz.open(path)
for page in doc:
text = page.get_text("text")
Map each extracted score to its question label following the exam's question numbering (e.g., Q1–Q5 multiple choice, Q6–Q10 true/false, Q11–Q14 long questions), which is typically indicated by the PDF layout.
Grades notation: Canvas displays "Your Score: X out of N" without explicit bonus mark breakdown. Use the simple X/N form unless the course separately documents bonus marks, in which case use the base+bonus/max+max bonus form instead.
aftermath sectionA ## aftermath section appears after all exam sections to record the final course outcome. Sub-sections:
### total — Final course grade with grades: and statistics: fields
in the same format as exam sections (see above). Use (none) when no data is available.The aftermath section typically does not have report: or check: since those belong to individual exam sections; flashcard-worthy course-level retrospectives, if any, go in the final session entry instead.
Topic notes (standalone .md files for a concept, theorem, or chapter section) follow a consistent prose-and-flashcard pattern extracted from existing notes in the repository. This pattern keeps the exposition readable and the flashcards self-contained.
Section structure. Each major section in a topic note should follow this template:
<!-- check: ignore-next-line[header_style]: proper noun -->).--- separator.Flashcards for this section are as follows:::@:: flashcards.Critical rules for flashcard placement and grouping:
--- ⇒ Flashcards for this section are as follows: ⇒ bullet‑list block. Treat all sections the same — the rule is identical for every section.**superposition.**) inside the same flashcard bullet list rather than creating new headings. This avoids heading‑duplication errors (MD024) while keeping cards organized.Flashcard content conventions.
::@:: format (two-sided: left and right each
generate a card). The left side should be a short, descriptive question (not just a label), and the right side should be a self-contained answer.::@:: cards across
lines.concept / definition ::@:: The definition in one sentence.).$...$, $$...$$) inside flashcards as needed, keeping it
on the same line.<p> if paragraph separation is needed.Lint comments. Every flashcard that contains math uses the two_sided_calc_warning lint suppression:
<!-- check: ignore-line[two_sided_calc_warning]: conceptual -->
Place this comment between the ::@:: answer content and the end of the line.
These comments appear in a trailing position on the flashcard line.
LaTeX ordinal convention. Ordinals involving math variables must use a hyphen between the variable and the ordinal suffix. Write $k$-th, $(k-1)$-th, $n$-th, $i$-th, $(i+1)$-th — never $k$th, $(k-1)$th, $n$th, $i$th, $(i+1)$th. Without the hyphen, LaTeX renders the character sequence literally (e.g., $k$th produces "kth" in roman) because there is no \th command, breaking both display and readability. This applies to all ordinal suffixes (-th, -st, -nd, -rd) and all math-mode expressions.
<p> paragraphing convention for flashcards. When a ::@:: flashcard contains multiple logical paragraphs, insert <p> between them for readability in the source. Always include a space before and after <p>:
- topic / label ::@:: First paragraph text. <p> Second paragraph text. <p> Third paragraph text.
The spaces around <p> keep the source readable without affecting HTML rendering. Use <p> only when the flashcard genuinely has multiple distinct paragraphs — do not split single-sentence cards.
No <b> / </b> HTML tags in flashcards. Do not use <b> or </b> for bold text in flashcards — use __ (Markdown bold) instead. Unlike <p>, which is the standard way to create paragraph breaks in single-line source, <b> has a straightforward Markdown equivalent (__) and mixing HTML bold into flashcard lines creates a maintenance burden. This rule is stricter than the general Markdown convention (where <b> is technically valid) because flashcard lines must be easy to read and edit at a glance. The linter will flag any remaining <b> / </b> as errors.
Opening prose for topic notes. The file-level opening section (before any ## headings) should start with one to three paragraphs of motivating prose that explains why the concept matters and how it fits into the broader narrative of the course. This is followed by a --- separator and 2–3 overview flashcards that capture the high-level motivation, key applications, and structural themes of the topic.
AGENTS.md, not in hidden comments in
index.md.# <course code> agent instructions.AGENTS.md.Before creating a new topic note, classify the incoming material:
Also follow these rules:
topic: lines and short lecture-summary prose in
index.md whenever a topic note grows materially deeper, even if its section anchors stay unchanged.§ links and a small number of workflow or safety flashcards.For mathematically substantive notes, the prose and flashcards should usually include the governing formula, the derivation or proof sketch, the intuition for the key step, and a worked example.
Key expectations:
Honors courses deserve more rigor, not merely more words.
Machine-learning notes should preserve derivations, notation discipline, and the distinction between modeling, optimization, and decision.
Use these defaults:
prediction minus target, and numerical-stability advice such as logsumexp or max-shift.classification.md and logistic regression.md, prefer
putting performance metrics in classification.md, including binary and multiclass macro, micro, and weighted formulas..reverse() on diode-like components when polarity requires it.Questions pages (problem sets, practice exams, tutorial questions) use different conventions from topic notes.
Solution structure. A well-structured solution follows a predictable skeleton: decompose the target expression → apply the relevant bound, inequality, or theorem → evaluate the limit → state the conclusion. Organize each proof around this flow.
Cloze granularity. Each {@{...}@} should wrap one complete reasoning step (claim + justification), not individual symbols or entire paragraphs. This keeps each card reviewable without overwhelming the reader.
Multi-cloze paragraph sequencing. A single paragraph can contain many clozes in sequence, each covering one short step:
By {@{Chebyshev's inequality}@}, {@{$$P(\dots)\le\frac1{n^2\varepsilon^2}\sum\frac{m}{\log m}$$}@}.
Split {@{the sum at $\lfloor\sqrt n\rfloor$}@}: …
This creates a linear fill-in-the-blank review flow. Reserve separate paragraphs with explicit markers (First, Second, Third) for longer independent sub-arguments.
Blockquote formatting. Place each official problem inside a blockquote (>). Within a single blockquote, use <p> tags to create paragraph breaks. Between adjacent blockquotes (separate problems), insert a blank line containing <!-- markdownlint MD028 --> to suppress the adjacent-blockquote linter rule.
Blockquote continuation discipline. Every line inside a blockquote must begin with > — including blank lines between display math and prose, blank lines between paragraphs, and lines containing only display math delimiters. A single blank line without > terminates the blockquote. This is the most common Markdown formatting pitfall when writing multi-line solutions inside blockquotes. The fix is simple: every empty line between > lines also needs >:
> $$f_X(x) = \lambda e^{-\lambda x}$$
>
> The CDF is obtained by integrating.
Not:
> $$f_X(x) = \lambda e^{-\lambda x}$$
The CDF is obtained by integrating.
Cloze-in-LaTeX rule. {@{ }@} must never appear inside $…$ or $$…$$ delimiters — pytextgen cannot parse them there. Instead, wrap the entire math expression from outside: {@{$\dots$}@} or {@{$$…$$}@}.
Technique-level clozes. Cloze the name of the heuristic or method ({@{Swap sum order}@}, {@{the triangle inequality}@}), not just the algebraic outcome. This tests recognition of which technique applies.
Solution elaboration. Show intermediate steps: include the antiderivative and its evaluation, the geometric-series closed form, the factorial-ratio simplification, etc. Do not jump from setup to final answer.
Cross-referencing. When a formula or technique derived in one problem is reused in another, cite the earlier problem explicitly (e.g., (from Problem 2(b))).
Multi-paragraph blockquote math fix. When a blockquote paragraph contains display math ($$…$$) followed by more prose, the academic-notes validator may flag no_soft_wrap_paragraph. Insert a blank blockquote line (>) between the display math and the following prose to separate them into distinct paragraphs.
Inline solution layout. Within a single problem blockquote, place the question text first, then a blank line, then > Solution: on its own line. This keeps each prompt and its solution visually self-contained without splitting into separate blocks.
Topic orientation list. Include a brief comma-separated topic list near the top of the page (before the first problem) for quick scanning. This serves as a compact table of contents.
Source attribution for supplementary questions. When the page includes extra or externally sourced problem sets, separate them with --- and add <!-- Source: <description> --> on the next line.
Multi-part labeling. Label sub-answers as (a), (b), (c) inline within the solution prose. Use a list format (> - (a)) inside the blockquote when the parts are long.
Key equivalence proofs. When a solution relies on a non-trivial equivalence (e.g., F^{-1}(u)≤x ⇔ u≤F(x)), include a brief two-direction proof using ($\Rightarrow$) ... ($\Leftarrow$) or (⇐) / (⇒) right after stating the equivalence. Typically one direction uses a sup definition and right-continuity argument, the other uses monotonicity.
Case breakdown. When the formula differs by parity, sign, or other condition, use explicit headings like "For odd $n$, … For even $n$, …" with separate formulas in each branch.
Clozing bullet-list case splits. When case splits are presented as a bullet list, wrap each bullet's content in {@{ }@} while keeping the - prefix outside. When a bullet states both a condition and its consequence, cloze them as separate units: - {@{condition}@}, giving {@{result}@} (or {@{so ...}@}, {@{hence ...}@}). This tests cause-effect reasoning within each case.
Intuition-first for non-obvious proofs. When a proof technique is not the first thing a reader would think of, precede the algebraic derivation with a brief "The intuition is that…" paragraph explaining the strategic insight. This teaches why one would choose the approach before showing how it works, building transferable problem-solving skills. For example, before the Hölder manipulation in a Minkowski proof: "The intuition is that Minkowski's inequality resembles the triangle inequality for norms; to prove it using Hölder, we need to turn $|f+g|_p$ into a product so that Hölder applies."
Prefer direct notation over unnecessary indirection. Use quantities directly (e.g., $E[Y\mid X]$) rather than introducing intermediate variables (e.g., $\theta(X)=E[Y\mid X]$) unless the intermediate is reused multiple times or significantly improves readability. Unnecessary indirection adds cognitive overhead without clarifying the argument.
Create a topic note when a concept deserves a durable, reusable home. Topic notes should read like compact encyclopedia entries: explanatory prose first, then flashcards immediately after each section.
::@:: or :@:), not cloze {@{ }@}.
Exception: accounting journal-entry worked examples embedded in topical notes may use cloze inside quoted scenarios, tables, calculations, and short explanations.general/, use the canonical article title but do not create
or edit the general/ file as part of course-note work.definition or Bayes theorem finite, not probability measure / definition unless nested context requires it.Every section and subsection in a topic note must have its own --- and
flashcard block. Subsection flashcards must live under their own subsection heading, not under the parent section's flashcard block.
The suppression reason "cards in parent section flashcard block" and other similar reasons for
header_flashcard_presence are not allowed. If a subsection lacks its own flashcard block, add one.
If a topic note has an overview section followed by representative example subsections, keep the detailed flashcards with the matching subsection rather than concentrating most of the cards at the end.
When the prose only needs a small clarification or comparison, enhance the existing flashcards instead of spawning near-duplicates.
When the prose gains a substantial cluster of distinctions, examples, or counterexamples, add new flashcards instead of overstuffing one old card.
Do not insert explanatory prose between a section's horizontal rule (---)
and Flashcards for this section are as follows:. Place any new prose above the --- separator, or convert the clarification into flashcards, so the flashcard heading always remains directly under the separator.
Flashcard question phrasing. Each ::@:: left-hand side must be a
descriptive phrase that uniquely identifies the concept. Use a category / specific-description format, all on one line. Avoid terse labels like Poisson process: definition — the left side should be independently understandable. Examples from existing notes:
Kolmogorov axiom (P1) / normalization ::@:: $P[\Omega] = 1$algebraic properties / complement rule ::@:: $P[A^c] = 1 - P[A]$continuity / continuity from below ::@:: If $A_1\subseteq A_2\subseteq\cdots$ then $P[\bigcup_j A_j] = \lim_{n\to\infty} P[A_n]$.Overview flashcard. The first section's flashcard block must begin with an
overview ::@:: <single-sentence definition> card. For other sections, consider an overview card at the start of that section's flashcard block as well.
Lint suppression comments. Every ::@:: flashcard line MUST end with a
trailing lint suppression comment, except when the card legitimately triggers a calculation warning that should not be suppressed. Standard patterns:
<!-- check: ignore-line[two_sided_calc_warning]: conceptual --> for
conceptual cards (definitions, overviews, interpretations, examples without heavy algebra).two_sided_calc_warning suppression since the warning is legitimate there.<!-- check: ignore-next-line[header_style]: proper noun -->.Elaborated answers. The right-hand side of a ::@:: card should include
contextual framing beyond the bare formula. For proof-based cards, embed the key steps with "Derivation:" or "Proof:" inline. Examples:
algebraic properties / inclusion-exclusion for two sets ::@:: $P[A\cup B] = P[A] + P[B] - P[A\cap B]$, proved by disjoint union $B = (A\cap B)\cup(B\setminus A)$ and additivity.For "iff" theorems, embed both direction sketches in the same card so the
reader can review the complete logical equivalence. Use "Proof sketch (forward direction):" and "Proof sketch (reverse direction):" markers within the right-hand side, separated by <br/>.`
Keep the same conceptual level. Group cards by conceptual level; do not mix high-level conceptual cards with hyper-specific formula cards under the same heading.
Accounting courses should place each journal-entry example in the most specific topical note rather than defaulting to a course-wide journal entries.md collector.
Flashcards for this section are as follows: begins, the remainder of the section should be flashcards only until the next header. as the thousands separator.{@{text}@}.index.md links so readers are routed directly to the topical home.Question pages are not topic notes. They usually do not need the “Flashcards for this section are as follows:” rubric.
Use these rules:
questions/index.md plus smaller
child pages such as tutorial weeks, problem sets, review sets, or exam blocks.- topics: line
listing the major concepts covered (for example - topics: medians of distributions, sigma-algebras, CDFs). This helps readers quickly identify the material tested.Solution: instead of Solution sketch: and include concise but complete
solution logic.(a), (b), etc. within the solution prose rather than using separate headings.Solution: as one source paragraph line; avoid manual soft
wrapping for that style.{@{ }@}. This turns the prose solution into a complete fill-in-the-blank review tool. Each cloze still wraps a complete unit (one formula, one claim, one method), but the coverage is near-exhaustive across the entire solution.{@{$E[X]=\int_\Omega X\,dP$}@} is {@{the Lebesgue integral...}@}. This tests both symbolic recognition and verbal understanding as distinct review items.{@{the layer-cake representation (or tail-sum formula)}@}.<p> for paragraph breaks and
<br/> for line breaks inside single-line source paragraphs. This keeps the markdown source continuous (no hard line breaks) while producing visual separation in the rendered output.(from Problem 2(b))). This builds a proof dependency graph that rewards cumulative study.{@{Swap sum order}@} or {@{completing the square}@}). This tests whether the reader can recognize which method applies — a key problem-solving skill — rather than just recalling the mechanical result.--- followed by <!-- Source: <description> -->. This keeps provenance clear without cluttering individual problem blocks.**Alternative (method name):** or **Alternative (approach, per hint):** to separate them. This shows readers the equivalence between techniques and reinforces when each method is natural to apply.(Recall the gamma function $\Gamma(\alpha)=\int_0^\infty u^{\alpha-1}e^{-u}\,du$ ...). This keeps the solution self-contained and reduces friction during spaced-repetition review.> The quadratic form simplifies to $$...$$). This avoids triggering the no_soft_wrap_paragraph validator rule while keeping the math visually clear. The text before the math serves as a logical premise or label for the expression that follows.{@{by the spectral theorem}@}), then the key formula ({@{$\Sigma=Q\Lambda Q^\top$}@}), then the conclusion that follows ({@{the density integrates to 1}@}). This tests recall of the method, its mathematical expression, and the logical consequence — a deeper form of active recall than testing any one layer alone. Combine with <p> and display math so the reasoning chain is both testable and readable.$E[X\mid Y]=\frac{r}{p}\mathbf 1_{\{Y=1\}}+\frac{p-r}{1-p}\mathbf 1_{\{Y=0\}}$. This keeps the result compact, self-contained, and directly testable via cloze — the reader must match each indicator condition to its expression.When a Canvas quiz is converted into notes, use a paired public/private layout rather than trying to make one page serve both goals.
special/academia/<INSTITUTION>/<COURSE>/questions/quiz N.md with an active flashcard tag and a ## hints section.## content section.assignments/online quiz N/index.md stub once the
quiz has a home in questions/. Even if the LMS exposes the quiz through an assignments-style route, the repository should keep quiz families together under questions/. For the structure of actual assignment-style pages (as opposed to quiz pages), see the assignment-creation skill.## hints in the same order as the archived/private question order even if individual hints are later rewritten to be more conceptual. Do not copy the full official question set verbatim into the public page when a private archival page exists.questions/quiz N.md rather than opening a separate assignments stub (for which the assignment-creation skill is the appropriate reference). Make the placeholder explicit about the missing archived content.## content; begin directly with the questions unless the page needs a genuinely specific caveat about missing source context.- solution:.- archived selection: or - selected answer: instead of asserting a solution.- solution: even if the raw screenshot itself only showed a checked state.Solution:, and Explanation: inside one continuous quoted question block rather than placing - solution: or - explanation: bullets outside the quote. This keeps the archival unit visually intact and matches the normal quoted-solution style used elsewhere in official question pages.Explanation: should still cloze the governing method, landmark, contrast, or decision rule that makes the pictured answer correct.Solution: line itself contains an embedded image, keep at
least one cloze on that same Solution: line as well. Cloze the chosen option number, the correct branch or topology label, or a short structural descriptor of the pictured answer so the solution is directly reviewable even before the reader reaches the explanation.attachments/ folder and embedding them with Markdown image syntax inside the private archival page. Preserve the original Canvas-exported filenames such as Q2_1.jpg when they are available so the note remains traceable back to the source archive. Replace placeholder lines like prompt figure: Q2_1.jpg with the real image embed once extraction succeeds.ignore-file[metadata_flash_tag]: private archival quiz mirror suppression over adding a fake active tag.quiz 1.md on both
sides.questions/index.md collection page that lists the quiz review pages. The private mirror usually stays as a flat quiz-file collection unless the user asks for a private index explicitly.The repository supports only three flashcard patterns:
{@{hidden text}@}term ::@:: definitionterm :@: answerCore rules:
{@{ opens and }@} closes. No nesting, no
multiline clozes, and no }} pseudo-closing token.::@:: or :@:) over cloze ({@{ }@})
in prose. Cloze flashcards {@{ }@} are not allowed in topic notes. The only exception is embedded accounting journal-entry worked examples, which may use cloze in their quoted scenarios, tables, calculations, and short explanations.<br/> for internal
structure.<br/> to separate distinct journal entries,
dates, or accounting steps — not every individual Dr/Cr line inside one journal entry. Keep one entry grouped together with commas or semicolons unless line-by-line separation is itself the learning target.$5\text{ V}$.Use these conventions for consistent notation in mathematical notes:
\operatorname{Bin}, \operatorname{Cau},
\operatorname{Exp}, \operatorname{Poi}, etc. for named distributions.\mathbf 1_A(x) or \mathbb 1_A(x).\lim_{y\uparrow m} and \lim_{y\downarrow m}.\sim (e.g., $X\sim N(0,1)$).\binom{n}{k}.\begin{cases} with [2pt] vertical spacing
between cases.\operatorname rather than plain text for
multi-letter operators like CDF, PDF, Var, Cov, E, MSE.
In probability notes, use \operatorname{E}[X] for expectation and
\operatorname{Var}(X) for variance (rather than bare E[X] or \mathbb E).Prefer fixing the content over suppressing the validator. When suppression is truly necessary, use one of these forms with a short rationale:
ignore-line[rule_id]ignore-next-line[rule_id]ignore-file[rule1, rule2]Additional rules:
# index / children shell.numeric_text_not_latex keeps firing on room identifiers,
percent-encoded link destinations, inline code, or HTML comments, treat that as a validator bug: mask the non-prose span or refine the rule instead of scattering repeated suppressions through course notes.header_flashcard_presence. Every subsection must have its own flashcard block.submission/ folders are copied
verbatim from the notes app and must not have their body content modified. Use a file-level suppression comment such as <!-- check: ignore-file[missing_yaml_frontmatter, metadata_aliases_present, metadata_tags_present, tag_language, header_flashcard_presence, no_soft_wrap_list]: Apple Notes markdown — do not modify --> instead of adding frontmatter or flashcards. See the assignment-creation skill for more details.%20 in markdown links but do not percent-escape actual filenames.general/, prefer the canonical article title and the correct
relative path, but do not create or edit the general/ file automatically.Use the validator as the structural authority for this skill.
The validator location is fixed: .agents/skills/academic-notes/check.py. Do not recurse through .agents/skills/academic-notes/, list the whole folder, or search the entire workspace just to locate it. Run the fixed path directly and pass the smallest relevant course-note path.
# POSIX shell
uv run .agents/skills/academic-notes/check.py special/academia/<institution>/ELEC\ 1100
# Windows PowerShell or cmd
uv run .agents/skills/academic-notes/check.py "special/academia/<institution>/ELEC 1100"
# Validate a single file instead of a whole course when possible
uv run .agents/skills/academic-notes/check.py "special/academia/<institution>/ELEC 1100/index.md"
Rules of thumb: