Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Interact with Skylight Calendar frame - manage calendar events, chores, lists, task box items, and rewards. Use when the user wants to view/create calendar events, manage family chores, work with shopping or to-do lists, check reward points, or interact with their Skylight smart display.
Interact with Skylight Calendar frame - manage calendar events, chores, lists, task box items, and rewards. Use when the user wants to view/create calendar events, manage family chores, work with shopping or to-do lists, check reward points, or interact with their Skylight smart display.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Control Skylight Calendar frame via the unofficial API.
Set environment variables: SKYLIGHT_URL: Base URL (default: https://app.ourskylight.com) SKYLIGHT_FRAME_ID: Your frame (household) ID โ find this by logging into ourskylight.com, clicking your calendar, and copying the number from the URL (e.g., 4197102 from https://ourskylight.com/calendar/4197102) Authentication (choose one): Option A - Email/Password (recommended): SKYLIGHT_EMAIL: Your Skylight account email SKYLIGHT_PASSWORD: Your Skylight account password Option B - Pre-captured token: SKYLIGHT_TOKEN: Full Authorization header value (e.g., Basic abc123...)
Generate a token by logging in with email and password: # Login and get user credentials LOGIN_RESPONSE=$(curl -s -X POST "$SKYLIGHT_URL/api/sessions" \ -H "Content-Type: application/json" \ -d '{ "email": "'"$SKYLIGHT_EMAIL"'", "password": "'"$SKYLIGHT_PASSWORD"'", "name": "", "phone": "", "resettingPassword": "false", "textMeTheApp": "true", "agreedToMarketing": "true" }') # Extract user_id and user_token from response USER_ID=$(echo "$LOGIN_RESPONSE" | jq -r '.data.id') USER_TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.data.attributes.token') # Generate Basic auth token (base64 of user_id:user_token) SKYLIGHT_TOKEN="Basic $(echo -n "${USER_ID}:${USER_TOKEN}" | base64)" # Now use $SKYLIGHT_TOKEN for all API requests The login endpoint returns: data.id: User ID data.attributes.token: User token Combine as {user_id}:{user_token} and base64 encode for Basic auth.
If you prefer to capture a token manually: Install Proxyman/Charles/mitmproxy and trust root certificate Enable SSL proxying for app.ourskylight.com Log into Skylight app and capture any API request Copy Authorization header value (e.g., Basic <token>) Tokens rotate on logout; recapture after re-login.
Responses use JSON:API format with data, included, and relationships fields.
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/calendar_events?date_min=2025-01-27&date_max=2025-01-31" \ -H "Authorization: $SKYLIGHT_TOKEN" \ -H "Accept: application/json" Query params: date_min (required): Start date YYYY-MM-DD date_max (required): End date YYYY-MM-DD timezone: Timezone string (optional) include: CSV of related resources (categories,calendar_account,event_notification_setting)
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/source_calendars" \ -H "Authorization: $SKYLIGHT_TOKEN"
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores?after=2025-01-27&before=2025-01-31" \ -H "Authorization: $SKYLIGHT_TOKEN" Query params: after: Start date YYYY-MM-DD before: End date YYYY-MM-DD include_late: Include overdue chores (bool) filter: Filter by linked_to_profile
curl -s -X POST "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores" \ -H "Authorization: $SKYLIGHT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "type": "chore", "attributes": { "summary": "Take out trash", "status": "pending", "start": "2025-01-28", "start_time": "08:00", "recurring": false }, "relationships": { "category": { "data": {"type": "category", "id": "CATEGORY_ID"} } } } }' Chore attributes: summary: Chore title status: pending or completed start: Date YYYY-MM-DD start_time: Time HH:MM (optional) recurring: Boolean recurrence_set: RRULE string for recurring chores reward_points: Integer (optional) emoji_icon: Emoji (optional)
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists" \ -H "Authorization: $SKYLIGHT_TOKEN"
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists/{listId}" \ -H "Authorization: $SKYLIGHT_TOKEN" Response includes data.attributes.kind (shopping or to_do) and included array with list items. List item attributes: label: Item text status: pending or completed section: Section name (optional) position: Sort order
curl -s -X POST "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/task_box/items" \ -H "Authorization: $SKYLIGHT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "type": "task_box_item", "attributes": { "summary": "Pack lunches" } } }' Task box attributes: summary: Task title emoji_icon: Emoji (optional) routine: Boolean (optional) reward_points: Integer (optional)
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/categories" \ -H "Authorization: $SKYLIGHT_TOKEN" Categories are used to assign chores to family members. Attributes include: label: Category name (e.g., "Mom", "Dad", "Kids") color: Hex color #RRGGBB profile_pic_url: Avatar URL
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/rewards" \ -H "Authorization: $SKYLIGHT_TOKEN" Optional query: redeemed_at_min (datetime) to filter by redemption date.
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/reward_points" \ -H "Authorization: $SKYLIGHT_TOKEN"
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID" \ -H "Authorization: $SKYLIGHT_TOKEN"
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/devices" \ -H "Authorization: $SKYLIGHT_TOKEN"
API is unofficial and reverse-engineered; endpoints may change Tokens expire on logout; recapture as needed Responses return 304 Not Modified when data unchanged Use jq to parse JSON:API responses Frame ID is your household identifier; all resources are scoped to it
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.