Wilma Triage
Automated daily triage of Wilma school data for parents. Filters noise, surfaces actionable items, and syncs exams/events to Google Calendar.
Dependencies
- wilma skill — install from ClawHub (
clawhub install wilma) for Wilma CLI commands and setup
- gog skill — install from ClawHub (
clawhub install gog) for Google Calendar sync
First Run Setup
On first use, collect and store configuration:
- Discover kids: Run
wilma kids list --json to get student names, numbers, and schools
- Calendar ID: Run
gog calendar calendars to list available calendars. Ask the user which calendar to use for school events. Store the calendar ID in TOOLS.md under a ## Wilma Triage section along with naming conventions for events.
- Preferences: Ask about any kid-specific rules (e.g., subject overrides like ET instead of religion). Store in MEMORY.md as part of the Wilma triage context.
Over time, the user will give feedback on what to report and what to skip — store these preferences in MEMORY.md. The triage gets smarter with use.
Workflow
Fetch data — check TOOLS.md for student details, then start with summary:
# Best starting point — returns schedule, exams, homework, news, messages
wilma summary --all-students --json
# Drill into specifics as needed
wilma exams list --all-students --json
wilma schedule list --when today --all-students --json
wilma schedule list --when tomorrow --all-students --json
wilma homework list --all-students --limit 10 --json
wilma grades list --all-students --limit 5 --json
wilma messages list --all-students --limit 10 --json
wilma news list --all-students --limit 10 --json
# Read full content when subject line looks actionable
wilma messages read <id> --student <name> --json
wilma news read <id> --student <name> --json
Filter — apply triage rules below plus any kid-specific rules from MEMORY.md
Calendar sync — add missing exams and actionable events using gog CLI commands from TOOLS.md
- ALWAYS check for existing events before adding to avoid duplicates
- Use naming conventions stored in TOOLS.md
- Remove cancelled events from calendar
Report — if actionable items found, send details. If nothing actionable, stay silent or send a brief confirmation. Check MEMORY.md for the user's notification preference.
Calendar Sync
Refer to TOOLS.md for the calendar ID, naming conventions, and exact gog CLI commands.
NO DUPLICATES rule:
- Before adding any event, check calendar for that date range
- If a matching event exists (same date + child + subject keywords), skip it
- Only add if not already there
Understanding Wilma Messages
Wilma messages come from different sources and have very different signal-to-noise ratios. Knowing the difference is critical for good triage:
- Viikkoviesti / weekly letter (from class teacher) — HIGH VALUE. These are the class teacher's weekly updates. They look like casual newsletters but frequently contain buried actionable items: upcoming exams, materials to bring, schedule changes, field trips, deadlines. Always read the full content. Never skip based on subject line.
- Teacher messages (from subject teachers) — Usually about specific exams, homework, or class events. High signal.
- School office / rehtori messages — Administrative: schedule changes, events, policy updates. Medium signal — skim for actions.
- Kuukausitiedote / monthly newsletter (from school office) — Read these. They typically contain important dates: holidays, school year start/end, event schedules, enrollment deadlines. Don't skip based on the generic subject line.
- City-wide notices (from Helsinki/municipality) — Health campaigns, transport info, surveys. Usually noise for daily triage. Skim subject, skip unless clearly actionable.
- Parent union / vanhempainyhdistys — Low signal by default (fundraising, volunteer calls). However, check MEMORY.md — if the parent is actively involved in the union, these become high priority.
Rule of thumb: If a message is from a teacher (class teacher or subject teacher), always read it. If it's from the school office or city, skim the subject and skip unless it's clearly actionable.
Triage Rules
Always Report (Actionable)
- Forms, permission slips, replies needed
- Deadlines (sign-ups, payments, materials to bring)
- Schedule changes (early dismissal, cancelled classes, substitute arrangements)
- Special gear/materials needed (e.g., "bring ski gear", "outdoor clothing")
- After-school events kids might want to attend (discos, movie nights)
- Exam schedule updates or new exams
- Cancelled events that are on the calendar → remove them
Report Briefly (Worth Mentioning)
- Field trips, themed days with date info
- School closures, holiday schedule changes
- Health notices (lice alerts, illness outbreaks)
- New grades (brief mention with grade)
Important: Always Read Weekly Letters (viikkoviesti)
Weekly letters from class teachers often contain actionable items buried in the text: exams, materials to bring, schedule changes, field trips. Always read the full content of viikkoviesti messages — do not skip based on subject line alone.
Skip Silently
- Concerts, cultural performances (FYI only)
- Generic "welcome back" or seasonal greetings
- City-wide informational notices (health campaigns, transport info, surveys)
- Parent union messages (unless user is actively involved — check MEMORY.md)
Check MEMORY.md for additional skip/report rules the user has provided over time (e.g., subject overrides, school-specific filtering).
Suggested Cron Setup
Run daily at 07:00 local time as an isolated agentTurn job:
Schedule: 07:00 daily
Timeout: 180s
Task: "Read the wilma-triage skill, then run the full triage workflow. Report actionable findings."
Stagger with other morning jobs (e.g., email check at 07:05) to avoid API rate limits.
Output Format Example
📚 Wilma Update
Child A (8th grade)
• Math exam tomorrow — yhtälöt, kpl 1-8
• Friday short day (9:20-12:35) — kulttuuripäivä, bring laptop + outdoor clothes
Child B (6th grade)
• No actionable items
📅 Calendar: Added Child A math exam (Feb 10), removed cancelled disco (Feb 11)
Keep it brief. One line per item. Silence is better than noise.
1---2name: wilma-triage3description: Daily triage of Wilma school notifications for Finnish parents. Fetches exams, messages, news, schedules, and homework — filters for actionable items, syncs exams to Google Calendar, and reports via chat. Requires the `wilma` skill and `gog` CLI (or `gog` skill from ClawHub) for calendar access.4---5
6# Wilma Triage
7
8Automated daily triage of Wilma school data for parents. Filters noise, surfaces actionable items, and syncs exams/events to Google Calendar.
9
10## Dependencies
11
12- **wilma skill** — install from ClawHub (`clawhub install wilma`) for Wilma CLI commands and setup
13- **gog skill** — install from ClawHub (`clawhub install gog`) for Google Calendar sync
14
15## First Run Setup
16
17On first use, collect and store configuration:
18
191. **Discover kids:** Run `wilma kids list --json` to get student names, numbers, and schools
202. **Calendar ID:** Run `gog calendar calendars` to list available calendars. Ask the user which calendar to use for school events. Store the calendar ID in **TOOLS.md** under a `## Wilma Triage` section along with naming conventions for events.
213. **Preferences:** Ask about any kid-specific rules (e.g., subject overrides like ET instead of religion). Store in **MEMORY.md** as part of the Wilma triage context.
22
23Over time, the user will give feedback on what to report and what to skip — store these preferences in MEMORY.md. The triage gets smarter with use.
24
25## Workflow
26
271. **Fetch data** — check TOOLS.md for student details, then start with summary:
28 ```bash
29 # Best starting point — returns schedule, exams, homework, news, messages
30 wilma summary --all-students --json
31
32 # Drill into specifics as needed
33 wilma exams list --all-students --json
34 wilma schedule list --when today --all-students --json
35 wilma schedule list --when tomorrow --all-students --json
36 wilma homework list --all-students --limit 10 --json
37 wilma grades list --all-students --limit 5 --json
38 wilma messages list --all-students --limit 10 --json
39 wilma news list --all-students --limit 10 --json
40
41 # Read full content when subject line looks actionable
42 wilma messages read <id> --student <name> --json
43 wilma news read <id> --student <name> --json
44 ```
45
462. **Filter** — apply triage rules below plus any kid-specific rules from MEMORY.md
47
483. **Calendar sync** — add missing exams and actionable events using gog CLI commands from TOOLS.md
49 - **ALWAYS check for existing events before adding** to avoid duplicates
50 - Use naming conventions stored in TOOLS.md
51 - Remove cancelled events from calendar
52
534. **Report** — if actionable items found, send details. If nothing actionable, stay silent or send a brief confirmation. Check MEMORY.md for the user's notification preference.
54
55## Calendar Sync
56
57Refer to TOOLS.md for the calendar ID, naming conventions, and exact gog CLI commands.
58
59**NO DUPLICATES rule:**
601. Before adding any event, check calendar for that date range
612. If a matching event exists (same date + child + subject keywords), skip it
623. Only add if not already there
63
64## Understanding Wilma Messages
65
66Wilma messages come from different sources and have very different signal-to-noise ratios. Knowing the difference is critical for good triage:
67
68- **Viikkoviesti / weekly letter** (from class teacher) — **HIGH VALUE.** These are the class teacher's weekly updates. They look like casual newsletters but frequently contain buried actionable items: upcoming exams, materials to bring, schedule changes, field trips, deadlines. **Always read the full content.** Never skip based on subject line.
69- **Teacher messages** (from subject teachers) — Usually about specific exams, homework, or class events. High signal.
70- **School office / rehtori messages** — Administrative: schedule changes, events, policy updates. Medium signal — skim for actions.
71- **Kuukausitiedote / monthly newsletter** (from school office) — **Read these.** They typically contain important dates: holidays, school year start/end, event schedules, enrollment deadlines. Don't skip based on the generic subject line.
72- **City-wide notices** (from Helsinki/municipality) — Health campaigns, transport info, surveys. Usually noise for daily triage. Skim subject, skip unless clearly actionable.
73- **Parent union / vanhempainyhdistys** — Low signal by default (fundraising, volunteer calls). However, check MEMORY.md — if the parent is actively involved in the union, these become high priority.
74
75**Rule of thumb:** If a message is from a teacher (class teacher or subject teacher), always read it. If it's from the school office or city, skim the subject and skip unless it's clearly actionable.
76
77## Triage Rules
78
79### Always Report (Actionable)
80- Forms, permission slips, replies needed
81- Deadlines (sign-ups, payments, materials to bring)
82- Schedule changes (early dismissal, cancelled classes, substitute arrangements)
83- Special gear/materials needed (e.g., "bring ski gear", "outdoor clothing")
84- After-school events kids might want to attend (discos, movie nights)
85- Exam schedule updates or new exams
86- Cancelled events that are on the calendar → remove them
87
88### Report Briefly (Worth Mentioning)
89- Field trips, themed days with date info
90- School closures, holiday schedule changes
91- Health notices (lice alerts, illness outbreaks)
92- New grades (brief mention with grade)
93
94### Important: Always Read Weekly Letters (viikkoviesti)
95Weekly letters from class teachers often contain actionable items buried in the text: exams, materials to bring, schedule changes, field trips. **Always read the full content** of viikkoviesti messages — do not skip based on subject line alone.
96
97### Skip Silently
98- Concerts, cultural performances (FYI only)
99- Generic "welcome back" or seasonal greetings
100- City-wide informational notices (health campaigns, transport info, surveys)
101- Parent union messages (unless user is actively involved — check MEMORY.md)
102
103**Check MEMORY.md for additional skip/report rules** the user has provided over time (e.g., subject overrides, school-specific filtering).
104
105## Suggested Cron Setup
106
107Run daily at 07:00 local time as an isolated agentTurn job:
108
109```
110Schedule: 07:00 daily
111Timeout: 180s
112Task: "Read the wilma-triage skill, then run the full triage workflow. Report actionable findings."
113```
114
115Stagger with other morning jobs (e.g., email check at 07:05) to avoid API rate limits.
116
117## Output Format Example
118
119```
120📚 Wilma Update
121
122Child A (8th grade)
123• Math exam tomorrow — yhtälöt, kpl 1-8
124• Friday short day (9:20-12:35) — kulttuuripäivä, bring laptop + outdoor clothes
125
126Child B (6th grade)
127• No actionable items
128
129📅 Calendar: Added Child A math exam (Feb 10), removed cancelled disco (Feb 11)
130```
131
132Keep it brief. One line per item. Silence is better than noise.