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.
Creates complete summer camp schedules by analyzing school calendars, family profiles, and camp options to ensure gap-free coverage.
/plugin marketplace add reggiechan74/cc-plugins/plugin install kids-camp-planner@cc-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/summer_dates.pyLocate 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/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.Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.