validate-piles-notation
について
このスキルは、jigsawRでパズルピース融合グループを指定するために使用されるPILES表記文字列の検証と解析を行います。構文検証の実行、表記からグループリストへの変換、平易な説明の提供、パズル結果に対する隣接関係の検証をサポートします。開発者は、`generate_puzzle()`の前にユーザー入力を検証する際、融合グループの問題をデバッグする際、ユーザーへの表記説明を行う際、およびラウンドトリップシリアライゼーションの忠実性をテストする際に、このスキルを活用すべきです。
クイックインストール
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/validate-piles-notationこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
name: validate-piles-notation description: > jigsawRのピースフュージョングループを指定するためのPILES(Puzzle Input Line Entry System)記法を解析・検証する。構文検証、グループリストへの解析、 平易な説明、パズル結果に対する隣接検証、ラウンドトリップシリアライズを カバー。generate_puzzle()に渡す前のユーザー提供PILES文字列の検証、 フュージョングループの問題デバッグ、ユーザーへの記法説明、 ラウンドトリップ解析/シリアライズの忠実性テストに使用する。 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: jigsawr complexity: intermediate language: R tags: jigsawr, piles, notation, fusion, parsing, dsl locale: ja source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
PILES記法の検証
パズルピースフュージョングループのためのPILES記法文字列を解析・検証する。
使用タイミング
generate_puzzle()に渡す前のユーザー提供PILES文字列の検証- フュージョングループの問題デバッグ(間違ったピースの結合、予期しない結果)
- ユーザーへのPILES記法の平易な説明
- ラウンドトリップの忠実性テスト: 解析 -> グループ -> シリアライズ -> 解析
入力
- 必須: PILES記法文字列(例:
"1-2-3,4-5") - 任意: パズル結果オブジェクト(隣接検証とキーワード解決用)
- 任意: パズルタイプ(
"center"、"ring1"、"R1"などのキーワードサポート用)
手順
ステップ1: 構文検証
library(jigsawR)
result <- validate_piles_syntax("1-2-3,4-5")
# 有効な場合はTRUEを返し、無効な場合はエラーメッセージを返す
一般的な構文エラーを確認する:
- 対応しない括弧:
"1-2(-3)-4"で()が不一致 - 無効な文字: 数字、
-、,、:、(、)とキーワードのみ許可 - 空のグループ:
"1-2,,3-4"(二重カンマ)
期待結果: 有効な構文の場合はTRUE、無効な場合は説明的なエラー。
失敗時: 正確なPILES文字列と検証エラーメッセージを出力する。
ステップ2: グループへの解析
groups <- parse_piles("1-2-3,4-5")
# 返却値: list(c(1, 2, 3), c(4, 5))
範囲を含む文字列の場合:
groups <- parse_piles("1:6,7-8")
# 返却値: list(c(1, 2, 3, 4, 5, 6), c(7, 8))
期待結果: 整数ベクトルのリスト(フュージョングループごとに1つ)。正しいピースIDとグループ境界を持つ。
失敗時: PILES文字列がステップ1で構文検証を通過しているか最初に確認する。解析が予期しないグループを返す場合、-がグループ内のピースを区切り、,がグループを区切ること、および範囲記法(:)が両端を含む形で展開されることを確認する。
ステップ3: 平易な言葉での説明
各グループをユーザーに説明する:
"1-2-3,4-5"-> 「グループ1: ピース1、2、3を融合。グループ2: ピース4と5を融合。」"1:6"-> 「グループ1: ピース1から6を融合(6ピース)。」"center,ring1"-> 「グループ1: 中心ピース。グループ2: リング1のすべてのピース。」
期待結果: 各フュージョングループがピース数と識別子とともに平易な言葉で説明され、非技術的なユーザーにも記法が理解可能になる。
失敗時: キーワードが説明できない場合(例: "ring1"が明確な意味を持たない)、記法にはコンテキストとしてパズル結果オブジェクトが必要な場合がある。ユーザーにパズルタイプを提供するか、代わりに数値ピースIDを使用するようアドバイスする。
ステップ4: パズル結果に対する検証(任意)
パズル結果オブジェクトが利用可能な場合、以下を確認する:
# まずパズルを生成
puzzle <- generate_puzzle(type = "hexagonal", grid = c(3), size = c(200))
# パズルコンテキストで解析(キーワードを解決)
groups <- parse_fusion("center,ring1", puzzle)
確認事項:
- すべてのピースIDがパズルに存在する
- キーワードが有効なピースセットに解決される
- 融合されるピースが実際に隣接している(隣接していない場合は警告)
期待結果: すべてのピースIDが有効。隣接するピースがクリーンに融合される。
失敗時: 無効なピースIDまたは非隣接ペアをリストする。
ステップ5: ラウンドトリップシリアライズ
解析/シリアライズの忠実性を検証する:
original <- "1-2-3,4-5"
groups <- parse_piles(original)
roundtrip <- to_piles(groups)
# roundtripはoriginalと等しい(または正規化された等価物)はず
groups2 <- parse_piles(roundtrip)
identical(groups, groups2) # TRUEでなければならない
期待結果: ラウンドトリップが同一のグループリストを生成し、parse_piles()とto_piles()が逆関数であることを確認する。
失敗時: ラウンドトリップが異なる場合、シリアライザが記法を正規化しているか確認する(例: ピースIDのソートや範囲を明示的リストへの変換)。identical(groups, groups2)がTRUEを返す限り、正規化の違いは許容される。
PILESクイックリファレンス
# 基本構文
"1-2" # ピース1と2を融合
"1-2-3,4-5" # 2つのグループ: (1,2,3)と(4,5)
"1:6" # 範囲: ピース1から6
# キーワード(puzzle_resultが必要)
"center" # 中心ピース(hex/concentric)
"ring1" # リング1のすべてのピース
"R1" # 行1(rectangular)
"boundary" # すべての境界ピース
# 関数
parse_piles("1-2-3,4-5") # PILES文字列を解析
parse_fusion("1-2-3", puzzle) # フォーマットを自動検出
to_piles(list(c(1,2), c(3,4))) # PILESに変換
validate_piles_syntax("1-2(-3)-4") # 構文を検証
バリデーション
-
validate_piles_syntax()が有効な文字列に対してTRUEを返す -
parse_piles()が正しいグループリストを返す - ラウンドトリップシリアライズがグループを保持する
- キーワードがパズルコンテキストで正しく解決される
- 無効な構文が明確なエラーメッセージを生成する
よくある落とし穴
- パズルコンテキストなしのキーワード:
"center"のようなキーワードにはパズル結果オブジェクトが必要。parse_piles()ではなくparse_fusion()に渡すこと。 - 1始まりのピース: ピースIDは0ではなく1から始まる。
- 隣接 vs 非隣接フュージョン: 非隣接ピースの融合は動作するが、予期しない視覚結果を生じる場合がある。可能な場合は隣接を検証する。
- 範囲記法:
"1:6"は両端を含む(1, 2, 3, 4, 5, 6)。
関連スキル
generate-puzzle— フュージョングループを使用してパズルを生成するadd-puzzle-type— 新しいタイプにはPILES/フュージョンサポートが必要run-puzzle-tests— フルスイートでPILES解析をテストする
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
