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", "リリースが作れない"。

ソース情報

リポジトリ
runceel/SkimDownForWindows
ソースの最終更新活動
2026年5月25日 04:21
検出された SKILL.md の言語
日本語
スター
6
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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) — 全タスク横断の高レベル指針
GitHubで見る