一键导入
enrollment
P223 monthly enrollment automation for Peninsula School District — report generation, FTE validation, and compliance checking
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
P223 monthly enrollment automation for Peninsula School District — report generation, FTE validation, and compliance checking
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | enrollment |
| description | P223 monthly enrollment automation for Peninsula School District — report generation, FTE validation, and compliance checking |
| argument-hint | [action] [school?] [date?] |
| model | claude-opus-5 |
| effort | high |
| paths | ["scripts/","references/","~/Downloads/","./"] |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep","Agent","WebFetch","WebSearch","mcp__chrome-devtools__navigate_page","mcp__chrome-devtools__click","mcp__chrome-devtools__click_at","mcp__chrome-devtools__hover","mcp__chrome-devtools__fill","mcp__chrome-devtools__type_text","mcp__chrome-devtools__fill_form","mcp__chrome-devtools__press_key","mcp__chrome-devtools__take_screenshot","mcp__chrome-devtools__take_snapshot","mcp__chrome-devtools__wait_for","mcp__chrome-devtools__evaluate_script","mcp__chrome-devtools__list_console_messages","mcp__chrome-devtools__list_pages","mcp__chrome-devtools__select_page","mcp__chrome-devtools__new_page","mcp__chrome-devtools__handle_dialog","mcp__chrome-devtools__upload_file"] |
| extended-thinking | true |
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.
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
/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):
brave://settings/downloads — disable "Ask where to save each file before downloading"Workflow:
references/school-config.md to determine school level (ES/MS/HS) and P223 parametersreferences/report-checklist.md for direct URLs and JS patterns for each reportevaluate_script for all form interactions — UID-based clicks are unreliable (UIDs change between renders)~/Downloads/student.export.text, move immediately
STEP 7: Section Enrollment Audit (all)
STEP 8 (MS/HS only): Student Schedule Reportbun ~/Desktop/P223-<Month>-<Year>/save_pdf.js <path> <title_filter>Key automation patterns (see report-checklist.md for full JS snippets):
document.getElementById('btnSubmit').click()detail.html?frn=<id> → wait_for(["Result File"]) → save PDF#m value → dispatch change event → auto-refreshes (no submit)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):
/enrollment checklist [month]Show what's done and remaining for a monthly enrollment count.
Workflow:
references/report-checklist.md/enrollment helpExplain the P223 process and what's automated.
Workflow:
references/p223-process.md and references/cant-automate.md/enrollment fte [school] [schedule-info]Calculate FTE for a student at a given school based on their schedule.
Workflow:
references/fte-rules.md/enrollment validate [school]Run validation checks against downloaded enrollment data.
Workflow:
enrollment-validator agent/enrollment compare [month1] [month2]Compare enrollment across two months to detect changes requiring revisions.
Workflow:
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:
references/fte-rules.md for ALE FTE rates by paired schoolScript: 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:
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:
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.
CRITICAL — NEVER STOP: When running the full monthly workflow, you MUST process every school without pausing, stopping, or asking for confirmation between schools. If you encounter an error at one school, log it and continue to the next school. Report all errors at the end. The only acceptable reason to stop is if the PowerSchool session expires (HTTP 302 to pw.html).
After completing each school, immediately output a one-line status and proceed to the next school. Do not summarize, do not ask if the user wants to continue, do not pause for any reason.
Context management (prevents mid-run stops from context window pressure):
take_snapshot) unless actively debugging a failure. Use evaluate_script to extract only the data needed (headcount numbers, student names, report status).take_screenshot with filePath for archival — screenshots don't consume context.wait_for snapshot results — they are 50KB+ and fill the context window. Only check the returned status, not the DOM content.Execution model — completion loop, not step list:
This workflow uses a completion-driven loop. It does NOT run a list of steps and hope to finish. It defines DONE and loops until DONE is achieved.
DONE = every school in SCHOOLS has all required reports saved to the backup folder.
SCHOOLS = [AES, DES, EES, HHES, MCES, PIE, PES, SWES, VES, VOY, GMS, HRMS, KPMS, Kopa, GHHS, PHS, HBHS]
REQUIRED_REPORTS_ES = [P223, EnrollmentSummary, EntryExitPrev, EntryExitCurr, ConsecutiveAbsence, ClassAttendanceAudit, StudentListExport, SectionEnrollmentAudit]
REQUIRED_REPORTS_MS_HS = REQUIRED_REPORTS_ES + [StudentScheduleReport]
Phase 1: District-Level Batch (run once)
Phase 2: Per-School Reports (completion loop)
Loop:
1. Check backup folder — which schools have all required reports?
2. Build REMAINING = SCHOOLS minus completed schools
3. If REMAINING is empty → DONE. Go to Phase 3.
4. Pick next school from REMAINING
5. Switch to that school in PowerSchool
6. Run all MISSING reports for that school (skip any already saved from Phase 1)
7. After each report, save to backup folder
8. After all reports for this school, output one-line status:
✓ [SCHOOL] — HC: [N], Issues: [none/description] ([completed]/[total] schools done)
9. GOTO step 1
This loop NEVER stops until step 3 is satisfied. There is no "pause and ask" between schools. There is no summary after each school. There is no stopping at natural boundaries. The only exit condition is DONE.
If a report fails: log the error, skip it, continue to next report. If a school fails entirely: log it, continue to next school. If the session expires: re-authenticate and resume from current school. Failed reports/schools are retried in the next pass of the loop.
Phase 3: Post-Reports
/enrollment statusShow dashboard of monthly process progress.
Workflow:
All scripts live in plugins/psd-productivity/skills/enrollment/scripts/ and use uv run.
| Script | Phase | Purpose |
|---|---|---|
fte_calculator.py | 2 | FTE calculation engine (ES/MS/HS/GVA) |
enrollment_validator.py | 2 | Data validation suite (9 checks) |
month_comparison.py | 2 | Month-over-month diff detector |
entry_exit_balancer.py | 2 | Entry/Exit reconciliation per grade |
ale_reconciler.py | 4 | ALE FTE reconciliation + CTE extraction |
rs_reconciler.py | 4 | Running Start reconciliation vs TCC |
validation_report.py | 5 | District validation report + EDS import |
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"}'
| Abbr | School | Level |
|---|---|---|
| AES | Artondale ES | ES |
| DES | Discovery ES | ES |
| EES | Evergreen ES | ES |
| HHES | Harbor Heights ES | ES |
| MCES | Minter Creek ES | ES |
| PIE | Pioneer ES | ES |
| PES | Purdy ES | ES |
| SWES | Swift Water ES | ES |
| VES | Vaughn ES | ES |
| VOY | Voyager ES | ES |
| GMS | Goodman MS | MS |
| HRMS | Harbor Ridge MS | MS |
| KPMS | Key Peninsula MS | MS |
| Kopa | Kopachuck MS | MS |
| GHHS | Gig Harbor HS | HS |
| PHS | Peninsula HS | HS |
| HBHS | Henderson Bay HS | HS |
| GVA | Global Virtual Academy | Alt |
| CTP | Community Transition | Alt |
brave://settings/downloads before first run each session~/Downloads/student.export.text — move and rename immediately after each schoolevaluate_script + querySelector/getElementById for all form interactions — snapshot UIDs are unreliableAutomate the version bump ritual — three independent tracks (marketplace, psd-coding-system, psd-productivity)
Auto-evolve the plugin — compounds learnings into CLAUDE.md/patterns/agents then prunes them, checks releases, compares competition, contributes patterns
Autonomous build-to-done — implement, verify the full Definition of Done (build/lint/typecheck/full suite/Playwright + screenshots), open a PR with visual evidence, then watch CI and the AI reviewers and fix every round until 100% clean. Does not stop until done.
Clarify intent, research in parallel, design the approach, and emit a task breakdown + a machine-checkable Definition of Done — optionally filing contract-compliant GitHub issues that /lfg can pick up and drive to done.
Sign, notarize, and package a macOS .app into a .pkg for PSD Jamf Self Service deployment — full Apple Developer ID pipeline (sign → notarize → staple → pkgbuild → notarize pkg → verify). Triggers on "sign app", "notarize app", "package for jamf", "build pkg".
Configure this project's verification gate and review agents — writes .psd/verify.json (build/lint/test/typecheck/e2e commands, E2E flows, strictness, AI-reviewer logins, learnings, active review agents)