Downloads

Downloads.

Designer LLM prompt templates, the four canonical example records, the JSON Schema, and the Go reference validator.

On this page

Designer LLM prompt templates

Five ready-to-use prompts. Paste one into ChatGPT, Claude, or Gemini, attach a .ulc.json file, and you get back a clean spec sheet, an apples-to-apples comparison, a schedule-ready table, a VE sanity check, or a trace of where every value came from. Need a file to try them on? Grab a sample below.

Prompt 1

Render a .ulc file as a spec sheet

Read the attached `.ulc.json` file. Render it as a clean spec sheet with sections for product identity, electrical, optical / photometric, physical, and accessories. Call out any fields that are missing or flagged as unknown. If a SHA-256 source-file hash is present, note which source file each measured attribute traces back to.

Prompt 2

Compare two .ulc files

Read the two attached `.ulc.json` files. Compare them on CRI, CCT range, wattage, optical accessory options, mounting kit, IP rating, and dim-to-warm behavior. Flag any field where the products diverge materially or where one declares the field and the other does not. End with a one-paragraph recommendation framed around which product fits a [project type] application.

Prompt 3

Extract attributes for a luminaire-schedule line

Read the attached `.ulc.json` files. For each file, extract [CRI, CCT options, optical accessories, mounting kit, IP rating]. Return the result as a luminaire-schedule-ready table with one row per product and one column per attribute. Note any product missing any of the requested attributes.

Prompt 4

Sanity-check a VE package

Read the two attached `.ulc.json` files: the original specified product and the VE-proposed alternative. Compare them on CRI, CCT, wattage, optical distribution, mounting type, dimming method, and any field flagged as missing or unknown. Explicitly state whether the VE alternative matches the original design intent on each compared field. End with a flag list of fields where the VE alternative deviates materially.

Prompt 5

Pull the source-file provenance for an attribute

Read the attached `.ulc.json` file. For each measured attribute (CRI, CCT, wattage, photometric distribution, IP rating, optical accessories), identify which source file (PDF, IES, or LDT) the value traces back to via the per-field provenance + SHA-256 hash. Return the answer as a list mapping attribute to source file.

Try a sample .ulc file →

Canonical example records

Four reference records, one per manufacturer authoring pattern, built from real manufacturer spec sheets. These are the files you drop into the prompts above.

Each record's conformance level (core, standard, or full) is computed by the validator from the data the record carries, not self-declared.

Learn more about the four authoring patterns →

JSON Schema

The ULC schema, written to JSON Schema Draft 2020-12, served at /schema/ulc.json with the application/schema+json content type.

Point any Draft 2020-12 library at this file to validate records, no extra configuration needed. Conformant records declare ulc_version 0.6.0, the current schema level.

ulc.json

Schema level 0.6.0 · Draft 2020-12

Download ulc.json

Browse the schema with field-level documentation →

Go reference validator

The canonical reference implementation: ulc, a single-file Go binary that validates records against the schema, verifies source-file hashes, regenerates the index block, and converts a manufacturer workbook into validated records with ulc from-sheet. Released via GitHub Releases on the spec repository.

ulc v0.6.1

Released June 3, 2026

Release notes on GitHub →

Pick the binary for your platform. Each download is accompanied by the full SHA-256 checksum for integrity verification.

  • macOS · Apple Silicon (arm64)

    ulc_0.6.1_darwin_arm64.tar.gz

    1.5 MiB

    Download →

    SHA-256: b66576e6ac1c7b452150952aebea505241ac4020045cf300dcefc7ff274eda1b

  • macOS · Intel (amd64)

    ulc_0.6.1_darwin_amd64.tar.gz

    1.6 MiB

    Download →

    SHA-256: 7ae923b281fc9d075b09885d4b83b5ba60662a9d6cdc400b5bde88e85de5a1e7

  • Linux · arm64

    ulc_0.6.1_linux_arm64.tar.gz

    1.4 MiB

    Download →

    SHA-256: 55ef1c39f4725fe2fa6cdb315f373419e87a75900dc1804fefaeb32ab2ef8d0d

  • Linux · amd64

    ulc_0.6.1_linux_amd64.tar.gz

    1.6 MiB

    Download →

    SHA-256: dc197c52238357dca216deb89a62f59ff15ec28e28bd545266fb9d022fb4e61b

  • Windows · arm64

    ulc_0.6.1_windows_arm64.zip

    1.5 MiB

    Download →

    SHA-256: 941643bd963462f12ea758020ad823cca079bb278883b0a1dc4f4b78b943d46d

  • Windows · amd64

    ulc_0.6.1_windows_amd64.zip

    1.6 MiB

    Download →

    SHA-256: c558a25349b9535ac2a54e281f2a3b515dbfda4a29e1c06f115281528c143795

Install instructions

macOS / Linux: Mark the downloaded file executable: chmod +x ulc-<platform>-<arch>. Move it onto your PATH, for example /usr/local/bin/ulc. Run ulc --version to confirm.

Windows: Download the .exe. Add the containing directory to your PATH environment variable. Open a new terminal and run ulc --version to confirm.

Previous releases

The five most-recent stable releases are listed below with version, release date, and a link to the release notes on GitHub. For the full release history, see the Releases page on the spec repository.