testing-cicd-init について
JavaScriptおよびTypeScriptプロジェクトにVitestのテスト環境とGitHub ActionsのCI/CDを設定するスキルです。プロジェクト種別を判定してテストファイル、スクリプト、カバレッジ基準、ワークフローを構成し、変更には明示的な承認を求めます。
主な機能
- 01プロジェクト種別の判定
- 02Vitest設定とテスト初期化ファイル
- 03GitHub Actions CIワークフロー
- 04カバレッジ基準の設定
- 05パッケージスクリプトと依存関係の追加
活用シーン
- 01テストカバレッジのないプロジェクトへのテスト追加
- 02GitHub Actions CI/CDの初期設定
- 03Next.jsまたはNestJSのVitestカバレッジ設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ shipshitdev/ skills --skill testing-cicd-initインストール後、Claude Code で/testing-cicd-initを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
plugin.jsontemplates/ci-nestjs.ymlci-nextjs.ymltest-setup-node.tstest-setup-react.tsvitest.config.nestjs.tsvitest.config.nextjs.ts詳細
テストと CI/CD の初期設定
許可された範囲
ユーザーの依頼と既存の承認の範囲内でのみ作業してください。このスキルを読み込んでも、新たな権限は付与されません。報告のみを求められた場合は報告のみにとどめ、依頼者が指定した対象、ホスト、プロバイダー、コストの制限を守り、範囲を拡大する前に確認し、これらの制限を委任先にも伝えてください。
契約
入力:
- プロジェクトのルートディレクトリ(デフォルトは現在の作業ディレクトリ)。
package.jsonと設定ファイルからプロジェクトの種類を自動検出します。明示的に指定することもできます(nextjs、nestjs、react、node)。
出力:
- 検出された環境向けに設定された
vitest.config.ts。 - テストセットアップファイル(Next.js/React の場合は
src/test/setup.ts、NestJS の場合はtest/setup.ts)。 - Bun ベースのパイプラインとカバレッジの適用を含む
.github/workflows/ci.yml。 - 更新された
package.jsonのスクリプト(test、test:coverage、typecheck)。
作成/変更するファイル:
vitest.config.ts(作成)。- テストセットアップファイル(作成)。
.github/workflows/ci.yml(作成または更新)。package.jsonの scripts セクション(更新)。
外部への副作用:
- Vitest と関連するテストパッケージをインストールするため、
bun add -Dを実行します。
確認が必要な場合:
- ユーザーがこの設定を明示的に依頼した場合、またはこの設定を含む計画を承認した場合にのみ、セットアップを適用してください。このスキルの呼び出しだけでは、書き込み権限は付与されません。
- 既存のテスト設定を上書きする場合や、承認されたセットアップの範囲外の依存関係を追加する場合は、事前に確認してください。
委任先:
- pre-commit カバレッジゲートを追加する場合は
husky-test-coverageスキル(任意、自動では呼び出されません)。 - E2E レイヤーを追加する場合は
playwright-e2e-init(任意、自動では呼び出されません)。
使用する場面
次のような場合にこのスキルを使用してください。
- テストカバレッジのないプロジェクトにテストを追加する
- GitHub Actions の CI/CD を初めて設定する
- カバレッジしきい値を設定して Vitest を構成する
- 新しいプロジェクトのテスト基盤を初期設定する
実行内容
- プロジェクトの種類を検出します(Next.js、NestJS、React、Node.js)。
- 適切な設定で Vitest の設定を追加します。
- 環境に合わせた テストセットアップファイルを作成します。
- CI/CD 用の GitHub Actions ワークフローを追加します。
- カバレッジしきい値を 80% に設定します。
- package.json に テスト用スクリプトを追加します。
- 必要な依存関係をインストールします。
プロジェクトの種類の検出
次の情報をスキャンしてプロジェクトの種類を検出します。
package.jsonの依存関係(next、@nestjs/core、react など)- 設定ファイル(next.config.*、nest-cli.json など)
- ディレクトリ構成(app/、src/、pages/ など)
クイックスタート
プロンプトの例:
Add testing and CI/CD to this project
または、より具体的に指定します。
Set up Vitest with 80% coverage and GitHub Actions for this Next.js project
プロジェクトの種類別の設定
Next.js プロジェクト
インストールされる依存関係:
bun add -D vitest @vitest/coverage-v8 @vitejs/plugin-react @testing-library/react @testing-library/jest-dom jsdom
作成されるファイル:
vitest.config.ts- jsdom 環境を使用する Vitestsrc/test/setup.ts- RTL マッチャーを含むテストセットアップ.github/workflows/ci.yml- CI パイプライン
テストパターン: **/*.{test,spec}.{ts,tsx}
NestJS プロジェクト
インストールされる依存関係:
bun add -D vitest @vitest/coverage-v8 unplugin-swc @swc/core supertest @types/supertest
作成されるファイル:
vitest.config.ts- node 環境とunplugin-swc(デコレーターのメタデータ)を使用する Vitesttest/setup.ts- NestJS 用のテストセットアップ.github/workflows/ci.yml- Postgres サービスと Prisma マイグレーションを含む CI
テストパターン: src/**/*.spec.ts
React/Node.js プロジェクト
検出されたフレームワークに応じて、同様のパターンを使用します。
カバレッジの設定
デフォルトのしきい値(変更可能):
- 行:80%
- 関数:80%
- 分岐:75%
- ステートメント:80%
カバレッジは次の場所で適用されます。
- pre-commit フック(Husky 経由)
- CI/CD パイプライン(GitHub Actions)
GitHub Actions の機能
生成される CI ワークフローには、次の内容が含まれます。
- キャッシュを使用した Bun のセットアップ
- 依存関係のインストール
- Lint/フォーマットチェック(Biome)
- TypeScript の型チェック
- カバレッジ付きのテスト実行
- ビルドの検証
- Postgres サービスと Prisma マイグレーション(NestJS プロジェクトの場合)
テンプレート
テンプレートは templates/ ディレクトリにあります。
| テンプレート | 用途 |
|---|---|
vitest.config.nextjs.ts | Next.js 用の Vitest 設定 |
vitest.config.nestjs.ts | NestJS 用の Vitest 設定 |
ci-nextjs.yml | Next.js 用の GitHub Actions |
ci-nestjs.yml | NestJS 用の GitHub Actions |
test-setup-react.ts | RTL を使ったテストセットアップ |
test-setup-node.ts | Node.js 用のテストセットアップ |
モノレポのサポート
モノレポ(package.json のワークスペースから検出されます)の場合:
- ルートに
vitest.workspace.tsを作成します - パッケージごとに個別の
vitest.config.tsを作成します - ルートレベルの GitHub Actions ワークフローを作成します
- オーケストレーションに
bun --filter '*' testを使用します
他のスキルとの連携
| スキル | 連携内容 |
|---|---|
husky-test-coverage | コミット前のカバレッジ適用を追加します |
linter-formatter-init | コード品質の向上に併用できます |
playwright-e2e-init | 単体テストの後に E2E テストを追加します |
testing-expert | テストパターンのガイダンスを提供します |
使用例
Next.js プロジェクトにテストを追加する
User: Add testing to this project
Agent:
1. Detects Next.js from package.json
2. Installs vitest, @vitest/coverage-v8, @testing-library/react
3. Creates vitest.config.ts with jsdom environment
4. Creates src/test/setup.ts
5. Creates .github/workflows/ci.yml
6. Adds test scripts to package.json
NestJS API にテストを追加する
User: Set up tests for this NestJS API
Agent:
1. Detects NestJS from @nestjs/core dependency
2. Installs vitest, @vitest/coverage-v8, unplugin-swc, supertest
3. Creates vitest.config.ts with node environment
4. Creates test/setup.ts
5. Creates .github/workflows/ci.yml with a Postgres service
6. Adds test scripts to package.json
トラブルシューティング
テストでモジュールが見つからない
vitest.config.ts のパスエイリアスが tsconfig.json と一致していることを確認してください。
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
カバレッジがしきい値を下回る
- カバレッジレポートを確認します:
bunx vitest run --coverage - カバーされていない行を特定します
- テストを追加するか、しきい値を一時的に調整します
CI で型エラーが発生する
プッシュする前に、ローカルで bunx tsc --noEmit が通ることを確認してください。
ベストプラクティス
- ユーティリティとサービスの単体テストから始めます
- API エンドポイントに統合テストを追加します
- 重要なフローにはE2E テストを控えめに使用します
- Husky を通じてコミット前にテストを実行します
- CI でカバレッジの推移を監視します