PortEden - secured calendar(Gmail, Outlook, Exchange) access for OpenClaw
Secured Calendar management - Google Calendar, Microsoft Outlook & Exchange - list, search, create, update, delete, and respond to calendar events across mul...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 2 · 463 · 1 current installs · 1 all-time installs
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description, declared binary requirement (porteden), install instructions (brew/go) and primaryEnv (PE_API_KEY) all align with a CLI-based calendar integration. Requesting a PE_API_KEY and a local 'porteden' binary is proportionate to the stated purpose.
Instruction Scope
SKILL.md contains only CLI usage for porteden (listing, searching, creating, updating, deleting events) and instructions to authenticate via browser or token. It explicitly notes credentials persist in the system keyring and recommends using PE_API_KEY in the environment. One minor inconsistency: SKILL.md references additional optional env vars (PE_PROFILE, PE_TIMEZONE, PE_FORMAT, PE_COLOR, PE_VERBOSE) that are not declared in the registry's requires.env list — this is informational but not malicious. No instructions request unrelated files, system-wide config, or external endpoints beyond the porteden CLI behavior.
Install Mechanism
Install options are brew (porteden/tap/porteden) or go install from github.com/porteden/cli — both are normal package install paths for a CLI. There are no arbitrary URL downloads or extract-from-unknown-host steps in the manifest. Note: the brew tap is a third-party tap (porteden/tap) rather than Homebrew/core; verify you trust that tap if installing via brew.
Credentials
Only one required credential (PE_API_KEY) is declared and used as the primary credential, which is appropriate. SKILL.md mentions additional optional env vars for convenience but does not require unrelated credentials. The CLI persists credentials to the system keyring — expected for a CLI but worth noting because it creates local persistent access to calendar accounts.
Persistence & Privilege
The skill is not force-included (always:false) and does not request elevated privileges or modify other skills. It relies on a local CLI which stores tokens in the system keyring (local persistence) — normal for this type of tool. Autonomous invocation is allowed (platform default); if you enable the skill for autonomous actions, the agent will be able to run the porteden CLI and access any credentials available to it.
Assessment
This skill is coherent: it simply directs the agent to run the porteden CLI and use PE_API_KEY or an interactive/browser login. Before installing, verify you trust the PortEden project and the brew tap or GitHub repo used for go install. Understand that PE_API_KEY grants access to your calendars — consider creating a least-privilege API key or a dedicated profile, and avoid putting long-lived keys in global shells. Note that the CLI stores credentials in the system keyring (persistent local access); if you are concerned about persistence, prefer temporary tokens and remove them after use. Finally, if you plan to allow autonomous agent actions, remember the agent will be able to run the CLI and read/write calendar events, so review access and consent settings accordingly.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.3
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
Runtime requirements
📅 Clawdis
Binsporteden
EnvPE_API_KEY
Primary envPE_API_KEY
Install
Install porteden (brew)
Bins: porteden
brew install porteden/tap/portedenInstall porteden (go)
Bins: porteden
go install github.com/porteden/cli/cmd/porteden@latestSKILL.md
porteden
Use porteden for calendar management across multiple accounts. Use -jc flags for AI-optimized output.
If porteden is not installed: brew install porteden/tap/porteden (or go install github.com/porteden/cli/cmd/porteden@latest).
Setup (once)
- Browser login (recommended):
porteden auth login— opens browser, credentials stored in system keyring - Direct token:
porteden auth login --token <key>— stored in system keyring - Verify:
porteden auth status - If
PE_API_KEYis set in the environment, the CLI uses it automatically (no login needed).
Common commands
- List calendars:
porteden calendar calendars -jc - Events today (or --tomorrow, --week):
porteden calendar events --today -jc - Events custom range:
porteden calendar events --from 2026-02-01 --to 2026-02-07 -jc - All events (auto-pagination):
porteden calendar events --week --all -jc - Search events:
porteden calendar events -q "meeting" --today -jc - Events by contact:
porteden calendar by-contact "user@example.com" -jc(or --name "John Smith") - Get single event:
porteden calendar event <eventId> -jc - Create event:
porteden calendar create --calendar <id> --summary "Meeting" --from "..." --to "..." --location "Room A" --attendees "a@b.com,c@d.com" - Update event:
porteden calendar update <eventId> --summary "New Title"(also: --from, --to, --location) - Update attendees:
porteden calendar update <eventId> --add-attendees "new@example.com"(or --remove-attendees; add --notify to send notifications) - Delete event:
porteden calendar delete <eventId>(add --no-notify to skip attendee notifications) - Respond to invite:
porteden calendar respond <eventId> accepted(or: declined, tentative)
Event Status Values
confirmed- Accepted/scheduledtentative- Maybe attendingneedsAction- Requires response from usercancelled- Event was cancelled
Time Formats
- All times use RFC3339 UTC format:
2026-02-01T10:00:00Z - For all-day events, use midnight-to-midnight with
--all-dayflag - JSON output includes
startUtc,endUtc,durationMinutesfields
Notes
- Credentials persist in the system keyring after login. No repeated auth needed.
- Set
PE_PROFILE=workto avoid repeating--profile. -jcis shorthand for--json --compact: filters noise, truncates descriptions, limits attendees, reduces tokens.- Use
--allto auto-fetch all pages; checkmeta.hasMoreandmeta.totalCountin JSON output. - Manual pagination:
--limit 100 --offset 0, then--offset 100, etc. by-contactsupports partial matching:"@acme.com"for email domain,--name "Smith"for name.- Confirm before creating, updating, or deleting events.
- "invalid calendar ID": Get IDs with
porteden calendar calendars -jc. - Environment variables:
PE_API_KEY,PE_PROFILE,PE_TIMEZONE,PE_FORMAT,PE_COLOR,PE_VERBOSE.
Files
1 totalSelect a file
Select a file to preview.
Comments
Loading comments…
