plugins/google-workspace-cli/skills/drive/SKILL.md
Use this skill when the user asks about Google Drive operations like listing files, uploading, downloading, searching, sharing, or managing files and folders via the Google Workspace CLI.
npx skillsauth add nsheaps/ai-mktpl driveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use gws drive to manage files and folders in Google Drive from the command line.
# List files in My Drive root
gws drive files list
# List with pagination
gws drive files list --params '{"pageSize": 25}'
# List files in a specific folder
gws drive files list --params '{"q": "'\''<folder-id>'\'' in parents"}'
# List only specific file types
gws drive files list --params '{"q": "mimeType='\''application/vnd.google-apps.spreadsheet'\''"}'
# Search by name
gws drive files list --params '{"q": "name contains '\''report'\''"}'
# Search by type and name
gws drive files list --params '{"q": "mimeType='\''application/vnd.google-apps.document'\'' and name contains '\''Q1'\''"}'
# Search recently modified files
gws drive files list --params '{"q": "modifiedTime > '\''2026-03-01T00:00:00'\''", "orderBy": "modifiedTime desc"}'
# Download a file
gws drive files get <file-id> --download --output ./local-file.pdf
# Export a Google Doc as PDF
gws drive files export <file-id> --mime-type "application/pdf" --output ./document.pdf
# Export a Google Sheet as CSV
gws drive files export <file-id> --mime-type "text/csv" --output ./data.csv
# Upload a file
gws drive files create --upload ./report.pdf --name "Q1 Report"
# Upload to a specific folder
gws drive files create --upload ./report.pdf --name "Q1 Report" --parents "<folder-id>"
# Create a folder
gws drive files create --name "Project Files" --mime-type "application/vnd.google-apps.folder"
# Create a Google Doc
gws drive files create --name "Meeting Notes" --mime-type "application/vnd.google-apps.document"
# Create a Google Sheet
gws drive files create --name "Budget" --mime-type "application/vnd.google-apps.spreadsheet"
# Share with a user (editor)
gws drive permissions create <file-id> \
--type user --role writer --email "[email protected]"
# Share with a user (viewer)
gws drive permissions create <file-id> \
--type user --role reader --email "[email protected]"
# Share with anyone who has the link
gws drive permissions create <file-id> \
--type anyone --role reader
# List permissions
gws drive permissions list <file-id>
# Remove a permission
gws drive permissions delete <file-id> <permission-id>
# Rename a file
gws drive files update <file-id> --name "New Name"
# Move a file to a different folder
gws drive files update <file-id> --add-parents "<new-folder-id>" --remove-parents "<old-folder-id>"
# Move to trash
gws drive files trash <file-id>
# Permanently delete
gws drive files delete <file-id>
# Empty trash
gws drive trash empty
| Type | MIME Type |
| ------------ | ------------------------------------------ |
| Folder | application/vnd.google-apps.folder |
| Document | application/vnd.google-apps.document |
| Spreadsheet | application/vnd.google-apps.spreadsheet |
| Presentation | application/vnd.google-apps.presentation |
| Form | application/vnd.google-apps.form |
gws drive files list --format json | jq '.[].name'
tools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su