versa/skills/versatiles-style/SKILL.md
@versatiles/style — TypeScript npm package that generates MapLibre style JSON for the Shortbread vector-tile schema. Installed locally (npm install + copy browser bundle to /opt/versatiles-style/) so the notebook's MapLibre HTML can `<script src>` the locally-served JS without a CDN dependency. Re-exported by the versatiles-frontend layer's http.server at /style/ so the notebook's mo.iframe (which can only fetch absolute URLs) can reach the bundle. MUST be invoked before building, deploying, or troubleshooting the versatiles-style layer.
npx skillsauth add overthinkos/overthink-plugins versatiles-styleInstall 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 |
| Build deps | nodejs, npm |
| Install path | /opt/versatiles-style/ |
| Re-exported at | /opt/versatiles-frontend/style/ (by the versatiles-frontend layer) |
versatiles-style ships six style generators, all targeting the
Shortbread vector-tile schema:
| Function | Output character |
|---|---|
| colorful({ language }) | Vivid colors, full feature set |
| eclipse({ language }) | Dark theme |
| graybeard({ language }) | Grayscale |
| neutrino({ language }) | Minimal / blueprint style |
| shadow({ language }) | Subtle hillshade-friendly |
| satellite({ language }) | Satellite-imagery overlay style |
Each returns a MapLibre style JSON object (style.version, .sources,
.layers, .glyphs, .sprite). The default source URL points at
tiles.versatiles.org; the notebook patches style.sources.versatiles.tiles
to our local versatiles serve.
The package's README documents both an npm-install path and a
standalone GitHub release tarball. We prefer the GitHub release
tarball (versatiles-style.tar.gz) because it ships the browser-
ready bundle directly. The layer has a two-tier install:
versatiles-style.tar.gz from the latest
GitHub release and extract to /opt/versatiles-style/.npm install @versatiles/style and copy
node_modules/@versatiles/style/release/ (or the whole package
if release/ is missing) to /opt/versatiles-style/.The fallback covers cases where the GitHub release is missing the expected tarball asset.
The notebook's shortbread MapLibre cell uses mo.iframe, whose
srcdoc HTML can only fetch absolute URLs (not server-relative
paths against the marimo edit server). The bundle is re-exported
at /opt/versatiles-frontend/style/versatiles-style.js by the
versatiles-frontend layer's python -m http.server, so the
iframe references:
<script src="http://127.0.0.1:28002/style/versatiles-style.js"></script>
Single-origin against the versatiles-frontend service avoids
cross-origin CORS issues that would otherwise need explicit
Access-Control-Allow-Origin: * headers.
Build-scope:
versatiles-style-bundle-present — find /opt/versatiles-style -maxdepth 3 -name 'versatiles-style*.js' -size +1c matches at least one non-empty file (the install path's exact filename depends on package version; the find pattern is lenient)/charly-versa:versa — image composing this layer/charly-versa:versatiles — the tile-server backend the generated
styles point at after URL patching/charly-versa:versatiles-frontend — re-exports this bundle at
/style/ for iframe consumption/charly-versa:shortbread — the tile schema the styles render/charly-versa:notebook-osm — the shortbread MapLibre cell that
imports colorful() from the bundletools
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).