Start or resume a full tracked learning session for a registered material. Use this when the user wants to begin or continue studying a book, course, slides, or article. Loads the manifest, prints session state, then enters active teaching mode with dynamic progress tracking.
Read .github/copilot-instructions.md first for the full system behavior, active teaching rules, dynamic tracking spec, and creative explanation format (§3.5).
The manifest tracks WHERE you are. The source material is WHAT you learn from. These are separate concerns.
manifest.json= progress state only (covered units, percent, session history, saved concepts)learning-materials/<slug>/= the actual book, slides, or article — the authoritative teaching source- Teaching must ALWAYS be grounded in the source material, never in general knowledge alone
temp/progress/_index.jsontemp/progress/<slug>/manifest.json — for progress state only, not for content.▶ SESSION STARTED — <Title>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Type : <type>
Progress : <unitsCovered>/<totalUnits> (<percentComplete>%)
Last Studied: <lastStudiedOn>
Current Unit: <currentUnit>
Pending Qs : <count of unresolved pendingQuestions>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
structure[] is empty or contains tbd, ask the user to paste the Table of Contents first, then:
structure[] and update progress.totalUnits in manifest.jsontemp/Notes/<slug>/overview.md — replace any placeholder rows with the real chapter/module titles and reset all statuses to ⬜ Not startedBefore teaching any unit, resolve the source content using this decision tree:
manifest.sourceText set?
│ YES → read that .txt file directly → go to Step 7
│ NO ↓
manifest.source extension?
│ .md / .txt / .html → read directly → go to Step 7
│ .pdf / .pptx / .docx ↓
│
.txt counterpart already exists?
│ YES → read it → add manifest.sourceText → go to Step 7
│ NO ↓
│
Run auto-conversion (see table below)
│ SUCCESS → save .txt, set manifest.sourceText → go to Step 7
│ FAIL → ask user to paste section text → go to Step 7
Auto-conversion commands (replace <src> and <out> with actual absolute paths):
| Format | Install (if needed) | Conversion command |
|---|---|---|
.pdf | pip install pdfminer.six | python -c "import pdfminer.high_level as p; open(r'<out>', 'w', encoding='utf-8').write(p.extract_text(r'<src>'))" |
.pptx | pip install python-pptx | python -c "from pptx import Presentation; prs=Presentation(r'<src>'); open(r'<out>','w',encoding='utf-8').write('\n'.join(shp.text_frame.text for sl in prs.slides for shp in sl.shapes if shp.has_text_frame))" |
.docx | pip install python-docx | python -c "from docx import Document; doc=Document(r'<src>'); open(r'<out>','w',encoding='utf-8').write('\n'.join(p.text for p in doc.paragraphs))" |
Output path convention: same directory as the original, same base name, .txt extension.
learning-materials/ai-engineering/AI-Engineering.pdf → learning-materials/ai-engineering/AI-Engineering.txtAfter a successful conversion:
.txt path into manifest.sourceText in temp/progress/<slug>/manifest.jsonAfter loading content (any path above):
activeUnitSource for that unit only — do NOT reuse it across unitspages is set on the section in structure[], use that to locate the correct regiontemp/Notes/<slug>/ as a teaching source — notes are read-only cross-reference onlyRules for source-grounded teaching:
sectionConcepts[] inventory from activeUnitSource exclusively, not from prior notes or general knowledge.activeUnitSource for every named concept, framework, model, technique, list, ladder, loop, or taxonomy the author introducessectionConcepts[] checklistsectionConcepts[] — any concept not yet addressed gets at minimum a 📌 one-sentence callout before moving onsectionConcepts[] has been touched/end-session or when the user says "save progress"| User says | Action |
|---|---|
| "save" / "save progress" | Write covered units to manifest immediately |
/note <text> | Save concept to keyConcepts[] immediately |
/q <question> | Append to pendingQuestions[] immediately |
| "done with [unit]" | Mark that unit as covered immediately |
| Type | Approach |
|---|---|
book | Chapter summaries first, then deep-dive section by section |
course | Theory first, then practical exercises per module |
slides | Slide-by-slide, comprehension check after each group |
article | Section summaries → key concepts → application discussion |