Skip to content
Skip to main content

Build a Manus skill for Nylas email & calendar

A Manus Skill is a self-contained bundle that teaches an agent how to do something — instructions, scripts, reference material. This recipe packages the Nylas CLI as a skill so any Manus sandbox can install it, authenticate, and start using 70+ email and calendar commands without you wiring it up by hand each time.

The end result: a user types /nylas-cli in chat, Manus loads the skill, and they can say “schedule a 30-minute meeting with Ada next Tuesday at 2pm” or “show me unread emails from this week”.

nylas-cli/
├── SKILL.md
└── scripts/
└── setup.sh

That’s it. Two files.

The frontmatter follows the Agent Skills specification. The body is Markdown documentation that teaches the agent which CLI commands map to which user intents.

---
name: nylas-cli
description: >
Read, send, and search email. Create, update, and list calendar events.
Check availability and find meeting times across Gmail, Microsoft 365,
Exchange, Yahoo, iCloud, and IMAP.
compatibility: Requires internet access and a Nylas API key.
metadata:
author: nylas
version: "1.0"
---
# Nylas CLI
## Email
- `nylas email list --limit 20 --json` — recent messages (use --json to parse)
- `nylas email search "quarterly report" --limit 10 --json` — keyword search
- `nylas email send --to "<addr>" --subject "<subj>" --body "<body>" --yes`
- `nylas email read <message_id> --json` — single message
## Calendar
- `nylas calendar events list --days 7 --json` — upcoming
- `nylas calendar events create --title "..." --start "..." --end "..." --participant "..."`
- `nylas calendar schedule ai "<natural language>"` — let the AI pick a time
- `nylas calendar find-time --participants "..." --duration 30m` — find a slot
## Rules
- Always use `--json` when parsing output.
- Always use `--yes` on send to avoid hanging on a prompt.
- Confirm recipient, subject, and body with the user before sending.

The “Rules” section is what protects users from agents that send mail before they should. Manus pays attention to it.

The install script gets the CLI into the sandbox, authenticates against the user’s API key, and verifies it works. The sandbox has no Go toolchain, so we fetch a pre-built binary instead of go install:

#!/usr/bin/env bash
set -euo pipefail
ARCH="$(uname -m)"
case "$ARCH" in
x86_64) TAG="linux_amd64" ;;
aarch64|arm64) TAG="linux_arm64" ;;
*) echo "Unsupported arch: $ARCH"; exit 1 ;;
esac
# Fetch latest release
curl -fsSL "https://github.com/nylas/cli/releases/latest/download/nylas_${TAG}.tar.gz" \
| tar -xz -C /tmp
# Install on PATH
if [ -w /usr/local/bin ]; then
mv /tmp/nylas /usr/local/bin/nylas
else
mkdir -p "$HOME/.local/bin"
mv /tmp/nylas "$HOME/.local/bin/nylas"
export PATH="$HOME/.local/bin:$PATH"
fi
# Configure auth
if [ -z "${NYLAS_API_KEY:-}" ]; then
read -rp "Nylas API key: " NYLAS_API_KEY
fi
nylas auth config --api-key "$NYLAS_API_KEY"
# Verify
nylas auth whoami

Drop it in scripts/setup.sh and make it executable.

Three options:

  • Upload the folder directly to your Manus Skills tab.
  • Push to a GitHub repo and import from URL.
  • Have Manus package an existing workflow into a skill (it’ll prompt you for the structure).

Once installed, users invoke it with /nylas-cli in chat, then drive it conversationally.

  • API key as a sandbox secret. Store NYLAS_API_KEY as a Manus secret rather than baking it into the skill — the skill is shareable, the secret isn’t.
  • Architecture detection. The install script handles x86_64 and aarch64. Manus sandboxes are usually Linux; if a future variant ships, extend the case block.
  • Versioning. The frontmatter version lets Manus warn when the installed skill is older than what’s published.
  • The “Rules” section is load-bearing. If you remove “confirm before sending”, agents will start sending without confirming. Keep it.