Install
openclaw skills install @catorch/puzzletide-crosswordUse this skill whenever the user asks for a crossword puzzle — custom word/clue lists, themed crosswords, educational worksheets, or printable PDFs. Generates valid interlocking grids with standard numbering locally with the PuzzleTide CLI instead of hand-drawing grids.
openclaw skills install @catorch/puzzletide-crosswordGenerate crossword puzzles with the local PuzzleTide CLI.
Never hand-draw a crossword grid. Language models cannot reliably keep intersecting words consistent. The CLI places words with real intersections, assigns standard crossword numbering, and validates that every clue's answer matches the grid before returning — words that cannot interlock are reported as unplaced instead of silently broken.
Prefer the local CLI. Check availability in this order:
ptide --version
puzzletide --version
npx puzzletide --version
If none of those work, ask the user before installing (npm install -g puzzletide).
Write the clues yourself — you are good at clues; the CLI is good at grids:
ptide crossword generate --words "PARIS: Capital of France; TOKYO: Capital of Japan; OSLO: Capital of Norway"
For longer lists use a JSON file:
ptide crossword generate --file words.json --pdf crossword.pdf
# words.json: [{"word": "PARIS", "clue": "Capital of France"}, ...]
Clues are auto-generated puzzle-style hints (unscramble, letter counts):
ptide crossword generate --theme food/fruits --count 10
For better clues, pull the words and write clues yourself:
ptide words list food/fruits --count 10 --json
# ...then pass your own word:clue pairs to crossword generate.
ptide crossword generate --file words.json --pdf crossword.pdf --title "Science Review"
ptide run puzzle.crossword.generate --theme animals --json
The PDF has three sections: empty numbered grid, clue list, and solution.
--json returns the grid ("#" = black cell) plus across/down clues with
coordinates — ready for rendering in an app.