generate-puzzle
について
このスキルは、`generate_puzzle()`または`geom_puzzle_*()`関数を介してRでジグソーパズルを生成します。長方形、六角形、同心円、ボロノイ、SNICパズルタイプをサポートし、パラメータは設定可能です。設定ファイルに対して入力値を検証し、SVG出力またはggplot2による可視化を作成します。パズルファイルの作成、異なる設定のテスト、ドキュメント用サンプルの生成などにご利用ください。
クイックインストール
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/generate-puzzleこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
拼圖之生
用 jigsawR 之統一 API 生拼圖。
用時
- 為特定類型與配置生拼圖 SVG 檔
- 以異參數測拼圖生成
- 為文檔或演示生樣出
- 以 geom_puzzle_*() 創 ggplot2 拼圖圖
入
- 必要:拼圖類型(
"rectangular"、"hexagonal"、"concentric"、"voronoi"、"random"、"snic") - 必要:格尺(依類:
c(cols, rows)或c(rings)) - 可選:尺寸 mm(依類有默)
- 可選:可重現之種子(默:42)
- 可選:偏移(0 = 嵌合,>0 = 分離)
- 可選:佈局(
"grid"或"repel",矩形用) - 可選:融合組(PILES 記法串)
法
第一步:讀配置約束
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
"$R_EXE" -e "cat(yaml::yaml.load_file('inst/config.yml')[['{TYPE}']]$grid$max)"
或直讀 inst/config.yml 察所擇類型之有效範圍。
得: 所擇類型之 grid、size、tabsize 等參數之最小最大值已知。
敗則: 若 config.yml 缺或類型鍵不存,察是否於 jigsawR 項目根,且包已至少建一次。
第二步:定類型與參數
將用者請求映至有效 generate_puzzle() 參數:
| Type | grid | size | Extra params |
|---|---|---|---|
| rectangular | c(cols, rows) | c(width, height) mm | offset, layout, tabsize |
| hexagonal | c(rings) | c(diameter) mm | do_warp, do_trunc, tabsize |
| concentric | c(rings) | c(diameter) mm | center_shape, tabsize |
| voronoi | c(cols, rows) | c(width, height) mm | n_interior, tabsize |
| random | c(cols, rows) | c(width, height) mm | n_interior, tabsize |
| snic | c(cols, rows) | c(width, height) mm | n_interior, compactness, tabsize |
得: 用者請求映至正 generate_puzzle() 參數,type、grid 維、size 值皆於 config.yml 範圍內。
敗則: 若不知參數格式,參上表。矩形與 voronoi 用 c(cols, rows);六邊與同心用 c(rings)。
第三步:創 R 腳本
書腳本檔(複雜命令優於 -e):
library(jigsawR)
result <- generate_puzzle(
type = "rectangular",
seed = 42,
grid = c(3, 4),
size = c(400, 300),
offset = 0,
layout = "grid"
)
cat("Pieces:", length(result$pieces), "\n")
cat("SVG length:", nchar(result$svg_content), "\n")
cat("Files:", paste(result$files, collapse = ", "), "\n")
存於臨時腳本檔。
得: R 腳本檔存於臨時處,含 library(jigsawR)、generate_puzzle() 調用全參數、診斷輸出行。
敗則: 若腳本有語法誤,驗所有字串參數有引號,數值向量用 c()。避複雜 shell 轉義,始用腳本檔。
第四步:以 WSL R 執行
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
"$R_EXE" /path/to/script.R
得: 腳本無誤完。SVG 檔寫於 output/。
敗則: 察 renv 已還原(renv::restore())。驗包已載(devtools::load_all())。勿用 --vanilla 旗(renv 需 .Rprofile)。
第五步:驗出
- SVG 檔存於
output/ - SVG 內容始以
<?xml或<svg - 塊數合預期:cols * rows(矩形)、環式(六邊/同心)
- ggplot2 法者驗圖對象無誤渲染
得: SVG 檔存於 output/,內容始以 <?xml 或 <svg,塊數合格規格(矩形 cols * rows、六邊/同心環式)。
敗則: 若 SVG 缺,察 output/ 目錄存。若塊數誤,驗格尺合該拼圖類型之預期式。ggplot2 出,以 tryCatch() 包驗圖渲染無誤。
第六步:存出
生檔默存於 output/。result 對象含:
$svg_content— 原 SVG 串$pieces— 塊資料之列$canvas_size— 維度$files— 已寫檔路徑
得: result 對象含 $svg_content、$pieces、$canvas_size、$files 欄。$files 所列檔存於盤。
敗則: 若 $files 空,拼圖或只生於內存。顯存之以 writeLines(result$svg_content, "output/puzzle.svg")。
驗
- 腳本無誤執行
- SVG 檔為良形 XML
- 塊數合格規格
- 同種子生同出(可重現)
- 參數於 config.yml 約束內
陷
- 用
--vanilla旗:破 renv 激活。勿用 - 複雜
-e命令:改用腳本檔;shell 轉義致退出碼 5 - 格與尺混:格乃塊數,尺乃物理維 mm
- 偏移義:0 = 組裝,正 = 爆開/分離
- snic 無包:snic 類型需
snic包已裝
參
add-puzzle-type— 端到端搭新拼圖類型validate-piles-notation— 傳入 generate_puzzle() 前驗融合組串run-puzzle-tests— 生成更動後跑測試集write-testthat-tests— 為新生成場景加測試
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を選択してください。
