# Uk Solar Planner

> Plan UK ground-mounted (utility-scale) solar farms end-to-end: site suitability, tilt and inter-row spacing, array capacity and annual yield, 3D layout with shadow review, generation forecasting, and DNO grid-connection feasibility. Use whenever a task involves a UK solar farm / solar site / ground-mount PV array — assessing a field or parcel for solar, sizing MW capacity, choosing panel tilt or row spacing, estimating kWh/yield or land use, visualising an array layout, checking inter-row shading, forecasting generation, or grid-connection pre-checks. UK-specific (latitude, ALC land grades, DNO); not for rooftop domestic PV or non-UK sites without adjustment.

- Skill: `dreamlab-ai/uk-solar-planner` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add dreamlab-ai/uk-solar-planner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dreamlab-ai/uk-solar-planner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: dreamlab-ai (https://skillmd.com/u/dreamlab-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dreamlab-ai/uk-solar-planner

---


# UK Ground-Mounted Solar Planner

An end-to-end planner for UK utility-scale ground-mount solar, composing our **qgis** and
**blender** skills with public solar data (PVGIS), UK-tuned forecasting (Open Climate Fix
quartz), and OpenDSS grid modelling. It turns a site (coordinates + area) into a defensible
capacity, yield, layout, and grid-feasibility picture.

## The pipeline (run in order; each stage feeds the next)

| # | Stage | Tool / skill | Status here |
|---|-------|--------------|-------------|
| 1 | **Site suitability** — slope/aspect, ALC land grade, flood zone, grid proximity | **qgis** skill + `references/grid-and-planning.md` | works (qgis sidecar) |
| 2 | **Tilt + spacing + capacity + yield** — the engineering core | `solar-optimize` (+ `pvgis-fetch`) | **works now** (stdlib + live PVGIS) |
| 3 | **3D layout + shadow review** — array on terrain, inter-row winter shadows | `tools/blender_solar_array.py` (**blender** skill) | works (blender / gui-tools sidecar) |
| 4 | **Generation forecast** — 0–48h UK-tuned generation curve | `tools/sidecar_run.sh forecast …` (quartz) | needs sidecar rebuild¹ |
| 5 | **DNO grid feasibility** — voltage rise, thermal, hosting capacity | OpenDSS MCP (register on demand) | needs sidecar rebuild¹ |

¹ Stages 4–5 use Python deps nix can't cleanly package (quartz pulls ML weights at runtime;
opendssdirect vendors a compiled engine), so they're baked into the FHS **gui-tools** sidecar.
Bring them online with `./agentbox.sh gui-tools rebuild` then `./agentbox.sh gui-tools up`.
Stages 1–3 need no rebuild.

## Stage 2 — the engineering core (start here for any sizing question)

```bash
solar-optimize --lat 52.2 --lon -1.5 --area-ha 20 --tilt land
```
Computes, from first principles (see `references/siting-engineering.md` for the cited
formulas): the winter-solstice no-shade **row pitch** and **GCR**, the **tilt** (either the
PVGIS per-module optimum ~38–43°, or the land-optimised ~25–35° that maximises kWh/hectare),
the **module count** and **DC capacity**, the **annual yield** (live PVGIS `PVcalc`), and the
**land-use ratio** sense-checked against the DESNZ 2024 fleet band (1.88–2.7 ha/MW). It emits
warnings when a result falls outside real-world bounds (e.g. GCR too dense) rather than
silently returning an optimistic number.

`pvgis-fetch` is the standalone PVGIS client (annual/monthly yield + PVGIS's own
optimal tilt/azimuth) — stdlib, no deps.

## Stage 3 — 3D layout + shadow review (leverages the blender skill)

```bash
# headless GPU-capable, or run in the gui-tools sidecar:
blender --background --factory-startup --python tools/blender_solar_array.py -- \
  '{"rows":8,"modules_per_row":24,"tilt_deg":30,"row_pitch":9.9,"sun_altitude_deg":15,"render":true}'
```
Builds the racked array on a ground plane, reports GCR/footprint, and (with a sun at the
winter-solstice noon altitude, `90 − lat − 23.44`) casts the **inter-row shadows** that set
the row pitch. Feed `row_pitch`/`tilt` from Stage 2. See the **blender** skill for GPU/sidecar
execution and rendering.

## Stages 4–5 — forecast + grid (sidecar)

```bash
tools/sidecar_run.sh forecast 52.2 -1.5 14420 30 180   # lat lon kWp tilt orientation → 0–48h curve
```
Grid feasibility uses the OpenDSS MCP server (baked in the sidecar); register it on demand for
native tools, or script it via `tools/sidecar_run.sh python …`. `references/grid-and-planning.md`
covers UK DNO connection (G99, LV/11kV/33kV by capacity), what a first-pass OpenDSS model needs,
planning (ALC "Best & Most Versatile" avoidance, NSIP/DCO >50 MW), and SEG export economics.

## References

- `references/siting-engineering.md` — tilt/GCR/PVGIS formulas, UK yield bands, GIS inputs (all cited).
- `references/grid-and-planning.md` — DNO connection, OpenDSS pre-check, UK planning + ALC, SEG.

## Attribution

PVGIS (EU JRC, free public API). quartz-solar-forecast (Open Climate Fix, MIT). opendss-mcp-server
(MIT) wrapping EPRI OpenDSS. All engineering figures are cited to primary sources in the references;
the optimiser and layout tools are original implementations of standard, non-proprietary methods.

