Skip to content

The DobbsCore Extension

benjamindobbs edited this page Sep 18, 2026 · 3 revisions

The DobbsCore Extension

DobbsCore Gradebook Sync is a Chrome extension that connects this platform to PowerSchool. With it you can:

  • Import and re-sync class rosters from PowerSchool.
  • Create PowerSchool assignments and fill in every student's score from their DobbsCore activity.
  • Re-score an existing PowerSchool assignment.
  • Sync Work-Based Learning grades (skills, credentials, work events, Habits of Work).
  • Sync non-WBL Habits of Work grades (the Gravitas / Dignitas / Pietas Do Now / Exit Slip flow).
  • Pull PowerSchool attendance into DobbsCore for meeting-day-aware grading and the Work Event blend.

It works entirely in your browser using your PowerSchool login — no district API access, no IT ticket, no credentials shared with anyone.

Repo (source + issues): github.com/benjamindobbs/DobbsCore


How it works, briefly

The extension injects buttons into two places: PowerSchool gradebook pages and the DobbsCore teacher portal. Because PowerSchool's gradebook is a browser app that authenticates with session cookies, the extension can call PowerSchool's own internal endpoints directly from your browser, as you. DobbsCore calls (fetching rosters, grades, WBL progress) are routed through the extension's background worker to sidestep browser cross-site restrictions.

Everything the extension does, you could do by hand in the two web apps — it just removes the copy-paste.


Installing

The extension is distributed as source, loaded in Developer mode. (It is not on the Chrome Web Store.)

  1. Go to github.com/benjamindobbs/DobbsCore → green Code button → Download ZIP.
  2. Unzip it to a permanent location (e.g. Documents\DobbsCore). Chrome loads it from this folder on every start — don't move or delete it.
  3. Open chrome://extensions.
  4. Turn on Developer mode (top-right).
  5. Click Load unpacked and select the unzipped folder (the one containing manifest.json).
  6. The card "DobbsCore Gradebook Sync" appears. Click the puzzle-piece icon in Chrome's toolbar and pin it.

Updating

When a new version is released, download the ZIP again, replace the contents of your folder, then on chrome://extensions click the refresh/reload icon on the DobbsCore card and hard-refresh any open PowerSchool tab (Ctrl+Shift+R).


First-time setup

  1. In the DobbsCore Teacher Portal, Classes tab, Chrome Extension box → Copy Token.
  2. Click the pinned DobbsCore icon. In the popup:
    • DobbsCore Server URL: https://classicaltech.org
    • Teacher Token: paste the token you copied.
    • Save.
  3. Whenever you sign out of the portal and back in, re-copy and re-paste the token. An authorization error on any sync means the token is stale — that's the fix.

You must also be logged into PowerSchool (PowerTeacher Pro) in the same Chrome profile for any PowerSchool-side action to work.


The buttons

The extension shows different buttons depending on what page you're on and whether the section is registered in DobbsCore.

Import Roster to DobbsCore

Where: a PowerSchool section page, when that section is not yet in DobbsCore.

Pulls the live PowerSchool roster — each student's name, district Student Number, and the internal PowerSchool ID used later to match attendance — and creates a matching DobbsCore class, recording the PowerSchool section ID. One click, then refresh the portal's Classes tab.

Re-sync Roster

Where: a PowerSchool section page, once the section is registered.

Reconciles the DobbsCore roster against the current PowerSchool roster without destroying anything:

  • New students are added and stamped with their PowerSchool section entry date (falling back to today) — this is what lets DobbsCore prorate their daily requirement.
  • Departed students are withdrawn, not deleted — scores and WBL history are kept, and a later re-sync reactivates them if they return.
  • Existing students just get their name/ID refreshed.

Run it whenever a section's enrollment changes. Safe to run any time.

Create DobbsCore Assignment

Where: a PowerSchool section page, once registered.

  1. Click it. A panel opens.
  2. Fill in: assignment name, due date, max points, PowerSchool category (marking period category), and a score date range (From / End).
  3. Click create. The extension creates the PowerSchool assignment, then computes each student's activity grade for that date range (per How Grading Works) and writes every score.

On a later run for the same period, it updates the same PowerSchool assignment rather than making a duplicate.

Who gets a score:

  • Linked students → their computed grade.
  • Unlinked students → the No Submission Score.
  • Students whose enrollment doesn't overlap the range → left off (no score row).

Sync DobbsCore Grades

Where: the PowerSchool score-entry page of an existing assignment.

Same scoring as above, but it fills in the assignment you already have open instead of creating one. Use it to re-score after more student work comes in, or to grade into an assignment you made by hand in PowerSchool.

Sync Work-Based Learning

Where: a PowerSchool section page, once registered and linked to a WBL program in DobbsCore.

Opens a panel with four independent sync buttons plus a state list. See the Work-Based Learning Guide for the full walkthrough. In short:

  • Sync Skills (Formative) — one completion assignment per (credential, skill) pair.
  • Sync Credentials (Summative) — one assignment per credential.
  • Sync Selected Work Events — one assignment per completed job you check off; scoped to just the participants who have a Holistic Call for it.
  • Sync Habits of Work — all five soft skills, one assignment each, created not counted in the traditional final grade.

Credential / Skill Sync State — a list in the same panel where each credential (and each of its skills) has a Not Started / In Progress / Due selector:

State Behavior in a sync
Not Started Excluded entirely — no PowerSchool assignment created or touched.
In Progress Students who've earned it get 100; everyone else is left blank, not zeroed.
Due Full 0 / 100 rule — non-earners get 0.

New items start Not Started and auto-promote to In Progress the first time any student shows evidence toward them. Selections save immediately and are per class.

Sync Habits of Work (non-WBL classes)

Where: a PowerSchool section page, once registered, when the class is not linked to a WBL program. It takes the place of Sync Work-Based Learning for those classes.

This pushes the standalone Habits of Work Do Now / Exit Slip grades.

  1. Click it. Pick a week (any date inside it), a due date, and max points.
  2. Click Sync Habits of Work.

It creates or updates six assignments, all not counted in the final grade — for each of the three categories (Gravitas / Dignitas / Pietas):

Assignment Score
HoW <Category> — Weekly that ISO week's average of your 1–4 ratings for the category, on a 0–100 scale, scaled to max points
HoW <Category> — Standing the mean of the student's last up to 3 weekly category averages, up to the picked week

Voided and unrated exit slips don't count; there's no zero-fill for absences. A student with no ratings in range is left blank. Re-running for the same week updates the same six assignments.

Sync Attendance from PS

Where: two entry points in the DobbsCore portal —

  • the Classes list view (pulls for every registered class), and
  • a WBL program's Roster tab (pulls only that program's linked classes).

Two-step flow:

  1. In PowerSchool, open the Attendance Grid page for each section you want. The extension reads and caches that section's attendance data automatically — a small toast confirms how many students and dates were captured.
  2. Back in the DobbsCore portal, click Sync Attendance from PS. It matches each cached section to its DobbsCore class (by section ID, or by student-ID overlap as a fallback) and bulk-imports the whole cached date range. No per-date review.

What the codes mean for the WBL Work Event / Holistic Call attendance ratio:

PowerSchool code Counts as
blank (present) or any code other than the two below full day present
UXT (unexcused tardy) half day
UNV (unverified absence) absent — unless you've logged a "Called Out" override for that student/date on the WBL Roster, which drops the day from the ratio entirely

The raw codes are also read separately for daily-practice absence exemption (any class, not just WBL), which uses a different rule — any code starting EX except EXT excuses the day entirely, UNV follows the same Called Out override as above but only when the class is WBL-linked. See How Grading Works.

The cache lasts until Chrome restarts or the extension reloads — re-open the Attendance Grid pages before syncing if it's been a while.

Attendance feeds three things: per-day grading and absence exemption for daily-practice grades (any class — see the note above), the Work Event Holistic Call blend (WBL, using the table above), and the meeting-day calendar those daily-practice days are drawn from. It plays no part in Skills / Credentials / Habits of Work scoring.


Student matching

Students are matched between DobbsCore and PowerSchool by district Student Number (the 6-digit ID). DobbsCore roster IDs must be that same number. Leading zeros are ignored on the DobbsCore side.

Troubleshooting

Symptom Fix
No button appears on a PowerSchool page Reload the extension at chrome://extensions, then hard-refresh the PowerSchool tab (Ctrl+Shift+R).
"Not authorized" / 401 on a sync Re-copy your token from the portal and re-paste it in the extension popup.
Attendance sync imports nothing Open each section's Attendance Grid page first, in the same browser session.
A class isn't matched during attendance sync Its ps_section_id may be missing (hand-made class) — re-import or re-sync the roster from PowerSchool.
Work Event participants missing from an assignment on re-sync The extension can't always edit an existing PowerSchool assignment's student list; it warns you — add them by hand in PowerSchool or delete the assignment and re-sync.

Technical detail on the payloads and endpoints: Extension Integration.

Clone this wiki locally