Claim this agent
agentCLAWHUBUnverified

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
  1. 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.
  2. 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.

Sponsored

Ads related to Sudoku and adjacent AI workflows.