Skip to main content
ClaudeWave
Skill4.9k repo starsupdated 2d ago

magic-calendar

Magic Calendar creates and manages interactive calendar projects for scheduling events, planning content, and organizing activities. Use this skill when a user needs to set up a new calendar, add or modify events, manage event categories, or query existing scheduled items across dates and projects.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/dtyq/magic /tmp/magic-calendar && cp -r /tmp/magic-calendar/backend/super-magic/agents/skills/magic-calendar ~/.claude/skills/magic-calendar
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Magic Calendar

Create and manage interactive calendar projects. Each calendar project is a folder containing `index.html` (visualization), `magic.project.js` (metadata and categories), and `events/` (monthly event files). All data operations go through tools — do not manually read or edit these files.

## Workflow

```
1. Create project folder (shell_exec: mkdir)
2. setup_calendar_project  → initialize calendar
3. manage_calendar         → add categories (optional)
4. manage_calendar         → add events (batch or one-by-one)
```

### Decision Tree

```
User request
├── Create new calendar       → setup_calendar_project
├── Add event/schedule/plan   → manage_calendar (add_event)
├── View/query events         → manage_calendar (list_events)
├── Modify existing event     → manage_calendar (update_event)
├── Delete/cancel event       → manage_calendar (delete_event)
├── Add event category        → manage_calendar (add_category)
└── View categories           → manage_calendar (list_categories)
```

---

## Tool: setup_calendar_project

Initialize a calendar project in an **existing** folder. You must create the folder first via `shell_exec`.

### Parameters

| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `project_path` | yes | string | Existing folder path (relative to workspace). Name according to user's language |
| `calendar_name` | yes | string | Calendar display name |
| `description` | no | string | Calendar description |
| `timezone` | no | string | IANA timezone identifier, default `Asia/Shanghai` |
| `initial_categories` | no | string | JSON array string. Example: `'[{"id":"publish","name":"Publish","color":"#4CAF50"}]'` |

---

## Tool: manage_calendar

Manage calendar events and categories.

### Common Parameters (all actions)

| Param | Type | Description |
|-------|------|-------------|
| `action` | string | `add_event` / `list_events` / `update_event` / `delete_event` / `add_category` / `list_categories` |
| `project_path` | string | Calendar project folder path (relative to workspace) |

### add_event

Only `title` + `start` are required. All other fields are optional with sensible defaults.

| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `title` | yes | string | Event title |
| `start` | yes | string | `YYYY-MM-DD HH:MM` for timed events; `YYYY-MM-DD` for all-day events |
| `end` | no | string | Same format as start. Default: timed +1h, all-day same day |
| `description` | no | string | Event description |
| `location` | no | string | Location |
| `status` | no | string | `confirmed` (default) / `tentative` / `cancelled` / `completed` |
| `category` | no | string | Category ID (must exist) |
| `recurrence` | no | string | Recurrence rule as JSON string (see below) |

### list_events

All filters are optional. No filters = return all events.

| Param | Type | Description |
|-------|------|-------------|
| `date_from` | string | Start date filter (`YYYY-MM-DD`) |
| `date_to` | string | End date filter, inclusive (`YYYY-MM-DD`) |
| `category` | string | Filter by category ID |
| `keyword` | string | Search in title and description |

### update_event

Partial update — only pass fields you want to change.

| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `event_id` | yes | string | Event ID (from add_event or list_events result) |
| `title` | no | string | New title |
| `start` | no | string | New start time |
| `end` | no | string | New end time |
| `description` | no | string | New description |
| `location` | no | string | New location |
| `status` | no | string | New status |
| `category` | no | string | New category ID |
| `recurrence` | no | string | New recurrence rule (JSON string) |

### delete_event

| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `event_id` | yes | string | Event ID |

### add_category

| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `category_id` | yes | string | Alphanumeric identifier (e.g. `meeting`, `publish`) |
| `category_name` | yes | string | Display name |
| `category_color` | yes | string | Hex color (e.g. `#4CAF50`) |

### list_categories

No additional parameters.

### Recurrence Rule Format

Pass as JSON string in the `recurrence` parameter:

```json
{"type": "daily", "interval": 1, "end_date": "2026-06-30"}
{"type": "weekly", "interval": 1, "days_of_week": [1, 3, 5]}
{"type": "monthly", "interval": 1, "day_of_month": 15, "end_date": "2026-12-31"}
```

- `type`: `daily` / `weekly` / `monthly`
- `interval`: repeat every N days/weeks/months, default 1
- `days_of_week`: for weekly only, 1=Mon … 7=Sun
- `day_of_month`: for monthly, defaults to the day from `start`
- `end_date`: `YYYY-MM-DD`, omit for indefinite

---

## Code Mode Examples

### Create calendar and add events

```python
from sdk.tool import tool

# 1. Create project folder
tool.call("shell_exec", {"command": "mkdir -p .workspace/content-calendar"})

# 2. Setup calendar with initial categories
tool.call("setup_calendar_project", {
    "project_path": "content-calendar",
    "calendar_name": "Content Publishing Calendar",
    "description": "30-day rolling content plan",
    "initial_categories": '[{"id":"publish","name":"Publish","color":"#4CAF50"},{"id":"review","name":"Review","color":"#2196F3"}]'
})

# 3. Minimal event (title + start only)
tool.call("manage_calendar", {
    "action": "add_event",
    "project_path": "content-calendar",
    "title": "Weekly standup",
    "start": "2026-04-21 10:00"
})

# 4. Full event
tool.call("manage_calendar", {
    "action": "add_event",
    "project_path": "content-calendar",
    "title": "Product review video",
    "start": "2026-04-22 14:00",
    "end": "2026-04-22 15:30",
    "category": "publish",
    "location": "Studio 3F",
    "description": "30s vertical tutorial"
})

# 5. Recurring event
tool.call("manage_calendar", {
    "action": "add_e
guidesSkill
canvas-designerSkill

Core canvas design skill covering project management, multimedia principles, AI image generation, web image search, and design marker processing. Load for any canvas design task. CRITICAL - When user message contains [@design_canvas_project:...] or [@design_marker:...] mentions, or when the user wants to generate video/animation/clip on a canvas project, you MUST load this skill first before any operations.

compact-chat-historySkill

Summarize and compress the current conversation history into a structured context snapshot, then call compact_chat_history to save it. Read this skill only when the user explicitly asks to compact/summarize — system-triggered compaction injects the instructions directly without requiring a skill read.

creating-slidesSkill

Slide/PPT creation skill that provides complete slide creation, editing, and management capabilities. Use when users need to create slides, make presentations, edit slide content, or manage slide projects. CRITICAL - When user message contains [@slide_project:...] mention, you MUST load this skill first before any operations.

crew-creatorSkill

|

deep-researchSkill

|

develop-data-analysis-dashboardSkill

Data analysis dashboard (instrument panel) development skill. Use when users need to develop data dashboards, create/edit Dashboard projects, build large-screen data boards, or perform dashboard data cleaning. Includes dashboard project creation, card plan, data cleaning (data_cleaning.py), card management tools (create_dashboard_cards, update_dashboard_cards, delete_dashboard_cards, query_dashboard_cards), map download tool (download_dashboard_maps), dashboard development, and validation.

dingtalk-cliSkill

Use when the user wants to interact with DingTalk/钉钉 in any way — including but not limited to: reading, querying, searching, sending, replying to, forwarding, or recalling DingTalk/钉钉 chat messages and chat history; managing group chats and conversations; sending DING alerts; querying contacts, org structure, AI search, or coworkers; reading, searching, creating, or editing DingTalk/钉钉 docs, drive files, sheets, AI tables, wiki, mail, calendar events, meeting rooms, AI meeting minutes, attendance, OA approvals, todos, reports/logs, live sessions, AI apps, permissions, or open-platform docs.