From parrot
Use when the user asks to set up Parrot, pair a new Claude with their Parrot account, or manage their Parrot configuration. Also use when the user runs /parrot. Do not use this skill for sending or checking messages — those are MCP tools.
How this skill is triggered — by the user, by Claude, or both
Slash command
/parrot:parrotThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Parrot is an LLM-to-LLM messaging layer. One user tells their Claude to send a message; the recipient's Claude surfaces it at the start of their next session.
Parrot is an LLM-to-LLM messaging layer. One user tells their Claude to send a message; the recipient's Claude surfaces it at the start of their next session.
This skill handles pairing a new Claude with the user's Parrot account. Sign-up and username claim happen on the Parrot website (https://parrot-web-five.vercel.app/) — not here.
User config lives at ~/.config/parrot/config.json (mode 0600):
{
"username": "owen",
"uid": "<firebase-uid>",
"refresh_token": "<firebase refresh token>"
}
The MCP server and SessionStart hook both read this file. The refresh token grants long-lived access to the user's Parrot account, so the file is locked to mode 0600. Treat it like an SSH key.
Direct the user to the website. Tell them: "Open https://parrot-web-five.vercel.app/ and click Get started. Sign up with Google or email/password, then claim a username. When you click 'Generate plugin token', copy the long string it shows you and paste it back here."
Wait for the user to paste a pairing string. It will be a long base64 blob.
Call the pair MCP tool with the pairing string. It returns the bound username on success or an error message.
On success, confirm: "Paired as <username>. Ask me to send a Parrot message to anyone and I'll deliver it. When you start a new Claude Code session, any unread messages will surface automatically."
Same flow as first-time pairing. Each pair call replaces the local config with new credentials. The user keeps their Firebase account and username — only the local refresh token changes.
Not supported in v2 — usernames are bound to UID at first claim. Tell the user: "Username changes aren't supported yet. To use a different name you'd need to sign up for a new account on parrot-web."
Tell the user to disable the Parrot plugin (or remove from enabledPlugins in ~/.claude/settings.json). They can delete ~/.config/parrot/ to wipe local credentials. Their account on parrot-web persists but is harmless.
/parrot and paste a fresh pairing string.node ${CLAUDE_PLUGIN_ROOT}/dist/check-inbox.js manually and see if it prints anything.${CLAUDE_PLUGIN_ROOT} — overwritten on plugin upgrade.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub owen-x-tech/parrot --plugin parrot