This skill should be used when the user asks to "generate annual schedule", "update annual schedule", "create year schedule", "rebuild schedule", "refresh schedule from spreadsheet", "create full-year view", "build annual camp plan", "consolidate all camp days", "combine summer and PA days", or needs to produce a consolidated annual schedule covering summer, PA days, winter break, and March break from spreadsheet data and school calendar. Generates both markdown and Excel output.
Generates a consolidated annual camp schedule from spreadsheet data and school calendars with markdown and Excel outputs.
/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/generate_annual_schedule.pyscripts/test_generate_annual_schedule.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.
Generate a consolidated annual camp schedule that combines all school-break periods into a single view. Reads summer assignments from the spreadsheet's Daily Schedule tab, looks up non-summer dates from the school calendar, applies provider assignments for PA days and breaks, and produces both a markdown schedule and an updated spreadsheet with an "Annual Schedule" tab.
Read the family profile from <research_dir>/family-profile.md for:
Locate the required files:
examples/sample-budget.xlsx) with Provider Comparison and Daily Schedule tabs${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/The summer schedule comes from the spreadsheet. For non-summer periods, confirm or accept defaults:
| Period | Default Provider | Override? |
|---|---|---|
| PA Days | City of Toronto | Ask user if different |
| Winter Break | YMCA Cedar Glen | Ask user if different |
| March Break | YMCA Cedar Glen | Ask user if different |
| Fall Break | Same as --break-provider | Ask user if different |
Ask the user: "For PA days I'll use City of Toronto ($62/day) and for winter/March/fall breaks I'll use YMCA Cedar Glen ($87/day). Want to change any of these?"
If children need different providers on specific days (e.g., Emma does Science Camp for a PA day while Liam does YMCA), create an overrides JSON file. Every day can have a different provider per child — see the --overrides argument below.
python3 ${CLAUDE_PLUGIN_ROOT}/skills/generate-annual-schedule/scripts/generate_annual_schedule.py \
--xlsx examples/sample-budget.xlsx \
--calendar ${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/public-boards/tcdsb.md \
--children "Emma,Liam" \
--pa-day-provider "City of Toronto" \
--break-provider "YMCA Cedar Glen" \
--output-md <research_dir>/annual-schedule-2025-2026.md \
--update-xlsx
For per-child, per-day provider assignments, add an overrides file:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/generate-annual-schedule/scripts/generate_annual_schedule.py \
--xlsx examples/sample-budget.xlsx \
--calendar ${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/public-boards/tcdsb.md \
--children "Emma,Liam" \
--pa-day-provider "City of Toronto" \
--break-provider "YMCA Cedar Glen" \
--overrides <research_dir>/schedule-overrides.json \
--output-md <research_dir>/annual-schedule-2025-2026.md \
--update-xlsx
Arguments:
--xlsx: Path to the budget spreadsheet (reads Provider Comparison + Daily Schedule tabs)--calendar: Path to the school calendar markdown file--children: Comma-separated children's names (must match spreadsheet column headers)--pa-day-provider: Default provider for PA day coverage (must exist in Provider Comparison tab)--break-provider: Default provider for winter break and March break (must exist in Provider Comparison tab)--fall-break-provider: Default provider for fall break coverage (defaults to same as --break-provider; must exist in Provider Comparison tab)--overrides: Optional JSON file with per-child, per-date provider overrides (see below)--output-md: Path for the generated markdown file--update-xlsx: Flag to add/replace "Annual Schedule" tab in the spreadsheetOverrides JSON format:
The overrides file lets you assign different providers to each child on any date. Children not listed for a date fall back to the period default (--pa-day-provider or --break-provider). Summer dates can also be overridden (replacing the spreadsheet assignment for that child).
{
"2025-09-26": {"Emma": "Science Camp Toronto", "Liam": "YMCA Cedar Glen"},
"2025-10-10": {"Liam": "YMCA Cedar Glen"},
"2025-12-22": {"Emma": "City of Toronto"},
"2026-03-16": {"Emma": "Science Camp Toronto", "Liam": "City of Toronto"}
}
All provider names in the overrides file must exist in the Provider Comparison tab.
Multi-school families: If children attend different schools, pass per-child calendars:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/generate-annual-schedule/scripts/generate_annual_schedule.py \
--xlsx examples/sample-budget.xlsx \
--calendar "Emma:${CLAUDE_PLUGIN_ROOT}/.../tdsb.md" \
--calendar "Liam:${CLAUDE_PLUGIN_ROOT}/.../gist.md" \
--children "Emma,Liam" \
--pa-day-provider "City of Toronto" \
--break-provider "YMCA Cedar Glen" \
--output-md <research_dir>/annual-schedule-2025-2026.md \
--update-xlsx
On days where only some children are off school, the others show "In school" with $0 cost.
The script produces:
Markdown file with:
Updated spreadsheet with:
Show the user the annual summary:
Annual Schedule Generated:
- Summer 2025: 40 days
- PA Days: 7 days
- School Holidays: 5 days
- Winter Break: 7 days
- March Break: 5 days
- Total: 64 days
Files updated:
- <research_dir>/annual-schedule-2025-2026.md
- examples/sample-budget.xlsx (Annual Schedule tab added)
### PA Days - Elementary table)### Holidays & Breaks)Fall Break row in ### Holidays & Breaks)Christmas Break row in ### Holidays & Breaks)Mid-Winter Break (March Break) row)See ${CLAUDE_PLUGIN_ROOT}/examples/sample-annual-schedule.md for the complete output format.
scripts/generate_annual_schedule.py - Read spreadsheet + calendar, generate annual schedule markdown and xlsx tab. Supports --update-xlsx to add Annual Schedule tab to existing spreadsheet.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.
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.