원클릭으로
google-auth
Google API (Sheets, Drive, Apps Script, Chat, Calendar 等) の OAuth2 認証ヘルパ。単一トークンファイルで複数 API のスコープを一元管理し、CLI / Python ライブラリ両方として使える。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Google API (Sheets, Drive, Apps Script, Chat, Calendar 等) の OAuth2 認証ヘルパ。単一トークンファイルで複数 API のスコープを一元管理し、CLI / Python ライブラリ両方として使える。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
修正を複数ブランチに適用する際のブランチ戦略。featureブランチへの先行commitとcherry-pickによる短命branchへの適用手順。環境別branch(qa/staging/epsilon等)への修正適用時に参照する。
DeepWiki (Devin MCP) のドキュメント内容を対象リポジトリの Markdown ファイルとして転載する。セクション構成維持・番号付きファイル分割・GFM 準拠補正・日本語翻訳 (オプション) まで自動処理。
PRのレビューコメントを確認し、優先度に応じてコード修正を実行する。サブエージェント (general-purpose) 起動にも対応。--defer-nit / --severity-min で対応範囲を制御。
実装プランファイル作成・更新の手順。実装開始時およびPR作成時にissues/配下の実装プランの有無を確認し、なければ会話履歴・git log・git diffから生成する。複数ファイル変更・新規機能追加・DBマイグレーション伴う変更が対象。
調査レポート作成のルール。否定的結論のエビデンス要件、残課題の記載フォーマット、ハルシネーション防止のための裏取り原則を扱う。DB調査に限らずコードベース調査・仕様調査一般に適用。
ログを追加・修正する際のガイドライン。ログレベルの選択基準、ループ内ログの制御、エラー蓄積パターン、機密情報の扱いを扱う。言語/FW非依存の原則。
| name | google-auth |
| description | Google API (Sheets, Drive, Apps Script, Chat, Calendar 等) の OAuth2 認証ヘルパ。単一トークンファイルで複数 API のスコープを一元管理し、CLI / Python ライブラリ両方として使える。 |
| when_to_use | Google API の OAuth2 認証が必要なときに自動参照。Triggers: 'Google認証', 'OAuth', 'google_token', 'spreadsheets', 'Google API', 'client_secret' |
| allowed-tools | ["Read","Bash(python *)","Bash(uv *)"] |
Google API を使う操作 (スプレッドシート読み書き、GAS 実行、Drive アップロード、Chat メッセージ取得 等) で
認証が必要な場合に参照する。${CLAUDE_SKILL_DIR}/scripts/google_auth.py が CLI と Python ライブラリの両方として使える。
| 機能 | 概要 |
|---|---|
| 単一トークン管理 | ~/.config/gcloud/google_token.json (永続) に全スコープを保存 |
| 自動スコープマージ | --scopes drive.file 等で追加した分を既存スコープと自動マージして再認証 |
| 自動リフレッシュ | 期限切れは refresh_token で透過更新 |
| 手動 copy-paste フロー | --manual でローカルサーバ不要 (ポート競合・コンテナ環境で有用) |
--show / --clear | トークン情報の表示・削除 |
| Python ライブラリ | from google_auth import get_credentials で他スキルから import 可能 |
client_secret.json の準備 (初回のみ):
client_secret.json として配置:
${CLAUDE_SKILL_DIR}/client_secret.json (推奨、skill ローカル)GOOGLE_CLIENT_SECRET で示すパス.gitignore に追加し、絶対にコミットしないこと依存パッケージのインストール (skill ローカルの pyproject.toml を使う):
uv pip install -r ${CLAUDE_SKILL_DIR}/pyproject.toml
# もしくは: uv run --project ${CLAUDE_SKILL_DIR} python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py ...
認証はインタラクティブなブラウザ操作が必要なので、ユーザに ! プレフィックスで実行を案内する。
エージェントが Bash で直接呼び出すとサーバ待ちでハングする。
# デフォルト (ローカルサーバ port 9123、スコープ spreadsheets.readonly)
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py
# スコープ指定 (ショートハンド)
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py spreadsheets drive
# スコープ指定 (フル URL)
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py https://www.googleapis.com/auth/script.projects
# 手動 copy-paste フロー (ローカルサーバ不要、ポート競合・コンテナ環境で確実)
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --manual drive.file
# client_secret.json のパスを明示
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --client-secret /path/to/client_secret.json drive
# トークン情報を表示 (現在保存されているスコープ等)
python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --show
# トークン削除 (再認証用)
python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --clear
| ショートハンド | フル URL |
|---|---|
spreadsheets / spreadsheets.readonly | https://www.googleapis.com/auth/spreadsheets[.readonly] |
drive / drive.readonly / drive.file | `https://www.googleapis.com/auth/drive[.readonly |
script.projects / script.external_request | https://www.googleapis.com/auth/script.* |
chat.messages / chat.messages.readonly / chat.spaces.readonly | https://www.googleapis.com/auth/chat.* |
calendar / calendar.readonly | https://www.googleapis.com/auth/calendar[.readonly] |
未定義のショートハンドは https://www.googleapis.com/auth/<arg> として展開される。フル URL も直接渡せる。
--port で変更可) でローカルサーバを起動~/.config/gcloud/google_token.json に保存--manual: 手動 copy-paste 方式~/.config/gcloud/google_token.json に保存ポートが空いていないコンテナ・サーバでも確実に動く。
他のスキルやスクリプトから import:
import sys
sys.path.insert(0, '${CLAUDE_SKILL_DIR}/scripts') # 実際は実行時に解決
from google_auth import get_credentials
# 既存トークン (有効) があればそのまま、期限切れなら自動リフレッシュ
creds = get_credentials()
# 追加スコープが必要な場合のみ指定 (既存スコープと自動マージして再認証)
creds = get_credentials(['drive.file'])
# Bash 環境で確実に動かしたい場合
creds = get_credentials(['drive.file'], manual=True)
引数:
| 引数 | デフォルト | 説明 |
|---|---|---|
scopes | None (= spreadsheets.readonly) | 追加スコープのリスト |
port | 9123 | ローカルサーバのポート (manual=True 時は無視) |
manual | False | True で手動 copy-paste フロー |
client_secret | env GOOGLE_CLIENT_SECRET または ${CLAUDE_SKILL_DIR}/client_secret.json または CWD | client_secret.json のパス |
token_file | env GOOGLE_TOKEN_FILE または ~/.config/gcloud/google_token.json | トークン保存先 |
~/.config/gcloud/google_token.json (コンテナ再起動でも残る)--scopes で追加するたびに既存スコープと merge して再認証refresh_token を使って透過更新スコープ不足の場合は --clear してから必要なスコープ付きで再認証:
python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --clear
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py drive.file spreadsheets
サービスアカウントにはユーザのファイルへのアクセス権がない。本スキルは ユーザの OAuth 認証 を使う前提。
GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されていると干渉するので、明示的にクリア:
GOOGLE_APPLICATION_CREDENTIALS="" python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py drive
ポート 9123 が使用中の場合:
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --port 9124 drive
# または手動フロー (ポート不要)
! python ${CLAUDE_SKILL_DIR}/scripts/google_auth.py --manual drive
gcloud CLI の OAuth 認証はインタラクティブ入力の制約で多くのエージェント環境では動作しない。
本スキルの google_auth.py を使うこと。