{"skill":{"slug":"skylight-skill","displayName":"Skylight","summary":"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.","description":"---\nname: skylight\ndescription: 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.\nhomepage: https://ourskylight.com\nmetadata:\n  clawdbot:\n    emoji: 📅\n    requires:\n      bins:\n        - curl\n      env:\n        - SKYLIGHT_FRAME_ID\n    primaryEnv: SKYLIGHT_EMAIL\n---\n\n# Skylight Calendar\n\nControl Skylight Calendar frame via the unofficial API.\n\n## Setup\n\nSet environment variables:\n- `SKYLIGHT_URL`: Base URL (default: `https://app.ourskylight.com`)\n- `SKYLIGHT_FRAME_ID`: Your frame (household) ID — find this by logging into [ourskylight.com](https://ourskylight.com/), clicking your calendar, and copying the number from the URL (e.g., `4197102` from `https://ourskylight.com/calendar/4197102`)\n\n**Authentication (choose one):**\n\nOption A - Email/Password (recommended):\n- `SKYLIGHT_EMAIL`: Your Skylight account email\n- `SKYLIGHT_PASSWORD`: Your Skylight account password\n\nOption B - Pre-captured token:\n- `SKYLIGHT_TOKEN`: Full Authorization header value (e.g., `Basic abc123...`)\n\n## Authentication\n\n### Option A: Login with Email/Password (Recommended)\n\nGenerate a token by logging in with email and password:\n\n```bash\n# Login and get user credentials\nLOGIN_RESPONSE=$(curl -s -X POST \"$SKYLIGHT_URL/api/sessions\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"email\": \"'\"$SKYLIGHT_EMAIL\"'\",\n    \"password\": \"'\"$SKYLIGHT_PASSWORD\"'\",\n    \"name\": \"\",\n    \"phone\": \"\",\n    \"resettingPassword\": \"false\",\n    \"textMeTheApp\": \"true\",\n    \"agreedToMarketing\": \"true\"\n  }')\n\n# Extract user_id and user_token from response\nUSER_ID=$(echo \"$LOGIN_RESPONSE\" | jq -r '.data.id')\nUSER_TOKEN=$(echo \"$LOGIN_RESPONSE\" | jq -r '.data.attributes.token')\n\n# Generate Basic auth token (base64 of user_id:user_token)\nSKYLIGHT_TOKEN=\"Basic $(echo -n \"${USER_ID}:${USER_TOKEN}\" | base64)\"\n\n# Now use $SKYLIGHT_TOKEN for all API requests\n```\n\nThe login endpoint returns:\n- `data.id`: User ID\n- `data.attributes.token`: User token\n\nCombine as `{user_id}:{user_token}` and base64 encode for Basic auth.\n\n### Option B: Capture Token via Proxy\n\nIf you prefer to capture a token manually:\n\n1. Install Proxyman/Charles/mitmproxy and trust root certificate\n2. Enable SSL proxying for `app.ourskylight.com`\n3. Log into Skylight app and capture any API request\n4. Copy `Authorization` header value (e.g., `Basic <token>`)\n\nTokens rotate on logout; recapture after re-login.\n\n## API Format\n\nResponses use JSON:API format with `data`, `included`, and `relationships` fields.\n\n## Calendar Events\n\n### List events\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/calendar_events?date_min=2025-01-27&date_max=2025-01-31\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\" \\\n  -H \"Accept: application/json\"\n```\n\nQuery params:\n- `date_min` (required): Start date YYYY-MM-DD\n- `date_max` (required): End date YYYY-MM-DD\n- `timezone`: Timezone string (optional)\n- `include`: CSV of related resources (`categories,calendar_account,event_notification_setting`)\n\n### List source calendars\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/source_calendars\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\n## Chores\n\n### List chores\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores?after=2025-01-27&before=2025-01-31\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\nQuery params:\n- `after`: Start date YYYY-MM-DD\n- `before`: End date YYYY-MM-DD\n- `include_late`: Include overdue chores (bool)\n- `filter`: Filter by `linked_to_profile`\n\n### Create chore\n```bash\ncurl -s -X POST \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/chores\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"data\": {\n      \"type\": \"chore\",\n      \"attributes\": {\n        \"summary\": \"Take out trash\",\n        \"status\": \"pending\",\n        \"start\": \"2025-01-28\",\n        \"start_time\": \"08:00\",\n        \"recurring\": false\n      },\n      \"relationships\": {\n        \"category\": {\n          \"data\": {\"type\": \"category\", \"id\": \"CATEGORY_ID\"}\n        }\n      }\n    }\n  }'\n```\n\nChore attributes:\n- `summary`: Chore title\n- `status`: `pending` or `completed`\n- `start`: Date YYYY-MM-DD\n- `start_time`: Time HH:MM (optional)\n- `recurring`: Boolean\n- `recurrence_set`: RRULE string for recurring chores\n- `reward_points`: Integer (optional)\n- `emoji_icon`: Emoji (optional)\n\n## Lists (Shopping/To-Do)\n\n### List all lists\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\n### Get list with items\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/lists/{listId}\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\nResponse includes `data.attributes.kind` (`shopping` or `to_do`) and `included` array with list items.\n\nList item attributes:\n- `label`: Item text\n- `status`: `pending` or `completed`\n- `section`: Section name (optional)\n- `position`: Sort order\n\n## Task Box\n\n### Create task box item\n```bash\ncurl -s -X POST \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/task_box/items\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"data\": {\n      \"type\": \"task_box_item\",\n      \"attributes\": {\n        \"summary\": \"Pack lunches\"\n      }\n    }\n  }'\n```\n\nTask box attributes:\n- `summary`: Task title\n- `emoji_icon`: Emoji (optional)\n- `routine`: Boolean (optional)\n- `reward_points`: Integer (optional)\n\n## Categories\n\n### List categories\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/categories\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\nCategories are used to assign chores to family members. Attributes include:\n- `label`: Category name (e.g., \"Mom\", \"Dad\", \"Kids\")\n- `color`: Hex color `#RRGGBB`\n- `profile_pic_url`: Avatar URL\n\n## Rewards\n\n### List rewards\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/rewards\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\nOptional query: `redeemed_at_min` (datetime) to filter by redemption date.\n\n### List reward points\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/reward_points\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\n## Frame Info\n\n### Get frame details\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\n### List devices\n```bash\ncurl -s \"$SKYLIGHT_URL/api/frames/$SKYLIGHT_FRAME_ID/devices\" \\\n  -H \"Authorization: $SKYLIGHT_TOKEN\"\n```\n\n## Notes\n\n- API is **unofficial** and reverse-engineered; endpoints may change\n- Tokens expire on logout; recapture as needed\n- Responses return 304 Not Modified when data unchanged\n- Use `jq` to parse JSON:API responses\n- Frame ID is your household identifier; all resources are scoped to it\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":2135,"installsAllTime":81,"installsCurrent":0,"stars":4,"versions":1},"createdAt":1769527888967,"updatedAt":1778485857338},"latestVersion":{"version":"1.0.0","createdAt":1769527888967,"changelog":"## [0.1.0] - 2026-01-27\n\n### Added\n- Initial release of Skylight Calendar skill\n- Two authentication methods: email/password login or pre-captured token\n- Calendar events: list events by date range, list source calendars\n- Chores: list and create chores with recurrence support\n- Lists: access shopping and to-do lists with items\n- Task box: create quick task box items\n- Categories: list family member profiles for chore assignment\n- Rewards: view rewards and reward points\n- Frame info: get frame details and list devices","license":null},"metadata":{"setup":[{"key":"SKYLIGHT_FRAME_ID","required":true}],"os":null,"systems":null},"owner":{"handle":"riyadchowdhury","userId":"s17f4vhtvx9vehfmg19t93x235884s9k","displayName":"Riyad Chowdhury","image":"https://avatars.githubusercontent.com/u/21128023?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779916968308}}