13★skylight – OpenClaw Skill
skylight is an OpenClaw Skills integration for coding workflows. 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.
Skill Snapshot
| name | skylight |
| description | 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. OpenClaw Skills integration. |
| owner | riyadchowdhury |
| repository | riyadchowdhury/skylight-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @riyadchowdhury/skylight-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: skylight description: 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. homepage: https://ourskylight.com metadata: clawdbot: emoji: 📅 requires: bins: - curl env: - SKYLIGHT_FRAME_ID primaryEnv: SKYLIGHT_EMAIL
Skylight Calendar
Control Skylight Calendar frame via the unofficial API.
Setup
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.,4197102fromhttps://ourskylight.com/calendar/4197102)
Authentication (choose one):
Option A - Email/Password (recommended):
SKYLIGHT_EMAIL: Your Skylight account emailSKYLIGHT_PASSWORD: Your Skylight account password
Option B - Pre-captured token:
SKYLIGHT_TOKEN: Full Authorization header value (e.g.,Basic abc123...)
Authentication
Option A: Login with Email/Password (Recommended)
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 IDdata.attributes.token: User token
Combine as {user_id}:{user_token} and base64 encode for Basic auth.
Option B: Capture Token via Proxy
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
Authorizationheader value (e.g.,Basic <token>)
Tokens rotate on logout; recapture after re-login.
API Format
Responses use JSON:API format with data, included, and relationships fields.
Calendar Events
List events
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-DDdate_max(required): End date YYYY-MM-DDtimezone: Timezone string (optional)include: CSV of related resources (categories,calendar_account,event_notification_setting)
List source calendars
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/source_calendars" \
-H "Authorization: $SKYLIGHT_TOKEN"
Chores
List chores
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-DDbefore: End date YYYY-MM-DDinclude_late: Include overdue chores (bool)filter: Filter bylinked_to_profile
Create chore
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 titlestatus:pendingorcompletedstart: Date YYYY-MM-DDstart_time: Time HH:MM (optional)recurring: Booleanrecurrence_set: RRULE string for recurring choresreward_points: Integer (optional)emoji_icon: Emoji (optional)
Lists (Shopping/To-Do)
List all lists
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists" \
-H "Authorization: $SKYLIGHT_TOKEN"
Get list with items
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 textstatus:pendingorcompletedsection: Section name (optional)position: Sort order
Task Box
Create task box item
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 titleemoji_icon: Emoji (optional)routine: Boolean (optional)reward_points: Integer (optional)
Categories
List categories
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#RRGGBBprofile_pic_url: Avatar URL
Rewards
List rewards
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.
List reward points
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/reward_points" \
-H "Authorization: $SKYLIGHT_TOKEN"
Frame Info
Get frame details
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID" \
-H "Authorization: $SKYLIGHT_TOKEN"
List devices
curl -s "$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/devices" \
-H "Authorization: $SKYLIGHT_TOKEN"
Notes
- 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
jqto parse JSON:API responses - Frame ID is your household identifier; all resources are scoped to it
Skylight Calendar Skill
ClawdHub skill for interacting with Skylight Calendar smart displays.
Quick Start
Option A: Email/Password Authentication (Recommended)
export SKYLIGHT_EMAIL="your_email@example.com"
export SKYLIGHT_PASSWORD="your_password"
export SKYLIGHT_FRAME_ID="your_frame_id"
export SKYLIGHT_URL="https://app.ourskylight.com"
The skill will automatically login and generate an auth token.
Option B: Pre-captured Token
export SKYLIGHT_TOKEN="Basic your_base64_token_here"
export SKYLIGHT_FRAME_ID="your_frame_id"
export SKYLIGHT_URL="https://app.ourskylight.com"
Capture tokens using an HTTPS proxy (Proxyman/Charles/mitmproxy).
Features
- Calendar Events - View upcoming events from synced calendars
- Chores - List, create, and manage family chores
- Lists - Access shopping and to-do lists
- Task Box - Quick task creation
- Categories - Family member profiles for chore assignment
- Rewards - Track reward points and redemptions
Authentication Methods
| Method | Environment Variables | Notes |
|---|---|---|
| Email/Password | SKYLIGHT_EMAIL, SKYLIGHT_PASSWORD | Recommended; auto-generates token |
| Pre-captured Token | SKYLIGHT_TOKEN | Manual capture via HTTPS proxy |
Both methods require SKYLIGHT_FRAME_ID (your household ID).
Finding Your Frame ID
- Log into ourskylight.com
- Click on your calendar name
- Look at the URL - the Frame ID is the number at the end
Example: In the URL https://ourskylight.com/calendar/1234567, the Frame ID is 1234567
Requirements
SKYLIGHT_FRAME_IDenvironment variable (household frame ID)- Either
SKYLIGHT_EMAIL+SKYLIGHT_PASSWORDORSKYLIGHT_TOKEN curlandjqfor API requests
Version
0.1.0
Disclaimer
This skill uses an unofficial, reverse-engineered API. It is not affiliated with or endorsed by Skylight. Use responsibly and only with your own account.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install skylight?
Run openclaw add @riyadchowdhury/skylight-skill in your terminal. This installs skylight into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/riyadchowdhury/skylight-skill. Review commits and README documentation before installing.
