enrollment
P223 monthly enrollment automation for Peninsula School District — report generation, FTE validation, and compliance checking
What this skill does
# 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
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 — **IN THIS ORDER, DO NOT SKIP ANY**:
**STEP 1 [REQUIRED]**: P223 Form and Audit ⚑ PRIMARY DELIVERABLE
- This is the report submitted to EDS. It MUST be generated first.
- Navigate to state reports page, find P223 link via JS, set parameters per school level
- If P223 fails, STOP and report the error. Do not continue to other reports.
**STEP 2**: Enrollment Summary (all)
**STEP 3**: Entry/Exit Report — previous month then current month (all)
**STEP 4**: Consecutive Absence Report (all) — ALWAYS verify daysToScan=20
**STEP 5**: Class Attendance Audit (all — Period 1 for ES, Periods 1-6 for MS/HS)
**STEP 6**: Student List Export (all) — downloads to `~/Downloads/student.export.text`, move immediately
**STEP 7**: Section Enrollment Audit (all)
**STEP 8** (MS/HS only): Student Schedule Report
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`
```bash
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`
```bash
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`
```bash
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 importRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.