[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WZ4XKKGS8P41YR0J6NC7MH":3,"skill-same:01M6WZ4XKKGS8P41YR0J6NC7MH":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":13,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6WZ4XKKGS8P41YR0J6NC7MH","gmail-automation",null,"Lightweight Gmail integration with standalone OAuth authentication. No MCP server required.","UhdyIndy\u002Fantigravity-awesome-skills","UhdyIndy","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210015129?v=4","01M6R8N8YNJ1AKKKZDGSFE7DXG","01M6R8N92JYB8DVF9CPJV52W1C",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fgmail-automation\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35],"gmail","automation","gmail automation","MCP","mcp server","authentication","integration","server","OAuth","community","critical","with","standalone","2026-11-10 10:12:30",false,"---\nname: gmail-automation\ndescription: \"Lightweight Gmail integration with standalone OAuth authentication. No MCP server required.\"\nlicense: Apache-2.0\nrisk: critical\nsource: community\nmetadata:\n  author: sanjay3290\n  version: \"1.0\"\n---\n\n# Gmail\n\nLightweight Gmail integration with standalone OAuth authentication. No MCP server required.\n\n> **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported.\n\n## When to Use\n\n- You need to search, read, or send Gmail messages from the command line without an MCP server.\n- You are automating inbox workflows for a Google Workspace account.\n- You want a lightweight Gmail integration backed by standalone OAuth scripts.\n\n## First-Time Setup\n\nAuthenticate with Google (opens browser):\n```bash\npython scripts\u002Fauth.py login\n```\n\nCheck authentication status:\n```bash\npython scripts\u002Fauth.py status\n```\n\nLogout when needed:\n```bash\npython scripts\u002Fauth.py logout\n```\n\n## Commands\n\nAll operations via `scripts\u002Fgmail.py`. Auto-authenticates on first use if not logged in.\n\n### Search Emails\n\n```bash\n# Search with Gmail query syntax\npython scripts\u002Fgmail.py search \"from:someone@example.com is:unread\"\n\n# Search recent emails (no query returns all)\npython scripts\u002Fgmail.py search --limit 20\n\n# Filter by label\npython scripts\u002Fgmail.py search --label INBOX --limit 10\n\n# Include spam and trash\npython scripts\u002Fgmail.py search \"subject:important\" --include-spam-trash\n```\n\n### Read Email Content\n\n```bash\n# Get full message content\npython scripts\u002Fgmail.py get MESSAGE_ID\n\n# Get just metadata (headers)\npython scripts\u002Fgmail.py get MESSAGE_ID --format metadata\n\n# Get minimal response (IDs only)\npython scripts\u002Fgmail.py get MESSAGE_ID --format minimal\n```\n\n### Send Emails\n\n```bash\n# Send a simple email\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"Hello\" --body \"Message body\"\n\n# Send with CC and BCC\npython scripts\u002Fgmail.py send --to \"user@example.com\" --cc \"cc@example.com\" --bcc \"bcc@example.com\" \\\n  --subject \"Team Update\" --body \"Update message\"\n\n# Send from an alias (must be configured in Gmail settings)\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"Hello\" --body \"Message\" \\\n  --from \"Mile9 Accounts \u003Caccounts@mile9.io>\"\n\n# Send HTML email\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"HTML Email\" \\\n  --body \"\u003Ch1>Hello\u003C\u002Fh1>\u003Cp>HTML content\u003C\u002Fp>\" --html\n```\n\n### Draft Management\n\n```bash\n# Create a draft\npython scripts\u002Fgmail.py create-draft --to \"user@example.com\" --subject \"Draft Subject\" \\\n  --body \"Draft content\"\n\n# Send an existing draft\npython scripts\u002Fgmail.py send-draft DRAFT_ID\n```\n\n### Modify Messages (Labels)\n\n```bash\n# Mark as read (remove UNREAD label)\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label UNREAD\n\n# Mark as unread\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label UNREAD\n\n# Archive (remove from INBOX)\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label INBOX\n\n# Star a message\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label STARRED\n\n# Unstar a message\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label STARRED\n\n# Mark as important\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label IMPORTANT\n\n# Multiple label changes at once\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label UNREAD --add-label STARRED\n```\n\n### List Labels\n\n```bash\n# List all Gmail labels (system and user-created)\npython scripts\u002Fgmail.py list-labels\n```\n\n## Gmail Query Syntax\n\nGmail supports powerful search operators:\n\n| Query | Description |\n|-------|-------------|\n| `from:user@example.com` | Emails from a specific sender |\n| `to:user@example.com` | Emails to a specific recipient |\n| `subject:meeting` | Emails with \"meeting\" in subject |\n| `is:unread` | Unread emails |\n| `is:starred` | Starred emails |\n| `is:important` | Important emails |\n| `has:attachment` | Emails with attachments |\n| `after:2024\u002F01\u002F01` | Emails after a date |\n| `before:2024\u002F12\u002F31` | Emails before a date |\n| `newer_than:7d` | Emails from last 7 days |\n| `older_than:1m` | Emails older than 1 month |\n| `label:work` | Emails with a specific label |\n| `in:inbox` | Emails in inbox |\n| `in:sent` | Sent emails |\n| `in:trash` | Trashed emails |\n\nCombine with AND (space), OR, or - (NOT):\n```bash\npython scripts\u002Fgmail.py search \"from:boss@company.com is:unread newer_than:1d\"\npython scripts\u002Fgmail.py search \"subject:urgent OR subject:important\"\npython scripts\u002Fgmail.py search \"from:newsletter@example.com -is:starred\"\n```\n\n## Common Label IDs\n\n| Label | ID |\n|-------|-----|\n| Inbox | `INBOX` |\n| Sent | `SENT` |\n| Drafts | `DRAFT` |\n| Spam | `SPAM` |\n| Trash | `TRASH` |\n| Starred | `STARRED` |\n| Important | `IMPORTANT` |\n| Unread | `UNREAD` |\n\n## Token Management\n\nTokens stored securely using the system keyring:\n- **macOS**: Keychain\n- **Windows**: Windows Credential Locker\n- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)\n\nService name: `gmail-skill-oauth`\n\nTokens automatically refresh when expired using Google's cloud function.\n","# Gmail\n\nLightweight Gmail integration with standalone OAuth authentication. No MCP server required.\n\n> **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported.\n\n## When to Use\n\n- You need to search, read, or send Gmail messages from the command line without an MCP server.\n- You are automating inbox workflows for a Google Workspace account.\n- You want a lightweight Gmail integration backed by standalone OAuth scripts.\n\n## First-Time Setup\n\nAuthenticate with Google (opens browser):\n```bash\npython scripts\u002Fauth.py login\n```\n\nCheck authentication status:\n```bash\npython scripts\u002Fauth.py status\n```\n\nLogout when needed:\n```bash\npython scripts\u002Fauth.py logout\n```\n\n## Commands\n\nAll operations via `scripts\u002Fgmail.py`. Auto-authenticates on first use if not logged in.\n\n### Search Emails\n\n```bash\n# Search with Gmail query syntax\npython scripts\u002Fgmail.py search \"from:someone@example.com is:unread\"\n\n# Search recent emails (no query returns all)\npython scripts\u002Fgmail.py search --limit 20\n\n# Filter by label\npython scripts\u002Fgmail.py search --label INBOX --limit 10\n\n# Include spam and trash\npython scripts\u002Fgmail.py search \"subject:important\" --include-spam-trash\n```\n\n### Read Email Content\n\n```bash\n# Get full message content\npython scripts\u002Fgmail.py get MESSAGE_ID\n\n# Get just metadata (headers)\npython scripts\u002Fgmail.py get MESSAGE_ID --format metadata\n\n# Get minimal response (IDs only)\npython scripts\u002Fgmail.py get MESSAGE_ID --format minimal\n```\n\n### Send Emails\n\n```bash\n# Send a simple email\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"Hello\" --body \"Message body\"\n\n# Send with CC and BCC\npython scripts\u002Fgmail.py send --to \"user@example.com\" --cc \"cc@example.com\" --bcc \"bcc@example.com\" \\\n  --subject \"Team Update\" --body \"Update message\"\n\n# Send from an alias (must be configured in Gmail settings)\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"Hello\" --body \"Message\" \\\n  --from \"Mile9 Accounts \u003Caccounts@mile9.io>\"\n\n# Send HTML email\npython scripts\u002Fgmail.py send --to \"user@example.com\" --subject \"HTML Email\" \\\n  --body \"\u003Ch1>Hello\u003C\u002Fh1>\u003Cp>HTML content\u003C\u002Fp>\" --html\n```\n\n### Draft Management\n\n```bash\n# Create a draft\npython scripts\u002Fgmail.py create-draft --to \"user@example.com\" --subject \"Draft Subject\" \\\n  --body \"Draft content\"\n\n# Send an existing draft\npython scripts\u002Fgmail.py send-draft DRAFT_ID\n```\n\n### Modify Messages (Labels)\n\n```bash\n# Mark as read (remove UNREAD label)\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label UNREAD\n\n# Mark as unread\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label UNREAD\n\n# Archive (remove from INBOX)\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label INBOX\n\n# Star a message\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label STARRED\n\n# Unstar a message\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label STARRED\n\n# Mark as important\npython scripts\u002Fgmail.py modify MESSAGE_ID --add-label IMPORTANT\n\n# Multiple label changes at once\npython scripts\u002Fgmail.py modify MESSAGE_ID --remove-label UNREAD --add-label STARRED\n```\n\n### List Labels\n\n```bash\n# List all Gmail labels (system and user-created)\npython scripts\u002Fgmail.py list-labels\n```\n\n## Gmail Query Syntax\n\nGmail supports powerful search operators:\n\n| Query | Description |\n|-------|-------------|\n| `from:user@example.com` | Emails from a specific sender |\n| `to:user@example.com` | Emails to a specific recipient |\n| `subject:meeting` | Emails with \"meeting\" in subject |\n| `is:unread` | Unread emails |\n| `is:starred` | Starred emails |\n| `is:important` | Important emails |\n| `has:attachment` | Emails with attachments |\n| `after:2024\u002F01\u002F01` | Emails after a date |\n| `before:2024\u002F12\u002F31` | Emails before a date |\n| `newer_than:7d` | Emails from last 7 days |\n| `older_than:1m` | Emails older than 1 month |\n| `label:work` | Emails with a specific label |\n| `in:inbox` | Emails in inbox |\n| `in:sent` | Sent emails |\n| `in:trash` | Trashed emails |\n\nCombine with AND (space), OR, or - (NOT):\n```bash\npython scripts\u002Fgmail.py search \"from:boss@company.com is:unread newer_than:1d\"\npython scripts\u002Fgmail.py search \"subject:urgent OR subject:important\"\npython scripts\u002Fgmail.py search \"from:newsletter@example.com -is:starred\"\n```\n\n## Common Label IDs\n\n| Label | ID |\n|-------|-----|\n| Inbox | `INBOX` |\n| Sent | `SENT` |\n| Drafts | `DRAFT` |\n| Spam | `SPAM` |\n| Trash | `TRASH` |\n| Starred | `STARRED` |\n| Important | `IMPORTANT` |\n| Unread | `UNREAD` |\n\n## Token Management\n\nTokens stored securely using the system keyring:\n- **macOS**: Keychain\n- **Windows**: Windows Credential Locker\n- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)\n\nService name: `gmail-skill-oauth`\n\nTokens automatically refresh when expired using Google's cloud function.\n",{"name":5,"risk":33,"source":32,"license":14,"metadata":41,"description":7},{"author":42,"version":43},"sanjay3290","1.0","main","69d1595b1e37ce252a542fab54b908bc8486139a","skills\u002Fgmail-automation","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills","https:\u002F\u002Fgithub.com\u002FUhdyIndy","2026-04-12 18:53:09",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add UhdyIndy\u002Fantigravity-awesome-skills --skill gmail-automation",{"tool":56,"command":57},"bunx","bunx skills add UhdyIndy\u002Fantigravity-awesome-skills --skill gmail-automation",{"tool":59,"command":60},"pnpm","pnpm dlx skills add UhdyIndy\u002Fantigravity-awesome-skills --skill gmail-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fgmail-automation\u002FSKILL.md",true,[],[65,101,127,160,184,212],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":80,"publishedAt":36},"01M6X3BZ46SFSXPAH6A102Y8Q0","ckm:ui-styling","Create beautiful, accessible user interfaces with shadcn\u002Fui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs. Use when building user interfaces, implementing design systems, creating responsive layouts, adding accessible components (dialogs, dropdowns, forms, tables), customizing themes and colors, implementing dark mode, generating visual designs and posters, or establishing consistent styling patterns across applications.","MIT","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fui-styling\u002FSKILL.md",[72,75],{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],"ui styling","ui","styling","ckm:ui styling","ckm","design","css","canvas","components","component","create","design systems","Tailwind","across","layout","themes","utility","mode","implementing","when",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":36},"01M6X39B8F9MTQ85PX83M52HGN","transformers-js","Run Hugging Face models in JavaScript or TypeScript with Transformers.js in Node.js or the browser.","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Ftransformers-js\u002FSKILL.md",[],[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,44,123,124,125,126],"Transformers","js","transformers js","typescript","github","webgpu","run","HuggingFace","learning","access","hugging face","modules","models","hub","es","local","internet","for","unknown",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":143,"publishedAt":36},"01M6X1E1CF2FQ82HMY2965GYHE","scientific-writing","This is the core skill for the deep research and writing tool—combining AI-driven deep research with well-formatted written outputs. Every document produced is backed by comprehensive literature search and verified citations through the research-lookup skill.","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[133,136,139,140],{"categoryNo":134,"categoryName":135,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":137,"categoryName":138,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":141,"categoryName":142,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000036","内容创作者",[144,145,146,147,148,149,150,151,152,153,32,154,155,156,34,157,125,126,158,159],"writing","scientific writing","scientific","research","core","search","deep research","Citations","tool","document","deep","literature search","literature","verified","core skill","outputs",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":169,"publishedAt":36},"01M6X0STXVX9VRJJ0025WXR7TW","plotly","Interactive visualization library. Use when you need hover info, zoom, pan, or web-embeddable charts. Best for dashboards, exploratory analysis, and presentations. For static publication figures use matplotlib or scientific-visualization.","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fplotly\u002FSKILL.md",[166],{"categoryNo":167,"categoryName":168,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000013","分析与可视化",[162,170,171,172,173,174,175,176,177,178,32,179,146,180,181,182,125,126,183,100],"hover","presentations","visualization","library","analysis","Charts","dashboards","interactive","use","info","zoom","figures","you","static",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":196,"publishedAt":36},"01M6X09E20CJKMMG0WKKZJQN1E","native-data-fetching","Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (useLoaderData).","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fnative-data-fetching\u002FSKILL.md",[190,193],{"categoryNo":191,"categoryName":192,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":194,"categoryName":195,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000033","数据分析师",[197,198,199,200,201,202,203,204,205,178,32,206,207,208,209,210,99,126,100,211],"native data fetching","data","native","data fetching","react","debugging","error handling","api","fetch","call","query","caching","error","expo router","react query",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":218,"publishedAt":36},"01M6X077866P0FKKXZAREXXJ7A","moyu","Anti-over-engineering guardrail that activates when an AI coding agent expands scope, adds abstractions, or changes files the user did not request.","https:\u002F\u002Fgithub.com\u002FUhdyIndy\u002Fantigravity-awesome-skills\u002Fblob\u002Fmain\u002Fskills\u002Fmoyu\u002FSKILL.md",[],[214,219,220,221,222,223,224,225,32,226,227,228,229,230,100],"safe","coding agent","engineering","coding","user","ai coding","files","guardrail","scope","changes","ai coding agent","request"]