# Build a Manus skill for Nylas email & calendar

Source: https://developer.nylas.com/docs/cookbook/cli/manus-skill/

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".

## Directory layout

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

That's it. Two files.

## SKILL.md

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

```markdown
---
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.

## scripts/setup.sh

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`:

```bash
#!/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.

## Deploy the skill

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.

## Things to know

- **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.

## Next steps

- [Build an LLM agent with email & calendar tools](/docs/cookbook/cli/llm-agent-with-tools/)
- [Connect voice agents to email & calendar](/docs/cookbook/cli/connect-voice-agents/)
- [Nylas CLI](https://cli.nylas.com/) — installation and command reference