From calendar-organizer
Extracts, cleans, and organizes calendar schedules from messy sources (Excel files, CSV, images, text, ICS files) into structured calendar data. Use this skill when the user uploads a calendar or schedule file (.xlsx, .csv, .ics, .png, .jpg), shares an image of a calendar or schedule, asks to "organize my schedule", "clean up this calendar", or "extract events from this", requests calendar extraction from any source, wants to convert schedule data to different formats, or needs to add schedule data to their calendar app.
How this skill is triggered — by the user, by Claude, or both
Slash command
/calendar-organizer:calendar-organizerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Process schedule data from any source into clean, structured calendar output.
Process schedule data from any source into clean, structured calendar output.
Determine the input type (Excel, CSV, image, text, ICS) and ensure Python dependencies are available:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/setup_venv.sh
This creates a venv at ${CLAUDE_PLUGIN_ROOT}/.venv/ with required packages (openpyxl, ics, python-dateutil, pytz) on first run, and is instant on subsequent runs.
For Excel/CSV files — use the parse_excel.py utility:
${CLAUDE_PLUGIN_ROOT}/.venv/bin/python ${CLAUDE_PLUGIN_ROOT}/scripts/parse_excel.py "/path/to/file.xlsx"
This outputs JSON with all cell data, sheet names, and structure. Analyze the output to identify event rows, date columns, and time patterns.
For images — read the image directly using the Read tool. Claude's vision capabilities can extract text from calendar images. Look for:
For text/email — read the text directly and parse event information using the time interpretation rules below.
For ICS files — read directly. The format is plaintext with VEVENT blocks.
Apply these rules to every extracted event. See ${CLAUDE_PLUGIN_ROOT}/skills/calendar-organizer/references/time-interpretation-rules.md for the complete ruleset.
Key defaults:
Positional rules (block/scanned calendars):
On-call rules: See ${CLAUDE_PLUGIN_ROOT}/skills/calendar-organizer/references/on-call-rules.md
For every parsed event, check:
Always produce these three outputs:
Present a chronologically sorted table:
| Date | Day | Event Title | Start Time | End Time | Location | Notes |
|------|-----|-------------|------------|----------|----------|-------|
Generate using the generate_ics.py utility:
echo '<events_json>' | ${CLAUDE_PLUGIN_ROOT}/.venv/bin/python ${CLAUDE_PLUGIN_ROOT}/scripts/generate_ics.py --timezone "America/New_York" --output "/path/to/output.ics"
Pass events as a JSON array on stdin. Each event object:
{
"title": "Event Name",
"date": "2026-03-15",
"start_time": "08:00",
"end_time": "17:00",
"location": "",
"notes": ""
}
Report:
After presenting results, offer:
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub mattwag05/mw-plugins --plugin calendar-organizer