From berlin-events
Find interesting art and food events in Berlin. Use when the user asks 'What events are happening in Berlin this week?' or 'Find me art exhibitions and food festivals in Berlin next weekend.' Search event sources, check against Google Calendar for conflicts, and produce a curated list of relevant events with location context.
npx claudepluginhub kjgarza/marketplace-claude --plugin berlin-eventsThis skill is limited to using the following tools:
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.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Search Berlin event sources for upcoming art and food events, check against Google Calendar for conflicts, and produce a curated, relevance-ranked list.
Check .claude/berlin-events.local.md in the current project root first, then fall back to ~/.claude/berlin-events.local.md. Extract:
If no settings file exists, assume defaults: neighborhood=Mitte, interests=art+food, calendar=primary, lookahead=14 days.
Parse the optional argument for date range:
Calculate exact dates using today's date. Only include future events.
Load the event sources knowledge from the event-sources skill's reference file at ${CLAUDE_PLUGIN_ROOT}/skills/event-sources/references/sources.md.
Search sources in parallel using the event-scout agent for each source group:
Group 1 - Web Search (fastest, broadest) Run web searches for:
Group 2 - Key Event Pages (via Readability) Extract content from high-value pages using:
bun run ${CLAUDE_PLUGIN_ROOT}/scripts/extract-content.js "<url>"
Priority pages for art:
Priority pages for food:
Group 3 - Browser (for dynamic pages) If browser tools are available, use Chrome automation to load JavaScript-heavy event pages that Readability cannot extract.
Check for scheduling conflicts using gcalcli:
gcalcli agenda --nocolor --details end "today" "+14 days"
If gcalcli is not installed, install it:
pip3 install gcalcli
If not authenticated, inform the user to run ! gcalcli agenda to complete OAuth flow.
Parse the calendar output to identify busy time slots. Flag any events that overlap with existing calendar entries.
For each discovered event, note the neighborhood/area (e.g., "Kreuzberg", "Mitte", "Charlottenburg"). Compare with the user's neighborhood from settings to provide travel context:
Use general Berlin geography knowledge for estimates. Do not call external routing APIs.
Score events by:
Output a curated list grouped by date, formatted as:
## [Day, Date]
### [Event Name]
- **What**: [Brief description]
- **Where**: [Venue, Neighborhood] — [travel context from your location]
- **When**: [Time]
- **Category**: Art | Food
- **Link**: [URL]
- **Calendar conflict**: None | "Conflicts with [existing event] at [time]"
- **Add to calendar**: [gcalcli command or Google Calendar link]
---
For the Google Calendar add link, generate a URL in this format (dates use compact ISO 8601: YYYYMMDDTHHmmssZ):
https://calendar.google.com/calendar/render?action=TEMPLATE&text=[title]&dates=20260325T190000Z/20260325T210000Z&location=[venue]&details=[description+link]
Include a summary at the top: "Found X events (Y art, Z food) for [date range]. N conflicts with your calendar."