Skip to content

C-Moir/academy-cockpit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

180 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Academy Cockpit

A local study cockpit for the Anthropic Academy course corpus and the Claude Certified Architect Foundations exam.

Dashboard

Ships pre-loaded with 280 spaced-repetition flashcards, 104 architect-tier MCQs in the trainer pool, 105 condensed lesson notes across 17 courses, and an "Ask Claude" panel that grounds answers in the actual course material. Optional Skilljar autofill is included for users who want to harvest the Academy course certs first; it is gated, disclaimed, and at the user's own risk — see the disclaimer below.

The cockpit is purpose-built around one thesis: AI is the right tool to amplify exam preparation, not to replace the candidate at the exam. The autofill targets only Anthropic's free Academy courses (TOS-violating but recoverable). It will never automate a proctored exam by design.

Screenshots

Trainer — pick a mode, take it.
Trainer
Flashcards — SM-2 spaced repetition.
Flashcards
Setup — BYOK + optional Skilljar.
Setup
Certificates — visual grid of earned certs.
Certs

Quickstart

git clone https://github.com/C-Moir/academy-cockpit.git
cd academy-cockpit
npm install
npx playwright install chromium   # only required if you also want autofill
npm start

Open http://localhost:3000. On first run the cockpit redirects to /setup, where you choose one of:

  • Paste an Anthropic API key, then click "Continue → dashboard". Full study experience: trainer + flashcards + Ask Claude.
  • Skip without a key: review-only mode. The 280 pre-loaded flashcards and 104 trainer questions still work fully because they're already in the DB. Only the generation features (new asks, generating new flashcards, generating new trainer questions) ask for a key when invoked.

A 5-step guided tour fires automatically on first visit (Dashboard → Flashcards → Trainer → Ask → Certs → back to Dashboard) and can be skipped at any step.

What ships in the repo

The cockpit ships a pre-loaded SQLite database (data/academy-distributable.db) so cloners get the study deck immediately without ever touching Skilljar. It contains:

  • 17 Anthropic Academy course/lesson metadata (titles, slugs, positions)
  • 105 condensed lesson notes (Haiku-generated summaries)
  • 280 flashcards (LLM-generated)
  • 104 synth questions for the architect trainer (LLM-generated, entirely new MCQs not from the source quizzes)

It does not contain raw lesson transcripts, original Anthropic quiz questions, quiz answer keys, or any personal study data. Build/refresh it from your own working DB with:

node scripts/build-distributable-db.js

On first npm start, if data/academy.db doesn't exist, the cockpit copies the distributable into place so the user has the deck loaded.

Routes

  • / — dashboard with Continue studying cards (Flashcards / Trainer / Ask) and the course library
  • /flashcards — spaced-repetition review queue (SM-2 scheduler)
  • /exam-trainer — Quick Drill / Mock Exam / Weak Topics
  • /exam-trainer/missed — questions you've gotten wrong, drilling deck
  • /exam-trainer/topics — per-topic accuracy
  • /asks — past ask conversations
  • /search — full-text across notes + flashcards + synth questions
  • /certs — visual grid of earned certificates
  • /setup — API keys + Skilljar credentials + autofill button

Optional — autofill mode

The autofill replays answers you've saved in the cockpit's lesson pages to Skilljar via Playwright. It does not call Claude; it's pure click-replay against your Skilljar session. Workflow:

  1. Add your Skilljar email + password on /setup (cockpit auto-fills the SSO form on first run; subsequent runs are headless).
  2. Run npm run scrape:catalog to pull your Academy course list, then npm run scrape:courses to scrape lesson + quiz content for every course.
  3. Open /lessons/:id for each quiz and answer each question.
  4. Visit /setup → tick the four acknowledgement checkboxes → click the big red Auto-fill all courses button. The driver walks every uncompleted course, replays your answers, and earns each cert.

Read the Disclaimer below before using this feature.

Disclaimer

The autofill feature automates Skilljar, which is the LMS Anthropic uses for the free Academy courses. Skilljar's Terms of Service prohibit automation:

"use web crawlers, web robots, web scutters, ants, automatic indexers, bots, worms, and other such devices in connection with the Site" — skilljar.com/terms

Using the autofill is at your own risk. Cameron J. Moir, the author of this tool, provides it as a personal study aid that demonstrates a real and important question about AI and credentialing, makes no representation that the autofill is permitted by Skilljar, Anthropic, or any course provider, takes no responsibility for any consequences, and does not encourage breaching any third-party terms of service. If you are not comfortable with that, don't run the autofill — the study cockpit alone (/flashcards, /exam-trainer, /asks, /search) runs entirely on your local machine, never contacts Skilljar, and is the recommended path.

By using the autofill you affirm that:

  • You have read Skilljar's TOS
  • You are using your own Skilljar account, not someone else's
  • You understand your account may be suspended or terminated
  • You accept full responsibility for any consequences
  • You agree this software is provided "as-is" with no warranty and the author has zero liability

This software is provided "AS IS", without warranty of any kind, express or implied. See LICENSE for the full MIT terms, including the additional notice about the autofill feature.

The cockpit by design has no path that automates a proctored exam. Autofill caps at the free Academy courses. There is no code in this repo that targets the Claude Certified Architect Foundations exam itself or any other proctored cert exam. Use the trainer + flashcards to study for the proctored exam; sit it yourself.

Architecture

src/
├── index.js              Express entry
├── cli.js                CLI dispatcher (npm scripts call this)
├── db/                   SQLite schema, migrations, queries
├── scraper/              Skilljar auth + session + catalog/course scraping
├── condenser/            Haiku 4.5 lesson condenser
├── flashcards/           Card generator (Haiku) + SM-2 scheduler
├── trainer/              Architect-tier MCQ generator (Sonnet) + scorer
├── ask/                  Corpus-grounded Q&A (Sonnet)
├── submitter/            Quiz autofill via Playwright
└── server/               Express routes, events, render

scripts/
├── build-distributable-db.js   Strip a working DB to a shippable subset
├── firsttime-preview.js        Preview the new-user flow on port 3001
├── recover-quiz-answers.js     Scrape correct answers from a failed quiz's review page
├── flashcards-from-quizzes.js  Seed flashcards from verified quiz answers
└── (debug helpers)             dump-*.js, list-empty-quizzes.js, topic-survey.js

data/
├── academy.db                  Your working DB (gitignored)
├── academy-distributable.db    Pre-loaded study deck (ships in repo)
├── academy-firsttime.db        Preview script's sandbox DB (gitignored)
├── certs/                      Earned cert PNGs (gitignored)
├── raw/                        Raw HTML dumps for parser debugging (gitignored)
└── session.json                Skilljar Playwright storage state (gitignored)

docs/
├── superpowers/specs/          Design specs (one per phase)
├── superpowers/plans/          Implementation plans
└── logs/                       Phase-by-phase build logs

test/
├── unit/                       Fast pure tests
├── integration/                Server + DB + mocked Playwright
├── parsers/                    HTML fixture parser tests
└── fixtures/                   Synthetic + real-world HTML captures

Key dependencies: @anthropic-ai/sdk, better-sqlite3, express 5, playwright, dotenv, vitest.

Common commands

npm start                         # boot the cockpit at :3000
npm run dev                       # auto-restart on file changes
npm test                          # full vitest suite (~325 tests)

# Preview the new-user experience without touching your real DB
node scripts/firsttime-preview.js          # boots a sandboxed cockpit on :3001
node scripts/firsttime-preview.js --reset  # wipe the preview DB + re-seed

# Scrape your own Academy content (requires Skilljar creds)
npm run scrape:catalog            # pull your enrolled courses
npm run scrape:courses            # scrape lessons/quizzes for every course

# Generate study material with Claude (requires Anthropic API key)
npm run condense:all              # condense every lesson with notes
npm run flashcards:generate       # generate ~150 flashcards across the corpus
npm run trainer:generate          # generate architect-tier MCQ pool

# Autofill (after answering quizzes manually in /lessons/:id)
npm run submit:course <slug>      # one course
npm run submit:all                # every uncompleted course

# Cert image capture
npm run cert:harvest              # scan profile, link verified certs in DB
npm run cert:backfill             # download cert PNGs for completed courses

# Spend tracking
npm run cost:report               # total + by-course Claude spend

License

MIT. See LICENSE.

Author

Cameron J. Moir — github.com/C-Moir · ORCID 0009-0002-8204-3938

Part of the streamables.live project umbrella.

Citation

If you reference this software in research, writing, or derivative work, see CITATION.cff — GitHub renders a "Cite this repository" button using that file. APA and BibTeX formats one click away.

About

Local-first study cockpit for the Claude Certified Architect Foundations exam. Spaced-repetition flashcards, architect-tier MCQ trainer, corpus-grounded Ask Claude, and optional Skilljar autofill.

Topics

Resources

License

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors