USP
This comprehensive collection provides a wide array of skills for various platforms and tasks, offering cross-client compatibility via the Agent Skills Standard and easy installation using the `npx skills` package manager.
Use cases
- 01Extending AI agent capabilities with database access
- 02Automating tasks in Atlassian and Azure DevOps
- 03Generating audio content from text and documents
- 04Managing Google Workspace applications like Gmail and Calendar
- 05Performing autonomous multi-step research
Detected files (8)
skills/google-chat/SKILL.mdskillShow content (2431 bytes)
--- name: google-chat description: | Interact with Google Chat - list spaces, send messages, read conversations, and manage DMs. Use when user asks to: send a message on Google Chat, read chat messages, list chat spaces, find a chat room, send a DM, or create a new chat space. Lightweight alternative to full Google Workspace MCP server with standalone OAuth authentication. license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # Google Chat Lightweight Google Chat integration with standalone OAuth authentication. No MCP server required. > **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported. ## First-Time Setup Authenticate with Google (opens browser): ```bash python scripts/auth.py login ``` Check authentication status: ```bash python scripts/auth.py status ``` Logout when needed: ```bash python scripts/auth.py logout ``` ## Commands All operations via `scripts/chat.py`. Auto-authenticates on first use if not logged in. ```bash # List all spaces you're a member of python scripts/chat.py list-spaces # Find a space by name python scripts/chat.py find-space "Project Alpha" # Get messages from a space python scripts/chat.py get-messages spaces/AAAA123 --limit 10 # Send a message to a space python scripts/chat.py send-message spaces/AAAA123 "Hello team!" # Send a message with file attachment python scripts/chat.py send-message spaces/AAAA123 "Here's the report" --attachment /path/to/file.pdf # Send a direct message python scripts/chat.py send-dm user@example.com "Hey, quick question..." # Send a DM with file attachment python scripts/chat.py send-dm user@example.com "Please review" --attachment /path/to/file.pdf # Find or create DM space with someone python scripts/chat.py find-dm user@example.com # List threads in a space python scripts/chat.py list-threads spaces/AAAA123 # Create a new space with members python scripts/chat.py setup-space "New Project" user1@example.com user2@example.com ``` ## Space Name Format Google Chat uses `spaces/AAAA123` format. Get space names from `list-spaces` or `find-space`. ## Token Management Tokens stored securely using the system keyring: - **macOS**: Keychain - **Windows**: Windows Credential Locker - **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.) Service name: `google-chat-skill-oauth` Automatically refreshes expired tokens using Google's cloud function.skills/azure-devops/SKILL.mdskillShow content (16789 bytes)
--- name: azure-devops description: | Manage Azure DevOps projects, work items, repos, PRs, pipelines, wikis, test plans, security alerts, variable groups, environments/approvals, branch policies, and attachments. Use when user asks to: manage sprints, create/update work items, list repos, create PRs, run pipelines, search code, manage wiki pages, check security alerts, manage variable groups, approve deployments, or configure branch policies. Covers 13 domains with 99 tools via REST API. license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # Azure DevOps Full Azure DevOps integration using OAuth or PAT authentication and REST API v7.1. ## First-Time Setup ### Option 1: OAuth (Recommended) Login with OAuth device code flow (shows "Visual Studio Code" prompt): ```bash python scripts/auth.py login --org MyOrganization ``` Follow the URL and enter the device code to authorize. Tokens auto-refresh. ### Option 2: PAT Login with a Personal Access Token: ```bash python scripts/auth.py login --org MyOrganization --pat YOUR_PAT ``` Create a PAT at `https://dev.azure.com/{org}/_usersSettings/tokens` with these scopes: - **Work Items**: Read & Write - **Code**: Read & Write (for repos/PRs) - **Build**: Read & Execute (for pipelines) - **Wiki**: Read & Write - **Test Management**: Read & Write - **Advanced Security**: Read (for security alerts) - **Project and Team**: Read - **Identity**: Read (for user search) ### Common Commands Check authentication status: ```bash python scripts/auth.py status ``` Logout: ```bash python scripts/auth.py logout ``` ## Core (scripts/core.py) ```bash # List all projects python scripts/core.py list-projects python scripts/core.py list-projects --top 10 # List teams in a project python scripts/core.py list-teams --project MyProject # Search for a user identity python scripts/core.py get-identity --search "john@example.com" ``` ## Work Items (scripts/work_items.py) ```bash # Get a work item python scripts/work_items.py get --project MyProject --id 123 python scripts/work_items.py get --project MyProject --id 123 --expand relations # Create a work item python scripts/work_items.py create --project MyProject --type "User Story" --title "New feature" python scripts/work_items.py create --project MyProject --type Bug --title "Fix login" \ --field System.Description "Login fails on timeout" \ --field System.AssignedTo "user@example.com" # Update a work item python scripts/work_items.py update --project MyProject --id 123 \ --field System.State "Active" \ --field System.AssignedTo "user@example.com" # Batch get multiple work items python scripts/work_items.py batch-get --project MyProject --ids 1,2,3 # Add children to a parent python scripts/work_items.py add-children --project MyProject --parent-id 100 --child-ids 101,102 # Link work items python scripts/work_items.py link --project MyProject --source-id 100 --target-id 200 python scripts/work_items.py link --project MyProject --source-id 100 --target-id 200 \ --link-type "System.LinkTypes.Dependency-Forward" # Remove a link python scripts/work_items.py unlink --project MyProject --source-id 100 --relation-index 0 # Comments python scripts/work_items.py add-comment --project MyProject --id 123 --text "Working on this" python scripts/work_items.py list-comments --project MyProject --id 123 # History python scripts/work_items.py get-revisions --project MyProject --id 123 # List work item types python scripts/work_items.py list-types --project MyProject # My assigned items python scripts/work_items.py my-items --project MyProject # Items in an iteration python scripts/work_items.py iteration-items --project MyProject --iteration-path "MyProject\\Sprint 1" # Backlogs python scripts/work_items.py list-backlogs --project MyProject --team "MyProject Team" # Saved queries python scripts/work_items.py list-queries --project MyProject python scripts/work_items.py get-query --project MyProject --path "Shared Queries/Active Bugs" python scripts/work_items.py run-query --project MyProject --query-id "guid-here" # WIQL query python scripts/work_items.py run-wiql --project MyProject \ --query "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.State] = 'Active'" # Delete / recycle bin python scripts/work_items.py delete --project MyProject --id 999 python scripts/work_items.py recycle-bin --project MyProject ``` ## Git Repos & PRs (scripts/repos.py) ```bash # List repositories python scripts/repos.py list --project MyProject # Get repo details python scripts/repos.py get --project MyProject --repo my-repo # Branches python scripts/repos.py list-branches --project MyProject --repo my-repo python scripts/repos.py create-branch --project MyProject --repo my-repo --name feature/new --source main # Commits python scripts/repos.py search-commits --project MyProject --repo my-repo --path /src --author "john" --top 10 # Pull requests python scripts/repos.py list-prs --project MyProject --repo my-repo python scripts/repos.py list-prs --project MyProject --status completed --top 5 python scripts/repos.py create-pr --project MyProject --repo my-repo \ --source feature/new --target main --title "Add new feature" --description "Details here" python scripts/repos.py get-pr --project MyProject --repo my-repo --pr-id 42 python scripts/repos.py update-pr --project MyProject --repo my-repo --pr-id 42 --title "Updated title" # Reviewers python scripts/repos.py list-reviewers --project MyProject --repo my-repo --pr-id 42 python scripts/repos.py add-reviewer --project MyProject --repo my-repo --pr-id 42 \ --reviewer-id "guid" --vote 10 # PR comments python scripts/repos.py list-threads --project MyProject --repo my-repo --pr-id 42 python scripts/repos.py create-thread --project MyProject --repo my-repo --pr-id 42 \ --content "Looks good!" --file-path "/src/main.py" --line 25 python scripts/repos.py add-thread-comment --project MyProject --repo my-repo --pr-id 42 \ --thread-id 1 --content "Fixed" # Complete or abandon PR python scripts/repos.py complete-pr --project MyProject --repo my-repo --pr-id 42 python scripts/repos.py complete-pr --project MyProject --repo my-repo --pr-id 42 \ --merge-strategy rebase --keep-source python scripts/repos.py abandon-pr --project MyProject --repo my-repo --pr-id 42 # Diff python scripts/repos.py get-diff --project MyProject --repo my-repo --base main --target feature/new # Browse files python scripts/repos.py list-files --project MyProject --repo my-repo --path /src --branch main ``` ## Iterations & Capacity (scripts/work.py) ```bash # List iterations python scripts/work.py list-iterations --project MyProject # Create iteration python scripts/work.py create-iteration --project MyProject --name "Sprint 5" \ --start-date 2026-03-01 --finish-date 2026-03-14 # Get iteration details python scripts/work.py get-iteration --project MyProject --iteration-id "guid" # Team iterations python scripts/work.py team-iterations --project MyProject --team "MyTeam" --timeframe current # Assign iteration to team python scripts/work.py assign-iteration --project MyProject --team "MyTeam" --iteration-id "guid" # Capacities python scripts/work.py get-capacities --project MyProject --team "MyTeam" --iteration-id "guid" python scripts/work.py set-capacity --project MyProject --team "MyTeam" --iteration-id "guid" \ --member-id "user-guid" --activity Development --capacity-per-day 6 ``` ## Pipelines & Builds (scripts/pipelines.py) ```bash # Create pipeline python scripts/pipelines.py create --project MyProject --name "CI" \ --repo-id "repo-guid" --yaml-path "/azure-pipelines.yml" # List builds python scripts/pipelines.py list-builds --project MyProject --top 5 python scripts/pipelines.py list-builds --project MyProject --status completed --branch main # Get build details and logs python scripts/pipelines.py get-build --project MyProject --build-id 100 python scripts/pipelines.py build-logs --project MyProject --build-id 100 python scripts/pipelines.py build-logs --project MyProject --build-id 100 --log-id 3 python scripts/pipelines.py build-changes --project MyProject --build-id 100 # Pipeline definitions python scripts/pipelines.py list-definitions --project MyProject python scripts/pipelines.py list-definitions --project MyProject --name "CI" # Run a pipeline python scripts/pipelines.py run --project MyProject --pipeline-id 5 --branch develop python scripts/pipelines.py run --project MyProject --pipeline-id 5 \ --variable ENV production --variable DEPLOY true # Pipeline runs python scripts/pipelines.py get-run --project MyProject --pipeline-id 5 --run-id 200 python scripts/pipelines.py list-runs --project MyProject --pipeline-id 5 --top 10 # Stage management python scripts/pipelines.py update-stage --project MyProject --build-id 100 --stage Deploy --state retry # Artifacts python scripts/pipelines.py get-artifacts --project MyProject --build-id 100 # Queue and cancel builds python scripts/pipelines.py queue-build --project MyProject --definition-id 10 --branch main python scripts/pipelines.py cancel-build --project MyProject --build-id 100 # Latest build status python scripts/pipelines.py build-status --project MyProject --definition-id 10 ``` ## Search (scripts/search.py) ```bash # Search code python scripts/search.py code --project MyProject --query "TODO" python scripts/search.py code --project MyProject --query "connectionString" --top 10 # Search wiki python scripts/search.py wiki --project MyProject --query "deployment guide" # Search work items python scripts/search.py work-items --project MyProject --query "login bug" ``` ## Wiki (scripts/wiki.py) ```bash # List wikis python scripts/wiki.py list --project MyProject # Get wiki details python scripts/wiki.py get --project MyProject --wiki-id MyProject.wiki # List pages python scripts/wiki.py list-pages --project MyProject --wiki-id MyProject.wiki python scripts/wiki.py list-pages --project MyProject --wiki-id MyProject.wiki --path /Architecture # Get page content python scripts/wiki.py get-page --project MyProject --wiki-id MyProject.wiki --path /Home python scripts/wiki.py get-page-content --project MyProject --wiki-id MyProject.wiki --path /Home # Create or update a page python scripts/wiki.py create-or-update-page --project MyProject --wiki-id MyProject.wiki \ --path /NewPage --content "# New Page\n\nContent here" ``` ## Test Plans (scripts/test_plans.py) ```bash # Test plans python scripts/test_plans.py list-plans --project MyProject python scripts/test_plans.py get-plan --project MyProject --plan-id 1 python scripts/test_plans.py create-plan --project MyProject --name "Release 2.0 Tests" # Test suites python scripts/test_plans.py list-suites --project MyProject --plan-id 1 python scripts/test_plans.py get-suite --project MyProject --plan-id 1 --suite-id 2 # Test cases python scripts/test_plans.py list-test-cases --project MyProject --plan-id 1 --suite-id 2 python scripts/test_plans.py add-test-cases --project MyProject --plan-id 1 --suite-id 2 --ids 100,101 # Test results python scripts/test_plans.py list-results --project MyProject --run-id 50 python scripts/test_plans.py get-result --project MyProject --run-id 50 --result-id 1 ``` ## Advanced Security (scripts/security.py) ```bash # List security alerts python scripts/security.py list-alerts --project MyProject --repo my-repo python scripts/security.py list-alerts --project MyProject --repo my-repo \ --state active --severity high --type dependency # Get alert details python scripts/security.py get-alert --project MyProject --repo my-repo --alert-id 42 ``` ## Variable Groups (scripts/variable_groups.py) ```bash # List variable groups python scripts/variable_groups.py list --project MyProject # Get a variable group python scripts/variable_groups.py get --project MyProject --id 1 # Create a variable group python scripts/variable_groups.py create --project MyProject --name "Deploy Vars" \ --variable ENV production --variable REGION eastus --description "Deploy config" # Update a variable group python scripts/variable_groups.py update --project MyProject --id 1 --name "New Name" \ --variable ENV staging # Add/update a single variable (supports --secret for sensitive values) python scripts/variable_groups.py add-variable --project MyProject --id 1 \ --key API_KEY --value "secret123" --secret # Remove a variable python scripts/variable_groups.py remove-variable --project MyProject --id 1 --key OLD_VAR # Delete a variable group python scripts/variable_groups.py delete --project MyProject --id 1 ``` ## Environments & Approvals (scripts/environments.py) ```bash # List environments python scripts/environments.py list --project MyProject # Create an environment python scripts/environments.py create --project MyProject --name "Production" \ --description "Production environment" # Get environment details python scripts/environments.py get --project MyProject --id 1 # List checks/approvals configured on an environment python scripts/environments.py list-checks --project MyProject --id 1 # List pending approvals python scripts/environments.py list-approvals --project MyProject python scripts/environments.py list-approvals --project MyProject --state all # Approve/reject python scripts/environments.py approve --project MyProject --approval-id "guid" \ --comment "Looks good" python scripts/environments.py reject --project MyProject --approval-id "guid" \ --comment "Needs fixes" # Delete an environment python scripts/environments.py delete --project MyProject --id 1 ``` ## Branch Policies (scripts/policies.py) ```bash # List all policies python scripts/policies.py list --project MyProject python scripts/policies.py list --project MyProject --branch main --repo my-repo-id # Get a policy python scripts/policies.py get --project MyProject --id 1 # List available policy types python scripts/policies.py list-types --project MyProject # Create minimum reviewers policy python scripts/policies.py create-min-reviewers --project MyProject \ --repo-id "repo-guid" --branch main --min-reviewers 2 --reset-on-push # Create build validation policy python scripts/policies.py create-build-policy --project MyProject \ --repo-id "repo-guid" --branch main --build-definition-id 10 # Update a policy (enable/disable/blocking) python scripts/policies.py update --project MyProject --id 1 --enabled false python scripts/policies.py update --project MyProject --id 1 --blocking true # List policy evaluations for a PR python scripts/policies.py list-evaluations --project MyProject --pr-id 42 # Delete a policy python scripts/policies.py delete --project MyProject --id 1 ``` ## Work Item Attachments (scripts/attachments.py) ```bash # Upload a file python scripts/attachments.py upload --project MyProject --file ./report.pdf # Attach an uploaded file to a work item python scripts/attachments.py attach --project MyProject --id 123 \ --url "https://dev.azure.com/org/project/_apis/wit/attachments/guid" \ --comment "Test report" # Upload and attach in one step python scripts/attachments.py upload-and-attach --project MyProject --id 123 \ --file ./screenshot.png --comment "Bug screenshot" # List attachments on a work item python scripts/attachments.py list --project MyProject --id 123 # Download an attachment python scripts/attachments.py download --project MyProject \ --url "https://dev.azure.com/org/project/_apis/wit/attachments/guid" \ --output ./downloaded.pdf # Remove an attachment by relation index python scripts/attachments.py remove --project MyProject --id 123 --index 0 ``` ## Common Work Item Fields | Field | Reference Name | |-------|---------------| | Title | `System.Title` | | State | `System.State` | | Assigned To | `System.AssignedTo` | | Description | `System.Description` | | Area Path | `System.AreaPath` | | Iteration Path | `System.IterationPath` | | Priority | `Microsoft.VSTS.Common.Priority` | | Story Points | `Microsoft.VSTS.Scheduling.StoryPoints` | | Tags | `System.Tags` | | Repro Steps | `Microsoft.VSTS.TCM.ReproSteps` | | Acceptance Criteria | `Microsoft.VSTS.Common.AcceptanceCriteria` | ## Link Types | Link Type | Reference Name | |-----------|---------------| | Related | `System.LinkTypes.Related` | | Parent → Child | `System.LinkTypes.Hierarchy-Forward` | | Child → Parent | `System.LinkTypes.Hierarchy-Reverse` | | Predecessor | `System.LinkTypes.Dependency-Forward` | | Successor | `System.LinkTypes.Dependency-Reverse` | ## Token Management Credentials stored securely using the system keyring: - **macOS**: Keychain - **Windows**: Windows Credential Locker - **Linux**: Secret Service API Service name: `azure-devops-skill`skills/elevenlabs/SKILL.mdskillShow content (4262 bytes)
--- name: elevenlabs description: | Convert documents and text to audio using ElevenLabs text-to-speech. Use this skill when the user wants to create a podcast, narrate a document, read aloud text, generate audio from a file, or convert text to speech. license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # ElevenLabs - Text-to-Speech & Podcast Skill ## Overview This skill converts text and documents into high-quality audio using ElevenLabs TTS API. It supports two modes: single-voice narration and two-host conversational podcast generation. ## When to Use This Skill Activate when the user mentions: - "create podcast", "generate podcast", "podcast from document" - "narrate document", "narrate this file", "read aloud" - "text to speech", "TTS", "convert to audio" - "audio from document", "audio version of" ## Setup Config at `skills/elevenlabs/config.json`: ```json { "api_key": "your-elevenlabs-api-key", "default_voice": "JBFqnCBsd6RMkjVDRZzb", "default_model": "eleven_multilingual_v2", "podcast_voice1": "JBFqnCBsd6RMkjVDRZzb", "podcast_voice2": "EXAVITQu4vr4xnSDxMaL" } ``` Only `api_key` is required. Or set `ELEVENLABS_API_KEY` env var. Dependencies: `pip install PyPDF2 python-docx` (only needed for PDF/DOCX files). Requires `ffmpeg` for multi-chunk narration and podcasts. ## Commands ### List Voices ```bash python skills/elevenlabs/scripts/elevenlabs.py voices python skills/elevenlabs/scripts/elevenlabs.py voices --json ``` Use this to find voice IDs for the user. ### Single-Voice TTS ```bash # From text python skills/elevenlabs/scripts/elevenlabs.py tts --text "Hello world" --output ~/Downloads/hello.mp3 # From document python skills/elevenlabs/scripts/elevenlabs.py tts --file /path/to/doc.pdf --output ~/Downloads/narration.mp3 # With specific voice python skills/elevenlabs/scripts/elevenlabs.py tts --file doc.md --voice VOICE_ID --output out.mp3 ``` The script handles text extraction, chunking at sentence boundaries (~4000 chars), TTS per chunk with voice continuity, and ffmpeg concatenation automatically. ### Podcast Generation Podcast mode requires a JSON script file with conversation segments: ```json [ {"speaker": "host1", "text": "Welcome to our podcast! Today we're diving into..."}, {"speaker": "host2", "text": "That's right! I found the section on..."}, {"speaker": "host1", "text": "Let's break that down..."} ] ``` ```bash python skills/elevenlabs/scripts/elevenlabs.py podcast --script /tmp/script.json --voice1 ID1 --voice2 ID2 --output ~/Downloads/podcast.mp3 ``` ## Podcast Workflow (for Claude) When the user asks to create a podcast from a document: 1. **Extract the document text**: ```bash python skills/elevenlabs/scripts/extract.py /path/to/document.pdf ``` 2. **Generate a two-host conversation script** from the extracted text. Follow these guidelines: - Write as a natural, engaging discussion between two hosts - Host 1 typically leads/introduces topics, Host 2 adds analysis and reactions - Start with a brief intro welcoming listeners and stating the topic - End with a summary/outro - Keep each turn under 3000 characters - Vary turn lengths - mix short reactions with longer explanations - Use conversational language: "That's a great point", "What I found interesting was..." - Reference specific details from the source document - Avoid reading the document verbatim - discuss and interpret it 3. **Write the script** as a JSON array to a temp file: ```python # Write to /tmp/podcast_script.json [ {"speaker": "host1", "text": "Welcome to today's episode..."}, {"speaker": "host2", "text": "Thanks for having me..."}, ... ] ``` 4. **Generate the podcast**: ```bash python skills/elevenlabs/scripts/elevenlabs.py podcast --script /tmp/podcast_script.json --output ~/Downloads/podcast.mp3 ``` 5. **Clean up** the temp script file. ## Tips - Run `voices` first to let the user pick voices they like - For podcasts, suggest voice pairs with contrasting qualities (e.g., one deep, one bright) - Default output to `~/Downloads/` unless the user specifies otherwise - For large documents, warn the user about character usage on their ElevenLabs planskills/gmail/SKILL.mdskillShow content (4949 bytes)
--- name: gmail description: | Interact with Gmail - search emails, read messages, send emails, create drafts, and manage labels. Use when user asks to: search email, read email, send email, create email draft, mark as read, archive email, star email, or manage Gmail labels. Lightweight alternative to full Google Workspace MCP server with standalone OAuth authentication. license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # Gmail Lightweight Gmail integration with standalone OAuth authentication. No MCP server required. > **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported. ## First-Time Setup Authenticate with Google (opens browser): ```bash python scripts/auth.py login ``` Check authentication status: ```bash python scripts/auth.py status ``` Logout when needed: ```bash python scripts/auth.py logout ``` ## Commands All operations via `scripts/gmail.py`. Auto-authenticates on first use if not logged in. ### Search Emails ```bash # Search with Gmail query syntax python scripts/gmail.py search "from:someone@example.com is:unread" # Search recent emails (no query returns all) python scripts/gmail.py search --limit 20 # Filter by label python scripts/gmail.py search --label INBOX --limit 10 # Include spam and trash python scripts/gmail.py search "subject:important" --include-spam-trash ``` ### Read Email Content ```bash # Get full message content python scripts/gmail.py get MESSAGE_ID # Get just metadata (headers) python scripts/gmail.py get MESSAGE_ID --format metadata # Get minimal response (IDs only) python scripts/gmail.py get MESSAGE_ID --format minimal ``` ### Send Emails ```bash # Send a simple email python scripts/gmail.py send --to "user@example.com" --subject "Hello" --body "Message body" # Send with CC and BCC python scripts/gmail.py send --to "user@example.com" --cc "cc@example.com" --bcc "bcc@example.com" \ --subject "Team Update" --body "Update message" # Send from an alias (must be configured in Gmail settings) python scripts/gmail.py send --to "user@example.com" --subject "Hello" --body "Message" \ --from "Mile9 Accounts <accounts@mile9.io>" # Send HTML email python scripts/gmail.py send --to "user@example.com" --subject "HTML Email" \ --body "<h1>Hello</h1><p>HTML content</p>" --html ``` ### Draft Management ```bash # Create a draft python scripts/gmail.py create-draft --to "user@example.com" --subject "Draft Subject" \ --body "Draft content" # Send an existing draft python scripts/gmail.py send-draft DRAFT_ID ``` ### Modify Messages (Labels) ```bash # Mark as read (remove UNREAD label) python scripts/gmail.py modify MESSAGE_ID --remove-label UNREAD # Mark as unread python scripts/gmail.py modify MESSAGE_ID --add-label UNREAD # Archive (remove from INBOX) python scripts/gmail.py modify MESSAGE_ID --remove-label INBOX # Star a message python scripts/gmail.py modify MESSAGE_ID --add-label STARRED # Unstar a message python scripts/gmail.py modify MESSAGE_ID --remove-label STARRED # Mark as important python scripts/gmail.py modify MESSAGE_ID --add-label IMPORTANT # Multiple label changes at once python scripts/gmail.py modify MESSAGE_ID --remove-label UNREAD --add-label STARRED ``` ### List Labels ```bash # List all Gmail labels (system and user-created) python scripts/gmail.py list-labels ``` ## Gmail Query Syntax Gmail supports powerful search operators: | Query | Description | |-------|-------------| | `from:user@example.com` | Emails from a specific sender | | `to:user@example.com` | Emails to a specific recipient | | `subject:meeting` | Emails with "meeting" in subject | | `is:unread` | Unread emails | | `is:starred` | Starred emails | | `is:important` | Important emails | | `has:attachment` | Emails with attachments | | `after:2024/01/01` | Emails after a date | | `before:2024/12/31` | Emails before a date | | `newer_than:7d` | Emails from last 7 days | | `older_than:1m` | Emails older than 1 month | | `label:work` | Emails with a specific label | | `in:inbox` | Emails in inbox | | `in:sent` | Sent emails | | `in:trash` | Trashed emails | Combine with AND (space), OR, or - (NOT): ```bash python scripts/gmail.py search "from:boss@company.com is:unread newer_than:1d" python scripts/gmail.py search "subject:urgent OR subject:important" python scripts/gmail.py search "from:newsletter@example.com -is:starred" ``` ## Common Label IDs | Label | ID | |-------|-----| | Inbox | `INBOX` | | Sent | `SENT` | | Drafts | `DRAFT` | | Spam | `SPAM` | | Trash | `TRASH` | | Starred | `STARRED` | | Important | `IMPORTANT` | | Unread | `UNREAD` | ## Token Management Tokens stored securely using the system keyring: - **macOS**: Keychain - **Windows**: Windows Credential Locker - **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.) Service name: `gmail-skill-oauth` Tokens automatically refresh when expired using Google's cloud function.skills/google-calendar/SKILL.mdskillShow content (4647 bytes)
--- name: google-calendar description: | Interact with Google Calendar - list calendars, view events, create/update/delete events, and find free time. Use when user asks to: check calendar, schedule a meeting, create an event, find available time, list upcoming events, delete or update a calendar event, or respond to meeting invitations. Lightweight alternative to full Google Workspace MCP server with standalone OAuth authentication. license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # Google Calendar Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required. > **⚠️ Requires Google Workspace account.** Personal Gmail accounts are not supported. ## First-Time Setup Authenticate with Google (opens browser): ```bash python scripts/auth.py login ``` Check authentication status: ```bash python scripts/auth.py status ``` Logout when needed: ```bash python scripts/auth.py logout ``` ## Commands All operations via `scripts/gcal.py`. Auto-authenticates on first use if not logged in. ### List Calendars ```bash python scripts/gcal.py list-calendars ``` ### List Events ```bash # List events from primary calendar (default: next 30 days) python scripts/gcal.py list-events # List events with specific time range python scripts/gcal.py list-events --time-min 2024-01-15T00:00:00Z --time-max 2024-01-31T23:59:59Z # List events from a specific calendar python scripts/gcal.py list-events --calendar "work@example.com" # Limit results python scripts/gcal.py list-events --max-results 10 ``` ### Get Event Details ```bash python scripts/gcal.py get-event EVENT_ID python scripts/gcal.py get-event EVENT_ID --calendar "work@example.com" ``` ### Create Event ```bash # Basic event python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" # Event with description and location python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --description "Weekly sync" --location "Conference Room A" # Event with attendees python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --attendees user1@example.com user2@example.com # Event on specific calendar python scripts/gcal.py create-event "Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \ --calendar "work@example.com" ``` ### Update Event ```bash # Update event title python scripts/gcal.py update-event EVENT_ID --summary "New Title" # Update event time python scripts/gcal.py update-event EVENT_ID --start "2024-01-15T14:00:00Z" --end "2024-01-15T15:00:00Z" # Update multiple fields python scripts/gcal.py update-event EVENT_ID \ --summary "Updated Meeting" --description "New agenda" --location "Room B" # Update attendees python scripts/gcal.py update-event EVENT_ID --attendees user1@example.com user3@example.com ``` ### Delete Event ```bash python scripts/gcal.py delete-event EVENT_ID python scripts/gcal.py delete-event EVENT_ID --calendar "work@example.com" ``` ### Find Free Time Find the first available slot for a meeting with specified attendees: ```bash # Find 30-minute slot for yourself python scripts/gcal.py find-free-time \ --attendees me \ --time-min "2024-01-15T09:00:00Z" \ --time-max "2024-01-15T17:00:00Z" \ --duration 30 # Find 60-minute slot with multiple attendees python scripts/gcal.py find-free-time \ --attendees me user1@example.com user2@example.com \ --time-min "2024-01-15T09:00:00Z" \ --time-max "2024-01-19T17:00:00Z" \ --duration 60 ``` ### Respond to Event Invitation ```bash # Accept an invitation python scripts/gcal.py respond-to-event EVENT_ID accepted # Decline an invitation python scripts/gcal.py respond-to-event EVENT_ID declined # Mark as tentative python scripts/gcal.py respond-to-event EVENT_ID tentative # Respond without notifying organizer python scripts/gcal.py respond-to-event EVENT_ID accepted --no-notify ``` ## Date/Time Format All times use ISO 8601 format with timezone: - UTC: `2024-01-15T10:30:00Z` - With offset: `2024-01-15T10:30:00-05:00` (EST) ## Calendar ID Format - Primary calendar: Use `primary` or omit the `--calendar` flag - Other calendars: Use the calendar ID from `list-calendars` (usually an email address) ## Token Management Tokens stored securely using the system keyring: - **macOS**: Keychain - **Windows**: Windows Credential Locker - **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.) Service name: `google-calendar-skill-oauth` Tokens are automatically refreshed when expired using Google's cloud function.skills/atlassian/SKILL.mdskillShow content (6334 bytes)
--- name: atlassian description: | Manage Jira issues and Confluence wiki pages in Atlassian Cloud. Use when: (1) searching/creating/updating Jira issues with JQL, (2) searching/reading/creating Confluence pages with CQL, (3) managing Jira workflows, transitions, and comments, (4) browsing Confluence spaces and page hierarchies. Supports OAuth 2.1 via MCP server (recommended) or API token authentication (fallback). --- # Atlassian (Jira + Confluence) Full Jira and Confluence integration with two authentication methods: - **OAuth 2.1** via Atlassian MCP server — browser-based consent, auto-refresh tokens, calls MCP tools - **API token** — email + token stored in keyring, calls REST API directly ## First-Time Setup ### Option 1: OAuth 2.1 via MCP Server (Recommended) No API tokens or instance URLs needed. Uses dynamic client registration and PKCE. ```bash pip install -r requirements.txt python scripts/auth.py login --oauth ``` A browser opens for Atlassian authorization. Select which products (Jira, Confluence, Compass) to grant access. Tokens are stored in the system keyring and auto-refresh when expired. Check status: ```bash python scripts/auth.py status ``` ### Option 2: API Token (Fallback) For environments where browser-based OAuth isn't available. ```bash pip install -r requirements.txt python scripts/auth.py login ``` Follow the prompts to enter your Atlassian URL, email, and API token. Credentials are stored securely in the system keyring. Create an API token at: https://id.atlassian.com/manage-profile/security/api-tokens Check authentication status: ```bash python scripts/auth.py status ``` Logout (clears both OAuth and API token credentials): ```bash python scripts/auth.py logout ``` ## Backend Selection The scripts automatically detect which backend to use based on your auth type: - **OAuth** → MCP backend (calls Atlassian MCP server tools) - **API token** → REST backend (calls Atlassian REST API directly) All commands work identically regardless of backend. ## Jira (scripts/jira.py) ### Search issues with JQL ```bash python scripts/jira.py search "project = DEV AND status = Open" python scripts/jira.py search "assignee = currentUser() ORDER BY updated DESC" --limit 10 ``` ### Get issue details ```bash python scripts/jira.py get DEV-123 ``` ### Create an issue ```bash python scripts/jira.py create --project DEV --summary "Fix login bug" --type Bug python scripts/jira.py create --project DEV --summary "New feature" --type Story \ --description "Details here" --priority High --assignee "user@example.com" --labels "backend,urgent" ``` ### Update an issue ```bash python scripts/jira.py update DEV-123 --summary "Updated summary" --priority High python scripts/jira.py update DEV-123 --assignee "user@example.com" ``` ### Transition issue status ```bash python scripts/jira.py transition DEV-123 "In Progress" python scripts/jira.py transition DEV-123 "Done" ``` ### Add and list comments ```bash python scripts/jira.py comment DEV-123 --add "This is a comment" python scripts/jira.py comment DEV-123 --list ``` ### List projects and statuses ```bash python scripts/jira.py list-projects python scripts/jira.py list-statuses DEV ``` ### Test authentication ```bash python scripts/jira.py auth-info ``` ### List available MCP tools (OAuth only) ```bash python scripts/jira.py list-tools ``` ## Confluence (scripts/confluence.py) ### Search pages ```bash python scripts/confluence.py search "deployment guide" python scripts/confluence.py search "type=page AND space=DEV AND text~\"deployment\"" python scripts/confluence.py search "onboarding" --limit 10 ``` ### Read a page ```bash python scripts/confluence.py read <page-id> python scripts/confluence.py read <page-id> --json ``` ### List spaces ```bash python scripts/confluence.py list-spaces python scripts/confluence.py list-spaces --limit 50 ``` ### Get space details ```bash python scripts/confluence.py get-space <space-id> ``` ### List pages in a space ```bash python scripts/confluence.py list-pages --space-id <space-id> ``` ### Create a page ```bash python scripts/confluence.py create --title "New Page" --space-id <space-id> python scripts/confluence.py create --title "Guide" --space-id <id> --body "<p>Content here</p>" python scripts/confluence.py create --title "Child" --space-id <id> --parent-id <parent-id> ``` ### Update a page ```bash python scripts/confluence.py update <page-id> --title "Updated Title" python scripts/confluence.py update <page-id> --body "<p>New content</p>" ``` ### Get child pages ```bash python scripts/confluence.py get-children <page-id> ``` ### Test authentication ```bash python scripts/confluence.py auth-info ``` ### List available MCP tools (OAuth only) ```bash python scripts/confluence.py list-tools ``` ## Operations Reference ### Jira | Command | Description | Required Args | |---------|-------------|---------------| | search | Search issues with JQL | jql | | get | Get issue details | issue_key | | create | Create new issue | --project, --summary, --type | | update | Update existing issue | issue_key | | transition | Change issue status | issue_key, status | | comment | Add or list comments | issue_key | | list-projects | List accessible projects | - | | list-statuses | List statuses for project | project_key | | auth-info | Test API connection | - | | list-tools | List MCP tools (OAuth only) | - | ### Confluence | Command | Description | Required Args | |---------|-------------|---------------| | search | Search using CQL | query | | read | Get page content | page_id | | list-spaces | List all spaces | - | | get-space | Get space details | space_id | | list-pages | List pages in a space | --space-id | | create | Create new page | --title, --space-id | | update | Update existing page | page_id | | get-children | Get child pages | page_id | | auth-info | Test API connection | - | | list-tools | List MCP tools (OAuth only) | - | ## JSON Output Add `--json` flag to any script command for machine-readable output. ## Token Management Credentials stored securely using the system keyring: - **macOS**: Keychain - **Windows**: Windows Credential Locker - **Linux**: Secret Service API Service name: `atlassian-skill` OAuth tokens auto-refresh when expired (if refresh token is available).skills/deep-research/SKILL.mdskillShow content (2734 bytes)
--- name: deep-research description: "Execute autonomous multi-step research using Google Gemini Deep Research Agent. Use for: market analysis, competitive landscaping, literature reviews, technical research, due diligence. Takes 2-10 minutes but produces detailed, cited reports. Costs $2-5 per task." license: Apache-2.0 metadata: author: sanjay3290 version: "1.0" --- # Gemini Deep Research Skill Run autonomous research tasks that plan, search, read, and synthesize information into comprehensive reports. ## Requirements - Python 3.8+ - httpx: `pip install -r requirements.txt` - GEMINI_API_KEY environment variable ## Setup 1. Get a Gemini API key from [Google AI Studio](https://aistudio.google.com/) 2. Set the environment variable: ```bash export GEMINI_API_KEY=your-api-key-here ``` Or create a `.env` file in the skill directory. ## Usage ### Start a research task ```bash python3 scripts/research.py --query "Research the history of Kubernetes" ``` ### With structured output format ```bash python3 scripts/research.py --query "Compare Python web frameworks" \ --format "1. Executive Summary\n2. Comparison Table\n3. Recommendations" ``` ### Stream progress in real-time ```bash python3 scripts/research.py --query "Analyze EV battery market" --stream ``` ### Start without waiting ```bash python3 scripts/research.py --query "Research topic" --no-wait ``` ### Check status of running research ```bash python3 scripts/research.py --status <interaction_id> ``` ### Wait for completion ```bash python3 scripts/research.py --wait <interaction_id> ``` ### Continue from previous research ```bash python3 scripts/research.py --query "Elaborate on point 2" --continue <interaction_id> ``` ### List recent research ```bash python3 scripts/research.py --list ``` ## Output Formats - **Default**: Human-readable markdown report - **JSON** (`--json`): Structured data for programmatic use - **Raw** (`--raw`): Unprocessed API response ## Cost & Time | Metric | Value | |--------|-------| | Time | 2-10 minutes per task | | Cost | $2-5 per task (varies by complexity) | | Token usage | ~250k-900k input, ~60k-80k output | ## Best Use Cases - Market analysis and competitive landscaping - Technical literature reviews - Due diligence research - Historical research and timelines - Comparative analysis (frameworks, products, technologies) ## Workflow 1. User requests research → Run `--query "..."` 2. Inform user of estimated time (2-10 minutes) 3. Monitor with `--stream` or poll with `--status` 4. Return formatted results 5. Use `--continue` for follow-up questions ## Exit Codes - **0**: Success - **1**: Error (API error, config issue, timeout) - **130**: Cancelled by user (Ctrl+C).claude-plugin/marketplace.jsonmarketplaceShow content (1170 bytes)
{ "name": "ai-skills", "owner": { "name": "Sanjay" }, "metadata": { "description": "Collection of agent skills for AI coding assistants", "version": "1.1.0" }, "plugins": [ { "name": "ai-skills", "description": "Collection of agent skills: PostgreSQL, MySQL, MSSQL, Imagen, Azure DevOps, Atlassian (Jira + Confluence), Google Workspace (Gmail, Calendar, Chat, Docs, Drive, Sheets, Slides), NotebookLM, Jules, Manus, Deep Research, Outline, ElevenLabs, Google TTS.", "source": "./", "skills": [ "./skills/postgres", "./skills/imagen", "./skills/azure-devops", "./skills/deep-research", "./skills/outline", "./skills/jules", "./skills/gmail", "./skills/google-calendar", "./skills/google-chat", "./skills/google-docs", "./skills/google-drive", "./skills/google-sheets", "./skills/google-slides", "./skills/notebooklm", "./skills/manus", "./skills/elevenlabs", "./skills/google-tts", "./skills/mysql", "./skills/mssql", "./skills/atlassian" ] } ] }
README
AI Agent Skills
A collection of portable skills for AI coding assistants. Works with all major AI clients that support the Agent Skills Standard.
Supported AI Clients
| Client | Skills Directory | Documentation |
|---|---|---|
| Claude Code | ~/.claude/skills/ or .claude/skills/ | docs |
| Gemini CLI | ~/.gemini/skills/ or .gemini/skills/ | docs |
| Google Antigravity | ~/.gemini/antigravity/skills/ or .agent/skills/ | docs |
| Cursor | ~/.cursor/skills/ or .cursor/skills/ | docs |
| OpenAI Codex CLI | ~/.codex/skills/ or .codex/skills/ | docs |
| Goose | ~/.config/goose/skills/ or .goose/skills/ | docs |
Available Skills
| Skill | Description |
|---|---|
| postgres | Read-only PostgreSQL queries with defense-in-depth security |
| mysql | Read-only MySQL queries with session-level write protection |
| mssql | Read-only Microsoft SQL Server queries with query validation security |
| imagen | AI image generation using Google Gemini (cross-platform) |
| deep-research | Autonomous multi-step research using Gemini Deep Research Agent |
| outline | Search, read, and manage Outline wiki documents |
| jules | Delegate coding tasks to Google Jules AI agent (async bug fixes, docs, tests, features) |
| manus | Delegate complex tasks to Manus AI agent (deep research, market analysis, reports) |
| notebooklm | Query and manage Google NotebookLM notebooks with persistent profile auth, source sync, batch/multi queries, and structured exports |
| elevenlabs | Text-to-speech narration and two-host podcast generation from documents (PDF, DOCX, MD, TXT) using ElevenLabs API |
| google-tts | Text-to-speech narration and podcast generation using Google Cloud TTS (Neural2, WaveNet, Studio voices, 40+ languages) |
| atlassian | Manage Jira issues and Confluence wiki pages in Atlassian Cloud (OAuth 2.1 via MCP server or API token fallback) |
| azure-devops | Manage Azure DevOps projects, work items, repos, PRs, pipelines, wikis, test plans, security alerts, variable groups, environments/approvals, branch policies, and attachments (99 tools, 13 domains) |
Google Workspace Skills
Lightweight alternatives to the full Google Workspace MCP server. Each skill has standalone OAuth authentication with cross-platform token storage via keyring.
⚠️ Requires Google Workspace account. Personal Gmail accounts are not supported. These skills use the same OAuth infrastructure as the official Google Workspace MCP.
| Skill | Description |
|---|---|
| google-chat | List spaces, send messages, DMs, create spaces |
| google-docs | Create, read, edit Google Docs |
| google-sheets | Read spreadsheets, get ranges, find sheets |
| google-slides | Read presentations, get text and metadata |
| google-drive | Search files, list folders, download files |
| google-calendar | Events, scheduling, free time lookup |
| gmail | Search, read, send emails, manage labels |
Installation
npx skills— The package manager for the open Agent Skills ecosystem. One command to install skills into any AI coding agent.
Install Skills
# Browse all 20 available skills
npx skills add sanjay3290/ai-skills --list
# Install a single skill (auto-detects your agent)
npx skills add sanjay3290/ai-skills --skill postgres
# Install multiple skills at once
npx skills add sanjay3290/ai-skills --skill postgres --skill mysql --skill mssql
# Install all skills
npx skills add sanjay3290/ai-skills --all
Target Specific Agents
Use -a to install into a specific agent's skills directory:
# Install for Claude Code
npx skills add sanjay3290/ai-skills --skill postgres -a claude-code
# Install for multiple agents at once
npx skills add sanjay3290/ai-skills --skill postgres -a claude-code -a gemini-cli -a cursor
# Install all skills into all supported agents
npx skills add sanjay3290/ai-skills --all -a '*'
Global vs Project Install
By default, skills install to the current project directory. Use -g for global (user-level) installation:
# Global install — available in all projects
npx skills add sanjay3290/ai-skills --skill imagen -g
# Project install (default) — scoped to current repo
npx skills add sanjay3290/ai-skills --skill imagen
Supported Agents
The skills CLI supports 40+ agents. Here are the most common:
| Agent | -a Flag | Project Directory | Global Directory |
|---|---|---|---|
| Claude Code | claude-code | .claude/skills/ | ~/.claude/skills/ |
| Gemini CLI | gemini-cli | .gemini/skills/ | ~/.gemini/skills/ |
| Cursor | cursor | .cursor/skills/ | ~/.cursor/skills/ |
| OpenAI Codex | codex | .codex/skills/ | ~/.codex/skills/ |
| Goose | goose | .goose/skills/ | ~/.config/goose/skills/ |
| GitHub Copilot | github-copilot | .github/skills/ | ~/.github/skills/ |
| Google Antigravity | antigravity | .agent/skills/ | ~/.gemini/antigravity/skills/ |
| All agents | '*' | auto-detected | auto-detected |
Managing Skills
# List installed skills
npx skills list
# Check for updates
npx skills check
# Update all skills
npx skills update
# Remove a specific skill
npx skills remove postgres
# Remove all skills from a specific agent
npx skills remove --skill '*' -a cursor
Discover More Skills
# Search the skills.sh directory
npx skills find postgres
# Browse all community skills
npx skills find
Visit skills.sh for the full directory of community skills.
Manual Installation (Alternative)
Clone entire repository
git clone https://github.com/sanjay3290/ai-skills.git ~/.claude/skills/ai-skills
Copy individual skills
cp -r skills/postgres ~/.claude/skills/
Symlink for development
ln -s /path/to/ai-skills/skills/postgres ~/.claude/skills/postgres
Replace ~/.claude/skills/ with the appropriate directory for your agent (see table above).
Skill Setup
Each skill may require additional configuration:
Postgres / MySQL / MSSQL
Create connections.json in the skill directory with your database credentials. See postgres/README.md, mysql/README.md, or mssql/README.md.
# Install drivers for whichever databases you use
pip install psycopg2-binary # PostgreSQL
pip install mysql-connector-python # MySQL
pip install pymssql # MSSQL
Imagen & Deep Research
export GEMINI_API_KEY=your-api-key
Get a free key at Google AI Studio.
Note: Deep Research tasks take 2-10 minutes and cost $2-5 per query.
Outline
export OUTLINE_API_KEY=your-api-key
export OUTLINE_API_URL=https://your-wiki.example.com/api # Optional
Get your API key from your Outline wiki settings.
Jules
# Install CLI (one-time)
npm install -g @google/jules
# Authenticate (opens browser)
jules login
Connect your GitHub repos at jules.google.com. Jules works asynchronously - create a task, it runs in the background, then pull results when complete.
Manus
export MANUS_API_KEY=your-api-key
Get your API key from manus.im settings. Manus excels at deep research, market analysis, product comparisons, and generating comprehensive reports with visualizations.
ElevenLabs
pip install -r skills/elevenlabs/requirements.txt # Only needed for PDF/DOCX
Create skills/elevenlabs/config.json (see config.example.json) or set ELEVENLABS_API_KEY env var. Requires ffmpeg for multi-chunk narration and podcasts.
Get your API key at elevenlabs.io.
Google TTS
export GOOGLE_TTS_API_KEY=your-api-key
pip install PyPDF2 python-docx # Only needed for PDF/DOCX files
Enable the Cloud Text-to-Speech API and create an API key in your GCP project. Requires ffmpeg for multi-chunk documents and podcasts.
NotebookLM
pip install -r skills/notebooklm/requirements.txt
python -m playwright install chromium
Use python skills/notebooklm/scripts/auth_manager.py setup for one-time login.
Atlassian (Jira + Confluence)
pip install -r skills/atlassian/requirements.txt
# Option A: OAuth via MCP Server (Recommended)
python skills/atlassian/scripts/auth.py login --oauth
# Option B: API Token
python skills/atlassian/scripts/auth.py login
Azure DevOps
pip install keyring
# Option A: OAuth (Recommended)
python skills/azure-devops/scripts/auth.py login --org MyOrganization
# Option B: PAT
python skills/azure-devops/scripts/auth.py login --org MyOrganization --pat YOUR_PAT
Google Workspace Skills
Each Google Workspace skill requires the keyring library and first-time authentication:
# Install dependency (one-time)
pip install keyring
# Authenticate for the skill you need (opens browser)
python ~/.claude/skills/ai-skills/skills/google-chat/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/google-docs/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/google-sheets/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/google-slides/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/google-drive/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/google-calendar/scripts/auth.py login
python ~/.claude/skills/ai-skills/skills/gmail/scripts/auth.py login
Tokens stored securely via system keyring:
- macOS: Keychain
- Windows: Windows Credential Locker
- Linux: Secret Service API (GNOME Keyring, KDE Wallet, etc.)
Usage
Once installed, skills activate automatically based on your requests. Just ask naturally:
Postgres / MySQL / MSSQL
- "Query my production database for active users"
- "Show me the schema of the orders table"
- "How many signups last week?"
- "List tables in the MySQL staging database"
- "Show me the top 10 orders from SQL Server"
Imagen
- "Generate an image of a sunset over mountains"
- "Create an app icon for my weather app"
- "I need a hero image for my landing page"
Deep Research
- "Research the competitive landscape of EV batteries"
- "Compare React, Vue, and Angular frameworks"
- "What are the latest developments in Kubernetes?"
Outline
- "Search the wiki for deployment guide"
- "Read the onboarding documentation"
- "Create a new wiki page for the API spec"
Jules
- "Have Jules fix the authentication bug in src/auth.js"
- "Delegate adding unit tests to Jules"
- "Ask Jules to add documentation to the API module"
- "Check my Jules sessions" / "Pull the results from Jules"
Manus
- "Use Manus to research the best 4K monitors for Mac"
- "Have Manus analyze AAPL stock with technical indicators"
- "Delegate market research on EV charging to Manus"
- "Ask Manus to compare AWS vs GCP vs Azure pricing"
ElevenLabs
- "Narrate this PDF as audio"
- "Create a podcast from this document"
- "Convert this markdown file to speech"
- "List available ElevenLabs voices"
Google TTS
- "Narrate this document using Google TTS"
- "Create a podcast from this analysis"
- "Convert this markdown to audio"
- "List available Google TTS voices"
NotebookLM
- "Query this NotebookLM URL and summarize key points"
- "Add this NotebookLM link to library with topics"
- "Ask follow-up questions against my active notebook"
Atlassian (Jira + Confluence)
- "Search Jira for open bugs in the DEV project"
- "Create a Jira task to fix the login bug"
- "Transition JDP-255 to Done"
- "Search Confluence for the deployment guide"
- "Read the SonarQube proposal page"
Azure DevOps
- "List my Azure DevOps projects"
- "Create a bug work item in the Sandbox project"
- "Show open pull requests in the main repo"
- "Run the CI pipeline on the develop branch"
- "List pending deployment approvals"
Google Workspace
- "List my Google Chat spaces" / "Send a message to Project Alpha"
- "Create a new Google Doc about the project proposal"
- "Get the content of my Q4 Budget spreadsheet"
- "What's on my calendar tomorrow?"
- "Search my Gmail for invoices from last month"
- "Find files named 'report' in my Drive"
Skill Structure
All skills follow the Agent Skills Standard:
skill-name/
├── SKILL.md # Required: Instructions for the AI agent
├── README.md # Human documentation
├── requirements.txt # Dependencies (if any)
├── .env.example # Environment variable template
└── scripts/ # Executable scripts
└── main.py
The SKILL.md file uses YAML frontmatter:
---
name: skill-name
description: "When to use this skill"
---
# Instructions for the AI agent
Contributing
- Fork this repository
- Create a new skill in
skills/your-skill-name/ - Include
SKILL.mdwith proper frontmatter - Add documentation in
README.md - Submit a pull request
Credits
- Google Workspace Skills - Based on the official Google Workspace MCP server by the Gemini CLI team. Uses their OAuth cloud function for authentication.
License
Apache-2.0