{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sun-path",
    "name": "Sun Path & Environmental Analysis",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/QROST/sun-path",
    "canonicalUrl": "https://clawhub.ai/QROST/sun-path",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sun-path",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sun-path",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "PUBLISH.md",
      "SKILL.md",
      "clawhub.json",
      "requirements.txt",
      "scripts/annual_sun_hours.py",
      "scripts/comfort_calc.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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/sun-path"
    },
    "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/sun-path",
    "agentPageUrl": "https://openagent3.xyz/skills/sun-path/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sun-path/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sun-path/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": "Sun Path & Environmental Analysis",
        "body": "This skill provides comprehensive environmental analysis tools for architects and designers."
      },
      {
        "title": "Dependencies",
        "body": "This skill requires Python and the following libraries:\n\npysolar (solar calculations)\nmatplotlib (plotting)\npytz (timezone handling)\nshapely (geometry calculations for shadows)\nnumpy (math)\nrasterio (for terrain/DEM shadow; optional for DEM features)\n\nSetup: OpenClaw does not install Python packages automatically. After installing this skill (e.g. via clawhub install sun-path), run once from the skill folder or with the path to it: pip install -r requirements.txt. If a script fails with ModuleNotFoundError, install the missing package from the list above or from requirements.txt."
      },
      {
        "title": "Sending images to Telegram",
        "body": "Used from the OpenClaw Telegram conversation. Scripts that produce images (plot_sunpath.py, shadow_calc.py, comfort_calc.py, annual_sun_hours.py --output, terrain_shadow.py --plot) write PNG/JPG to the path you pass. Run the script with an --output (or --plot and use the script’s default image path), then send that image file to the user via the OpenClaw message/media tool so they see it in chat.\n\nOpenClaw allowed paths: The message tool only sends files from allowed dirs (~/.openclaw/media/, ~/.openclaw/agents/, or /tmp). Always pass an output path under one of these (e.g. --output ~/.openclaw/media/sunpath.png or /tmp/shadow.png); do not use the skill install directory or sending will fail.\n\nAgent behavior: When the user asks for sun position, sun path diagram, shadow, annual sun hours chart, comfort chart, or terrain shadow, run the corresponding script directly with exec and pass an image output path under an allowed dir; then send the generated PNG/JPG to the user. Do not ask for confirmation; execute and return the image and a short summary."
      },
      {
        "title": "1. Calculate Sun Position",
        "body": "Get the current azimuth and altitude for a specific location.\n\npython3 scripts/sun_calc.py --lat 34.05 --lon -118.24 --timezone \"America/Los_Angeles\""
      },
      {
        "title": "2. Generate Sun Path Diagram",
        "body": "Create a polar chart showing the sun's path throughout the year.\n\npython3 scripts/plot_sunpath.py --lat 34.05 --lon -118.24 --output sunpath.png"
      },
      {
        "title": "3. Shadow Analysis (2D)",
        "body": "Simulate the shadow cast by a simple building (cuboid) at a specific time.\n\nParameters:\n\n--lat, --lon: Location coordinates.\n--time: Date/Time in ISO format (e.g., \"2024-06-21T12:00:00\") or \"now\".\n--width, --depth: Building footprint dimensions (meters).\n--height: Building height (meters).\n--rotation: Rotation in degrees clockwise from North.\n--output: Output image filename.\n\npython3 scripts/shadow_calc.py --lat 34.05 --lon -118.24 --time \"2024-06-21T15:00:00\" --width 15 --depth 10 --height 20 --rotation 45 --output shadow_analysis.png"
      },
      {
        "title": "4. Annual Sun / Shadow Hours at a Point",
        "body": "Compute how many hours per year a given point is in direct sun, in building shadow, or night (sun below horizon). Uses the same building cuboid and 2D shadow model as Shadow Analysis; point is given in meters from building center.\n\nParameters:\n\n--lat, --lon: Location coordinates.\n--width, --depth, --height, --rotation: Building dimensions and rotation (same as shadow analysis).\n--point-x, --point-y: Point to evaluate (meters from building center; e.g. North = positive X if rotation 0).\n--year: Year (default: current year).\n--interval: Sample interval in minutes (default 60; smaller = more accurate, slower).\n--timezone: Timezone for the year (e.g. Asia/Shanghai).\n--output: Optional; save a monthly bar chart (sun / shadow / night hours) to this file.\n\n# Example: point 15 m north of building center, Shanghai, 2024\npython3 scripts/annual_sun_hours.py --lat 31.23 --lon 121.47 --width 10 --depth 10 --height 20 --point-x 15 --point-y 0 --year 2024 --timezone Asia/Shanghai\n\n# With monthly chart\npython3 scripts/annual_sun_hours.py --lat 31.23 --lon 121.47 --width 10 --depth 10 --height 20 --point-x 15 --point-y 0 --year 2024 --timezone Asia/Shanghai --output annual_hours.png\n\nOutput: total hours in sun, in shadow, and at night, plus optional monthly breakdown chart."
      },
      {
        "title": "5. Terrain Shadow (DEM)",
        "body": "Compute binary shadow (sun vs shadow) on terrain from a GeoTIFF DEM at a given time. Uses sun position and ray casting; suitable for modest DEM sizes (for 1GB RAM, keep grid under ~2000×2000 or process smaller crops).\n\nParameters:\n\ndem: Path to GeoTIFF DEM.\n--lat, --lon: Latitude/longitude for sun position.\n--time: Time in ISO format or \"now\" (interpreted in --timezone then converted to UTC).\n--timezone: Timezone name (e.g. Asia/Shanghai).\n--output: Output GeoTIFF path (default: terrain_shadow.tif).\n--plot: Also save a PNG visualization.\n--step: Ray step in pixels (default 1; larger = faster, less accurate).\n\n# Example: shadow at noon local time\npython3 scripts/terrain_shadow.py /path/to/dem.tif --lat 31.23 --lon 121.47 --time \"2024-06-21T12:00:00\" --timezone Asia/Shanghai --output shadow.tif --plot"
      },
      {
        "title": "6. Comfort Analysis (Psychrometric Chart)",
        "body": "Visualize current temperature and humidity on a psychrometric chart to assess thermal comfort.\n\nParameters:\n\n--temp: Dry bulb temperature (°C).\n--rh: Relative humidity (%).\n--output: Output image filename.\n\npython3 scripts/comfort_calc.py --temp 28 --rh 60 --output comfort_chart.png"
      },
      {
        "title": "Examples",
        "body": "User: \"What is the sun position in Los Angeles right now?\"\nAction:\n\nIdentify coordinates for Los Angeles (Lat: 34.05, Lon: -118.24).\nRun sun_calc.py.\nReturn azimuth and altitude.\n\nUser: \"Show me the shadow of a 20m tall, 10x10m building in Shanghai on winter solstice at 2 PM.\"\nAction:\n\nIdentify coordinates (Shanghai: 31.23, 121.47).\n\n\nIdentify time (Winter Solstice: 2024-12-21 14:00).\n\n\nRun shadow_calc.py:\npython3 scripts/shadow_calc.py --lat 31.23 --lon 121.47 --time \"2024-12-21T14:00:00\" --width 10 --depth 10 --height 20 --output shanghai_shadow.png\n\n\n\nReturn the image.\n\nUser: \"Is it comfortable in Singapore right now? Temp is 32C, Humidity 80%.\"\nAction:\n\nRun comfort_calc.py:\npython3 scripts/comfort_calc.py --temp 32 --rh 80 --output singapore_comfort.png\n\n\n\nReturn the image and analysis.\n\nUser: \"How many hours per year is this point in sun vs shadow? Building 10×10×20m, point 15m north.\"\nAction:\n\nRun annual_sun_hours.py with site lat/lon, building dimensions, and --point-x 15 --point-y 0.\nReturn the printed summary (direct sun / shadow / night hours) and optionally the monthly chart if --output was used.\n\nUser: \"Where is the terrain in shadow at this site at 2 PM? I have a DEM.\"\nAction:\n\nRun terrain_shadow.py with the DEM path, site --lat/--lon, and --time (e.g. 14:00 local), --timezone, and --output/--plot.\nReturn the shadow raster and/or PNG and a short summary."
      }
    ],
    "body": "Sun Path & Environmental Analysis\n\nThis skill provides comprehensive environmental analysis tools for architects and designers.\n\nDependencies\n\nThis skill requires Python and the following libraries:\n\npysolar (solar calculations)\nmatplotlib (plotting)\npytz (timezone handling)\nshapely (geometry calculations for shadows)\nnumpy (math)\nrasterio (for terrain/DEM shadow; optional for DEM features)\n\nSetup: OpenClaw does not install Python packages automatically. After installing this skill (e.g. via clawhub install sun-path), run once from the skill folder or with the path to it: pip install -r requirements.txt. If a script fails with ModuleNotFoundError, install the missing package from the list above or from requirements.txt.\n\nSending images to Telegram\n\nUsed from the OpenClaw Telegram conversation. Scripts that produce images (plot_sunpath.py, shadow_calc.py, comfort_calc.py, annual_sun_hours.py --output, terrain_shadow.py --plot) write PNG/JPG to the path you pass. Run the script with an --output (or --plot and use the script’s default image path), then send that image file to the user via the OpenClaw message/media tool so they see it in chat.\n\nOpenClaw allowed paths: The message tool only sends files from allowed dirs (~/.openclaw/media/, ~/.openclaw/agents/, or /tmp). Always pass an output path under one of these (e.g. --output ~/.openclaw/media/sunpath.png or /tmp/shadow.png); do not use the skill install directory or sending will fail.\n\nAgent behavior: When the user asks for sun position, sun path diagram, shadow, annual sun hours chart, comfort chart, or terrain shadow, run the corresponding script directly with exec and pass an image output path under an allowed dir; then send the generated PNG/JPG to the user. Do not ask for confirmation; execute and return the image and a short summary.\n\nUsage\n1. Calculate Sun Position\n\nGet the current azimuth and altitude for a specific location.\n\npython3 scripts/sun_calc.py --lat 34.05 --lon -118.24 --timezone \"America/Los_Angeles\"\n\n2. Generate Sun Path Diagram\n\nCreate a polar chart showing the sun's path throughout the year.\n\npython3 scripts/plot_sunpath.py --lat 34.05 --lon -118.24 --output sunpath.png\n\n3. Shadow Analysis (2D)\n\nSimulate the shadow cast by a simple building (cuboid) at a specific time.\n\nParameters:\n\n--lat, --lon: Location coordinates.\n--time: Date/Time in ISO format (e.g., \"2024-06-21T12:00:00\") or \"now\".\n--width, --depth: Building footprint dimensions (meters).\n--height: Building height (meters).\n--rotation: Rotation in degrees clockwise from North.\n--output: Output image filename.\npython3 scripts/shadow_calc.py --lat 34.05 --lon -118.24 --time \"2024-06-21T15:00:00\" --width 15 --depth 10 --height 20 --rotation 45 --output shadow_analysis.png\n\n4. Annual Sun / Shadow Hours at a Point\n\nCompute how many hours per year a given point is in direct sun, in building shadow, or night (sun below horizon). Uses the same building cuboid and 2D shadow model as Shadow Analysis; point is given in meters from building center.\n\nParameters:\n\n--lat, --lon: Location coordinates.\n--width, --depth, --height, --rotation: Building dimensions and rotation (same as shadow analysis).\n--point-x, --point-y: Point to evaluate (meters from building center; e.g. North = positive X if rotation 0).\n--year: Year (default: current year).\n--interval: Sample interval in minutes (default 60; smaller = more accurate, slower).\n--timezone: Timezone for the year (e.g. Asia/Shanghai).\n--output: Optional; save a monthly bar chart (sun / shadow / night hours) to this file.\n# Example: point 15 m north of building center, Shanghai, 2024\npython3 scripts/annual_sun_hours.py --lat 31.23 --lon 121.47 --width 10 --depth 10 --height 20 --point-x 15 --point-y 0 --year 2024 --timezone Asia/Shanghai\n\n# With monthly chart\npython3 scripts/annual_sun_hours.py --lat 31.23 --lon 121.47 --width 10 --depth 10 --height 20 --point-x 15 --point-y 0 --year 2024 --timezone Asia/Shanghai --output annual_hours.png\n\n\nOutput: total hours in sun, in shadow, and at night, plus optional monthly breakdown chart.\n\n5. Terrain Shadow (DEM)\n\nCompute binary shadow (sun vs shadow) on terrain from a GeoTIFF DEM at a given time. Uses sun position and ray casting; suitable for modest DEM sizes (for 1GB RAM, keep grid under ~2000×2000 or process smaller crops).\n\nParameters:\n\ndem: Path to GeoTIFF DEM.\n--lat, --lon: Latitude/longitude for sun position.\n--time: Time in ISO format or \"now\" (interpreted in --timezone then converted to UTC).\n--timezone: Timezone name (e.g. Asia/Shanghai).\n--output: Output GeoTIFF path (default: terrain_shadow.tif).\n--plot: Also save a PNG visualization.\n--step: Ray step in pixels (default 1; larger = faster, less accurate).\n# Example: shadow at noon local time\npython3 scripts/terrain_shadow.py /path/to/dem.tif --lat 31.23 --lon 121.47 --time \"2024-06-21T12:00:00\" --timezone Asia/Shanghai --output shadow.tif --plot\n\n6. Comfort Analysis (Psychrometric Chart)\n\nVisualize current temperature and humidity on a psychrometric chart to assess thermal comfort.\n\nParameters:\n\n--temp: Dry bulb temperature (°C).\n--rh: Relative humidity (%).\n--output: Output image filename.\npython3 scripts/comfort_calc.py --temp 28 --rh 60 --output comfort_chart.png\n\nExamples\n\nUser: \"What is the sun position in Los Angeles right now?\" Action:\n\nIdentify coordinates for Los Angeles (Lat: 34.05, Lon: -118.24).\nRun sun_calc.py.\nReturn azimuth and altitude.\n\nUser: \"Show me the shadow of a 20m tall, 10x10m building in Shanghai on winter solstice at 2 PM.\" Action:\n\nIdentify coordinates (Shanghai: 31.23, 121.47).\n\nIdentify time (Winter Solstice: 2024-12-21 14:00).\n\nRun shadow_calc.py:\n\npython3 scripts/shadow_calc.py --lat 31.23 --lon 121.47 --time \"2024-12-21T14:00:00\" --width 10 --depth 10 --height 20 --output shanghai_shadow.png\n\n\nReturn the image.\n\nUser: \"Is it comfortable in Singapore right now? Temp is 32C, Humidity 80%.\" Action:\n\nRun comfort_calc.py:\n\npython3 scripts/comfort_calc.py --temp 32 --rh 80 --output singapore_comfort.png\n\n\nReturn the image and analysis.\n\nUser: \"How many hours per year is this point in sun vs shadow? Building 10×10×20m, point 15m north.\" Action:\n\nRun annual_sun_hours.py with site lat/lon, building dimensions, and --point-x 15 --point-y 0.\nReturn the printed summary (direct sun / shadow / night hours) and optionally the monthly chart if --output was used.\n\nUser: \"Where is the terrain in shadow at this site at 2 PM? I have a DEM.\" Action:\n\nRun terrain_shadow.py with the DEM path, site --lat/--lon, and --time (e.g. 14:00 local), --timezone, and --output/--plot.\nReturn the shadow raster and/or PNG and a short summary."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/QROST/sun-path",
    "publisherUrl": "https://clawhub.ai/QROST/sun-path",
    "owner": "QROST",
    "version": "1.4.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sun-path",
    "downloadUrl": "https://openagent3.xyz/downloads/sun-path",
    "agentUrl": "https://openagent3.xyz/skills/sun-path/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sun-path/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sun-path/agent.md"
  }
}