Sudoku
Fetch Sudoku puzzles and store them as JSON in the workspace; render images on demand; reveal solutions later. Skill: Sudoku Owner: odrobnik Summary: Fetch Sudoku puzzles and store them as JSON in the workspace; render images on demand; reveal solutions later. Tags: latest:2.4.0 Version history: v2.4.0 | 2026-02-24T12:37:17.103Z | user Add minimal HTML renderer with centered values + bold subgrid lines; harden ID handling and remove user-input glob patterns; replace regex array extraction with safer parser in fetchers v2.3.0
Rank
62
Safety
84
Downloads
3.1k
Updated
Apr 15, 2026
Version
2.4.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 3.1K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Adoption signal
- 3.1K downloadsadoption · observed Apr 15, 2026
- Latest release
- 2.4.0release · observed Feb 24, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn7c7fek4a503rbvj0bxbwx6dx7yw25e:sudoku- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-odrobnik-sudoku/snapshot"
Documentation
CLAWHUB
16,746 characters of source documentation, loaded on request.
Extracted files
3 files captured from the source.
SKILL.md
---
name: sudoku
description: Fetch Sudoku puzzles and store them as JSON in the workspace; render images on demand; reveal solutions later.
version: 2.4.0
homepage: https://github.com/odrobnik/sudoku-skill
metadata:
openclaw:
emoji: "🧩"
requires:
bins: ["python3"]
python: ["requests", "Pillow", "lzstring"]
---
# Sudoku
## Overview
Fetch, render, and reveal Sudoku puzzles. Use `sudoku.py` to get new puzzles from `sudokuonline.io`, generate printable PDFs or images, and reveal solutions.
For details on the saved JSON format, see [DATA_FORMAT.md](references/DATA_FORMAT.md).
## Available Puzzle Types
* `kids4n`: Kids 4x4
* `kids4l`: Kids 4x4 with Letters
* `kids6`: Kids 6x6
* `kids6l`: Kids 6x6 with Letters
* `easy9`: Classic 9x9 (Easy)
* `medium9`: Classic 9x9 (Medium)
* `hard9`: Classic 9x9 (Hard)
* `evil9`: Classic 9x9 (Evil)
## Setup / Requirements
- Binaries: `python3`
- Python libs:
```bash
python3 -m pip install requests Pillow lzstring
```
## Get a Puzzle
Fetches a new puzzle and stores it as JSON. Output is JSON by default (use `--text` for human-readable output).
Use `--count N` to fetch/store multiple puzzles in one call. If a batch does not contain enough unseen puzzles, the command will fetch additional batches until it has enough.
Use `--id <fragment>` to select a specific source puzzle by matching any unique part of its UUID. If multiple IDs match, the command errors and lists candidates.
**Get a Classic Easy puzzle:**
```bash
./scripts/sudoku.py get easy9
```
**Get multiple new puzzles at once (e.g. 4 easy 9x9):**
```bash
./scripts/sudoku.py get easy9 --count 4
```
**Get a Kids 6x6 puzzle:**
```bash
./scripts/sudoku.py get kids6
```
## Render Puzzle
Render a puzzle as an image, PDF, or minimal HTML.
**Render latest puzzle as A4 PDF (for printing):**
```bash
./scripts/sudoku.py render --pdf
```
**Render latest puzzle as clean PNG (for viewing):**
```bash
./scripts/sudoku.py render
```
**Render a specific previous puzzle by short ID:**
```bash
./scripts/sudoku.py render --id a09f3680
```
**Render minimal HTML (square cells + bold box lines):**
```bash
./scripts/sudoku.py html --id a09f3680
```
## Reveal Solution
Reveal the solution for the latest or specific puzzle. Use `--id <short_id>` (e.g., `a09f3680`) to target a specific puzzle.
**Reveal full solution as printable PDF:**
```bash
./scripts/sudoku.py reveal --pdf
```
**Reveal full solution for a specific ID:**
```bash
./scripts/sudoku.py reveal --id a09f3680 --image
```
**Reveal full solution as PNG image:**
```bash
./scripts/sudoku.py reveal
```
**Reveal a single cell (row 3, column 7):**
```bash
./scripts/sudoku.py reveal --cell 3 7
```
**Reveal a specific 3x3 box (index 5):**
```bash
./scripts/sudoku.py reveal --box 5
```
## Share Link
Generate a share link for a stored puzzle. Targets the latest puzzle by default; use `--id <short_id>` for a specific one.
**Generate a SudokuPad share link (default):**
`_meta.json
{
"ownerId": "kn7c7fek4a503rbvj0bxbwx6dx7yw25e",
"slug": "sudoku",
"version": "2.4.0",
"publishedAt": 1771936637103
}references/DATA_FORMAT.md
# Sudoku Data Format The Sudoku skill persists puzzle state in JSON files stored in `sudoku/puzzles/`. ## File Naming Format: `YYYY-MM-DD_HHMMSSZ_<preset>_<size>x<size>_<short_id>.json` Example: `2026-01-25_124059Z_easy9_9x9_2b8d9c35.json` ## Schema The root object contains: | Field | Type | Description | | :--- | :--- | :--- | | **`version`** | `int` | Schema version (currently `2`). | | **`created_utc`** | `string` | ISO timestamp of creation (e.g., `2026-01-25_124059Z`). | | **`preset`** | `object` | Details about the puzzle source preset. | | **`picked`** | `object` | Details about the specific puzzle selection. | | **`size`** | `int` | Grid size (e.g., `9` or `6`). | | **`block`** | `object` | Block dimensions (`bw` width, `bh` height). | | **`clues`** | `int[][]` | The initial grid (0 = empty). | | **`solution`** | `int[][]` | The fully solved grid. | | **`share`** | `object` | Pre-generated share link details. | ### `preset` Object * **`key`** *(string)*: Preset ID (e.g., `easy9`, `kids6`). * **`desc`** *(string)*: Human-readable name. * **`url`** *(string)*: Source URL. * **`letters`** *(bool)*: `true` if using letters (A-I) instead of numbers. ### `picked` Object Stores provenance data about the specific puzzle chosen from the source batch. * **`id`** *(string)*: Unique puzzle UUID from the source. * **`index`** *(int)*: The zero-based index of this puzzle in the downloaded batch. * **`total`** *(int)*: Total number of puzzles available in the source batch at fetch time. ### `clues` / `solution` Arrays A 2D array (list of lists) representing the grid rows. * `0`: Empty cell (clues only). * `1-9`: Cell value (or 1-N for other sizes). ### `share` Object * **`kind`** *(string)*: Type of share link (`native`, `scl`, or `none`). * **`link`** *(string|null)*: The generated share URL.
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/odrobnik/sudoku",
"sourceUrl": "https://clawhub.ai/odrobnik/sudoku",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "3.1K downloads",
"href": "https://clawhub.ai/odrobnik/sudoku",
"sourceUrl": "https://clawhub.ai/odrobnik/sudoku",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.4.0",
"href": "https://clawhub.ai/odrobnik/sudoku",
"sourceUrl": "https://clawhub.ai/odrobnik/sudoku",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-24T12:37:17.103Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-odrobnik-sudoku/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-odrobnik-sudoku/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.4.0",
"description": "Add minimal HTML renderer with centered values + bold subgrid lines; harden ID handling and remove user-input glob patterns; replace regex array extraction with safer parser in fetchers",
"href": "https://clawhub.ai/odrobnik/sudoku",
"sourceUrl": "https://clawhub.ai/odrobnik/sudoku",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-24T12:37:17.103Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
