Install
$ agentstack add skill-aashari-ai-agent-skills-mail-meetings ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Mail Meetings — Calendar Invites and Meeting Emails
Period: $ARGUMENTS (default: last 7 days)
Query
DB="$HOME/Library/Mail/V10/MailData/Envelope Index"
SINCE=$(($(date +%s) - 604800)) # 7 days; adjust per $ARGUMENTS
sqlite3 "$DB" "
SELECT datetime(m.date_received,'unixepoch','localtime') as dt,
s.subject, a.address as sender, a.comment as name,
mb.url as mailbox, m.ROWID, m.read
FROM messages m
JOIN subjects s ON m.subject = s.ROWID
JOIN addresses a ON m.sender = a.ROWID
JOIN mailboxes mb ON m.mailbox = mb.ROWID
WHERE m.date_received >= ${SINCE}
AND m.deleted = 0
AND mb.url NOT LIKE '%Spam%' AND mb.url NOT LIKE '%Trash%'
AND (
s.subject LIKE '%invitation%'
OR s.subject LIKE '%invite%'
OR s.subject LIKE '%meeting%'
OR s.subject LIKE '%standup%'
OR s.subject LIKE '%retro%'
OR s.subject LIKE '%sync%'
OR s.subject LIKE '%call%'
OR s.subject LIKE '%agenda%'
OR s.subject LIKE '%(Updated invitation)%'
OR s.subject LIKE '%has invited you%'
OR s.subject LIKE '%calendar%'
OR s.subject LIKE '%@ %'
OR a.address LIKE '%calendar%'
OR a.address LIKE '%gemini-notes%'
OR a.address LIKE '%meet-recordings%'
)
ORDER BY m.date_received DESC;" 2>/dev/null
Step 2: Categorize meeting emails
Parse bodies to extract:
- New invites: "You have been invited to..." — extract meeting title, date/time, organizer
- Updated invites: time or attendee changes
- Cancelled meetings: "has been cancelled"
- Meeting notes/summaries: from Gemini Notes, Otter.ai, Notion, etc.
- Agendas: ahead of meetings
python3 ~/.claude/skills/_mail-shared/parser.py ...
Step 3: For upcoming meetings, extract key fields
From invite body, find:
- Meeting title
- Date and time (look for
@,on [date], time patterns) - Organizer
- Video link (Zoom, Google Meet, Teams URLs)
- Location
Output Format
Group by type:
Upcoming Meetings (invites received): | Meeting | When | Organizer | Link | |---|---|---|---|
Updated/Changed Meetings: [list changes]
Meeting Notes received: [list summaries with key decisions/action items extracted]
Cancelled: [list cancellations]
For each meeting note, pull out "Suggested next steps" or "Action items" sections if present.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: aashari
- Source: aashari/ai-agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.