node-ci について
node-ciは、リポジトリの情報を基にNode.jsのGitHub Actions CIを作成するスキルです。バージョンに沿ったチェック、失敗を確実に検出する必須チェック、ワークフローの安全性監査を行うメンテナー向けです。
主な機能
- 01enginesからNode.jsマトリックスを生成
- 02ロックファイルに応じたパッケージキャッシュ
- 03失敗を確実に検出する集約チェック
- 04マージキューイベントへの対応
- 05ワークフロー権限とアクションの固定監査
活用シーン
- 01package.jsonに沿ったCIマトリックスの作成
- 02スキップされたジョブを必須チェックで検出
- 03GitHubマージキュー向けワークフローの準備
- 04既存ワークフローの安全設定の監査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ paldom/ node-skills --skill node-ciインストール後、Claude Code で/node-ciを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/ci-playbook.mdscripts/check_workflows.py詳細
node-ci
リポジトリから導出され、フェイルクローズで、設計上サプライチェーンがクリーンな CI を作成します。このスキルが解決する問題:モデルが engines と一致しない(または EOL の)Node バージョンをハードコードする、ジョブがスキップされても成功するアグリゲーターチェックを書く、corepack がすでに同梱されていないランナーで corepack enable を使う、ピン留めされていないアクションとデフォルトで広すぎる権限を含むワークフローを生成する、といった問題です。
使用しない場合
- リリース/公開ワークフロー →
node-release。 - チェックの内容(lint ルール、テスト設定) →
node-lint/node-testing/node-typescript。このスキルはそれらをワークフローに組み込みます。 - Dependabot/依存関係ポリシー →
node-supply-chain(ただし、このスキルが生成するすべてのワークフローは、そのピン留め/権限ルールに準拠します)。
ワークフロー
- ハードコードせず、導出する:
package.json#enginesとサポート中の Node 系列との共通部分からマトリックスを作成します(nodejs.org のリリーススケジュールで現在の LTS/EOL を確認してください。表はreferences/ci-playbook.mdでバージョン管理されています)。 任意で、次期 Current 系列を失敗を許容する設定として追加できます。 - ロックファイルからパッケージマネージャーを判定する:setup-node のキャッシュは適切なロックファイルをキーにします。pnpm は専用のセットアップアクションを使います。現在のランナーでは corepack に依存しないでください(新しい Node 系列には同梱されていません。プレイブックで確認済みです)。
- 構成:lint / typecheck / test ジョブの後に、唯一の必須チェックとなるフェイルクローズのアグリゲーターを置きます。
if: always()と、failure、cancelled、およびskippedで失敗する明示的な結果判定を使います(正確な YAML はプレイブックに記載されています。単純なneedsチェーンではスキップ時に成功します)。 - マージキュー:必須チェックの対象となるすべてのワークフローで、
pull_requestとともにmerge_groupを宣言してください。宣言しないとキューが気付かれないまま停止します。 - 設計上の衛生管理:トップレベルの
permissions: contents: readを設定し、権限の昇格はジョブ単位に限定します。サードパーティアクションはバージョンコメント付きで SHA にピン留めし、公式のactions/*はメジャータグと Dependabot を使います。キャンセル可能なconcurrencyとtimeout-minutesをすべての箇所に設定します。 - 速度改善は計測して行う:まず実行時間を確認し、その後、ロックファイルをキーにしたキャッシュ、マトリックスの削減、スイートの分割を行います。速度のためにゲートを黙って削除してはいけません。
- 検証:
次にプッシュし、意図的に失敗させた実行レッグでアグリゲーターが赤になることを確認します(フェイルクローズを一度実証します)。python3 "${CLAUDE_SKILL_DIR}/scripts/check_workflows.py"
出力仕様
スキーマ検証とチェッカースクリプトに合格するワークフロー、engines に基づいて文書化されたマトリックス、失敗/キャンセル/スキップされた実行レッグで失敗することを実証済みの単一の必須アグリゲーターチェック、キューが有効な場合の merge_group、ピン留めされていないサードパーティアクションがないこと、デフォルトで広すぎる権限がないこと。
注意点
- 必須チェック名はファイル名ではなく、報告されるチェック(ジョブの
name:)と一致させてください。名前を変更すると、ブランチルールが気付かれないまま機能しなくなります。 - パスフィルターでスキップされたマトリックスの実行レッグでも、単純なアグリゲーターは成功扱いにします。プレイブックの結果判定がその対策です。
mainへのプッシュでcancel-in-progress: trueを設定すると、デプロイに関連する実行がキャンセルされる場合があります。concurrency グループの対象となる ref は慎重に設定してください。- LTS の表とセットアップアクションのメジャーバージョンは、バージョンに応じて管理してください。作成時に再確認してください。
ファイル
references/ci-playbook.md—enginesから導出するマトリックス、キャッシュ/pnpm のセットアップ、フェイルクローズのアグリゲーター YAML、merge_group、モノレポのフィルタリング、リモートキャッシュ。scripts/check_workflows.py— ワークフローの静的監査(ピン留めされていないサードパーティアクション、権限の不足、EOL の Node バージョン、アグリゲーター/merge_group の有無)。違反がある場合はゼロ以外の終了コードを返します。
コメント
Markdown 対応