MCP HubMCP Hub
Вернуться к навыкам

validate-piles-notation

pjt222
Обновлено Yesterday
2 просмотров
17
2
17
Посмотреть на GitHub
Метаaitesting

О программе

Этот навык анализирует и проверяет строки в нотации PILES, используемые для определения групп слияния элементов в jigsawR. Он выполняет синтаксическую валидацию, преобразует строки в структурированные списки групп и может проверять смежность по результатам пазла. Используйте его для проверки пользовательского ввода перед `generate_puzzle()`, отладки групп слияния или тестирования сквозной сериализации.

Быстрая установка

Claude Code

Рекомендуется
Основной
npx skills add pjt222/agent-almanac -a claude-code
Команда плагинаАльтернативный
/plugin add https://github.com/pjt222/agent-almanac
Git клонированиеАльтернативный
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/validate-piles-notation

Скопируйте и вставьте эту команду в Claude Code для установки этого навыка

Документация

Validate PILES Notation

Parse + validate PILES strings → puzzle piece fusion groups.

Use When

  • Validate user PILES → before generate_puzzle()
  • Debug fusion issues (wrong pieces merged, unexpected results)
  • Explain PILES → user plain language
  • Test round-trip: parse → groups → serialize → parse

In

  • Required: PILES string (e.g., "1-2-3,4-5")
  • Optional: Puzzle result obj (adjacency valid + keyword resolution)
  • Optional: Puzzle type (keyword support "center", "ring1", "R1")

Do

Step 1: Syntax Valid

library(jigsawR)
result <- validate_piles_syntax("1-2-3,4-5")
# Returns TRUE if valid, error message if invalid

Common syntax errs:

  • Unmatched parens: "1-2(-3)-4" w/ mismatched ()
  • Invalid chars: only digits, -, ,, :, (, ) + keywords
  • Empty groups: "1-2,,3-4" (double comma)

Got: TRUE for valid syntax, descriptive err for invalid.

If err: Print exact PILES string + valid err msg.

Step 2: Parse → Groups

groups <- parse_piles("1-2-3,4-5")
# Returns: list(c(1, 2, 3), c(4, 5))

W/ ranges:

groups <- parse_piles("1:6,7-8")
# Returns: list(c(1, 2, 3, 4, 5, 6), c(7, 8))

Got: List of int vectors, one per fusion group, correct piece IDs + boundaries.

If err: Check syntax valid passed Step 1. Unexpected groups → verify - separates pieces in group, , separates groups, : expands inclusive endpoints.

Step 3: Explain Plain Language

Per group:

  • "1-2-3,4-5" → "Group 1: fuse pieces 1, 2, 3. Group 2: fuse 4, 5."
  • "1:6" → "Group 1: fuse pieces 1 through 6 (6 pieces)."
  • "center,ring1" → "Group 1: center piece. Group 2: all pieces ring 1."

Got: Each group described plain w/ piece counts + IDs → understandable to non-tech.

If err: Keywords can't be explained ("ring1" no clear meaning) → notation needs puzzle result for ctx. Advise user provide puzzle type or numeric IDs.

Step 4: Validate vs Puzzle Result (Optional)

If puzzle result available, verify:

# Generate the puzzle first
puzzle <- generate_puzzle(type = "hexagonal", grid = c(3), size = c(200))

# Parse with puzzle context (resolves keywords)
groups <- parse_fusion("center,ring1", puzzle)

Check:

  • All piece IDs exist in puzzle
  • Keywords resolve to valid piece sets
  • Fused pieces actually adjacent (warn if not)

Got: All piece IDs valid. Adjacent pieces fuse cleanly.

If err: List invalid piece IDs or non-adjacent pairs.

Step 5: Round-Trip

Verify parse/serialize fidelity:

original <- "1-2-3,4-5"
groups <- parse_piles(original)
roundtrip <- to_piles(groups)
# roundtrip should equal original (or canonical equivalent)

groups2 <- parse_piles(roundtrip)
identical(groups, groups2)  # Must be TRUE

Got: Round-trip → identical group lists, confirming parse_piles() + to_piles() are inverses.

If err: Round-trip differs → check serializer normalization (sorting IDs, ranges → explicit lists). Canonical diffs OK if identical(groups, groups2) returns TRUE.

PILES Quick Reference

# Basic syntax
"1-2"           # Fuse pieces 1 and 2
"1-2-3,4-5"     # Two groups: (1,2,3) and (4,5)
"1:6"           # Range: pieces 1 through 6

# Keywords (require puzzle_result)
"center"        # Center piece (hex/concentric)
"ring1"         # All pieces in ring 1
"R1"            # Row 1 (rectangular)
"boundary"      # All boundary pieces

# Functions
parse_piles("1-2-3,4-5")                    # Parse PILES string
parse_fusion("1-2-3", puzzle)               # Auto-detect format
to_piles(list(c(1,2), c(3,4)))              # Convert to PILES
validate_piles_syntax("1-2(-3)-4")          # Validate syntax

Check

  • validate_piles_syntax() returns TRUE for valid strings
  • parse_piles() returns correct group lists
  • Round-trip serialization preserves groups
  • Keywords resolve correctly w/ puzzle ctx
  • Invalid syntax → clear err msgs

Traps

  • Keyword w/o puzzle ctx: "center" requires puzzle result. Pass to parse_fusion(), not parse_piles().
  • 1-indexed pieces: Piece IDs start at 1, not 0.
  • Adjacent vs non-adjacent fusion: Non-adjacent fusion works but may produce unexpected visuals. Validate adjacency when possible.
  • Range notation: "1:6" includes both endpoints (1, 2, 3, 4, 5, 6).

  • generate-puzzle — generate puzzles w/ fusion groups
  • add-puzzle-type — new types need PILES/fusion support
  • run-puzzle-tests — test PILES parsing w/ full suite

GitHub репозиторий

pjt222/agent-almanac
Путь: i18n/caveman-ultra/skills/validate-piles-notation
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Похожие навыки

content-collections

Мета

Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.

Просмотреть навык

polymarket

Мета

Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.

Просмотреть навык

creating-opencode-plugins

Мета

Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.

Просмотреть навык

sglang

Мета

SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

Просмотреть навык