This skill should be used when the user asks to "set up camp planner", "initialize camp planning", "create family profile", "configure camp planner", "start camp planning", "set up kids camp", or mentions needing to configure their family details, children info, school board, or budget for camp planning. Provides guided setup workflow for the kids-camp-planner plugin.
Initializes camp planning workspace with family profiles, templates, and configuration for summer camp research.
/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.
Initialize the kids-camp-planner workspace by creating the research folder structure, seeding it with templates and examples, collecting the family profile, and configuring API keys. This is typically the first step before any camp planning activity.
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.
Ask the user what they'd like to name their research directory using AskUserQuestion:
camp-research (recommended)camps, camp-planning, kids-camps)Store the chosen name — it will be written to .claude/kids-camp-planner.local.md as research_dir in Step 3.
Create the following directory structure in the user's current working directory, using the research directory name chosen in Step 0:
<research_dir>/
├── family-profile.md # Full family profile (seeded from plugin, filled in Step 2)
├── providers/ # Individual camp provider files
├── templates/
│ └── provider-template.md # Provider file template for reference
├── examples/
│ ├── ymca-cedar-glen.md # YMCA Cedar Glen example
│ └── boulderz-etobicoke.md # Boulderz Climbing example
├── drafts/ # Draft emails
├── school-calendars/ # Saved school calendar data for this family
├── summer-YYYY/ # Summer period planning
├── march-break-YYYY/ # March break planning
├── fall-break-YYYY/ # Fall break planning (private schools)
└── pa-days-YYYY-YYYY/ # PA day coverage
Seed files from plugin: Copy the following files from the plugin into the research directory so the user has templates and examples visible in their project:
| Source (plugin) | Destination (research dir) |
|---|---|
${CLAUDE_PLUGIN_ROOT}/examples/family-profile.md | <research_dir>/family-profile.md |
${CLAUDE_PLUGIN_ROOT}/skills/research-camps/references/provider-template.md | <research_dir>/templates/provider-template.md |
${CLAUDE_PLUGIN_ROOT}/skills/research-camps/examples/ymca-cedar-glen.md | <research_dir>/examples/ymca-cedar-glen.md |
${CLAUDE_PLUGIN_ROOT}/skills/research-camps/examples/boulderz-etobicoke.md | <research_dir>/examples/boulderz-etobicoke.md |
Read each source file with the Read tool and write it to the destination with the Write tool.
Notes:
fall-break-YYYY/ folder is only created if the school has a fall break (common in private schools, uncommon in Ontario public boards). If unsure, create it — it's harmless to have an empty folder.school-calendars/ folder stores the user's specific school calendar data. Before web searching, check if pre-saved data exists in the plugin's reference data at ${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/. If found, copy the relevant data to the user's folder and confirm it matches the current year.pa-days-2025-2026).Guide the user through providing their family information using AskUserQuestion. Collect information in logical groups to avoid overwhelming the user:
Group 1 - Children:
Group 2 - School Information:
${CLAUDE_PLUGIN_ROOT}/skills/camp-planning/references/school-calendars/ for existing dataGroup 3 - Parents/Guardians:
Group 4 - Location & Commute:
Group 5 - Budget:
Group 6 - Vacation & Exclusion Dates:
Group 7 - School Year Dates (optional overrides):
Write the collected profile to <research_dir>/family-profile.md in YAML frontmatter format. Reference the seed template already copied in Step 1 for the expected format. Include a markdown body section titled "Family Notes" for any additional context the user provides.
Collect optional API keys:
Geoapify API key (optional):
Write the thin config file to .claude/kids-camp-planner.local.md with:
research_dir: The directory name chosen in Step 0apis.geoapify_api_key: The API key collected (or empty string if skipped)Reference the template at ${CLAUDE_PLUGIN_ROOT}/examples/kids-camp-planner.local.md for the expected format.
Present a summary of the setup to the user:
<research_dir>/family-profile.md — full family profile.claude/kids-camp-planner.local.md — thin config (research_dir pointer + API keys)<research_dir>/templates/ and <research_dir>/examples/Invite the user to review and edit the family profile directly at <research_dir>/family-profile.md if any corrections are needed. Mention that API keys can be updated in .claude/kids-camp-planner.local.md.
If a .claude/kids-camp-planner.local.md file already exists:
research_dir path<research_dir>/family-profile.md for existing family dataIf research_dir points to a directory that doesn't exist, treat it as a fresh setup starting from Step 1.
After generating the profile, verify:
.claude/kids-camp-planner.local.md has correct research_dir valueExpert 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.