test-scaffolding
ソースコードを解析し、プログラミング言語に合ったテストファイルの雛形を自動生成することで、テストコード作成の効率化と品質向上を支援するSkill。
📜 元の英語説明(参考)
Generate test file scaffolds from source analysis with language-appropriate templates.
🇯🇵 日本人クリエイター向け解説
ソースコードを解析し、プログラミング言語に合ったテストファイルの雛形を自動生成することで、テストコード作成の効率化と品質向上を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o test-scaffolding.zip https://jpskill.com/download/18058.zip && unzip -o test-scaffolding.zip && rm test-scaffolding.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18058.zip -OutFile "$d\test-scaffolding.zip"; Expand-Archive "$d\test-scaffolding.zip" -DestinationPath $d -Force; ri "$d\test-scaffolding.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
test-scaffolding.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
test-scaffoldingフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
テストスキャフォールディング Skill
ソースファイル用のテストファイルのスキャフォールドを生成し、TDDワークフローを可能にします。スキャフォールドには、レーン実行中にテストエンジニアエージェントが埋める TODO スタブが含まれています。
変数
| 変数 | デフォルト | 説明 |
|---|---|---|
| SOURCE_FILES | [] | テストのスキャフォールドを作成するソースファイルのリスト |
| TEST_FRAMEWORK | auto | 使用するフレームワーク (マニフェストから自動検出) |
| OUTPUT_DIR | tests/ | 生成されたテストファイルの配置場所 |
| NAMING_CONVENTION | language-default | テストファイルの命名パターン |
| INCLUDE_FIXTURES | true | フィクスチャスタブを生成するかどうか |
| STUB_STYLE | todo | todo (TODO コメント) または skip (スキップマーカー) |
ワークフロー (必須)
- スタックの検出: パッケージマニフェスト (
pyproject.toml,package.json,go.mod,Cargo.toml) を読み込みます。 - フレームワークの識別: テスト依存関係 (pytest, vitest, jest, testing, cargo test) を照合します。
- ソースの分析: 各ソースファイルからパブリック関数、クラス、メソッドを抽出します。
- テストへのマッピング: 命名規則を適用して、テストファイルのパスを決定します。
- スキャフォールドの生成: 言語テンプレートを使用し、テスト可能なユニットごとに TODO スタブを挿入します。
- マニフェストの返却: 生成されたファイル、スキップされたファイル、およびユニット数を含む JSON を返します。
サポートされているフレームワーク
| 言語 | フレームワーク | 検出 |
|---|---|---|
| Python | pytest, unittest | pyproject.toml → [tool.pytest] または deps に pytest が存在 |
| TypeScript | vitest, jest | package.json → devDeps に vitest または jest が存在 |
| JavaScript | vitest, jest | package.json → devDeps に vitest または jest が存在 |
| Go | testing | go.mod → 組み込みの testing パッケージ |
| Rust | cargo test | Cargo.toml → 組み込みのテストハーネス |
| Dart | flutter_test, test | pubspec.yaml → dev_deps に flutter_test または test が存在 |
命名規則
| 言語 | ソース | テストファイル |
|---|---|---|
| Python | src/auth/login.py |
tests/auth/test_login.py |
| TypeScript | src/auth/login.ts |
src/auth/login.test.ts または tests/auth/login.test.ts |
| Go | pkg/auth/login.go |
pkg/auth/login_test.go |
| Rust | src/auth/login.rs |
インライン #[cfg(test)] モジュール |
| Dart | lib/auth/login.dart |
test/auth/login_test.dart |
ソース分析のヒューリスティクス
Python
def function_name(を検出し、name が_で始まらない場合- パブリッククラスの
class ClassName:を検出 - クラス内のメソッドシグネチャを抽出
__init__,__str__など (dunder メソッド) をスキップ
TypeScript/JavaScript
export function,export const,export classを検出export default function/classを検出- JSDoc/TSDoc を解析してパラメータ型を取得
Go
- エクスポートされた関数 (大文字の名前) を検出
- 構造体でエクスポートされたメソッドを検出
- エクスポートされた型を検出
Rust
pub fn,pub struct,pub enumを検出- パブリックメソッドを持つ
implブロックを検出
出力スキーマ
{
"format": "scaffold-manifest/v1",
"generated_at": "<ISO-8601 UTC>",
"framework": "pytest",
"generated": [
{
"source": "src/auth/login.py",
"test": "tests/auth/test_login.py",
"units": ["login", "logout", "refresh_token"],
"unit_count": 3
}
],
"skipped": [
{
"source": "src/auth/utils.py",
"reason": "test file exists"
}
],
"total_units": 12
}
危険信号 (停止して確認)
- パッケージマニフェストが見つからない → フレームワークについてユーザーにプロンプトを表示
- ソースファイルにパブリック関数がない → 警告付きでスキップ
- テストファイルが既に存在する →
--forceが指定されていない限りスキップ - ソースファイルを解析できない → 警告をログに記録し、他のファイルで続行
統合ポイント
/ai-dev-kit:plan-phase との連携
Tests Owned Files列を自動的に入力するために呼び出されます。- 実装タスクからの
Owned Artifactsをソースファイルとして使用します。
/ai-dev-kit:execute-lane との連携
- テストエンジニアエージェントの実行前に呼び出されます。
chore(P{n}-{lane}): scaffold test filesでスキャフォールドをコミットします。
test-engineer エージェントとの連携
- エージェントはスキャフォールド内の TODO マーカーを検出します。
- テスト実装を埋めます。
- 完了したら TODO マーカーを削除します。
プロバイダーノート
/ai-dev-kit:scaffold-testsが呼び出されたときにこの skill を使用します。- 可視性のために、スキップマーカーよりも TODO スタイルのスタブを優先します。
- テスト構成でソースファイル構造を保持します。
- 検出されたフレームワークに基づいて適切なインポートを含めます。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Test Scaffolding Skill
Generate test file scaffolds for source files, enabling TDD workflows. Scaffolds contain TODO stubs that the test-engineer agent fills during lane execution.
Variables
| Variable | Default | Description |
|---|---|---|
| SOURCE_FILES | [] | List of source files to scaffold tests for |
| TEST_FRAMEWORK | auto | Framework to use (auto-detects from manifest) |
| OUTPUT_DIR | tests/ | Where to place generated test files |
| NAMING_CONVENTION | language-default | Test file naming pattern |
| INCLUDE_FIXTURES | true | Generate fixture stubs |
| STUB_STYLE | todo | todo (TODO comments) or skip (skip markers) |
Workflow (Mandatory)
- Detect stack: Read package manifest (
pyproject.toml,package.json,go.mod,Cargo.toml) - Identify framework: Match test dependencies (pytest, vitest, jest, testing, cargo test)
- Analyze sources: Extract public functions, classes, methods from each source file
- Map to tests: Apply naming convention to determine test file paths
- Generate scaffolds: Use language template, insert TODO stubs for each testable unit
- Return manifest: JSON with generated files, skipped files, and unit counts
Supported Frameworks
| Language | Frameworks | Detection |
|---|---|---|
| Python | pytest, unittest | pyproject.toml → [tool.pytest] or pytest in deps |
| TypeScript | vitest, jest | package.json → vitest or jest in devDeps |
| JavaScript | vitest, jest | package.json → vitest or jest in devDeps |
| Go | testing | go.mod → built-in testing package |
| Rust | cargo test | Cargo.toml → built-in test harness |
| Dart | flutter_test, test | pubspec.yaml → flutter_test or test in dev_deps |
Naming Conventions
| Language | Source | Test File |
|---|---|---|
| Python | src/auth/login.py |
tests/auth/test_login.py |
| TypeScript | src/auth/login.ts |
src/auth/login.test.ts or tests/auth/login.test.ts |
| Go | pkg/auth/login.go |
pkg/auth/login_test.go |
| Rust | src/auth/login.rs |
inline #[cfg(test)] module |
| Dart | lib/auth/login.dart |
test/auth/login_test.dart |
Source Analysis Heuristics
Python
- Detect
def function_name(where name doesn't start with_ - Detect
class ClassName:for public classes - Extract method signatures within classes
- Skip
__init__,__str__, etc. (dunder methods)
TypeScript/JavaScript
- Detect
export function,export const,export class - Detect
export default function/class - Parse JSDoc/TSDoc for parameter types
Go
- Detect exported functions (capitalized names)
- Detect exported methods on structs
- Detect exported types
Rust
- Detect
pub fn,pub struct,pub enum - Detect
implblocks with public methods
Output Schema
{
"format": "scaffold-manifest/v1",
"generated_at": "<ISO-8601 UTC>",
"framework": "pytest",
"generated": [
{
"source": "src/auth/login.py",
"test": "tests/auth/test_login.py",
"units": ["login", "logout", "refresh_token"],
"unit_count": 3
}
],
"skipped": [
{
"source": "src/auth/utils.py",
"reason": "test file exists"
}
],
"total_units": 12
}
Red Flags (Stop & Verify)
- No package manifest found → prompt user for framework
- Source file has no public functions → skip with warning
- Test file already exists → skip unless
--forcespecified - Unable to parse source file → log warning, continue with others
Integration Points
With /ai-dev-kit:plan-phase
- Called to auto-populate
Tests Owned Filescolumn - Uses
Owned Artifactsfrom impl tasks as source files
With /ai-dev-kit:execute-lane
- Called before test-engineer agent runs
- Scaffolds committed with
chore(P{n}-{lane}): scaffold test files
With test-engineer agent
- Agent detects TODO markers in scaffolds
- Fills in test implementations
- Removes TODO markers when complete
Provider Notes
- Use this skill when
/ai-dev-kit:scaffold-testsis invoked - Prefer TODO-style stubs over skip markers for visibility
- Preserve source file structure in test organization
- Include proper imports based on detected framework