run-puzzle-tests
关于
This skill runs the jigsawR test suite via WSL R, supporting full suites, pattern filtering, and single-file tests. It interprets pass/fail/skip counts to identify failing tests and is designed for use after code changes, before commits, or for debugging specific failures. Key features include not using the --vanilla flag to maintain renv compatibility through .Rprofile.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/run-puzzle-tests在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: run-puzzle-tests description: > WSL R実行経由でjigsawRテストスイートを実行する。フルスイート、 パターンによるフィルタリング、シングルファイルをサポート。 パス/フェイル/スキップカウントを解釈し、失敗テストを特定する。 --vanillaフラグは使用しない(renvは.Rprofileが有効化に必要)。 Rソースコードの変更後、新しいパズルタイプや機能の追加後、 コミット前の破壊確認、特定のテスト失敗のデバッグに使用する。 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: jigsawr complexity: basic language: R tags: jigsawr, testing, testthat, renv, wsl locale: ja source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
パズルテストの実行
jigsawRテストスイートを実行し結果を解釈する。
使用タイミング
- パッケージのRソースコードを変更した後
- 新しいパズルタイプや機能を追加した後
- コミット前に何も壊れていないことを確認する場合
- 特定のテスト失敗をデバッグする場合
入力
- 必須: テストスコープ(
full、filtered、またはsingle) - 任意: フィルターパターン(filteredモード用、例:
"snic"、"rectangular") - 任意: 特定のテストファイルパス(singleモード用)
手順
ステップ1: テストスコープの選択
| スコープ | 使用場面 | 所要時間 |
|---|---|---|
| Full | コミット前、大きな変更後 | 約2-5分 |
| Filtered | 1つのパズルタイプでの作業中 | 約30秒 |
| Single | 特定のテストファイルのデバッグ | 約10秒 |
期待結果: 現在のワークフローに基づいてテストスコープが選択される:コミット前はフルスイート、特定のパズルタイプでの作業時はfiltered、1つのテストのデバッグ時はsingle。
失敗時: どのスコープを使用するか不明な場合は、フルスイートをデフォルトにする。時間はかかるがクロスタイプのリグレッションをキャッチできる。
ステップ2: テストスクリプトの作成と実行
フルスイート:
スクリプトファイルを作成する(例:/tmp/run_tests.R):
devtools::test()
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
cd /mnt/d/dev/p/jigsawR && "$R_EXE" -e "devtools::test()"
パターンによるフィルタリング:
"$R_EXE" -e "devtools::test(filter = 'snic')"
シングルファイル:
"$R_EXE" -e "testthat::test_file('tests/testthat/test-snic-puzzles.R')"
期待結果: パス/フェイル/スキップカウントを含むテスト出力。
失敗時:
--vanillaフラグを使用しないこと。renvは.Rprofileが有効化に必要- renvエラーの場合、最初に
renv::restore()を実行する - Exit code 5で失敗する複雑なコマンドの場合、代わりにスクリプトファイルに書く
ステップ3: 結果の解釈
サマリー行を探す:
[ FAIL 0 | WARN 0 | SKIP 7 | PASS 2042 ]
- PASS: 成功したテスト
- FAIL: 失敗したテスト(調査が必要)
- SKIP: スキップされたテスト(通常
snicのようなオプションパッケージの欠如による) - WARN: テスト中の警告(レビューするがブロッキングではない)
期待結果: PASS、FAIL、SKIP、WARNカウントを特定するためにサマリー行が解析される。クリーンなテスト実行ではFAIL = 0。
失敗時: サマリー行が見えない場合、テストランナーが完了前にクラッシュした可能性がある。サマリーの上のR レベルエラーを確認する。出力が切り捨てられている場合、ファイルにリダイレクトする:"$R_EXE" -e "devtools::test()" > test_results.txt 2>&1。
ステップ4: 失敗の調査
テストが失敗した場合:
- 失敗メッセージを読む — ファイル、行、期待値と実際の値が含まれる
- 新しい失敗か既存のものか確認する
- アサーション失敗の場合、テストとテスト対象の関数を読む
- エラー失敗の場合、関数シグネチャが変更されたか確認する
# 詳細出力で失敗テストのみを実行
"$R_EXE" -e "testthat::test_file('tests/testthat/test-failing.R', reporter = 'summary')"
期待結果: 各失敗テストの根本原因が特定される。失敗は真のリグレッション(コードの修正が必要)かテスト環境の問題(依存関係の欠如、パスの問題)のいずれか。
失敗時: 失敗メッセージが不明確な場合、テストにbrowser()またはprint()ステートメントを追加し、対話的デバッグのためにtestthat::test_file()で再実行する。
ステップ5: スキップ理由の確認
オプション依存が欠落している場合のスキップされたテストは正常:
snicパッケージテストはskip_if_not_installed("snic")でスキップ- 特定のOSを必要とするテストは
skip_on_os()でスキップ - CRAN専用スキップは
skip_on_cran()
スキップ理由が正当であり、実際の失敗を隠していないことを確認する。
期待結果: すべてのスキップが正当な理由(オプション依存がインストールされていない、プラットフォーム固有のスキップ、CRAN専用スキップ)で説明される。実際のテスト失敗を隠すスキップはない。
失敗時: スキップが疑わしい場合、一時的にskip_if_*()呼び出しを削除してテストを実行し、パスするか隠れた失敗を明らかにするか確認する。
バリデーション
- すべてのテストがパスする(FAIL = 0)
- 予期しない警告がない
- スキップカウントが期待値と一致する(オプション依存スキップのみ)
- テストカウントが減少していない(テストが誤って削除されていない)
よくある落とし穴
--vanillaの使用: renvの有効化を破壊する。jigsawRでは絶対に使用しないこと。- 複雑な
-e文字列: シェルエスケープの問題がExit code 5を引き起こす。スクリプトファイルを使用する。 - 古いパッケージ状態: NAMESPACEに影響するコードを変更した場合、テスト前に
devtools::load_all()またはdevtools::document()を実行する。 - テスト依存の欠如: 一部のテストにはsuggestedパッケージが必要。
DESCRIPTIONのSuggestsフィールドを確認する。 - 並列テストの問題: テストが干渉する場合、
testthat::test_file()で順次実行する。
関連スキル
generate-puzzle— テストと動作が一致するか検証するためにパズルを生成するadd-puzzle-type— 新しいタイプには包括的なテストスイートが必要write-testthat-tests— Rテスト記述の一般的なパターンvalidate-piles-notation— フルスイートでPILES解析を独立してテストする
GitHub 仓库
相关推荐技能
evaluating-llms-harness
测试该Skill通过60+个学术基准测试(如MMLU、GSM8K等)评估大语言模型质量,适用于模型对比、学术研究及训练进度追踪。它支持HuggingFace、vLLM和API接口,被EleutherAI等行业领先机构广泛采用。开发者可通过简单命令行快速对模型进行多任务批量评估。
cloudflare-cron-triggers
测试这个Claude Skill提供了关于Cloudflare Cron Triggers的完整知识库,用于通过cron表达式定时执行Workers。它支持配置周期性任务、维护作业和自动化工作流,并能处理常见的cron触发错误。开发者可以用它来设置定时任务、测试cron处理器,并集成Workflows和Green Compute功能。
webapp-testing
测试该Skill为开发者提供了基于Playwright的本地Web应用测试工具集,支持自动化测试前端功能、调试UI行为、捕获屏幕截图和查看浏览器日志。它包含管理服务器生命周期的辅助脚本,可直接作为黑盒工具运行而无需阅读源码。适用于需要快速验证本地Web应用界面和交互功能的开发场景。
finishing-a-development-branch
测试这个Skill用于开发分支完成后的集成决策,当代码实现完成且测试通过时,它会引导开发者选择合适的工作流。它首先验证测试状态,然后提供合并、创建PR或清理等结构化选项。核心价值在于确保代码质量的同时,标准化分支收尾流程。
