property-based-testing
プロパティベーステストを設計し、自動テストケース生成によってあらゆる入力に対してコードの性質が成立することを検証します。QuickCheckやHypothesisなどのフレームワークを用いたジェネレーティブテスト、不変条件の検証に活用できます。
description の原文を見る
> Design property-based tests that verify code properties hold for all inputs using automatic test case generation. Use for property-based, QuickCheck, hypothesis testing, generative testing, and invariant verification.
SKILL.md 本文
プロパティベーステスト
目次
概要
プロパティベーステストは、特定の例をテストするのではなく、自動生成された幅広い入力に対してコードが一般的なプロパティ(性質)や不変量(インバリアント)を満たすことを検証します。このアプローチにより、例ベースのテストが見逃しやすいエッジケースやバグを発見できます。
使用場面
- 数学的性質を持つアルゴリズムのテスト
- 常に成立すべき不変量の検証
- エッジケースの自動発見
- パーサーとシリアライザーのテスト(ラウンドトリッププロパティ)
- データ変換の検証
- ソート、検索、データ構造操作のテスト
- 予期しない入力の組み合わせの発見
クイックスタート
最小限の動作例:
# test_string_operations.py
import pytest
from hypothesis import given, strategies as st, assume, example
def reverse_string(s: str) -> str:
"""Reverse a string."""
return s[::-1]
class TestStringOperations:
@given(st.text())
def test_reverse_twice_returns_original(self, s):
"""Property: Reversing twice returns the original string."""
assert reverse_string(reverse_string(s)) == s
@given(st.text())
def test_reverse_length_unchanged(self, s):
"""Property: Reverse doesn't change length."""
assert len(reverse_string(s)) == len(s)
@given(st.text(min_size=1))
def test_reverse_first_becomes_last(self, s):
"""Property: First char becomes last after reverse."""
reversed_s = reverse_string(s)
assert s[0] == reversed_s[-1]
assert s[-1] == reversed_s[0]
// ... (see reference guides for full implementation)
リファレンスガイド
references/ ディレクトリの詳細な実装:
| ガイド | 内容 |
|---|---|
Hypothesis for Python | Hypothesis for Python |
fast-check for JavaScript/TypeScript | fast-check for JavaScript/TypeScript |
junit-quickcheck for Java | junit-quickcheck for Java |
ベストプラクティス
✅ すべきこと
- 特定のケースではなく、一般的なプロパティに焦点を当てる
- 数学的性質(可換性、結合性など)をテストする
- ラウンドトリップエンコード/デコードを検証する
- シュリンキングを使用して最小限の失敗ケースを見つける
- 既知のエッジケースに対して例ベースのテストと組み合わせる
- 常に成立すべき不変量をテストする
- 現実的な入力分布を生成する
❌ すべきでないこと
- トートロジーであるプロパティをテストする
- 入力生成を過度に制限する
- シュリンクされたテスト失敗を無視する
- すべての例ベースのテストをプロパティに置き換える
- 実装の詳細をテストする
- 制約なしで無効な入力を生成する
- ジェネレータのエッジケース処理を忘れる
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- aj-geddes
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/aj-geddes/useful-ai-prompts / ライセンス: MIT
関連スキル
nano-banana-2
inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」
octocode-slides
洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。
gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
nano-banana
Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。
oiloil-ui-ux-guide
モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。
axiom-hig-ref
Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。