A local study cockpit for the Anthropic Academy course corpus and the Claude Certified Architect Foundations exam.
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.
Trainer — pick a mode, take it. ![]() |
Flashcards — SM-2 spaced repetition. ![]() |
Setup — BYOK + optional Skilljar. ![]() |
Certificates — visual grid of earned certs. ![]() |
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 startOpen 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.
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.jsOn first npm start, if data/academy.db doesn't exist, the cockpit copies the distributable into place so the user has the deck loaded.
/— 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
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:
- Add your Skilljar email + password on
/setup(cockpit auto-fills the SSO form on first run; subsequent runs are headless). - Run
npm run scrape:catalogto pull your Academy course list, thennpm run scrape:coursesto scrape lesson + quiz content for every course. - Open
/lessons/:idfor each quiz and answer each question. - 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.
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.
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.
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 spendMIT. See LICENSE.
Cameron J. Moir — github.com/C-Moir · ORCID 0009-0002-8204-3938
Part of the streamables.live project umbrella.
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.




