{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sudoku",
    "name": "Sudoku",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/odrobnik/sudoku",
    "canonicalUrl": "https://clawhub.ai/odrobnik/sudoku",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sudoku",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sudoku",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/DATA_FORMAT.md",
      "scripts/sudoku.py",
      "scripts/sudoku_fetcher.py",
      "scripts/sudoku_print_render.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/sudoku"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/sudoku",
    "agentPageUrl": "https://openagent3.xyz/skills/sudoku/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sudoku/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sudoku/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "Fetch, render, and reveal Sudoku puzzles. Use sudoku.py to get new puzzles from sudokuonline.io, generate printable PDFs or images, and reveal solutions.\n\nFor details on the saved JSON format, see DATA_FORMAT.md."
      },
      {
        "title": "Available Puzzle Types",
        "body": "kids4n: Kids 4x4\nkids4l: Kids 4x4 with Letters\nkids6: Kids 6x6\nkids6l: Kids 6x6 with Letters\neasy9: Classic 9x9 (Easy)\nmedium9: Classic 9x9 (Medium)\nhard9: Classic 9x9 (Hard)\nevil9: Classic 9x9 (Evil)"
      },
      {
        "title": "Setup / Requirements",
        "body": "Binaries: python3\nPython libs:\npython3 -m pip install requests Pillow lzstring"
      },
      {
        "title": "Get a Puzzle",
        "body": "Fetches a new puzzle and stores it as JSON. Output is JSON by default (use --text for human-readable output).\n\nUse --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.\n\nUse --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.\n\nGet a Classic Easy puzzle:\n\n./scripts/sudoku.py get easy9\n\nGet multiple new puzzles at once (e.g. 4 easy 9x9):\n\n./scripts/sudoku.py get easy9 --count 4\n\nGet a Kids 6x6 puzzle:\n\n./scripts/sudoku.py get kids6"
      },
      {
        "title": "Render Puzzle",
        "body": "Render a puzzle as an image, PDF, or minimal HTML.\n\nRender latest puzzle as A4 PDF (for printing):\n\n./scripts/sudoku.py render --pdf\n\nRender latest puzzle as clean PNG (for viewing):\n\n./scripts/sudoku.py render\n\nRender a specific previous puzzle by short ID:\n\n./scripts/sudoku.py render --id a09f3680\n\nRender minimal HTML (square cells + bold box lines):\n\n./scripts/sudoku.py html --id a09f3680"
      },
      {
        "title": "Reveal Solution",
        "body": "Reveal the solution for the latest or specific puzzle. Use --id <short_id> (e.g., a09f3680) to target a specific puzzle.\n\nReveal full solution as printable PDF:\n\n./scripts/sudoku.py reveal --pdf\n\nReveal full solution for a specific ID:\n\n./scripts/sudoku.py reveal --id a09f3680 --image\n\nReveal full solution as PNG image:\n\n./scripts/sudoku.py reveal\n\nReveal a single cell (row 3, column 7):\n\n./scripts/sudoku.py reveal --cell 3 7\n\nReveal a specific 3x3 box (index 5):\n\n./scripts/sudoku.py reveal --box 5"
      },
      {
        "title": "Share Link",
        "body": "Generate a share link for a stored puzzle. Targets the latest puzzle by default; use --id <short_id> for a specific one.\n\nGenerate a SudokuPad share link (default):\n\n./scripts/sudoku.py share\n\nGenerate link for specific ID:\n\n./scripts/sudoku.py share --id a09f3680\n\nGenerate an SCL share link:\n\n./scripts/sudoku.py share --type scl\n\nTelegram Formatting Tip:\nFormat links as a short button-style link and hide the full URL: [Easy Classic \\[<id>\\]](<url>)."
      }
    ],
    "body": "Sudoku\nOverview\n\nFetch, render, and reveal Sudoku puzzles. Use sudoku.py to get new puzzles from sudokuonline.io, generate printable PDFs or images, and reveal solutions.\n\nFor details on the saved JSON format, see DATA_FORMAT.md.\n\nAvailable Puzzle Types\nkids4n: Kids 4x4\nkids4l: Kids 4x4 with Letters\nkids6: Kids 6x6\nkids6l: Kids 6x6 with Letters\neasy9: Classic 9x9 (Easy)\nmedium9: Classic 9x9 (Medium)\nhard9: Classic 9x9 (Hard)\nevil9: Classic 9x9 (Evil)\nSetup / Requirements\nBinaries: python3\nPython libs:\npython3 -m pip install requests Pillow lzstring\n\nGet a Puzzle\n\nFetches a new puzzle and stores it as JSON. Output is JSON by default (use --text for human-readable output).\n\nUse --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.\n\nUse --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.\n\nGet a Classic Easy puzzle:\n\n./scripts/sudoku.py get easy9\n\n\nGet multiple new puzzles at once (e.g. 4 easy 9x9):\n\n./scripts/sudoku.py get easy9 --count 4\n\n\nGet a Kids 6x6 puzzle:\n\n./scripts/sudoku.py get kids6\n\nRender Puzzle\n\nRender a puzzle as an image, PDF, or minimal HTML.\n\nRender latest puzzle as A4 PDF (for printing):\n\n./scripts/sudoku.py render --pdf\n\n\nRender latest puzzle as clean PNG (for viewing):\n\n./scripts/sudoku.py render\n\n\nRender a specific previous puzzle by short ID:\n\n./scripts/sudoku.py render --id a09f3680\n\n\nRender minimal HTML (square cells + bold box lines):\n\n./scripts/sudoku.py html --id a09f3680\n\nReveal Solution\n\nReveal the solution for the latest or specific puzzle. Use --id <short_id> (e.g., a09f3680) to target a specific puzzle.\n\nReveal full solution as printable PDF:\n\n./scripts/sudoku.py reveal --pdf\n\n\nReveal full solution for a specific ID:\n\n./scripts/sudoku.py reveal --id a09f3680 --image\n\n\nReveal full solution as PNG image:\n\n./scripts/sudoku.py reveal\n\n\nReveal a single cell (row 3, column 7):\n\n./scripts/sudoku.py reveal --cell 3 7\n\n\nReveal a specific 3x3 box (index 5):\n\n./scripts/sudoku.py reveal --box 5\n\nShare Link\n\nGenerate a share link for a stored puzzle. Targets the latest puzzle by default; use --id <short_id> for a specific one.\n\nGenerate a SudokuPad share link (default):\n\n./scripts/sudoku.py share\n\n\nGenerate link for specific ID:\n\n./scripts/sudoku.py share --id a09f3680\n\n\nGenerate an SCL share link:\n\n./scripts/sudoku.py share --type scl\n\n\nTelegram Formatting Tip: Format links as a short button-style link and hide the full URL: [Easy Classic \\[<id>\\]](<url>)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/odrobnik/sudoku",
    "publisherUrl": "https://clawhub.ai/odrobnik/sudoku",
    "owner": "odrobnik",
    "version": "2.4.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sudoku",
    "downloadUrl": "https://openagent3.xyz/downloads/sudoku",
    "agentUrl": "https://openagent3.xyz/skills/sudoku/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sudoku/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sudoku/agent.md"
  }
}