generate-puzzle
О программе
Этот навык генерирует SVG-пазлы и визуализации ggplot2 через пакет jigsawR, поддерживая различные типы пазлов, такие как прямоугольные, шестиугольные и диаграммы Вороного. Он проверяет параметры на соответствие конфигурационному файлу и полезен для создания файлов пазлов, тестирования конфигураций или демонстраций. Разработчики могут использовать его для программного создания пазлов и визуализации в R.
Быстрая установка
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 для установки этого навыка
Документация
Generate Puzzle
Make jigsaw puzzles with jigsawR package unified API.
When Use
- Make puzzle SVG files for specific type + config
- Test puzzle generation with different parameters
- Make sample output for docs or demos
- Make ggplot2 puzzle visualizations with geom_puzzle_*()
Inputs
- Required: Puzzle type (
"rectangular","hexagonal","concentric","voronoi","random","snic") - Required: Grid dimensions (type-dependent:
c(cols, rows)orc(rings)) - Optional: Size in mm (default varies by type)
- Optional: Seed for reproducibility (default: 42)
- Optional: Offset (0 = interlocked, >0 = separated pieces)
- Optional: Layout (
"grid"or"repel"for rectangular) - Optional: Fusion groups (PILES notation string)
Steps
Step 1: Read Config Constraints
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)"
Or read inst/config.yml direct to check valid ranges for chosen type.
Got: Min/max values for grid, size, tabsize, other parameters known for chosen puzzle type.
If fail: config.yml missing or type key absent? Check in jigsawR project root + package built at least once.
Step 2: Pick Type + Parameters
Map user request to valid generate_puzzle() args:
| 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 |
Got: User request mapped to valid generate_puzzle() args with correct type, grid dimensions, size in config.yml ranges.
If fail: Unsure of parameter format? See table. Rectangular + voronoi use c(cols, rows); hexagonal + concentric use c(rings).
Step 3: Make R Script
Write script file (preferred over -e for complex commands):
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")
Save to temporary script file.
Got: R script file at temporary location, contains library(jigsawR), generate_puzzle() call with all parameters, diagnostic output lines.
If fail: Script syntax errors? Verify string args quoted + numeric vectors use c(). Skip complex shell escaping — always use script files.
Step 4: Execute via WSL R
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
"$R_EXE" /path/to/script.R
Got: Script done no errors. SVG file(s) written to output/.
If fail: Check renv restored (renv::restore()). Verify package loaded (devtools::load_all()). NO --vanilla flag (renv needs .Rprofile).
Step 5: Verify Output
- SVG file exists in
output/directory - SVG content starts with
<?xmlor<svg - Piece count matches expected: cols * rows (rectangular), ring formula (hex/concentric)
- ggplot2 approach: plot object renders no error
Got: SVG file exists in output/, starts with <?xml or <svg, piece count matches grid (cols * rows rectangular, ring formula hex/concentric).
If fail: SVG file missing? Check output/ directory exists. Piece count wrong? Verify grid matches puzzle type formula. ggplot2 output → check plot renders by wrap in tryCatch().
Step 6: Save Output
Generated files saved to output/ default. result object contains:
$svg_content— raw SVG string$pieces— list of piece data$canvas_size— dimensions$files— paths to written files
Got: result object has $svg_content, $pieces, $canvas_size, $files fields. Files listed in $files exist on disk.
If fail: $files empty? Puzzle may have generated in-memory only. Save explicit with writeLines(result$svg_content, "output/puzzle.svg").
Checks
- Script executes no errors
- SVG file well-formed XML
- Piece count matches grid
- Same seed → identical output (reproducibility)
- Parameters in config.yml constraints
Pitfalls
--vanillaflag: Breaks renv activation. Never use.- Complex
-ecommands: Use script files; shell escaping → Exit code 5. - Grid vs size confusion: Grid = piece count, size = physical dimensions in mm.
- Offset semantics: 0 = assembled puzzle, positive = exploded/separated pieces.
- SNIC without package: snic type needs
snicpackage installed.
See Also
add-puzzle-type— scaffold new puzzle type end-to-endvalidate-piles-notation— validate fusion group strings before generate_puzzle()run-puzzle-tests— run test suite after generation changeswrite-testthat-tests— add tests for new generation scenarios
GitHub репозиторий
Frequently asked questions
What is the generate-puzzle skill?
generate-puzzle is a Claude Skill by pjt222. Skills package instructions and resources that Claude loads on demand, so Claude can perform generate-puzzle-related tasks without extra prompting.
How do I install generate-puzzle?
Use the install commands on this page: add generate-puzzle to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does generate-puzzle belong to?
generate-puzzle is in the Meta category, tagged word, ai, testing and design.
Is generate-puzzle free to use?
Yes. generate-puzzle is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
Похожие навыки
Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
