Skip to content

Latest commit

Β 

History

History
367 lines (293 loc) Β· 14.4 KB

README.md

File metadata and controls

367 lines (293 loc) Β· 14.4 KB

Personal Study Guide

An AI workflow that reads your course materials or project descriptions β€” or just a topic/language you name yourself β€” and generates a personalized, ADHD-friendly study pack. Transforms lecture slides, PDFs, and assignment briefs (or nothing but a goal) into a single interactive HTML page β€” flip flashcards, a live-feedback quiz, collapsible concept/step cards, Pomodoro + break timers, and progress tracking, all in one file you just double-click open.

Why ADHD-friendly?

The study output is specifically designed for ADHD learners β€” this is the most distinctive thing about it:

  • 25-minute task blocks with clear end goals
  • Mandatory 10-minute breaks every 50 minutes
  • Direct action language ("Open this file, read it twice")
  • Active learning tasks (write, say aloud, draw)
  • Visual analogies for abstract concepts
  • Common mistake warnings to prevent confusion
  • Multiple learning modalities (visual, auditory, kinesthetic)

Interactive HTML output

Every mode produces a single self-contained index.html β€” no server, no build step, no internet connection needed. Open it in any browser and:

  • Flip flashcards β€” click to reveal, mark "I knew it" / "Still learning", filter by topic/difficulty, shuffle
  • Live quiz feedback β€” multiple choice highlights correct/incorrect instantly; short-answer questions reveal a model answer on demand
  • Collapsible concept cards, steps, and code walkthroughs β€” search/filter, accordion-style, code blocks with a one-click copy button
  • Built-in timers β€” a focus timer per task block and an automatic 10-minute break timer, with a sound when time's up
  • Progress tracking β€” checkboxes, known/learning flashcard state, and a completion ring, all saved in your browser (localStorage) so closing and reopening the file picks up where you left off
  • Dark/light mode β€” follows your system theme, with a manual toggle
  • Printable cheat sheet β€” a Print button gives a clean, nav-free page

Progress is stored per-browser and per-generation β€” regenerating a pack starts progress fresh, since the content (and therefore task order) may have changed.

Flashcards are also exported as 05a_flashcards.csv for Anki import, since that's a separate workflow worth keeping outside the browser.

Compatibility

Currently built for Claude Code. Support for other AI agents/runners is planned for a future release.

Output Modes

Pick one of four presets when you run it:

  • πŸ“š Study mode: ADHD-friendly study schedules with concept summaries, flashcards, and practice materials
  • πŸ“ Assignment mode: Step-by-step completion guides for individual assignments
  • πŸ”§ Solver mode: Complete working solutions with comprehension guides
  • πŸ—Ί Roadmap mode: A learning roadmap for a topic or language you name yourself β€” no course files needed, just a goal and a timeframe

Quick Start

Prerequisites

  • Python 3.x
  • Claude Code CLI (npm install -g @anthropic-ai/claude-code)
  • Canvas API access (for automatic material fetching)

Setup

  1. Clone and configure:

    git clone <repository-url>
    cd LearningAgent
  2. Create .env file:

    CANVAS_TOKEN=your_canvas_api_token
    CANVAS_URL=https://your-institution.instructure.com
  3. Run it:

    # Auto-detect mode from course materials
    ./run.sh COURSE-CODE 10
    
    # Specify a preset explicitly
    ./run.sh SYS-102 10 --mode study
    ./run.sh CS-201 8 --mode assignment
    ./run.sh MATH-301 6 --mode solver

Usage Examples

Study mode (exam prep)

./run.sh SYS-102 10 --mode study

Generates one interactive page (outputs/index.html) with:

  • Hour-by-hour ADHD-friendly study schedule β€” checkable tasks with built-in focus timers
  • Concept summary cards with analogies and common mistakes
  • 30 flip-to-reveal flashcards (also exported as CSV for Anki import)
  • Practice quiz with instant feedback and model answers
  • One-page printable cheat sheet for exam day
  • "Say it out loud" scripts with a practice timer
  • Danger questions targeting examiner traps

Assignment mode (project guidance)

./run.sh CS-301 12 --mode assignment

Generates one interactive page (outputs/assignments/index.html) with:

  • Sidebar overview of all assignments with time estimates
  • Step-by-step completion guide per assignment, with a persisted checklist
  • Code scaffolds with a one-click copy button
  • Relevant lecture material references
  • Common mistakes and testing strategies
  • Hints that reveal one at a time so you don't spoil the rest

Solver mode (working solutions)

./run.sh PHYS-201 8 --mode solver

Generates a runnable solution plus one interactive page (outputs/solver/index.html) with:

  • Complete working solution (ready to submit) in outputs/solver/solution/
  • Tabbed comprehension guide: Big Picture, Task Analysis, Solution Notes, Code Walkthrough, Q&A Practice
  • Code walkthrough with collapsible file/section explanations
  • Self-check "questions you must be able to answer" with reveal-answer and a persisted "I can explain this" checklist
  • 30-minute crash course for solution comprehension

Roadmap mode (learn a topic or language from scratch)

./run.sh Japanese 5 --mode roadmap
./run.sh "Machine Learning" 6 --mode roadmap \
  --type=subject --current="knows Python" --target="ship a small ML project" --duration="3 months"

No course files needed β€” you're prompted for (or pass as flags) a type (subject or language), your current level, your target level, and a duration (e.g. "2 months", "1 year"). The first argument is the topic itself, the second is hours/week you can commit.

Generates one interactive page (outputs/roadmap/index.html) with:

  • A phase-by-phase roadmap sized to your duration and weekly hours, each phase with focus areas, checkable milestones, a checkpoint self-test, and phase-specific resources
  • General materials (apps, books, courses, communities) for the whole plan β€” real, verified links where available
  • A study log: log each session's date/minutes/notes, see a day streak, total hours, and a GitHub-style 12-week heatmap β€” all saved in your browser so it persists across visits
  • The same progress ring, confetti, and dark/light mode as the other modes

Using it for a personal or class project (not a full course)

COURSE-CODE is just a folder label β€” you don't need a real course for this to work. Drop a single project brief/spec (plus any reference material) and generate both a concept study pack and a step-by-step completion guide for it, exactly like the course examples in course-materials/:

# 1. Drop your project doc(s) into course-materials/MY-PROJECT/project/
./run.sh MY-PROJECT 8 --source=local

# 2. Generate the concept study pack (topic map, flashcards, cheat sheet...)
./run.sh MY-PROJECT 8 --mode study --skip-fetch

# 3. Generate the step-by-step completion guide
./run.sh MY-PROJECT 8 --mode assignment --skip-fetch

Works for:

  • Personal projects β€” a side project spec, a portfolio piece, a self-assigned build
  • Class projects β€” a single assignment/project brief without a full course of lecture material

Notes:

  • --source=local prompts you once to drop files into course-materials/MY-PROJECT/project/; use --skip-fetch on the following runs against the same folder so it reuses those files instead of asking again.
  • Assignment mode reads assignments.json first, then falls back to scanning brief files (.pdf .txt .md) directly β€” make sure your project doc is one of those formats.
  • If your project already includes starter/source code, drop that in too β€” the folder will auto-detect solver mode instead unless you pass --mode explicitly.

Command Options

./run.sh <course> <hours> [options]

Options:
  --mode <mode>     study | assignment | solver | roadmap | auto (default: auto)
  --skip-fetch      Use existing materials, don't fetch from Canvas
  --source=local    Drop files manually instead of Canvas fetch

Roadmap-mode-only options (prompted interactively if omitted):
  --type=<type>         subject | language
  --current=<text>      Current level, e.g. "complete beginner"
  --target=<text>       Target level/goal, e.g. "conversational"
  --duration=<text>     e.g. "2 months", "1 year"

Examples:
  ./run.sh SEN-109 10                           # Auto-detect mode
  ./run.sh SEN-109 10 --mode study              # Study pack for exam
  ./run.sh SEN-109 10 --mode assignment         # Assignment guides
  ./run.sh SEN-109 10 --skip-fetch --mode study # Use existing files
  ./run.sh Japanese 5 --mode roadmap            # Learning roadmap, prompts for details

File Organization

Input structure

course-materials/
β”œβ”€β”€ COURSE-CODE/
β”‚   β”œβ”€β”€ manifest.json           # Course metadata
β”‚   β”œβ”€β”€ assignments.json        # Assignment details
β”‚   β”œβ”€β”€ files/
β”‚   β”‚   β”œβ”€β”€ lecture-1.pdf      # Lecture slides
β”‚   β”‚   β”œβ”€β”€ lecture-2.pptx     # More lectures
β”‚   β”‚   └── lab-materials/     # Lab files
β”‚   └── project/               # Manual file drop (--source=local)

Output structure

course-materials/COURSE-CODE/outputs/
β”œβ”€β”€ index.html                 # β˜… START HERE β€” interactive study pack (study/auto mode)
β”œβ”€β”€ 01_topic_map.json          # Internal working data β€” all course topics analyzed
β”œβ”€β”€ 02_priority_list.json      # Internal working data β€” study priority order
β”œβ”€β”€ 05a_flashcards.csv         # Anki import file (same cards as in index.html)
β”œβ”€β”€ assignments/
β”‚   └── index.html             # β˜… START HERE β€” interactive assignment guide (assignment mode)
β”œβ”€β”€ solver/
β”‚   β”œβ”€β”€ index.html              # β˜… START HERE β€” interactive comprehension guide (solver mode)
β”‚   └── solution/               # Complete, runnable solution files
└── roadmap/
    └── index.html              # β˜… START HERE β€” interactive roadmap + study log (roadmap mode)

Roadmap mode has no input structure β€” it's driven entirely by the TOPIC, level, and duration you give run.sh, so course-materials/<topic>/ only ever contains outputs/roadmap/.

Each index.html is self-contained β€” open it directly in a browser, no server or build step required. See Interactive HTML output above for what's in it.

Canvas Integration

Automatic fetching

Fetches from Canvas automatically:

  • Lecture slides and course files
  • Assignment briefs and rubrics
  • Course syllabus and schedule
  • Any linked external resources

Manual file drop

For courses without Canvas access:

./run.sh COURSE-CODE 10 --source=local
# Drop files into: course-materials/COURSE-CODE/project/
# Supports: .pdf .pptx .txt .md .py .js .cpp .zip and more

Supported File Types

  • Lectures: PDF, PPTX, TXT, MD
  • Code: PY, JS, TS, CPP, C, RS, JAVA
  • Documents: PDF, TXT, MD, DOCX
  • Archives: ZIP, TAR, RAR (auto-extracted)
  • Assignments: Any text-based format

Assessment Coverage

Study mode maps to common assessment types:

  • Exams: Comprehensive study schedules with practice questions
  • Quizzes: Targeted concept summaries and flashcards
  • Projects: Technical concept foundation for implementation
  • Labs: Hands-on skill development with theoretical backing

Assignment mode handles:

  • Programming projects with code scaffolds
  • Research papers with outline and source guidance
  • Problem sets with step-by-step solutions
  • Design projects with methodology and evaluation

Customization

Study hours

Adjust total study time based on course difficulty:

  • Light courses: 4-6 hours
  • Standard courses: 8-12 hours
  • Heavy courses: 15-20 hours

Learning preferences

Claude adapts output to different learning needs:

  • Visual learners get diagrams and concept maps
  • Auditory learners get speaking scripts and explanations
  • Kinesthetic learners get hands-on exercises and building tasks

Troubleshooting

Common issues

"No materials found"

# Check if course materials were fetched
ls course-materials/COURSE-CODE/
# If empty, try manual fetch or check Canvas credentials

"Canvas authentication failed"

# Verify .env file exists and contains valid tokens
cat .env
# Test Canvas connection manually

"Files not generated"

  • Ensure Claude Code CLI is installed and authenticated
  • Check that course materials exist in expected directories
  • Try running with --skip-fetch if materials already exist

Getting help

  1. Check the course-materials directory structure
  2. Verify Canvas API permissions
  3. Ensure all prerequisites are installed
  4. Run with manual file drop mode for debugging

Advanced Usage

Batch processing

# Process multiple courses
for course in SYS-102 CS-201 MATH-301; do
  ./run.sh $course 10 --mode study
done

Custom study plans

The schedule lives as data inside outputs/index.html, in a <script id="pack-data" type="application/json"> block. To tweak time blocks, add personal notes, or adjust break timing, edit that JSON directly β€” the page re-renders it on load, no build step needed. For bigger changes (different topics, different hours), just re-run ./run.sh β€” it regenerates the whole pack, though note this resets saved progress (see Interactive HTML output).

Integration with Anki

# Import flashcards
# 1. Open Anki
# 2. File β†’ Import
# 3. Select: course-materials/COURSE-CODE/outputs/05a_flashcards.csv
# 4. Configure field mapping
# 5. Import and start daily review

Contributing

This project is designed to be extensible:

  • New presets: Add to INSTRUCTIONS.md
  • File types: Extend parsing in canvas_fetcher.py
  • Learning styles: Customize output templates
  • Assessment types: Add new question formats

Updates

  • 2026.05 v1.0 β€” initial project setup with study, assignment, and solver modes
  • 2026.09 v1.1 β€” adding modes for assignment and project guided
  • 2026.09 v1.2 β€” fixing learning guide/pack presentation
  • 2026.09 v1.3 β€” adding language learning mode and subject/topic learning

License

MIT β€” see LICENSE.

Acknowledgments

Built with Claude Code for content analysis and generation. Designed for neurodivergent learners and evidence-based study techniques.


Need help? Open an issue or check the troubleshooting section above. Works best with well-organized course materials and clear learning objectives.