Google drive
Interact with Google Drive - search files, find folders, list contents, download files, upload files, create folders, move, copy, rename, and trash files. Use when user asks to: search Google Drive, find a file/folder, list Drive contents, download or upload files, create folders, move files, or organize Drive content. Lightweight integration with standalone OAuth authentication supporting full read/write access.From its SKILL.md
npx -y skills add sanjay3290/ai-skills --skill google-driveAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- runs commandsInstructs the agent to run 8 commands, including `python scripts/auth.py login` and 7 more.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.9 KB, 810 tokens by cl100k_base, as published. Nobody here has run it
Google Drive
Lightweight Google Drive integration with standalone OAuth authentication. No MCP server required. Full read/write access.
Requires Google Workspace account. Personal Gmail accounts are not supported.
First-Time Setup
Authenticate with Google (opens browser):
python scripts/auth.py login
Check authentication status:
python scripts/auth.py status
Logout when needed:
python scripts/auth.py logout
Read Commands
All operations via scripts/drive.py. Auto-authenticates on first use if not logged in.
# Search for files (full-text search)
python scripts/drive.py search "quarterly report"
# Search by title only
python scripts/drive.py search "title:budget"
# Search using Google Drive URL (extracts ID automatically)
python scripts/drive.py search "https://drive.google.com/drive/folders/1ABC123..."
# Search files shared with you
python scripts/drive.py search --shared-with-me
# Search with pagination
python scripts/drive.py search "report" --limit 5 --page-token "..."
# Find a folder by exact name
python scripts/drive.py find-folder "Project Documents"
# List files in root Drive
python scripts/drive.py list
# List files in a specific folder
python scripts/drive.py list 1ABC123xyz --limit 20
# Download a file
python scripts/drive.py download 1ABC123xyz ./downloads/report.pdf
Write Commands
# Upload a file to Drive root
python scripts/drive.py upload ~/Documents/report.pdf
# Upload to a specific folder
python scripts/drive.py upload ~/Documents/report.pdf --folder 1ABC123xyz
# Upload with a custom name
python scripts/drive.py upload ~/Documents/report.pdf --name "Q4 Report.pdf"
# Create a new folder
python scripts/drive.py create-folder "Project Documents"
# Create a folder inside another folder
python scripts/drive.py create-folder "Attachments" --parent 1ABC123xyz
# Move a file to a different folder
python scripts/drive.py move FILE_ID DESTINATION_FOLDER_ID
# Copy a file
python scripts/drive.py copy FILE_ID
python scripts/drive.py copy FILE_ID --name "Report Copy" --folder 1ABC123xyz
# Rename a file or folder
python scripts/drive.py rename FILE_ID "New Name.pdf"
# Move a file to trash
python scripts/drive.py trash FILE_ID
Search Query Formats
The search command supports multiple query formats:
| Format | Example | Description |
|---|---|---|
| Full-text | "quarterly report" | Searches file contents and names |
| Title | "title:budget" | Searches file names only |
| URL | https://drive.google.com/... | Extracts and uses file/folder ID |
| Folder ID | 1ABC123... | Lists folder contents (25+ char IDs) |
| Native query | mimeType='application/pdf' | Pass-through Drive query syntax |
File ID Format
Google Drive uses long IDs like 1ABC123xyz_-abc123. Get IDs from:
searchresultsfind-folderresultslistresults- Google Drive URLs
Download Limitations
- Regular files (PDFs, images, etc.) download directly
- Google Docs/Sheets/Slides cannot be downloaded via this tool
- For Google Workspace files, use export or dedicated tools
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-drive-skill-oauth
Automatically refreshes expired tokens using Google's cloud function.
What ships with it: 5 files
35.3 KB alongside SKILL.md, 2 of them executable
scripts/
- auth.pyruns12.4 KB
- drive.pyruns19.6 KB
- requirements.txt16 B
- README.md3.3 KB
- requirements.txt16 B
Gives 0 of the 12 instructions most auth identity skills give in 810 tokens
Counted across 408 of the 432 authors here whose files we hold, read 2026-09-06
- Use parameterized queries for all SQL and database access to prevent SQL injectionin 60 of 408, across 40 files
- Hash passwords with bcrypt or Argon2idin 50 of 408, across 34 files
- Store secrets in Vault or environment variablesin 37 of 408, across 17 files
- Add security headers to all responsesin 28 of 408, across 14 files
- Rate limit public endpoints per clientin 22 of 408, across 8 files
- Store tokens in httpOnly cookiesin 21 of 408, across 16 files
- Use HTTPS in productionin 17 of 408, across 4 files
- Apply rate limiting to all API endpointsin 17 of 408, across 9 files
- Validate all input with Bean Validationin 16 of 408, across 3 files
- Enable JWT or OIDC for stateless authenticationin 15 of 408, across 2 files
- Scan dependencies for CVEsin 15 of 408, across 2 files
- Log audit records for sensitive operationsin 15 of 408, across 2 files
Said here and by no other author read
- Run all Drive operations via scripts/drive.py
- Run scripts/auth.py login to authenticate
- Check authentication status with scripts/auth.py status
- Use the title: prefix for title-only search
- Pass Drive URLs directly to search
- Use --shared-with-me for files shared with you
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.