MCP HubMCP Hub
Volver a habilidades

generate-puzzle

pjt222
Actualizado 2 days ago
5 vistas
17
2
17
Ver en GitHub
Metawordaitestingdesign

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

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-puzzle

Copia 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) or c(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

TypegridsizeExtra params
rectangularc(cols, rows)c(width, height) mmoffset, layout, tabsize
hexagonalc(rings)c(diameter) mmdo_warp, do_trunc, tabsize
concentricc(rings)c(diameter) mmcenter_shape, tabsize
voronoic(cols, rows)c(width, height) mmn_interior, tabsize
randomc(cols, rows)c(width, height) mmn_interior, tabsize
snicc(cols, rows)c(width, height) mmn_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 <?xml or <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 snic pkg installed.

  • add-puzzle-type — scaffold new type E2E
  • validate-piles-notation — validate fusion strings pre-call
  • run-puzzle-tests — test suite after gen changes
  • write-testthat-tests — tests for new scenarios

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/caveman-ultra/skills/generate-puzzle
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

content-collections

Meta

Esta 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.

Ver habilidad

polymarket

Meta

Esta 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.

Ver habilidad

creating-opencode-plugins

Meta

Esta 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.

Ver habilidad

sglang

Meta

SGLang 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.

Ver habilidad