versa/skills/shortbread/SKILL.md
Shortbread vector-tile schema generation via Tilemaker. The Shortbread schema (https://shortbread-tiles.org) is the de-facto general-purpose OSM vector-tile schema; the layer builds systemed/tilemaker (C++/Lua) from source and bundles the official shortbread-tiles/shortbread-tilemaker Lua + JSON configuration. The notebook's `notebook_osm_shortbread_pipeline` DAG invokes tilemaker on the Monaco PBF to produce `/workspace/tiles/shortbread/monaco-shortbread.pmtiles`, which the versatiles serve service auto-discovers. MUST be invoked before building, deploying, or troubleshooting the shortbread layer.
npx skillsauth add overthinkos/overthink-plugins shortbreadInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | supervisord (transitive; no service of its own) |
| Distros | arch + fedora (tilemaker is source-built) |
| Build deps | git, make, gcc/gcc-c++, lua/lua-devel, sqlite/sqlite-devel, boost+boost-libs/boost-devel, protobuf/protobuf-devel, shapelib/shapelib-devel, zlib-devel (Fedora only — Arch uses zlib-ng-compat) |
| Output dir | /workspace/tiles/shortbread/ (versatiles serve watches this) |
| Tools installed | /usr/local/bin/tilemaker, /opt/shortbread-tilemaker/{config.json,process.lua,...} |
systemed/tilemaker ships no Arch/Fedora package and no GitHub release
binaries. Build from source mirrors the existing tippecanoe pattern in
/charly-versa:osm-tools-layer: shallow clone → make -j$(nproc) →
make install PREFIX=/usr/local. Build duration: ~2-3 minutes on a
warm package cache; binary lands at /usr/local/bin/tilemaker.
shortbread-tiles/shortbread-tilemaker ships:
process.lua — per-feature Lua classifier (decides which OSM tags
go into which vector-tile layer at which zoom)config.json — layer/zoom schema definition consumed by tilemaker
via --configget-shapefiles.sh, build_test_dataset.sh — helper scripts (not
used by the in-pod DAG; bundled for operator reference)The bundle is cloned to /opt/shortbread-tilemaker/ at image-build
time with .git/ removed (image-size reduction).
@task
def tilemaker_convert() -> str:
pbf = "/workspace/tiles/work/monaco.osm.pbf"
out = "/workspace/tiles/shortbread/monaco-shortbread.pmtiles"
subprocess.run([
"tilemaker",
"--input", pbf,
"--output", out,
"--config", "/opt/shortbread-tilemaker/config.json",
"--process", "/opt/shortbread-tilemaker/process.lua",
], check=True)
return out
Tilemaker v3.0+ detects the .pmtiles extension on --output and
produces a PMTiles archive directly (no .mbtiles intermediate).
Monaco-scale runs complete in ~30 seconds.
Build-scope:
tilemaker-installed — tilemaker --version exit 0shortbread-process-lua — /opt/shortbread-tilemaker/process.lua existsshortbread-config-json — /opt/shortbread-tilemaker/config.json existsDeploy-scope:
shortbread-tiles-dir-runtime — /workspace/tiles/shortbread/ exists/charly-versa:versa — image composing this layer/charly-versa:versatiles — the tile-server service that auto-discovers
/workspace/tiles/shortbread/*.pmtiles files/charly-versa:versatiles-style — MapLibre style generator targeting
the Shortbread schema (the notebook's shortbread cell renders the
pipeline output using colorful())/charly-versa:notebook-osm — DAG cell 2 self-authors the
notebook_osm_shortbread_pipeline that drives this layer/charly-versa:osm-tools-layer — sibling tippecanoe pipeline + martin
tile server (parallel infrastructure on port 23000)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).