internal/skills/defaults/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 91zgaoge/memoh-x 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.
No environment variables required. This skill directly accesses system resources.
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:
development
FastAPI best practices and conventions. Use when working with FastAPI APIs and Pydantic models for them. Keeps FastAPI code clean and up to date with the latest features and patterns, updated with new versions. Write new code or refactor and update old code.
development
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. USE THIS SKILL for ALL spreadsheet files including .xls (Excel 97-2003), .xlsx, .xlsm, .csv, .tsv. Use for: (1) Reading or analyzing spreadsheet data, (2) Creating new spreadsheets with formulas and formatting, (3) Modifying existing spreadsheets while preserving formulas, (4) Data analysis and visualization, (5) Recalculating formulas. IMPORTANT: For .xls files (legacy Excel format), you MUST use this skill - do NOT attempt to read them directly as they are binary files.
tools
--- name: wrenai-query description: WrenAI natural language to SQL query tool. IMPORTANT: Use exec tool to run the script directly, DO NOT implement the logic yourself. --- # WrenAI Query Tool ## ⚠️ CRITICAL INSTRUCTIONS FOR AI AGENTS **YOU MUST FOLLOW THESE INSTRUCTIONS EXACTLY. DO NOT DEVIATE.** ### When User Asks for Database Query **USE THE EXEC TOOL. RUN THIS EXACT COMMAND:** ```bash sh "/data/.skills/wrenai-query/scripts/wrenai" "user's natural language query here" pg ``` **DO NOT:*
tools
Automated web application testing using browser automation. Use when asked to test a web app, verify UI behavior, check for regressions, or automate browser interactions such as clicking, form filling, navigation, and screenshot capture.