Maze

SkillDev tools

Use this skill when the user asks to show, draw, generate, solve, or animate a maze on the screen.

Use Maze in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Maze and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Maze skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

About this skill

ESP-Claw Skills Lab

What this skill tells your AI

The instructions your AI receives, as published by espressif/esp-claw-skills-lab in skills/maze/SKILL.md and read by Ahel’s review.

Use this skill when the user asks to show, draw, generate, solve, or animate a maze on the screen.

Run the bundled Lua script with lua_run_script_async for normal display use:

{"path":"{CUR_SKILL_DIR}/scripts/draw_maze.lua","args":{},"name":"maze","exclusive":"display","replace":true,"log_bytes":2048}

The script computes each maze locally in Lua, plays the maze-generation animation, plays a solving animation from the fixed top-left entrance to the fixed bottom-right exit, holds for 5 seconds, then starts a new maze. It repeats until stopped or replaced by another display job.

If script execution returns an error, report that error directly to the user.

Script Args Schema

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "maximum": 80
    },
    "rows": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "maximum": 60
    },
    "step_size": {
      "type": "integer",
      "default": 3,
      "minimum": 1,
      "maximum": 128
    },
    "solve_step_size": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "maximum": 128
    },
    "frame_delay_ms": {
      "type": "integer",
      "default": 35,
      "minimum": 0,
      "maximum": 2000
    },
    "solve_delay_ms": {
      "type": "integer",
      "default": 35,
      "minimum": 0,
      "maximum": 2000
    },
    "final_hold_ms": {
      "type": "integer",
      "default": 5000,
      "minimum": 0,
      "description": "How long to hold the completed maze before starting the next one. Use 0 with repeat_count 1 to hold a one-shot maze indefinitely."
    },
    "repeat_count": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "description": "Number of mazes to generate. Use 0 for unlimited."
    },
    "seed": {
      "type": "integer",
      "default": 0,
      "description": "Use 0 to seed from local time."
    },
    "wall_color": {
      "type": "string",
      "default": "#ffffff"
    },
    "background": {
      "type": "string",
      "default": "#000000"
    },
    "solve_color": {
      "type": "string",
      "default": "#00ff00"
    }
  }
}

Tool Call Inputs

Continuously generate mazes, solve each one, hold for 5 seconds, then start the next:

{"path":"{CUR_SKILL_DIR}/scripts/draw_maze.lua","args":{},"name":"maze","exclusive":"display","replace":true,"log_bytes":2048}

Generate a larger maze with faster generation and solving:

{"path":"{CUR_SKILL_DIR}/scripts/draw_maze.lua","args":{"columns":40,"rows":20,"step_size":8,"solve_step_size":3,"frame_delay_ms":20,"solve_delay_ms":20},"name":"maze","exclusive":"display","replace":true,"log_bytes":2048}

Generate one maze, animate generation and solving, then hold it on screen:

{"path":"{CUR_SKILL_DIR}/scripts/draw_maze.lua","args":{"repeat_count":1,"final_hold_ms":0},"name":"maze","exclusive":"display","replace":true,"log_bytes":2048}

Recommended Flow

  1. Use lua_run_script_async with name: "maze", exclusive: "display", and replace: true.
  2. Use default args unless the user asks for a specific size, speed, colors, seed, or continuous generation.
  3. Leave columns and rows as 0 to size the maze from the current display. The default auto-size intentionally uses fewer cells so the walls and passages are easier to see. The script fixes the entrance at the left side of the top-left cell and the exit at the right side of the bottom-right cell.
  4. Keep the default repeat_count: 0 and final_hold_ms: 5000 for continuous display. Use repeat_count: 1 and final_hold_ms: 0 only when the user asks for a one-shot maze that should remain visible until stopped or replaced.
  5. Report the async job start result or script error directly to the user.

Signals

GitHub stars
34
Forks
17
Last commit
Sep 2026
Advanced
Item type
skill
Key
maze
Source
github.com/espressif/esp-claw-skills-lab