github-oauth
GitHub OAuth認証の仕様。認証フロー、トークン管理、セッション永続化に関する情報。
Works with
Agent Skills format with YAML frontmatter. Claude Code reads it as-is.
---
name: "github-oauth"
description: "GitHub OAuth認証の仕様。認証フロー、トークン管理、セッション永続化に関する情報。"
license: "MIT"
---
# GitHub OAuth
## OAuth App vs GitHub App
| 項目 | OAuth App (このプロジェクト) | GitHub App |
|------|------------------------------|------------|
| トークン有効期限 | **無期限** | 8時間 |
| リフレッシュトークン | なし | あり |
| 無効化条件 | ユーザー取り消し/App削除/revoke API | 期限切れ/取り消し |
## 認証フロー
```
1. ユーザー → GitHub認証ページにリダイレクト
2. GitHub → コールバックURLに `?code=xxx` 付きでリダイレクト
3. `code` をアクセストークンに交換(exchange_code_for_token)
4. セッションをFirestoreに保存、session_idをCookieに設定(7日間有効)
5. 次回アクセス時: Cookieからsession_id取得 → Firestoreからセッション復元
```
## セッション永続化
| 保存先 | 内容 | 有効期限 |
|--------|------|----------|
| Cookie | session_id (UUID) | 7日間 |
| Firestore `sessions` | user_id, access_token, user_data, last_accessed_at | 7日間(last_accessed_at基準) |
### Cookie取得のretry
CookieManagerは非同期で動作するため、初回呼び出しでNoneが返る可能性あり。
`get_session_cookie()`で最大3回retryし、取得できなければ未ログインとして扱う。
## Key Files
| File | Purpose |
|------|---------|
| `services/auth.py` | OAuth認証、トークン交換、セッション復元・永続化 |
| `services/session.py` | Firestore/Cookieセッション管理 |
## トークン無効化条件
- ユーザーがGitHub設定からアプリのアクセスを取り消し
- OAuth App自体が削除された
- `DELETE /applications/{client_id}/token` で明示的に無効化
- **7日間アクセスなし** → Firestoreセッション削除More General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

