mcpField
P
pnpm-upgrade

pnpm-upgrade

github.com/openai開発4.0k144 回インストール1 週間前に更新
リポジトリ

pnpm-upgrade について

pnpm-upgradeは、pnpmツールチェーンとCIの固定参照を更新するリポジトリ向けスキルです。リリースと整合性の確認を含め、事前検査、設定変更、検証を案内します。

主な機能

  1. 01pnpmのリリースと整合性の解決
  2. 02action-setupをコミットSHAに固定
  3. 03CIのインストール経路を事前検査
  4. 04packageManagerとワークフローの更新
  5. 05ツールチェーンと差分の検証

活用シーン

  1. 01リポジトリ内のpnpm更新
  2. 02pnpm/action-setupのワークフロー参照更新
  3. 03アップグレード前のブートストラップ経路確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openai/openai-agents-js --skill pnpm-upgrade

インストール後、Claude Code で/pnpm-upgradeを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yamlscripts/preflight.mjs

詳細

pnpm のアップグレード

以下の手順に従い、無差別な検索と置換を行わずに pnpm と CI の固定バージョンを更新します。

手順(リポジトリのルートから実行)

  1. 対象の pnpm リリースを特定する

    • ローカルのツールチェーンを変更する前に、npm レジストリに問い合わせます:PNPM_VERSION=$(curl -fsSL https://registry.npmjs.org/pnpm/latest | jq -r .version)。
    • バージョンが取得できない場合は中止します。
    • パッケージの正確なインテグリティを特定します:curl -fsSL "https://registry.npmjs.org/pnpm/${PNPM_VERSION}" | jq -r .dist.integrity。
    • 結果を PNPM_INTEGRITY に保存します。
    • インテグリティが取得できない場合、または sha512- で始まらない場合は中止します。
    • sha512- の後に続く Base64 ダイジェストを小文字の 16 進数に変換します。例:
      printf '%s' "${PNPM_INTEGRITY#sha512-}" | base64 -d | xxd -p -c 256
      
    • 結果を PNPM_SHA512_HEX に保存します。
  2. 対象の pnpm/action-setup リリースを特定する

    • GitHub API に問い合わせます:curl -fsSL https://api.github.com/repos/pnpm/action-setup/releases/latest | jq -r .tag_name。
    • 利用できる場合は、より高いレート制限を得るために GITHUB_TOKEN/GH_TOKEN を使用します。
    • ACTION_TAG として保存します(例:v4.2.0)。取得できない場合は中止します。
  3. アクションのタグを不変のコミット SHA に解決する

    • git ls-remote https://github.com/pnpm/action-setup "refs/tags/${ACTION_TAG}^{}" を実行し、SHA を ACTION_SHA として取得します。
    • 参照先のタグが見つからない場合は、git ls-remote https://github.com/pnpm/action-setup "refs/tags/${ACTION_TAG}" にフォールバックします。
    • ACTION_SHA が空の場合は中止します。
  4. リリースと CI のインストール経路を事前検証する

    • node .agents/skills/pnpm-upgrade/scripts/preflight.mjs --version "${PNPM_VERSION}" --action-ref "${ACTION_SHA}" を実行します。
    • このスクリプトはまず、dependencies または devDependencies が空でない公開済み pnpm マニフェストを拒否します。pnpm はランタイム依存関係をバンドルしているため、これらのフィールドは [email protected] のような公開物の不備を示します。
    • 次に、一時ディレクトリを分けて pnpm/action-setup の両方のインストール経路を再現します。pnpm-lock.json から通常の pnpm ブートストラップを、exe-lock.json からスタンドアロンの @pnpm/exe ブートストラップをインストールし、分離された PNPM_HOME ディレクトリを設定して、それぞれのブートストラップを PNPM_VERSION にセルフアップデートします。
    • 失敗した場合はアップグレードを中止します。ローカルに直接インストールしてこのチェックを回避しないでください。この事前検証は、CI でのみ使用されるブートストラップ経路を実行するためのものです。
  5. pnpm をローカルで更新する

    • pnpm self-update "${PNPM_VERSION}" を実行します。
    • pnpm が見つからない場合、または現在のインストール自体を更新できないことだけが原因でセルフアップデートに失敗した場合は、corepack prepare "pnpm@${PNPM_VERSION}" --activate を実行します。事前検証の失敗を回避するために、このフォールバックを使用しないでください。
    • pnpm -v が PNPM_VERSION と完全に一致することを確認します。
  6. package.json を更新する

    • package.json を開き、packageManager を pnpm@${PNPM_VERSION}+sha512.${PNPM_SHA512_HEX} に設定します(末尾の改行と書式は維持してください)。
  7. ワークフローを慎重に更新する(広範な正規表現は使わない)

    • 対象ファイル:pnpm/action-setup を使用している .github/workflows/ 以下のすべてのファイル。
    • 各ファイルを手作業で編集します。
      • uses: pnpm/action-setup@${ACTION_SHA} に設定します。
      • with: version: フィールドがある場合は、${PNPM_VERSION} に設定します(引用符のスタイルとインデントは維持してください)。
    • 無関係なステップには手を加えないでください。複数行の sed/perl ワンライナーは避けてください。
  8. 検証する

    • pnpm -v を実行し、packageManager のバージョン部分と一致することを確認します。
    • packageManager に正確な +sha512.${PNPM_SHA512_HEX} のサフィックスが保持されていることを確認します。
    • git diff を実行し、意図したワークフローと package.json の変更のみであることを確認します。
  9. 仕上げ

    • ランタイムコード/ビルド/テストの設定を変更した場合(通常は該当しません)は、$code-change-verification を実行します。それ以外の場合は、簡易チェックで十分です。
    • chore: upgrade pnpm toolchain というメッセージでコミットし、PR を作成します(自動化によって実行される場合があります)。

注意事項

  • 必要なツール:curl、jq、base64、xxd、node、npm、pnpm/corepack。見つからない場合はインストールしてください。
  • 編集は最小限に抑え、読みやすさを保ってください。グローバルな置換より、対象ファイルを明示して編集する方法を優先してください。
  • GitHub Actions はタグではなく、コミット SHA に固定する必要があります。固定するコミット SHA を調べるためにのみ、最新のリリースタグを使用してください。
  • GitHub API のレート制限に達した場合は、トークンを使って再試行するか、タグを推測せずに中止してください。

コメント