Skip to main content

gh-cli-skimdown

gh CLI を使う時 (PR 作成 / Release 作成 / リポジトリ API 呼び出し) の認証・権限ハンドリング。Copilot CLI のデフォルトトークン (kaota_microsoft) は runceel/SkimDownForWindows に対して read-only で、PR / Release 作成が失敗する。runceel アカウントへの switch 手順、GH_TOKEN 優先順位、misleading なエラーメッセージの読み方をまとめる。トリガー語の例 - "PR を作る", "gh pr create が 403", "gh release create が 404", "workflow scope が必要", "Enterprise Managed User", "アカウント切替", "gh auth switch", "アカウントが READ-only", "リリースが作れない"。

Informations de source

Dépôt
runceel/SkimDownForWindows
Dernière activité de la source
25 mai 2026 à 04:21
Langue détectée de SKILL.md
japonais
Étoiles
6
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
gh-cli-skimdown
description
gh CLI を使う時 (PR 作成 / Release 作成 / リポジトリ API 呼び出し) の認証・権限ハンドリング。Copilot CLI のデフォルトトークン (kaota_microsoft) は runceel/SkimDownForWindows に対して read-only で、PR / Release 作成が失敗する。runceel アカウントへの switch 手順、GH_TOKEN 優先順位、misleading なエラーメッセージの読み方をまとめる。トリガー語の例 - "PR を作る", "gh pr create が 403", "gh release create が 404", "workflow scope が必要", "Enterprise Managed User", "アカウント切替", "gh auth switch", "アカウントが READ-only", "リリースが作れない"。
# gh CLI authentication for SkimDown for Windows ## どんな時に使うか - `gh pr create` で 403 / Forbidden が出た時 - `gh release create` で 404 / `"workflow" scope may be required` が出た時 - `gh api` でリポジトリの labels / projects / settings を変更したい時 - Copilot CLI から `gh` 経由で書き込み操作を実行したい時 ## 背景 (なぜこの skill が必要か) このリポジトリは個人アカウント `runceel/SkimDownForWindows` 配下にある。 Copilot CLI のワークスペースは別アカウント (例: `kaota_microsoft`) 経由で起動されており、そのアカウントの OAuth トークンは `runceel/SkimDownForWindows` に対して **`pull: true` / `push: false`** な READ-only 権限しか持たない。 ブランチの **push 操作** は Copilot Workspaces のサービスプリンシパル経由で別ルートで通る (= `git push` は成功する) が、**PR / Release / Issue / リポジトリ設定変更** などの GitHub REST/GraphQL API を経由する操作は失敗する。 ```powershell # 現在のトークンの実効権限を確認するワンライナー gh api /repos/runceel/SkimDownForWindows --jq '.permissions' # => { "admin": false, "maintain": false, "pull": true, "push": false, "triage": false } ``` ## 認証アカウント一覧 `gh auth status` で以下の 3 エントリが見えるはず: | アカウント | 由来 | 主用途 | 書き込み | |---|---|---|---| | `kaota_microsoft` (GH_TOKEN) | Copilot CLI が環境変数で active 化 | 読み取り / ブランチ push (Workspaces 別ルート) | ❌ | | `kaota_microsoft` (keyring) | 既存ログイン (バックアップ) | 読み取り | ❌ | | `runceel` (keyring) | リポジトリ所有者ログイン | **PR / Release / Issue / settings 変更** | ✅ | ## アカウント切替手順 `GH_TOKEN` 環境変数は **`gh auth switch` よりも常に優先される**。`gh auth switch` だけでは effective なアカウントを変えられないため、環境変数を一旦外す必要がある。 ```powershell # 1) 環境変数を現在のシェルから外す Remove-Item Env:\GH_TOKEN -ErrorAction SilentlyContinue # 2) keyring の runceel に切替 gh auth switch -u runceel # 3) 書き込み操作を実行 gh pr create --repo runceel/SkimDownForWindows --base main --head <branch> --title "..." --body-file <path> # または gh release create v<X.Y.Z> --draft --prerelease --target <branch> --notes-file <path> <asset> <asset> # 4) 新しい powershell セッションでは GH_TOKEN が自動再注入されるので戻し作業は基本不要 # 同じシェルで戻す場合のみ: gh auth switch -u kaota_microsoft ``` > **注意**: `Remove-Item Env:\GH_TOKEN` を使うこと。`$env:GH_TOKEN = $null` では「空文字列で存在する」状態になり、`gh` から「設定されている」と扱われてしまうので無効。 ## エラーメッセージの読み方 `gh` のエラー文言は本当の原因を覆い隠していることが多い。次の対応表で読み替える。 | エラー文言 | 実際の原因 | 対処 | |---|---|---| | `Failed to create release, "workflow" scope may be required.` | repo write 権限が無い (misleading) | `runceel` に switch (上記手順) | | `403 Forbidden: As an Enterprise Managed User, you cannot access this content` | EMU アカウントから個人リポジトリへの API アクセス | `runceel` に switch | | `404 Not Found` on `/repos/<owner>/<repo>/releases` | repo write 権限が無いと GitHub は 404 を返すことがある | `gh api /repos/<owner>/<repo> --jq '.permissions'` で `push` を確認 → switch | | `HTTP 401 Bad credentials` | トークンが失効 / 取り消し | `gh auth refresh -h github.com` | ## やってはいけないこと 1. **`gh auth refresh -s workflow` の指示に従って `kaota_microsoft` に scope を追加する** - スコープではなく **permission** の問題。やっても解決しない (同じ 403/404 が出続ける) 2. **`runceel` を active のまま `git push` を続ける** - Copilot Workspaces 想定の `kaota_microsoft` push ルートと混ざり、ブランチ所有者やマシン認証情報が一致しなくなる場合がある。書き込み API を叩いたら `gh auth switch` で戻すか、シェルを閉じる 3. **`runceel` アカウントを keyring から削除する** - 次回も切替不可になる。default の `kaota_microsoft` (GH_TOKEN) のまま放置で OK 4. **`$env:GH_TOKEN = $null` で環境変数を外そうとする** - PowerShell の仕様で「空文字列のまま存在する」扱いとなり、`gh` は環境変数が設定されていると判断する。必ず `Remove-Item Env:\GH_TOKEN -ErrorAction SilentlyContinue` を使う 5. **`gh pr create` の `--repo` 引数を省略する** - Copilot ワークツリーは fork ではなく upstream を直接 clone しているが、リモート URL や push 先の解釈に依存して `gh` が誤った repo を選ぶことがある。常に `--repo runceel/SkimDownForWindows` を明示 ## 典型ワークフロー ### PR 作成 ```powershell Remove-Item Env:\GH_TOKEN -ErrorAction SilentlyContinue gh auth switch -u runceel gh pr create ` --repo runceel/SkimDownForWindows ` --base main ` --head <feature-branch> ` --title "<conventional commit subject>" ` --body-file <path-to-body.md> ``` ### Release 作成 (sideload 配布) ```powershell Remove-Item Env:\GH_TOKEN -ErrorAction SilentlyContinue gh auth switch -u runceel gh release create v<X.Y.Z> ` --draft ` --prerelease ` --target <branch-or-sha> ` --title "SkimDown for Windows v<X.Y.Z>" ` --notes-file <path-to-release-notes.md> ` .\bin\StorePackage\45014okazuki.SkimDown_<ver>_sideload.msixbundle ` .\bin\StorePackage\devcert.cer ``` ### Issue 作成 / コメント / ラベル変更 書き込み操作なら全部同じパターン。`Remove-Item Env:\GH_TOKEN` → `gh auth switch -u runceel` → 操作。 ## 関連 - [`release/SKILL.md`](../release/SKILL.md) — リリース手順 (本 skill の `gh release create` 部分を含む) - [`copilot-instructions.md` "よくある落とし穴"](../../copilot-instructions.md) — 全タスク横断の高レベル指針
Voir sur GitHub