Skip to content

Lucafile: tools ​

The tools: section of your Lucafile tells Luca which binary tools to install and where to find them.

Scaffolding a Lucafile ​

Generate a starter Lucafile in the current directory:

bash
luca init

Full Schema ​

yaml
---
tools:
  - name: ToolName              # Logical name used for installation and listing
    version: 1.2.3              # Version string (used for caching and display)
    url: https://...            # URL to a binary archive or a raw executable
    binaryPath: path/to/bin     # Path inside the archive to the binary (omit for raw executables)
    desiredBinaryName: toolname # Override the binary name stored locally (raw executables only)
    checksum: e0a6540d...       # Hash of the asset for integrity verification (recommended)
    algorithm: sha256           # Hash algorithm: md5, sha1, sha256, or sha512

Field Reference ​

FieldRequiredDescription
nameYesLogical name. Used for luca uninstall <name>, luca linked, and caching.
versionYesVersion string. Determines the cache path ~/.luca/tools/<name>/<version>/.
urlYesRemote URL to a .zip archive or a raw executable. See Private Repos & GitHub Enterprise for authenticating URLs on private hosts.
binaryPathNoPath to the binary inside the archive. Omit when url points to a raw executable.
desiredBinaryNameNoOverride the local binary name. Only valid when url is a raw executable.
checksumNoHash of the downloaded asset. Strongly recommended — Luca warns when missing.
algorithmNoHash algorithm. Defaults to sha256. Options: md5, sha1, sha256, sha512.

Examples ​

Tool distributed as a zip archive:

yaml
tools:
  - name: SwiftLint
    binaryPath: SwiftLintBinary.artifactbundle/swiftlint-0.61.0-macos/bin/swiftlint
    version: 0.61.0
    url: https://github.com/realm/SwiftLint/releases/download/0.61.0/SwiftLintBinary.artifactbundle.zip
    checksum: e0a6540d01434f43633...
    algorithm: sha256

Raw executable (no archive):

yaml
tools:
  - name: FirebaseCLI
    version: 14.12.1
    url: https://github.com/firebase/firebase-tools/releases/download/v14.12.1/firebase-tools-macos
    desiredBinaryName: firebase

Spec File Names ​

Luca discovers spec files by looking for any file in the current directory whose name starts with Lucafile, Toolfile, or Skillfile. All names accept the same YAML structure.

Lucafile          # default
Lucafile.yml      # YAML extension variant
Toolfile          # tool-only file
Skillfile         # skill-only file
Lucafile-ci       # named variant (e.g. for CI-only tools)

Named variants (suffixed with -<name>) let you maintain separate specs for different contexts — for example Lucafile-dev for development tools and Lucafile-ci for CI tools — without mixing them in a single file.

Installing Only Tools ​

Skip skills when running luca install:

bash
luca install --only-tools

Released under the Apache 2.0 License.