MCP HubMCP Hub
Retour aux compétences

generate-puzzle

pjt222
Mis à jour 2 days ago
5 vues
17
2
17
Voir sur GitHub
Métawordaitestingdesign

À propos

Cette compétence génère des puzzles SVG et des visualisations ggplot2 via le package jigsawR, prenant en charge plusieurs types de puzzles comme rectangulaires, hexagonaux et de Voronoï. Elle valide les paramètres par rapport à un fichier de configuration et est utile pour créer des fichiers de puzzle, tester des configurations ou produire des démonstrations. Les développeurs peuvent l'utiliser pour la génération et la visualisation programmatiques de puzzles en R.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-puzzle

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation

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

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

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 <?xml or <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

  • --vanilla flag: Breaks renv activation. Never use.
  • Complex -e commands: 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 snic package installed.

See Also

  • add-puzzle-type — scaffold new puzzle type end-to-end
  • validate-piles-notation — validate fusion group strings before generate_puzzle()
  • run-puzzle-tests — run test suite after generation changes
  • write-testthat-tests — add tests for new generation scenarios

Dépôt GitHub

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

Compétences associées

content-collections

Méta

Cette compétence propose une configuration éprouvée en production pour Content Collections, un outil axé sur TypeScript qui transforme des fichiers Markdown/MDX en collections de données typées de manière sûre avec une validation Zod. Utilisez-la lors de la création de blogs, de sites de documentation ou d'applications Vite + React riches en contenu pour garantir la sécurité de typage et la validation automatique du contenu. Elle couvre tout, de la configuration du plugin Vite et de la compilation MDX à l'optimisation des déploiements et la validation des schémas.

Voir la compétence

polymarket

Méta

Cette compétence permet aux développeurs de créer des applications avec la plateforme de marchés prédictifs Polymarket, incluant l'intégration d'API pour le trading et les données de marché. Elle fournit également une diffusion de données en temps réel via WebSocket pour surveiller les transactions en direct et l'activité du marché. Utilisez-la pour mettre en œuvre des stratégies de trading ou pour créer des outils traitant les mises à jour de marché en direct.

Voir la compétence

creating-opencode-plugins

Méta

Cette compétence aide les développeurs à créer des plugins OpenCode qui s'interconnectent avec plus de 25 types d'événements tels que les commandes, les fichiers et les opérations LSP. Elle fournit la structure du plugin, les spécifications de l'API événementielle et les modèles d'implémentation pour les modules JavaScript/TypeScript. Utilisez-la lorsque vous avez besoin d'intercepter, de surveiller ou d'étendre le cycle de vie de l'assistant IA OpenCode avec une logique personnalisée pilotée par les événements.

Voir la compétence

sglang

Méta

SGLang est un framework de service LLM haute performance spécialisé dans la génération rapide et structurée pour les workflows JSON, regex et agentiques grâce à son cache de préfixe RadixAttention. Il offre une inférence nettement plus rapide, particulièrement pour les tâches avec des préfixes répétés, ce qui le rend idéal pour les sorties complexes et structurées ainsi que les conversations multi-tours. Choisissez SGLang plutôt que des alternatives comme vLLM lorsque vous avez besoin d'un décodage contraint ou que vous construisez des applications avec un partage étendu de préfixes.

Voir la compétence