int-test-skill
`@repo/shared`パッケージのVitest統合テスト設計・実装・検証を支援するスキル。 Mockプロバイダーを使ったサービス層の契約テストが主な用途。 インターフェース契約の変更時に既存Mockとの互換性を保証し、不変条件を網羅する。 Anchors: • Contract Testing / 適用: インターフェース契約検証 / 目的: Mock→実装の互換性保証 • Vitest / 適用: テスト実行環境 / 目的: `pnpm --filter @repo/shared test:run` Trigger: 「統合テスト作成」「integration test」「MockClient」「テスト追加」「契約テスト」 「テストケース追加」「Late Chunking テスト」「IEmbeddingClient テスト」等が発動条件。
Best use case
int-test-skill is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
`@repo/shared`パッケージのVitest統合テスト設計・実装・検証を支援するスキル。 Mockプロバイダーを使ったサービス層の契約テストが主な用途。 インターフェース契約の変更時に既存Mockとの互換性を保証し、不変条件を網羅する。 Anchors: • Contract Testing / 適用: インターフェース契約検証 / 目的: Mock→実装の互換性保証 • Vitest / 適用: テスト実行環境 / 目的: `pnpm --filter @repo/shared test:run` Trigger: 「統合テスト作成」「integration test」「MockClient」「テスト追加」「契約テスト」 「テストケース追加」「Late Chunking テスト」「IEmbeddingClient テスト」等が発動条件。
Teams using int-test-skill should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/int-test-skill/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How int-test-skill Compares
| Feature / Agent | int-test-skill | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
`@repo/shared`パッケージのVitest統合テスト設計・実装・検証を支援するスキル。 Mockプロバイダーを使ったサービス層の契約テストが主な用途。 インターフェース契約の変更時に既存Mockとの互換性を保証し、不変条件を網羅する。 Anchors: • Contract Testing / 適用: インターフェース契約検証 / 目的: Mock→実装の互換性保証 • Vitest / 適用: テスト実行環境 / 目的: `pnpm --filter @repo/shared test:run` Trigger: 「統合テスト作成」「integration test」「MockClient」「テスト追加」「契約テスト」 「テストケース追加」「Late Chunking テスト」「IEmbeddingClient テスト」等が発動条件。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Int Test Skill ## 概要 `@repo/shared`パッケージにおけるVitest統合テストの設計・実装・検証を支援するスキル。 MockClientを使ったサービス層の契約テストを中心に、インターフェース不変条件の検証から実行確認まで一貫して支援する。 ## ワークフロー ### Phase 1: テスト対象のインターフェース契約を確認 **目的**: 何をテストするかを明確化し、テストすべき契約・不変条件を洗い出す。 **アクション**: 1. `interfaces.ts` / `types.ts` などのインターフェース定義を `Read` で読み込む 2. オプショナルメソッド(例: `getTokenEmbeddings?()`)の有無と型シグネチャを確認する 3. 既存の統合テスト(`__tests__/*.integration.test.ts`)を読んで現状のカバレッジを把握する 4. 検証すべき契約・不変条件をリストアップする(例: `tokens.length === embeddings.length`) ### Phase 2: MockClientを実装(または既存を活用) **目的**: 決定論的なテストを可能にするMockを用意する。 **アクション**: 1. 既存Mockファイル(`__tests__/mocks.ts`)を `Read` で確認する 2. テスト対象のインターフェースを満たすMockクラスを設計する 3. 副作用なく結果が一定になるよう、ダミーデータを決定論的に生成する - 例: `tokens = text.split(/\s+/)`, `embeddings[i] = [(i+1)*0.1, ...]` 4. オプショナルメソッドを実装したMockと未実装のMockを分けて用意し、分岐をテストできるようにする 5. Mockを `providers/mock-*.ts` など適切な場所に配置する ### Phase 3: サービス層への入力→出力の検証テストを作成 **目的**: MockClient + Serviceの統合テストで実際の処理フローを検証する。 **アクション**: 1. テストファイル(`*.integration.test.ts`)に新しい `describe` ブロックを追加する 2. `beforeEach` でMockとServiceを初期化する 3. Arrange → Act → Assert の3ステップで各テストケースを記述する 4. `vi.fn()` で呼び出し確認が必要なメソッドをスパイする 5. 正常系(機能が動作する)と異常系(エラーが伝播する)の両方を作成する ### Phase 4: 不変条件とエラーケースを追加 **目的**: バグが混入したときに即座に検出できる保護テストを追加する。 **アクション**: 1. 長さ一致などの不変条件をテストする(例: `tokens.length === embeddings.length`) 2. 長さ不一致のときにサービスが `ChunkingError` などの適切なエラーをスローすることを検証する 3. Mockが存在しない場合のフォールバック動作をテストする 4. `vi.fn()` の `toHaveBeenCalledOnce()` / `not.toHaveBeenCalled()` でメソッド呼び出し経路を検証する ### Phase 5: テストを実行して確認 **目的**: 作成したテストが実際にパスすることを確認する。 **アクション**: 1. `pnpm --filter @repo/shared test:run` を `Bash` で実行する 2. 失敗したテストのエラーメッセージを確認し、実装かテストの問題かを特定する 3. 全テストがパスしたら `scripts/log_usage.js` でフィードバックを記録する ## ベストプラクティス ### すべきこと - `tokens.length === embeddings.length` のような不変条件は必ずテストする - MockはインターフェースをすべてTypescript型で満たすよう実装する - オプショナルメソッドの有無で分岐するパスを両方テストする(with/without `getTokenEmbeddings`) - `vi.fn()` によるスパイで「どのメソッドが呼ばれたか」を検証する - 決定論的なダミーデータ(インデックスベースのベクトルなど)を使う ### 避けるべきこと - Mockに状態を持たせて副作用が起きるテストを書く(他のテストに影響する) - 非同期処理で `await` を忘れてタイムアウトを引き起こす - Mock実装が実際のインターフェース型と乖離する(TypeScriptの型エラーを黙って無視しない) - テストのセットアップを `beforeEach` 外で共有してテスト間の干渉を生む - 実装ファイルを変更せずにテストだけを変更して契約を迂回する ## リソース参照 ### references/ - **実行パターン集**: See [references/patterns.md](references/patterns.md) ### scripts/ - `scripts/log_usage.js`: フィードバック記録 ## 変更履歴 | Version | Date | Changes | |---------|------------|----------------------------------------------------------| | 1.1.0 | 2026-04-21 | TASK-EMB-LATE-CHUNKING-TOKEN-PROVIDER-001の知見を元に完成 | | 1.0.0 | 2026-04-16 | 初版作成 |
Related Skills
test-skill
E2Eテスト用のスキル
malformed-skill
This YAML has a syntax error
another-skill
別のテスト用スキル
fixture-partial-skill
テスト用部分構成スキル
fixture-orchestration-skill
テスト用オーケストレーションスキル
missing-fields-skill
No description provided.
fixture-minimal-skill
テスト用最小構成スキル
fixture-invalid-skill
This is invalid: because of unquoted colon
fixture-invalid-schema-skill
Skill with invalid JSON schema for testing
Invalid_Name_With_Uppercase
Skill with invalid non-kebab-case name
fixture-forbidden-files-skill
Skill with forbidden files for testing
fixture-empty-agents-skill
Skill with empty agents directory for testing