Skill

enrollment

Install
1
Install the plugin
$
npx claudepluginhub psd401/psd-claude-plugins --plugin psd-productivity

Want just this skill?

Add to a custom plugin, then install with one command.

Description

P223 monthly enrollment automation for Peninsula School District — report generation, FTE validation, and compliance checking

Tool Access

This skill is limited to using the following tools:

ReadWriteEditBashGlobGrepAgentWebFetchWebSearchmcp__chrome-devtools__navigate_pagemcp__chrome-devtools__clickmcp__chrome-devtools__click_atmcp__chrome-devtools__hovermcp__chrome-devtools__fillmcp__chrome-devtools__type_textmcp__chrome-devtools__fill_formmcp__chrome-devtools__press_keymcp__chrome-devtools__take_screenshotmcp__chrome-devtools__take_snapshotmcp__chrome-devtools__wait_formcp__chrome-devtools__evaluate_scriptmcp__chrome-devtools__list_console_messagesmcp__chrome-devtools__list_pagesmcp__chrome-devtools__select_pagemcp__chrome-devtools__new_pagemcp__chrome-devtools__handle_dialogmcp__chrome-devtools__upload_file
Supporting Assets
View in Repository
references/BUILD-PLAN.md
references/cant-automate.md
references/fte-rules.md
references/p223-process.md
references/report-checklist.md
references/school-config.md
scripts/ale_reconciler.py
scripts/enrollment_validator.py
scripts/entry_exit_balancer.py
scripts/fte_calculator.py
scripts/month_comparison.py
scripts/rs_reconciler.py
scripts/validation_report.py
Skill Content

P223 Enrollment Automation

You orchestrate Peninsula School District's monthly P223 enrollment reporting process. This skill automates report generation from PowerSchool, validates enrollment data, and flags issues for human review.

Human-in-the-loop: This tool surfaces issues, flags discrepancies, and prepares files. Humans make judgment calls and submit to EDS.

Reference Knowledge

Before acting, read the relevant reference documents:

plugins/psd-productivity/skills/enrollment/references/
  p223-process.md       # Step-by-step P223 procedure by school level
  fte-rules.md          # FTE calculation rules (ES/MS/HS/GVA/RS)
  school-config.md      # School list, programs, report parameters
  report-checklist.md   # Required reports per school level per month
  cant-automate.md      # Items requiring human judgment
  BUILD-PLAN.md         # Build plan and phase status

Commands

/enrollment reports [school] [date]

Run all required backup reports for a school on a count date using Chrome DevTools MCP browser automation.

Prerequisites: The debug browser must be running. Launch it with:

bash plugins/psd-productivity/skills/browser-control/scripts/launch-chrome.sh

The user must be logged into PowerSchool in the debug browser before running reports.

Pre-flight (once per browser session):

  1. Open brave://settings/downloads — disable "Ask where to save each file before downloading"
  2. Verify user is logged into PowerSchool in the debug browser

Workflow:

  1. Read references/school-config.md to determine school level (ES/MS/HS) and P223 parameters
  2. Read references/report-checklist.md for direct URLs and JS patterns for each report
  3. Use evaluate_script for all form interactions — UID-based clicks are unreliable (UIDs change between renders)
  4. Reports to generate (based on school level):
    • P223 Form and Audit ⚑ PRIMARY — run first (requires FTE overrides to be confirmed)
    • Enrollment Summary (all)
    • Student List Export (all) — downloads to ~/Downloads/student.export.text, move immediately
    • Class Attendance Audit (all — Period 1 for ES, Periods 1-6 for MS/HS)
    • Entry/Exit Report — previous month then current month (all)
    • Consecutive Absence Report (all)
    • Student Schedule Report (MS/HS only)
  5. Save all PDFs using: bun ~/Desktop/P223-<Month>-<Year>/save_pdf.js <path> <title_filter>
  6. Report back what was generated and flag any issues

Key automation patterns (see report-checklist.md for full JS snippets):

  • Report engine forms: document.getElementById('btnSubmit').click()
  • Report queue: submit → navigate to detail.html?frn=<id>wait_for(["Result File"]) → save PDF
  • Entry/Exit: change #m value → dispatch change event → auto-refreshes (no submit)
  • Enrollment Summary: set date input → press Tab → auto-reloads

Do NOT delegate to powerschool-navigator agent — it cannot access Chrome DevTools MCP tools. All browser automation runs in the main session.

Parameters by level (from school-config.md):

  • Elementary: 1-Day FTE window, FTE Calc Date = count date
  • Middle/High: 5-Day FTE window, FTE Calc Date = blank

/enrollment checklist [month]

Show what's done and remaining for a monthly enrollment count.

Workflow:

  1. Read references/report-checklist.md
  2. Display the full checklist organized by:
    • Building Level tasks (pre-count, count day, post-count)
    • District Level tasks (pre-count, count day, reconciliation, submission)
  3. If month provided, calculate the count date (1st school day of that month)
  4. Show status as a markdown checklist

/enrollment help

Explain the P223 process and what's automated.

Workflow:

  1. Read references/p223-process.md and references/cant-automate.md
  2. Provide a concise overview:
    • What P223 is and why it matters (funding)
    • Monthly cadence (Oct–Jun, 1st school day)
    • What this tool automates vs what requires human judgment
    • Available commands
    • Current build phase status

/enrollment fte [school] [schedule-info]

Calculate FTE for a student at a given school based on their schedule.

Workflow:

  1. Read references/fte-rules.md
  2. Determine school level and FTE rules
  3. Calculate:
    • Elementary: weekly minutes ÷ 1,665
    • Middle School: flex + (periods × school-specific FTE per period)
    • High School: (periods × 0.17) + homeroom (0.02) + optional zero hour (0.17)
    • Henderson Bay: advisory (0.14) + (periods × 0.21)
    • GVA: varies by full-time/part-time and paired school
  4. Show calculation breakdown and resulting FTE
  5. Calculate adjustment (1.0 - FTE) if less than full-time

/enrollment validate [school]

Run validation checks against downloaded enrollment data.

Workflow:

  1. Delegate to the enrollment-validator agent
  2. Checks include:
    • Headcount consistency (Enrollment Summary vs Student List)
    • FTE calculation verification against bell schedule
    • Consecutive absence exclusion flags
    • Entry/Exit balancing (prev HC + entries - exits = current HC)
    • Running Start combined FTE ≤ 1.20
    • Program compliance (RS Program 1/2, Fresh Start Track=C)
    • Non-FTE course marking
    • Teacher assignment gaps

/enrollment compare [month1] [month2]

Compare enrollment across two months to detect changes requiring revisions.

Workflow:

  1. Compare Enrollment Summary reports from both months
  2. Flag:
    • Backdated exits crossing count days (revision needed)
    • Grade level changes affecting previous counts
    • Students added/removed with dates before previous count
  3. Output revision list with specific students and recommended actions

Script: scripts/month_comparison.py

uv run scripts/month_comparison.py --school GHHS \
  --current-data '{"9":203,"10":189}' --previous-data '{"9":200,"10":190}' \
  --previous-month February --current-month March

/enrollment ale [ale-report-csv]

Run ALE FTE reconciliation from the GVA ALE report.

Workflow:

  1. Read references/fte-rules.md for ALE FTE rates by paired school
  2. Process the ALE report:
    • Assign FTE per section based on paired school (GHHS/PHS=0.15/0.17, HBHS=0.21, MS=0.16, ES=0.20)
    • Verify combined ALE + RS FTE ≤ 1.20 per student
    • Extract CTE ALE sections (OCT135, OPE901) and generate CTE report
    • Split by in-district (2740) vs out-of-district
    • Total by school and grade level
  3. Output: ALE reconciliation report + CTE report for CTE program

Script: scripts/ale_reconciler.py

uv run scripts/ale_reconciler.py --ale-data report.csv --school GVA --count-date 03/02/2026 \
  --output ale_report.md --cte-output cte_ale.csv

/enrollment rs [tcc-report] [ps-export]

Reconcile Running Start between TCC college report and PowerSchool data.

Workflow:

  1. Compare TCC RS report against PS RS export
  2. For each student:
    • Verify combined district + RS FTE ≤ 1.20
    • Identify full-time vs part-time RS
    • Flag students in TCC but not PS (contact registrar)
    • Flag students in PS but not TCC (verify RS status)
  3. January special handling: flag SQEAF requirements for semester-change students
  4. Generate RSCNTRL data (Academic/Vocational FTE by school, HC by grade)
  5. Output: RS reconciliation report + RSCNTRL spreadsheet data

Script: scripts/rs_reconciler.py

uv run scripts/rs_reconciler.py --tcc-report tcc.csv --ps-report ps_rs.csv \
  --count-month March --count-date 03/02/2026 --output rs_report.md --rscntrl-output rscntrl.json

/enrollment report [month]

Generate comprehensive validation report + EDS import data for the entire district.

Workflow:

  1. Aggregate all school data (HC, FTE, ALE, RS, TBIP, CTE, Open Doors per school)
  2. Run all validation checks across all schools
  3. Generate:
    • Comprehensive markdown validation report with pass/fail per school
    • EDS-ready import JSON with all data structured for state submission
    • Human review checklist
  4. Human reviews report and uploads to EDS

Script: scripts/validation_report.py

uv run scripts/validation_report.py --school-data schools.json \
  --count-date 03/02/2026 --count-month March \
  --output validation_report.md --eds-output eds_import.json

/enrollment run [month]

Full monthly workflow with human checkpoints. Orchestrates all steps.

Workflow:

  1. Calculate count date for the month
  2. Show pre-count checklist, confirm data cleanup done
  3. Run reports for each school using evaluate_script browser automation directly in main session (do NOT delegate to powerschool-navigator — it lacks MCP access)
  4. Run validation checks on downloaded data
  5. Run ALE reconciliation
  6. Run RS reconciliation
  7. Generate comprehensive validation report + EDS import
  8. Present results with human review checklist
  9. STOP — Human reviews, signs, uploads to EDS
  10. After confirmation: update internal spreadsheets (ANNAVG, CNTRL, One Pager)
  11. Generate Board/Cabinet notification email

/enrollment status

Show dashboard of monthly process progress.

Workflow:

  1. Check what files exist for current month's backup folder
  2. Show which schools have submitted reports
  3. Show which reconciliations are complete
  4. Show what's remaining before EDS submission

Scripts Reference

All scripts live in plugins/psd-productivity/skills/enrollment/scripts/ and use uv run.

ScriptPhasePurpose
fte_calculator.py2FTE calculation engine (ES/MS/HS/GVA)
enrollment_validator.py2Data validation suite (9 checks)
month_comparison.py2Month-over-month diff detector
entry_exit_balancer.py2Entry/Exit reconciliation per grade
ale_reconciler.py4ALE FTE reconciliation + CTE extraction
rs_reconciler.py4Running Start reconciliation vs TCC
validation_report.py5District validation report + EDS import

Google Workspace Integration

Drive and Sheets access is provided by the shared /google-workspace skill. See plugins/psd-productivity/skills/google-workspace-cli/SKILL.md for setup.

Common operations used by enrollment:

# Read Part Time spreadsheet
gws sheets +read --spreadsheet "SPREADSHEET_ID" --range 'CurrentMonth!A1:Z500'

# Upload enrollment backup
gws drive +upload ./backup.pdf --name "GHHS_EnrollmentSummary_20260302"

# Create monthly backup folder
gws drive files create \
  --json '{"name": "March 2026", "mimeType": "application/vnd.google-apps.folder"}'

School Abbreviations

AbbrSchoolLevel
AESArtondale ESES
DESDiscovery ESES
EESEvergreen ESES
HHESHarbor Heights ESES
MCESMinter Creek ESES
PIEPioneer ESES
PESPurdy ESES
SWESSwift Water ESES
VESVaughn ESES
VOYVoyager ESES
GMSGoodman MSMS
HRMSHarbor Ridge MSMS
KPMSKey Peninsula MSMS
KopaKopachuck MSMS
GHHSGig Harbor HSHS
PHSPeninsula HSHS
HBHSHenderson Bay HSHS
GVAGlobal Virtual AcademyAlt
CTPCommunity TransitionAlt

Important Notes

  • Count Day: 1st school day of each month (Oct–Jun). September = 4th school day.
  • Bell schedules change yearly — always pull live from PowerSchool, never hardcode
  • P223 is static — does not hold historical data. Running for a previous month requires restoring FTE overrides from backup.
  • Retain reports 4 years after submission (OSPI audit requirement)
  • Never auto-submit to EDS — always generate file + validation report for human review
  • Browser setup: Disable "Ask where to save each file before downloading" in brave://settings/downloads before first run each session
  • Student List Export: Always downloads as ~/Downloads/student.export.text — move and rename immediately after each school
  • evaluate_script over UID clicks: Use evaluate_script + querySelector/getElementById for all form interactions — snapshot UIDs are unreliable
  • powerschool-navigator agent: Cannot access MCP tools — do not delegate browser automation to it
Stats
Stars0
Forks2
Last CommitMar 14, 2026
Actions

Similar Skills