generate-puzzle
Acerca de
Esta habilidad genera rompecabezas en formato SVG en R mediante las funciones `generate_puzzle()` o `geom_puzzle_*()`, admitiendo múltiples tipos de rompecabezas como rectangulares, hexagonales y de Voronoi. Valida los parámetros contra un archivo de configuración y es útil para crear archivos SVG, probar configuraciones o construir visualizaciones en ggplot2. Los desarrolladores pueden usarla para producir rompecabezas de manera programática con control sobre la cuadrícula, tamaño, semilla y ajustes de diseño.
Instalación rápida
Claude Code
Recomendadonpx 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-puzzleCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Generate Puzzle
jigsawR unified API → generate puzzle.
Use When
- Create puzzle SVG w/ type + config
- Test generation w/ diff params
- Sample out for docs/demos
- ggplot2 puzzle viz w/ geom_puzzle_*()
In
- Required: type (
"rectangular","hexagonal","concentric","voronoi","random","snic") - Required: grid (type-dep:
c(cols, rows)orc(rings)) - Optional: size mm (default varies)
- Optional: seed (default 42)
- Optional: offset (0=interlocked, >0=separated)
- Optional: layout (
"grid"or"repel"rect) - Optional: fusion groups (PILES string)
Do
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 → valid ranges for type.
→ min/max for grid, size, tabsize known for type.
If err: config.yml missing or type key missing → in jigsawR root? pkg built once?
Step 2: Determine type + params
| 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 |
→ Req mapped to generate_puzzle() args, values in config.yml range.
If err: unsure format → see table. Rect + voronoi → c(cols, rows); hex + concentric → c(rings).
Step 3: Create R script
Script file preferred over -e for complex cmds.
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 tmp script file.
→ R script saved w/ library(jigsawR) + call + diag output.
If err: syntax → verify string quoting + c() for num vectors. Use script files, avoid shell escape.
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
→ Completes no errors. SVG → output/.
If err: check renv restored (renv::restore()). Pkg loaded (devtools::load_all()). NO --vanilla (renv needs .Rprofile).
Step 5: Verify out
- SVG in
output/ - Starts
<?xmlor<svg - Piece count matches: cols × rows (rect), ring formula (hex/concentric)
- ggplot2 → plot renders no err
→ SVG exists, content valid, piece count matches.
If err: SVG missing → check output/ exists. Count wrong → verify grid for type. ggplot2 → wrap tryCatch().
Step 6: Save out
Default → output/. result contains:
$svg_content— raw SVG string$pieces— piece data list$canvas_size— dims$files— paths
→ result has $svg_content, $pieces, $canvas_size, $files. Files on disk.
If err: $files empty → in-memory only. Explicitly: writeLines(result$svg_content, "output/puzzle.svg").
Check
- Script no err
- SVG well-formed XML
- Piece count matches grid
- Same seed → identical out
- Params in config.yml range
Traps
--vanilla: breaks renv. Never.- Complex
-e: script files → shell escape → Exit 5. - Grid vs size: grid=piece count, size=physical mm.
- Offset: 0=assembled, >0=exploded.
- SNIC: needs
snicpkg installed.
→
add-puzzle-type— scaffold new type E2Evalidate-piles-notation— validate fusion strings pre-callrun-puzzle-tests— test suite after gen changeswrite-testthat-tests— tests for new scenarios
Repositorio GitHub
Habilidades relacionadas
content-collections
MetaEsta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.
polymarket
MetaEsta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.
creating-opencode-plugins
MetaEsta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.
sglang
MetaSGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.
