A Claude skill for generating, validating, and rendering crossword puzzles — in any language.
- Generates thematic word lists by topic or uses words you provide
- Automatically places words on a grid with maximum intersections
- Validates the result for conflicts
- Renders a clean puzzle (hidden mode) or solution (reveal mode)
Works with Russian, English, and any other language.
Claude Code / OpenCode:
npx skills add zorahm/crossword-skillClaude Desktop: Customize → Skills → + → Create skill → Upload a skill
Just ask Claude in natural language:
Сделай кроссворд на тему "космос"
Make a crossword about programming
Claude handles the full pipeline automatically — word selection, placement, validation, and rendering.
Show solved puzzle (--reveal)
==================================================
CROSSWORD — SOLVED
==================================================
+-------------------------------------------------------------------+
| · · · · · · · · · · · · · · · · ·|
| · · · 1P R O 2M P T · · · · · · · ·|
| · · · · · · O · · · · · · · · · ·|
| · · · · · · D · · · · · · · · · ·|
| · 3D A T A S E 4T · · · · · · · · ·|
| · · · · · · L R · · · · · · · · ·|
| · · · · · · · 5A L G O R I T H M ·|
| · · · · · · · 6I N F E R E N C E ·|
| · · · · · · · N · · · · · · · · ·|
| · · · · · · · I 7W · · · · · · · ·|
| · · · · · · · 8N E U R A L · · · ·|
| · · · · · · · G I · · · · · · · ·|
| · · · · · · · · G · · · · · · · ·|
| · · · · · · · · H · · · · · · · ·|
| · · · · · · · · T · · · · · · · ·|
| · · · · · · · · S · · · · · · · ·|
+-------------------------------------------------------------------+
ACROSS →
1. PROMPT — Text input given to a language model
3. DATASET — Collection of examples used for learning
5. ALGORITHM — Step-by-step procedure for solving a problem
6. INFERENCE — Running a trained model to get predictions
8. NEURAL — Type of network inspired by the brain
DOWN ↓
2. MODEL — Trained AI system that makes predictions
4. TRAINING — Process of teaching a model on data
7. WEIGHTS — Learned numerical parameters inside a neural network
crossword-skill/
├── SKILL.md
├── scripts/
│ ├── suggest.py — finds valid placements for a word
│ ├── validator.py — checks the grid for conflicts
│ ├── render.py — renders the puzzle or solution
│ └── crossword_core.py — shared logic
└── examples/
The skill uses a deterministic Python pipeline for spatial logic — Claude acts as a coordinator, not a grid calculator. This avoids the failure mode where a reasoning model tries to track cell coordinates in its head and produces broken layouts.
Each word is placed by suggest.py, which returns all valid intersecting positions ranked by intersection count. Claude picks the best one and passes the updated grid JSON to the next call.
- Python 3 (standard library only, no pip installs needed)
- Claude Code or any agent that supports the
SKILL.mdformat
MIT
crossword-skill follows the Agent Skills open standard — the same SKILL.md format works across all major CLI agents without modification.
| Agent | Skills path | Install |
|---|---|---|
| Claude Code | ~/.claude/skills/ |
npx skills add zorahm/crossword-skill |
| OpenCode | ~/.claude/skills/ or ~/.agents/skills/ |
npx skills add zorahm/crossword-skill |
| OpenAI Codex | ~/.agents/skills/ |
npx skills add zorahm/crossword-skill |
| Cursor | .cursor/skills/ |
npx skills add zorahm/crossword-skill |
| Gemini CLI / Antigravity | ~/.gemini/antigravity/skills/ |
npx skills add zorahm/crossword-skill |
| Windsurf / Aider / Augment | .agents/skills/ |
npx skills add zorahm/crossword-skill |
Agents use progressive disclosure: at startup only the name and description from the frontmatter are loaded into context. The full SKILL.md body and scripts are fetched on-demand when a task matches the description. This means having many skills installed doesn't slow the agent down.
Invocation is either implicit (agent detects a matching task from the description) or explicit (you mention the skill by name or type /crossword in supported CLIs).
# global — available in every project
git clone https://github.com/zorahm/crossword-skill ~/.claude/skills/crossword
# project-local
git clone https://github.com/zorahm/crossword-skill .claude/skills/crosswordPath mismatch note:
npx skillsinstalls to~/.agents/skills/by default.
Claude Code reads from~/.claude/skills/. If the skill isn't detected, symlink the two:ln -sfn ~/.agents/skills/crossword ~/.claude/skills/crossword