redrover-manager
Access Red Rover absence management data for PSD staff attendance tracking and reporting
What this skill does
# Red Rover Manager Skill
## Overview
Red Rover is an absence management system used by PSD to track staff absences and substitute coverage. This skill provides access to absence data for reporting and analysis.
## Configuration
- **Base URL**: `https://connect.redroverk12.com/`
- **Org ID**: 1305 (Peninsula School District)
- **Authentication**: HTTP Basic Auth + API Key header
- **Credentials**: Stored in 1Password as "RedRover"
- **Rate Limit**: 100 requests/minute
## Authentication
All requests require both:
1. `Authorization: Basic [base64(username:password)]` header
2. `apiKey: [key]` header (obtained from organization endpoint)
The organization endpoint returns a dynamic API key that should be used for subsequent requests.
## Scripts
All scripts are in `skills/redrover-manager/scripts/`. Run with `bun`:
### get_organization.js
Fetch organization info and validate credentials.
```bash
bun get_organization.js
```
Returns: Organization ID, name, and API key.
### get_absences.js
Fetch raw absence/vacancy data for a date range.
```bash
bun get_absences.js <start_date> <end_date> [filled|unfilled|all]
```
Examples:
```bash
bun get_absences.js 2026-01-20 2026-01-27
bun get_absences.js 2026-01-27 2026-01-27 unfilled
```
**Note:** Max date range is 31 days.
### get_daily_summary.js
Get daily absence summary (all staff) with counts by school, reason, and fill status.
```bash
bun get_daily_summary.js [date]
```
Date options:
- `today` (default)
- `yesterday`
- Day names: `monday`, `tuesday`, etc.
- `last wednesday`, `last friday`
- Specific date: `2026-01-27`
### get_certificated_summary.js
Get daily absence summary for **certificated staff only** (Teachers, ESA, CTE).
```bash
bun get_certificated_summary.js [date]
```
Same date options as above. This is the most commonly requested report - focuses on classroom coverage.
### get_weekly_summary.js
Get weekly trends and patterns.
```bash
bun get_weekly_summary.js [weeks_ago]
```
Options:
- `0` = this week (default)
- `1` = last week
- `2` = two weeks ago
## API Endpoints Used
### Organization
```
GET /api/v1/organization
Security: Basic Auth
Returns: Array with org info including dynamic apiKey
```
### Vacancy Details (Primary data endpoint)
```
GET /api/v1/{orgId}/Vacancy/details
Security: Basic Auth + apiKey header
Query Params:
- fromDate: datetime (required)
- toDate: datetime (required)
- filled: boolean (optional - filter filled/unfilled)
- pageSize: int (default 10, max 100)
- page: int (default 1)
Returns: Paginated vacancy/absence data
```
## Common Workflows
### "How many absences yesterday?"
```bash
bun get_daily_summary.js yesterday
```
### "Show unfilled positions for today"
```bash
bun get_daily_summary.js today
# Look at unfilled_positions array in output
```
### "Weekly absence trends"
```bash
bun get_weekly_summary.js
```
### "Last week's summary"
```bash
bun get_weekly_summary.js 1
```
## Output Format
### Daily Summary
```json
{
"date": "yesterday",
"date_iso": "2026-01-26",
"total_absences": 110,
"filled": 75,
"unfilled": 35,
"fill_rate": 68,
"by_school": {
"PENINSULA HIGH SCHOOL": 13,
"GIG HARBOR HIGH SCHOOL": 10
},
"by_reason": {
"SICK LV > 1 SICK": 54,
"OTH PAID LV > PERSONAL": 15
},
"by_position_type": {
"Teacher": 55,
"Paraprofessional": 36
},
"unfilled_positions": [
{
"school": "PENINSULA HIGH SCHOOL",
"position": "MATH",
"employee": "JANE DOE",
"start": "2026-01-26T07:00:00",
"end": "2026-01-26T14:30:00"
}
]
}
```
### Weekly Summary
```json
{
"week": "Jan 20-24, 2026",
"week_label": "this week",
"total_absences": 450,
"daily_average": 90,
"filled": 380,
"unfilled": 70,
"fill_rate": 84,
"peak_day": { "day": "Monday", "count": 120 },
"slow_day": { "day": "Friday", "count": 65 },
"by_day": {
"Monday": 120,
"Tuesday": 95,
"Wednesday": 90,
"Thursday": 80,
"Friday": 65
},
"trends": [
{ "type": "info", "message": "Monday had 120 absences (50%+ above average)" }
]
}
```
## Data Fields
Key fields in vacancy data:
- `absenceDetail.employee` - Employee who is absent
- `absenceDetail.reasons[0].name` - Reason category (SICK, PERSONAL, etc.)
- `location.name` - School name
- `position.title` - Position title
- `position.positionType.name` - Position category (Teacher, Paraprofessional, etc.)
- `substitute` - If present, position is filled
- `start` / `end` - Absence time range
- `needsReplacement` - Whether sub is required
## Schools in PSD
Common school names in data:
- PENINSULA HIGH SCHOOL
- GIG HARBOR HIGH SCHOOL
- HENDERSON BAY HIGH SCHOOL
- GOODMAN MIDDLE SCHOOL
- HARBOR RIDGE MIDDLE SCHOOL
- KEY PENINSULA MIDDLE SCHOOL
- KOPACHUCK MIDDLE SCHOOL
- ARTONDALE ELEMENTARY SCHOOL
- DISCOVERY ELEMENTARY SCHOOL
- EVERGREEN ELEMENTARY SCHOOL
- HARBOR HEIGHTS ELEMENTARY SCHOOL
- MINTER CREEK ELEMENTARY SCHOOL
- PIONEER ELEMENTARY SCHOOL
- PURDY ELEMENTARY SCHOOL
- SWIFT WATER ELEMENTARY SCHOOL
- VAUGHN ELEMENTARY SCHOOL
- VOYAGER ELEMENTARY SCHOOL
Related in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.