Curated Claude Code catalog
Updated 07.05.2026 · 19:39 CET
01 / Skill
sanjay3290

ai-skills

Quality
9.0

This repository offers a diverse collection of portable skills designed for AI coding assistants, compatible with the Agent Skills Standard and major AI clients like Claude Code, Gemini CLI, and Cursor. It provides tools for database interaction, image generation, deep research, and integration with various platforms like Atlassian, Azure DevOps, and Google Workspace. It's ideal for developers looking to extend their AI agent's capabilities across multiple domains.

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.mdskill
    Show 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.mdskill
    Show 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.mdskill
    Show 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 plan
    
  • skills/gmail/SKILL.mdskill
    Show 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.mdskill
    Show 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.mdskill
    Show 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.mdskill
    Show 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.jsonmarketplace
    Show 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

Ask DeepWiki

A collection of portable skills for AI coding assistants. Works with all major AI clients that support the Agent Skills Standard.

Supported AI Clients

Claude Code Gemini CLI Google Antigravity Cursor OpenAI Codex Goose

ClientSkills DirectoryDocumentation
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

SkillDescription
postgresRead-only PostgreSQL queries with defense-in-depth security
mysqlRead-only MySQL queries with session-level write protection
mssqlRead-only Microsoft SQL Server queries with query validation security
imagenAI image generation using Google Gemini (cross-platform)
deep-researchAutonomous multi-step research using Gemini Deep Research Agent
outlineSearch, read, and manage Outline wiki documents
julesDelegate coding tasks to Google Jules AI agent (async bug fixes, docs, tests, features)
manusDelegate complex tasks to Manus AI agent (deep research, market analysis, reports)
notebooklmQuery and manage Google NotebookLM notebooks with persistent profile auth, source sync, batch/multi queries, and structured exports
elevenlabsText-to-speech narration and two-host podcast generation from documents (PDF, DOCX, MD, TXT) using ElevenLabs API
google-ttsText-to-speech narration and podcast generation using Google Cloud TTS (Neural2, WaveNet, Studio voices, 40+ languages)
atlassianManage Jira issues and Confluence wiki pages in Atlassian Cloud (OAuth 2.1 via MCP server or API token fallback)
azure-devopsManage 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.

SkillDescription
google-chatList spaces, send messages, DMs, create spaces
google-docsCreate, read, edit Google Docs
google-sheetsRead spreadsheets, get ranges, find sheets
google-slidesRead presentations, get text and metadata
google-driveSearch files, list folders, download files
google-calendarEvents, scheduling, free time lookup
gmailSearch, 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 FlagProject DirectoryGlobal Directory
Claude Codeclaude-code.claude/skills/~/.claude/skills/
Gemini CLIgemini-cli.gemini/skills/~/.gemini/skills/
Cursorcursor.cursor/skills/~/.cursor/skills/
OpenAI Codexcodex.codex/skills/~/.codex/skills/
Goosegoose.goose/skills/~/.config/goose/skills/
GitHub Copilotgithub-copilot.github/skills/~/.github/skills/
Google Antigravityantigravity.agent/skills/~/.gemini/antigravity/skills/
All agents'*'auto-detectedauto-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

  1. Fork this repository
  2. Create a new skill in skills/your-skill-name/
  3. Include SKILL.md with proper frontmatter
  4. Add documentation in README.md
  5. 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