Google Workspace
yc-software/qm
Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.
Read, search, and draft email in the connected mailbox (Gmail or Microsoft 365).
$ npx skills add heypinchy/pinchy --skill email -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install heypinchy/pinchy email --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/web/src/lib/skills/email .claude/skills/email && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .claude/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/emailType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add heypinchy/pinchy --skill email -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install heypinchy/pinchy email --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/web/src/lib/skills/email .agents/skills/email && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .agents/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add heypinchy/pinchy --skill email -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install heypinchy/pinchy email --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/web/src/lib/skills/email .cursor/skills/email && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .cursor/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/heypinchy/pinchy.git --path packages/web/src/lib/skills/email--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add heypinchy/pinchy --skill email -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install heypinchy/pinchy email --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/web/src/lib/skills/email .gemini/skills/email && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .gemini/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install heypinchy/pinchy emailInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add heypinchy/pinchy --skill email -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/web/src/lib/skills/email .github/skills/email && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .github/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add heypinchy/pinchy --skill email -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install heypinchy/pinchy email --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/heypinchy/pinchy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/web/src/lib/skills/email .opencode/skills/email && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "email" agent skill from https://github.com/heypinchy/pinchy/tree/main/packages/web/src/lib/skills/email into .opencode/skills/email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
emailRead, search, and draft email in the connected mailbox (Gmail or Microsoft 365).
Email is an agent skill from heypinchy/pinchy. Read, search, and draft email in the connected mailbox (Gmail or Microsoft 365). Use when the user asks about their inbox, wants a message found or summarized, or wants a reply drafted. Sending is gated by a separate, explicitly granted permission — never assume you can send, and never claim a message was sent unless the tool result confirms it.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering Email management, Cloud office suites and Email writing. It works with Microsoft 365 and Gmail. The repository describes itself as: Self-hosted AI agent platform built on OpenClaw. Enterprise-ready, offline-capable, open source. 🦞. The licence is AGPL-3.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5159959. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Email loads about 2.4k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 1,427 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from heypinchy/pinchy at commit 5159959, republished under its AGPL-3.0 licence (© heypinchy). 1,427 words, ~2,438 tokens.
.claude/skills/email/SKILL.md (or your agent's skills folder).You can read the connected mailbox, search it with structured filters, and create drafts. Reading an email also surfaces its attachments — you can download one into your workspace with email_get_attachment for other tools to use. Whether you can also send email depends on this agent's configured permissions — sending is a distinct, explicitly granted capability (email.send), separate from reading, searching, and drafting. Do not assume you have it. Only use email_send if it appears in your available tools, and even then, treat it as a real, immediate, irreversible action, not a formality.
folder (optional, one of INBOX, SENT, DRAFTS, TRASH, SPAM; defaults to INBOX), limit (optional number, defaults to 20), unreadOnly (optional boolean, defaults to false). Returns summaries (sender, subject, date, snippet) — use this for a general overview.id (required string, the message ID). Returns the complete body, headers, and metadata, including a list of any attachments (id, filename, mimeType, size) with a hint to use email_get_attachment if you need one of them. Always use this before drafting a reply so you're working from the real content, not a snippet.email_read and save it into the agent's workspace uploads/ directory. Parameters: messageId (required string, the message that has the attachment), attachmentId (required string, an attachment id shown by email_read). This is part of the read scope — no separate permission is needed beyond email read access. It does not return the file's content: it returns the saved filename, size, and mime type once the file is written to disk, so other tools (like pinchy_read or odoo_attach_file) can then read it from the workspace. The saved filename may be sanitized or de-duplicated and can differ from the original attachment name — always use the filename the tool returns, not the one you saw in email_read. Attachments larger than 25 MB are rejected (the cap matches odoo_attach_file, so anything saved can be handed off) — check the size shown by email_read before downloading.from (optional string, sender email address), to (optional string, recipient email address), subject (optional string, subject text match), text (optional string, free-text search across sender, subject, AND body — use this for content matches, like an invoice number, an order ID, or a phrase mentioned in the message body; subject only matches the subject line), unread (optional boolean), sinceDays (optional number, emails newer than this many days), folder (optional, one of INBOX, SENT, DRAFTS, TRASH, SPAM), limit (optional number, defaults to 20). At least one of from, to, subject, text, unread, or sinceDays must be set — folder and limit only scope the results and do not count as filters. You pass these fields as plain values — you never write Gmail search syntax or Microsoft Graph OData/$search syntax; the underlying adapter translates your structured fields into whatever query language the connected provider needs. When text is combined with unread or sinceDays on a Microsoft 365 mailbox, those two are applied as best-effort filters on the results rather than the server-side date sort you get otherwise — full-text search and structural date/unread filtering can't be combined server-side on that provider — so treat matches as relevance-ranked, not guaranteed complete for a narrow date window.to (required string), subject (required string), body (required string, plain text), replyTo (optional string, a message ID to reply to). The draft is saved to the mailbox's Drafts folder for a human to review and send — prefer this over email_send whenever the user hasn't clearly asked you to send immediately.email.send permission; most email agents are not. Takes the same parameters as email_draft (to, subject, body required; replyTo optional). Sends an email immediately and cannot be undone. If this tool is not in your available tools, you cannot send email — say so plainly rather than claiming a draft was sent.Do not assume email_send exists just because this skill is attached. Check your actual available tools before telling the user what you can do.
email_search with text set, not subject, unless the user specifically says it's in the subject lineemail_send tool available — draft instead, and tell the user plainly that you can't send from this agentemail_list on INBOX rather than guessing search filters.email_search fields — do not invent query syntax. For example, "emails from Alice about the invoice this week" becomes from set to Alice's email address, subject set to a term like "invoice", and sinceDays set to 7. When the ask is about something mentioned inside the message rather than the subject line — "find the email mentioning PO-1234" — use text, not subject.email_read on the specific message ID to get the full thread content before calling email_draft with replyTo set, so the draft accurately reflects what was actually said. Never fabricate content that email_read didn't return.email_draft succeeds, tell the user the draft is saved and waiting for them in the Drafts folder unless they clearly asked you to send it immediately and email_send is actually available to you. Never claim a message was sent unless a call to email_send actually returned success.email_read lists attachments, call email_get_attachment with the message ID and the attachment ID you want. It saves the file into your workspace uploads/ directory and returns the filename it actually wrote — use that returned filename for every subsequent step, not the original attachment name, since it may have been sanitized or de-duplicated. From there, read a PDF with pinchy_read, or attach the file to an Odoo record with odoo_attach_file using that same filename. For example: an invoice PDF arrives on an email → email_read shows it as an attachment → email_get_attachment saves it into the workspace → pinchy_read reads it → odoo_attach_file files it on the matching Odoo record.email_send was called and returned success. If email_send is not in your available tools, say you cannot send and offer a draft instead — do not imply the platform will send it for you.email_send as immediate and irreversible if you do have it. Prefer email_draft unless the user has clearly asked for an immediate send.© heypinchy, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/web/src/lib/skills/email of heypinchy/pinchy.
Open the folder on GitHubat commit 5159959
Email next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Email this skillheypinchy/pinchy | 182 | — | ~2.4k | Automated safety check: Pass | AGPL-3.0 | |
| Google Workspaceyc-software/qm | 15k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Gogtrpc-group/trpc-agent-go | 1.9k | 15 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Googleletta-ai/lettabot | 327 | — | ~774 | Automated safety check: Notes | Apache-2.0 | |
| Gws Workflow Email To Taskgoogleworkspace/cli | 31k | — | ~313 | Automated safety check: Pass | Apache-2.0 | |
| Recipe Draft Email From Docgoogleworkspace/cli | 31k | — | ~197 | Automated safety check: Pass | Apache-2.0 |
yc-software/qm
Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.
trpc-group/trpc-agent-go
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
letta-ai/lettabot
Google Workspace CLI (gog) for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
googleworkspace/cli
Google Workflow: Convert a Gmail message into a Google Tasks entry.
googleworkspace/cli
Read content from a Google Doc and use it as the body of a Gmail message.
swyxio/skills
Configure or audit Google Workspace (formerly G Suite) organization settings for open collaboration, user autonomy, external sharing, Groups privacy, Gmail delegation, Calendar, Meet, Chat, Drive…
heypinchy/pinchy
Answer questions from the organization's indexed documents using knowledgesearch, and cite every claim back to a retrieved passage.
heypinchy/pinchy
Query and summarize data from a connected Odoo instance with the odoo read tools (describe, count, read, aggregate).
heypinchy/pinchy
Use before opening a PR that changes docs/ or a user-visible surface (an API route, the tool registry, an agent template, the audit event catalogue, the settings navigation, plugin tools), and when…
heypinchy/pinchy
A skill your agent uses when bumping general npm/pnpm dependencies across the Pinchy workspace (root, packages/web, packages/plugins/, docs), when the user asks to "update dependencies," "check for…
heypinchy/pinchy
A skill your agent uses when a new Ollama Cloud model is announced or available (e.g.
heypinchy/pinchy
A skill your agent uses when bumping the pinned OpenClaw core version (openclaw npm package), when preparing a Pinchy release, or when the user asks to "update OpenClaw" / "upgrade OpenClaw" / check…
Works with
Read, search, and draft email in the connected mailbox (Gmail or Microsoft 365). Email is an agent skill from heypinchy/pinchy. Read, search, and draft email in the connected mailbox (Gmail or Microsoft 365).
Email fits situations like: the user asks about their inbox; wants a message found; wants a reply drafted.
Run `npx skills add heypinchy/pinchy --skill email -a claude-code`. Or copy the skill folder (packages/web/src/lib/skills/email in heypinchy/pinchy) into .claude/skills/email in your project. Claude Code loads it when a task matches its description.
Run `npx skills add heypinchy/pinchy --skill email -a codex`. Or copy the skill folder (packages/web/src/lib/skills/email in heypinchy/pinchy) into .agents/skills/email in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add heypinchy/pinchy --skill email -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/email, .gemini/skills/email, .github/skills/email and .opencode/skills/email in your project.
SKILL.md names no scripts, command-line tools or credentials: Email is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Email is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Email: Google Workspace (yc-software/qm, 15k stars), Gog (trpc-group/trpc-agent-go, 1.9k stars), Google (letta-ai/lettabot, 327 stars) and Gws Workflow Email To Task (googleworkspace/cli, 31k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
heypinchy (a GitHub organization) maintains it in heypinchy/pinchy, which has 182 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on September 21, 2026.
Source: heypinchy/pinchy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.