Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:05:19 +08:00
commit 09fec2555b
96 changed files with 24269 additions and 0 deletions

189
skills/GCLOUD.md Normal file
View File

@@ -0,0 +1,189 @@
REF---
name: GCLOUD
description: Google Cloud credentials setup and management for Google Drive/Gmail integration
keywords: google, gcloud, credentials, oauth, drive, gmail, api
location: /Users/wz/.claude/plugins/marketplaces/warren-claude-code-plugin-marketplace/claude-context-orchestrator/skills/GCLOUD.md
---
# Google Cloud Credentials Setup
## How Credentials Were Located
### Discovery Process
1. **User mentioned Gmail MCP was already configured**
- Checked Claude Desktop config at `/Users/wz/.claude.json`
- Found Gmail MCP server configuration:
```json
"@gongrzhe/server-gmail-autoauth-mcp": {
"env": {
"GMAIL_OAUTH_PATH": "/Users/wz/Desktop/OAuth2/gcp-oauth.keys.json",
"GMAIL_CREDENTIALS_PATH": "/Users/wz/.gmail-mcp/credentials.json"
}
}
```
2. **Located OAuth Credentials**
- Path: `/Users/wz/Desktop/OAuth2/gcp-oauth.keys.json`
- Size: 412 bytes
- Created: Sep 24 16:12
- Contains: OAuth 2.0 client credentials from Google Cloud Console
3. **Located Stored Token**
- Path: `/Users/wz/.gmail-mcp/credentials.json`
- Size: 552 bytes
- Created: Sep 26 03:44
- Contains: Authenticated user token (access + refresh tokens)
## File Locations
```bash
# OAuth Client Credentials (from Google Cloud Console)
/Users/wz/Desktop/OAuth2/gcp-oauth.keys.json
# Authenticated User Token (after OAuth flow)
/Users/wz/.gmail-mcp/credentials.json
# Token for Drive API (auto-created by gdrive_sync.py)
/tmp/token.pickle
```
## Using Credentials for Google Drive
### Setup Script
```python
# /tmp/gdrive_sync.py uses these credentials
# 1. Looks for credentials.json (OAuth client config)
CREDENTIALS_FILE = '/tmp/credentials.json' # Copy of gcp-oauth.keys.json
# 2. Creates/uses token.pickle (authenticated session)
TOKEN_FILE = 'token.pickle' # Created after first auth
```
### Integration Steps
1. **Copy OAuth credentials to working directory:**
```bash
cp /Users/wz/Desktop/OAuth2/gcp-oauth.keys.json /tmp/credentials.json
```
2. **First-time authentication (creates token.pickle):**
```bash
cd /tmp
python3 gdrive_sync.py /path/to/file.md
# Opens browser → Login to Google → Grant permissions
# Creates token.pickle for future use
```
3. **Subsequent uses (automatic):**
```bash
python3 gdrive_sync.py /path/to/file.md
# Uses existing token.pickle, no browser needed
```
## API Scopes
### Gmail MCP Scopes
```
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.compose
```
### Drive API Scopes (used by gdrive_sync.py)
```
https://www.googleapis.com/auth/drive.file
```
**Note:** Different scopes = Different tokens needed
- Gmail token: `/Users/wz/.gmail-mcp/credentials.json`
- Drive token: `/tmp/token.pickle`
## Quick Commands
### Sync file to Google Drive
```bash
python3 /tmp/gdrive_sync.py /path/to/file.md
```
### List files in Google Drive
```bash
python3 /tmp/gdrive_sync.py list
```
### Via Flask Server (from browser)
```javascript
// Click "📤 Sync to Drive" button in editor
// Calls: POST http://localhost:8765/sync-gdrive
```
## Troubleshooting
### "credentials.json not found"
```bash
cp /Users/wz/Desktop/OAuth2/gcp-oauth.keys.json /tmp/credentials.json
```
### "Token expired"
```bash
rm /tmp/token.pickle
python3 /tmp/gdrive_sync.py /path/to/file.md
# Re-authenticates via browser
```
### "Insufficient permissions"
```bash
# Token might have wrong scopes
rm /tmp/token.pickle
# Re-auth will request correct scopes
```
## Architecture
```
User edits in Browser
Flask Server (/tmp/skill-server.py)
Saves to local file (/tmp/skills/SKILL.md)
Calls gdrive_sync.py
Uses OAuth credentials (gcp-oauth.keys.json)
Google Drive API
Uploads to Google Drive (Skills folder)
```
## Files Created
```
/tmp/
├── credentials.json # OAuth client config (copied)
├── token.pickle # Authenticated session
├── gdrive_sync.py # Sync script
├── skill-server.py # Flask server with /sync-gdrive endpoint
└── skill-editor-server.html # Editor with "Sync to Drive" button
```
## Success Confirmation
When working correctly, you'll see:
```
✓ Folder 'Skills' created: <folder_id>
✓ Uploaded: SKILL.md (ID: <file_id>)
```
Check Google Drive: https://drive.google.com/drive/my-drive
- Should see "Skills" folder
- Should see uploaded .md files
## References
- OAuth credentials location: `/Users/wz/Desktop/OAuth2/gcp-oauth.keys.json`
- Gmail MCP config: `/Users/wz/.claude.json` (line 1539)
- Google Drive API docs: https://developers.google.com/drive/api/v3/about-sdk
- Official Python client: https://github.com/googleapis/google-api-python-client