From kids-camp-planner
This skill should be used when the user asks to "plan summer camps", "plan summer coverage", "fill the summer schedule", "summer camp schedule", "cover the summer", "what camps for summer", "summer childcare plan", "plan from end of school to Labour Day", or needs help building a complete summer camp schedule covering the period from the last day of school through to the start of the next school year. Provides a structured workflow for gap-free summer camp coverage in Ontario.
npx claudepluginhub reggiechan74/cc-plugins --plugin kids-camp-plannerThis skill uses the workspace's default tool permissions.
**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`.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
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.
Build a complete summer camp schedule covering every weekday from the last day of school through to the day before the new school year begins (typically the day after Labour Day in Ontario). Identify coverage gaps, match camps to children's ages and interests, respect budget and logistics constraints, and produce a visual schedule.
Read the family profile from <research_dir>/family-profile.md for school dates. If school dates are not specified in the profile, use the 3-Tier School Calendar Lookup:
Tier 1 - Check internal library first:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/ for the family's school board/schoolTier 2 - Ask the user: If no internal data exists, ask: "I don't have [school] calendar data saved. Do you have the school calendar URL or PDF handy?"
Tier 3 - Web search: If the user doesn't have it, search for "[school board] school year calendar [year]"
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/pdfs/Check calendar staleness: After loading calendar data, extract the school year from the ## YYYY-YYYY School Year header. Parse the end year (e.g., 2026 from "2025-2026"). If the current date is after September 1 of that end year, warn: "Calendar data for [board] is from [year]. The current year may have different PA days and breaks. Would you like to search for updated calendar data?" If the user says yes, run the 3-Tier School Calendar Lookup to find updated data.
Multi-school families: If children attend different schools, determine the summer window per child. The coverage window starts on the earliest last-school-day and ends on the latest first-fall-day across all schools. On days when one child's school is still in session (or has already started), that child does not need camp coverage.
From the calendar data, determine:
Private school note: Private schools may have a shorter or longer summer than public schools depending on their start/end dates. Always use the actual school calendar dates, not the public board defaults. Pass the exact dates to the summer_dates.py script via --last-school-day and --first-fall-day.
Run the date calculator to determine the exact window:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/plan-summer/scripts/summer_dates.py \
--year 2025 \
--last-school-day 2025-06-26 \
--first-fall-day 2025-09-02
The script outputs: total weekdays, total weeks, and a week-by-week date range listing.
For day-by-day output, add the --output-days flag:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/plan-summer/scripts/summer_dates.py \
--year 2025 \
--last-school-day 2025-06-26 \
--first-fall-day 2025-09-02 \
--output-days
This adds a day-by-day listing showing each weekday with its week number and coverage status.
From the family profile, identify vacation and exclusion dates. Subtract these from the coverage window to determine weeks/days that need camp coverage.
Present to user:
Summer 2025 Coverage Needs:
- Total window: June 30 - August 29 (9 weeks)
- Vacation: July 14-18 (cottage), Aug 11-15 (camping)
- Weeks needing coverage: 7 weeks
- Days needing coverage: 35 weekdays
Check if provider files already exist in <research_dir>/providers/. If not, suggest using the research-camps skill or camp-researcher agent to find options.
For each child, filter providers by:
Create a week-by-week assignment considering:
Hard constraints (must satisfy):
Soft constraints (optimize for):
Day-by-day schedule format (primary):
# Summer 2025 Daily Schedule
| Date | Day | Emma's Camp | Emma Cost | Liam's Camp | Liam Cost | Daily Total | Notes |
|------|-----|-------------|-----------|-------------|-----------|-------------|-------|
| 2025-06-30 | Mon | YMCA Cedar Glen | $87 | YMCA Cedar Glen | $87 | $174 | Week 1 |
| 2025-07-01 | Tue | YMCA Cedar Glen | $87 | YMCA Cedar Glen | $87 | $174 | |
| ... | ... | ... | ... | ... | ... | ... | ... |
Weekly summary format (derived from daily):
# Summer 2025 Weekly Summary
| Week | Dates | Child 1 | Child 2 | Notes |
|------|-------|---------|---------|-------|
| 1 | Jun 30 - Jul 4 | YMCA Day Camp | YMCA Day Camp | Sibling discount |
| 2 | Jul 7 - Jul 11 | City Swim Camp | City Art Camp | Different interests |
| 3 | Jul 14 - Jul 18 | VACATION | VACATION | Cottage trip |
| ... | ... | ... | ... | ... |
The day-by-day schedule is the primary format and source of truth. Weekly summaries are derived from it. See ${CLAUDE_PLUGIN_ROOT}/examples/sample-annual-schedule.md for a full-year example.
After building the initial schedule, check for:
Flag issues clearly and suggest alternatives.
Create or update:
<research_dir>/summer-YYYY/schedule.md - The week-by-week schedule table<research_dir>/summer-YYYY/budget.md - Budget summary (use budget-optimization skill)<research_dir>/providers/ for any new providers identifiedSummarize the plan for the user:
scripts/summer_dates.py - Calculate summer coverage window, weekday counts, and week-by-week date ranges given school year boundaries. Use --output-days for day-by-day listing with week numbers.