Help us improve
Share bugs, ideas, or general feedback.
From kids-camp-planner
Extracts and saves structured school calendar data from PDFs, URLs, or web searches into reference directories for camp planning skills.
npx claudepluginhub reggiechan74/cc-plugins --plugin kids-camp-plannerHow this skill is triggered — by the user, by Claude, or both
Slash command
/kids-camp-planner:add-school-calendarThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Locate research directory:** Read `.claude/kids-camp-planner.local.md` to get the `research_dir` path (default: `camp-research`). All user data paths below are relative to this directory. The family profile is at `<research_dir>/family-profile.md`.
Fetches Korean school meal menus (급식 식단) via NEIS proxy. Users specify education office, school name, and date; skill searches school and retrieves meal info.
Transforms calendar events into meeting briefings, standup notes, and workflows with git commits/PR context. Handles ICS files, JSON feeds, or manual input.
Provides guidance for effective classroom communication including parent partnerships, student feedback, and IEP/504 documentation. Useful for educators preparing professional communications.
Share bugs, ideas, or general feedback.
Locate research directory: Read .claude/kids-camp-planner.local.md to get the research_dir path (default: camp-research). All user data paths below are relative to this directory. The family profile is at <research_dir>/family-profile.md.
Extract school calendar data from a URL, PDF, or web search and save it as a structured reference file in the school-calendars directory. This makes the data instantly available to all planning skills (plan-summer, plan-march-break, plan-pa-days) without requiring web searches for known schools.
All planning skills use the School Calendar Lookup pattern (see below) before asking the user or searching the web. This skill is what populates the internal library that those lookups check first.
This is the standard lookup pattern used by all planning skills in the plugin. When any skill needs school calendar data:
Search the plugin's pre-saved calendar data:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/public-boards/${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/private-schools/Use Glob to find files matching the school name or abbreviation. If a matching file exists and covers the required school year, use it directly. Inform the user: "Found [school] calendar data in the internal library for [year]."
If data exists but is for a different school year, inform the user and proceed to Tier 2.
If no internal data is found, ask the user: "I don't have [school name] calendar data saved. Do you have the school calendar available? You can provide:"
If the user doesn't have the calendar handy, conduct a web search:
curl -L -o) and save to ${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/pdfs/[abbreviation]/[abbreviation]-[YYYY-YYYY].pdf, then read the PDF to extract dataAfter extracting data from any tier, proceed to the extraction and saving workflow below.
Collect the following (skip any the user has already provided):
Then run the 3-Tier Lookup above. If Tier 1 finds existing data and the user just wants to verify it, show them the saved data and offer to update it.
Read the source (PDF via Read tool, URL via WebFetch, or web search results) and extract all of the following. If a field cannot be found, mark it as "Not specified" rather than guessing.
| Field | Example |
|---|---|
| First instructional day | September 2, 2025 |
| Last instructional day (elementary) | June 25, 2026 |
| Last instructional day (secondary) | June 24, 2026 |
| PA days with dates and day-of-week | Sep 26 (Fri), Oct 10 (Fri)... |
| March break dates | March 16-20, 2026 |
| Winter/Christmas break dates | December 22 - January 2 |
| Summer break start | Day after last instructional day |
| Field | Example |
|---|---|
| Fall break dates | November 3-7, 2025 |
| Early dismissal dates | June 26 (1:15pm) |
| Exam periods | January 26-29 |
| PA day purposes | "Parent Teacher Conferences" |
| Special events affecting scheduling | "Camp Pine Crest Sep 16-19" |
| Next year start date | August 31, 2026 |
Standard Ontario holidays to look for:
For private/independent schools, identify the nearest public board (typically TDSB for Toronto schools) and create a comparison:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/private-schools/gist.md for the format).To cross-reference, check if the public board's calendar is already saved (Tier 1 lookup). If not saved, offer to add it first or note that cross-referencing will need the public board data later.
Compute the summer coverage window:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/plan-summer/scripts/summer_dates.py \
--year YYYY --last-school-day YYYY-MM-DD --first-fall-day YYYY-MM-DD --format text
If the script is unavailable, calculate manually: count all weekdays (Mon-Fri) between the day after the last instructional day and the day before the fall start date, excluding Labour Day.
Save the structured markdown data following the established format.
Markdown file location:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/public-boards/[abbreviation].md${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/private-schools/[abbreviation].mdPDF file location (if a PDF was downloaded in Tier 3):
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/pdfs/[abbreviation]/[abbreviation]-[YYYY-YYYY].pdfFile structure: Use the full template at references/calendar-template.md. Key sections:
After saving:
<research_dir>/family-profile.md), inform the user that other skills will now automatically use this data via Tier 1 lookupreferences/calendar-template.md - Blank template matching the established file formatReference these for format consistency:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/public-boards/tdsb.md${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/private-schools/gist.mdscripts/scrape_board_calendar.py - HTML calendar page scraper. Produces draft-quality markdown from school board websites. Requires human/agent review. Use for boards with HTML calendar pages; PDF-only boards still need manual extraction.scripts/validate_calendar.py - Calendar file validator. Checks required sections, parseable dates, school year format. Use --all to validate an entire directory.