Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add KunanonJ/ai-skills-hub --skill aside-google-gmailgit clone --depth 1 https://github.com/KunanonJ/ai-skills-hubWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kunanonj/ai-skills-hub/aside-google-gmail)<a href="https://agentmods.dev/skills/kunanonj/ai-skills-hub/aside-google-gmail"><img src="https://agentmods.dev/badge/skills/kunanonj/ai-skills-hub/aside-google-gmail/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kunanonj/ai-skills-hub/aside-google-gmail"><img src="https://agentmods.dev/badge/skills/kunanonj/ai-skills-hub/aside-google-gmail.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00024 | $0.01656 |
| Opus 5 | $0.00012 | $0.00828 |
| Sonnet 5 | $0.00005 | $0.00331 |
| Haiku 4.5 | $0.00002 | $0.00166 |
Grade A, and why
aside-google-gmail scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 181 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Gmail
Use the gmail global in the REPL tool. It uses direct HTTP against Gmail's internal sync API — no tab navigation needed.
IMPORTANT: User may use multiple Google accounts (e.g. work email / personal email). ALWAYS CALL await googleAccounts.print() to print all logged-in google accounts and identify the correct uid before using Gmail.
- Every
gmailmethod takesuid(the/u/{uid}/index) as its first argument.- Use browser history search and memory search to get hint about the account to use.
- If intended search results are empty, consider trying a different
uid. UsePromise.allfor searching multiple accounts. - NOTE THAT threadId is different between accounts even if it refers to the same thread.
Quick Reference
const uid = 1; // uid from Google Accounts list
// Inbox and Search
const inbox = await gmail.getInbox(uid); // shorthand for search(uid, 'in:inbox')
const searchResults = await gmail.search(uid, 'from:[email protected] subject:"meeting"');
// → { results: GmailSearchResult[], hasMore, total, nextOffset }
// Read thread (body is markdown by default)
const thread1 = await gmail.getThread(uid, 'thread-f:123456');
// → { threadId, subject, messages: GmailThreadMessage[] }
// Compose (opens tab with pre-filled fields, returns Playwright Page)
const cp1 = await gmail.openComposer(uid, { to: '[email protected]', subject: 'Hi', bodyHtml: '<b>Hello</b>' });
// Reply (opens inline reply in thread detail page, returns Playwright Page)
const rp1 = await gmail.openReplyComposer(uid, { threadId: 'thread-f:123456', bodyHtml: '<p>Thanks</p>' });
// Download attachment
await gmail.downloadAttachment(uid, attachment.url, 'report.pdf');
Methods
gmail.search(uid: number, query: string, opts?: { offset?: number }): Promise<GmailSearchResponse>
Search threads via Gmail search operators (from:, to:, subject:, label:, before:, after:, is:, has:attachment, etc.).
uid— Google account index (/u/{uid}/).query— Gmail search query string.opts.offset— Pagination offset (default0). UsenextOffsetfrom previous response.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 181 lines · 24 tokens per session scan A 2c5fbdd5cf62
aside-google-gmail is a skill published in the GitHub repository KunanonJ/ai-skills-hub (5 stars, last pushed today), licensed MIT. It adds 24 tokens to every session and 1,656 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
ijfw-compute
Use when the user says: 'compute', 'crunch this', 'analyze logs', 'aggregate the data', 'run a script', 'dedupe', 'count by', 'top N', or any data-shaping ask. Replaces dumping raw data into context with sandboxed script execution.
what-next
Determine the current stage of the active task and recommend the single best immediate next command, editor mode, and work complexity. Routes based on TASKSTATE.md, DECISIONS.md, and IMPLEMENTATIONPLAN.md without reopening broad discovery. Use when the user wants a fast operational answer for what to do next, when the…
Cursor Workflow Optimizer
Master Cursor IDE with optimal configurations, custom rules, MCP integrations, and workflow patterns that 10x developer productivity.
issue-creation
Trigger: issue creation, bug reports, feature requests, or issue approval. Create and triage GitHub issues from repository evidence.
sdd-tasks
Break an SDD change into implementation tasks. Trigger: orchestrator launches task planning for a change.
sdd-research
Trigger: SDD research, external evidence, source-backed research. Produce auditable evidence for a selected research lane.