SKILLs/local-tools/SKILL.md
Access local system resources including Calendar on macOS and Windows. Use this skill when you need to manage user's schedule directly on their device.
npx skillsauth add netease-youdao/lobsterai local-toolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use the local-tools skill when you need to:
Examples of when to use:
┌──────────┐ Bash/PowerShell ┌─────────────────────────────────────────────────────────────┐
│ Claude │──────────────────────▶│ calendar.sh / calendar.ps1 │
│ │ │ ├─ macOS: osascript -l JavaScript (JXA) ──▶ Calendar.app │
│ │ │ └─ Windows: PowerShell ──▶ Outlook COM API │
└──────────┘ └─────────────────────────────────────────────────────────────┘
Architecture:
CLI Scripts - Platform-specific scripts, no HTTP server needed
calendar.sh - Bash script for macOScalendar.ps1 - PowerShell script for WindowsLocal Calendar Access - Direct access to system calendar
JSON Output - Structured data format for easy parsing
| Platform | Implementation | Calendar App | Status | |----------|---------------|--------------|--------| | macOS 10.10+ | JXA + Calendar.app | Calendar.app | ✅ Fully Supported | | Windows 7+ | PowerShell + COM | Microsoft Outlook | ✅ Fully Supported | | Linux | - | - | ❌ Not Supported |
IMPORTANT: How to Locate the Script
When you read this SKILL.md file using the Read tool, you receive its absolute path (e.g., /Users/username/.../SKILLs/local-tools/SKILL.md).
To construct the script path:
/scripts/calendar.sh (macOS) or /scripts/calendar.ps1 (Windows)Example:
# If SKILL.md is at: /Users/username/path/to/SKILLs/local-tools/SKILL.md
# Then the script is: /Users/username/path/to/SKILLs/local-tools/scripts/calendar.sh
bash "/Users/username/path/to/SKILLs/local-tools/scripts/calendar.sh" <operation> [options]
In all examples below, <skill-dir>/scripts/calendar.sh is a placeholder. Replace it with the actual absolute path.
DO:
search command for searching birthdays/anniversariesDON'T:
Example - Searching for birthdays:
# Correct approach: Search directly, don't trial-and-error
bash "<skill-dir>/scripts/calendar.sh" search --query "birthday"
# If permission error returned, directly tell user:
# "Calendar access permission is required. Please open System Settings > Privacy & Security > Calendar, and authorize Terminal or LobsterAI"
# List events for next 7 days (default)
bash "<skill-dir>/scripts/calendar.sh" list
# List events for specific date range
bash "<skill-dir>/scripts/calendar.sh" list \
--start "2026-02-12T00:00:00" \
--end "2026-02-19T23:59:59"
# List events from specific calendar (macOS)
bash "<skill-dir>/scripts/calendar.sh" list \
--calendar "Work"
# Create a simple event
bash "<skill-dir>/scripts/calendar.sh" create \
--title "Team Meeting" \
--start "2026-02-13T14:00:00" \
--end "2026-02-13T15:00:00"
# Create event with location and notes
bash "<skill-dir>/scripts/calendar.sh" create \
--title "Client Call" \
--start "2026-02-14T10:00:00" \
--end "2026-02-14T11:00:00" \
--calendar "Work" \
--location "Conference Room A" \
--notes "Discuss Q1 roadmap"
# Update event title
bash "<skill-dir>/scripts/calendar.sh" update \
--id "EVENT-ID" \
--title "Updated Meeting Title"
# Update event time
bash "<skill-dir>/scripts/calendar.sh" update \
--id "EVENT-ID" \
--start "2026-02-13T15:00:00" \
--end "2026-02-13T16:00:00"
bash "<skill-dir>/scripts/calendar.sh" delete \
--id "EVENT-ID"
# Search for events containing keyword (searches ALL calendars)
bash "<skill-dir>/scripts/calendar.sh" search \
--query "meeting"
# Search in specific calendar only
bash "<skill-dir>/scripts/calendar.sh" search \
--query "project" \
--calendar "Work"
Note: When --calendar is not specified, the search operation will look through all available calendars on both macOS and Windows.
All commands return JSON with the following structure:
{
"success": true,
"data": {
"events": [
{
"eventId": "E621F8C4-...",
"title": "Team Meeting",
"startTime": "2026-02-13T14:00:00.000Z",
"endTime": "2026-02-13T15:00:00.000Z",
"location": "Conference Room",
"notes": "Weekly sync",
"calendar": "Work",
"allDay": false
}
],
"count": 1
}
}
{
"success": false,
"error": {
"code": "CALENDAR_ACCESS_ERROR",
"message": "Calendar access permission is required...",
"recoverable": true,
"permissionRequired": true
}
}
| Code | Meaning | Recoverable |
|------|---------|-------------|
| CALENDAR_ACCESS_ERROR | Permission denied or calendar not accessible | Yes |
| INVALID_INPUT | Missing required parameters | No |
| EVENT_NOT_FOUND | Event ID not found | No |
| OUTLOOK_NOT_AVAILABLE | Microsoft Outlook not installed (Windows) | Yes |
When using the list command with time ranges:
YYYY-MM-DDTHH:mm:ss$(date ...)2026-02-13T00:00:002026-02-13T23:59:592026-02-14T09:00:002026-02-16T00:00:00Why: The script expects local time strings that match your system timezone. Shell substitutions may not execute correctly in all environments.
# User asks: "What meetings do I have today?"
# Claude's approach: Calculate today's date and query full day from 00:00 to 23:59
# IMPORTANT: Claude should replace 2026-02-13 with the actual current date
bash "<skill-dir>/scripts/calendar.sh" list \
--start "2026-02-13T00:00:00" \
--end "2026-02-13T23:59:59"
# User asks: "What's on my schedule tomorrow?"
# Claude should calculate tomorrow's date (e.g., if today is 2026-02-13, tomorrow is 2026-02-14)
bash "<skill-dir>/scripts/calendar.sh" list \
--start "2026-02-14T00:00:00" \
--end "2026-02-14T23:59:59"
# User asks: "Schedule a meeting for tomorrow at 3 PM"
# Claude's approach:
bash "<skill-dir>/scripts/calendar.sh" create \
--title "Meeting" \
--start "2026-02-13T15:00:00" \
--end "2026-02-13T16:00:00" \
--calendar "Work"
# User asks: "Find all meetings about the project"
# Claude's approach:
bash "<skill-dir>/scripts/calendar.sh" search \
--query "project" \
--calendar "Work"
# User asks: "Am I free tomorrow afternoon?"
# Claude's approach:
# 1. List tomorrow's events
# 2. Analyze time slots
# 3. Report availability
bash "<skill-dir>/scripts/calendar.sh" list \
--start "2026-02-14T00:00:00" \
--end "2026-02-14T23:59:59"
The list command uses interval overlap detection:
Examples:
Before creating an event, list existing events to avoid conflicts:
# First check existing events
bash "<skill-dir>/scripts/calendar.sh" list
# Then create if no conflict
bash "<skill-dir>/scripts/calendar.sh" create ...
Specify the calendar to keep events organized:
bash "<skill-dir>/scripts/calendar.sh" create \
--title "Team Meeting" \
--calendar "Work" \
...
Always search first to get the correct event ID:
# Search to find event ID
bash "<skill-dir>/scripts/calendar.sh" search --query "meeting"
# Then update or delete
bash "<skill-dir>/scripts/calendar.sh" update --id "FOUND-ID" ...
Parse the response and handle errors:
result=$(bash "<skill-dir>/scripts/calendar.sh" list)
if echo "$result" | grep -q '"success":true'; then
# Process events
events=$(echo "$result" | jq '.data.events')
else
# Handle error
error=$(echo "$result" | jq '.error.message')
echo "Failed: $error"
fi
YYYY-MM-DDTHH:mm:ss)Permission Denied:
Error: Calendar access permission is required
Solution: Open System Settings > Privacy & Security > Calendar, authorize Terminal or LobsterAI
Script Not Found:
bash: calendar.sh: No such file or directory
Solution: Ensure you're using the absolute path from SKILL.md's directory + /scripts/calendar.sh
Outlook Not Found:
Error: Microsoft Outlook is not installed or not accessible
Solution: Install Microsoft Outlook and ensure it's properly configured
PowerShell Execution Policy:
Error: Execution of scripts is disabled on this system
Solution: Run PowerShell as Administrator and execute:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
JXA (JavaScript for Automation):
osascript -l JavaScript to execute JXA codeDate Handling:
date +%Y-%m-%dT%H:%M:%S (local timezone)date -v+7d (7 days from now)PowerShell + COM:
Date Handling:
[DateTime]::Parse() for date parsingBoth implementations:
documentation
有道云笔记官方 skill,支持笔记 CRUD(创建/读取/更新/删除)、待办管理、网页剪藏、笔记搜索、文件夹管理等基础操作。如需构建知识库或 Wiki,请使用 youdaonote-llm-wiki skill 而非本 skill。
development
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas
development
Real-time web search using Playwright-controlled browser. Use this skill when you need current information, latest documentation, recent news, or any data beyond your knowledge cutoff (January 2025).
development
Get current weather and forecasts (no API key required).