Skip to content
Development
Skill

/lance-format

Deep reference for Lance v12 columnar format, its Rust crates, and pylance - file encodings, table format, indexes, schema evolution, time travel. Use when building on the Lance crates or reading .lance datasets, not the LanceDB product.

From plugin
tenequm-skills
3630 skills
Install
$ npx -y skills add tenequm/skills --skill lance-format --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/lance-format

Context preview

The summary Claude sees to decide when to auto-load this skill.

Deep reference for Lance v12 columnar format, its Rust crates, and pylance - file encodings, table format, indexes, schema evolution, time travel. Use when building on the Lance crates or reading .lance datasets, not the LanceDB product.

SKILL.md

lance-format.SKILL.md
name: lance-format
description: Deep reference for Lance v12 columnar format, its Rust crates, and pylance - file encodings, table format, indexes, schema evolution, time travel. Use when building on the Lance crates or reading .lance datasets, not the LanceDB product.
metadata:
  version: "0.19.0"
  categories: "development, integrations"
  topics: "lance, columnar-format, vector-search, rust, lakehouse"
  upstream: "lance-format/lance@v12.0.0-beta.15"
  openclaw:
    homepage: https://github.com/tenequm/skills/tree/main/skills/lance-format
    emoji: "🗄️"

Lance v12 reference

Lance is an open columnar format for multimodal AI - "a columnar data format that is 100x faster than Parquet for random access." It is not one format but a stack of interoperating specs: a **file format**, a **table format**, **index formats**, **catalog specs**, and a **namespace client spec**. The Rust workspace at `lance-format/lance` implements all of them plus Python (`pylance`) and Java bindings.

This skill tracks **`v12.0.0-beta.15`** (the `lance-format/lance` git tag), the current development frontier; **`v11.0.0`** is the stable pin. Pin against tags, not `main` - Lance ships beta tags every few days and `next`-format encodings can change. Version landscape below.

Three layers of reference, load what the task needs:

  • **The deep reference** - any concrete schema, parameter, proto, or constraint. Split by topic:

| File in `references/` | Covers | Sections | |------|--------|----------| | `format-file.md` | What Lance is, the 26 crates, file format, data types | 1-4 | | `format-table.md` | Dataset layout, manifests, fragments, schema evolution, versioning/tags/branches, row IDs, transactions + OCC, MemWAL | 5-10 | | `indexes.md` | Vector / scalar / FTS / geo indexes, distributed builds | 11-12 | | `ops.md` | Object store, capability matrix, source map | 13, 15, 16 | | `changelog-v7-v12.md` | The full v7 -> v12 delta | 14 |

Cross-references written as "section N" resolve through `references/lance-reference.md`.

  • `references/performance.md` - ALL performance guidance. Part A routes to the official text and

adds the source-derived changes upstream has not documented; Part B is field-verified remote-storage practice. Load for any performance, tuning, maintenance-cost, or "why is this slow" question.

  • `references/docs/` - a **verbatim mirror of the official docs** (`docs/src` at the tracked

tag): every guide, quickstart, and format spec, unedited. Load when you need the full official text. Directory map below.

`references/maintenance.md` covers refreshing this skill against a new upstream tag.

Lance vs LanceDB

These are two different things and conflating them produces wrong answers.

  • **Lance** - the format and engine. The `lance-format/lance` repo; the `lance` /`lance-*`

Rust crates; `pylance`. It gives you datasets, the file/table format, indexes, commits, scans. Consumed directly by DuckDB, Polars, Ray, Spark, PyTorch, DataFusion, or your own Rust/Python code. **This skill is about Lance.**

  • **LanceDB** - a separate database *product* (`lancedb/lancedb`) built on top of Lance. It

adds a query-builder API, an embedding registry, rerankers-as-API, multi-language SDK parity, and managed Cloud / Enterprise tiers. Not covered here.

**The wider ecosystem** (separate repos, own version lines, none covered here): Flink streaming writes (`lance-flink`), PostgreSQL reads via `pglance`, a Cypher graph engine (`lance-graph`), a dataset browser (`lance-data-viewer`), agentic context management (`lance-context`), and namespace catalogs for Hive, Polaris, Gravitino, Unity Catalog, and AWS Glue. The canonical docs site is **`lance.org`**. Generated per-language SDK docs live at `lance-format.github.io/lance-python-doc` for Python and [javadoc.io](https://www.javadoc.io/doc/org.lance/lance-core/latest/index.html) for Java - the matching `lance-format.github.io/lance-java-doc` path 404s.

Linking the `lance` crate in `Cargo.toml` means you are using Lance directly - use this skill. For LanceDB internals, the storage layer underneath is still Lance, so this skill remains the authority for the format itself.

The crate workspace

26 crate directories under `rust/`. **`lance` is the public entry point** - `Dataset`, scanner, indexes, commits; everything else (`lance-table`, `lance-file`, `lance-encoding`, `lance-index`, `lance-io`, `lance-core`, `lance-datafusion`, `lance-linalg`, `lance-namespace*`, ...) is a layer beneath it. Edition 2024, MSRV 1.91.0, arrow 58, datafusion 54; Python bindings need 3.10+. Full table with roles, versions, and every workspace dep in `references/format-file.md` section 2.

**If you depend on anything below `lance`, v11 will break you** - PRs #8020-#8026 deleted `lance-encoding::version` with no re-export (`LanceFileVersion` and `ConcreteFileVersion` both live in `lance-file::version` now), removed `lance_io::encodings` and the `previous` namespaces, and gave each current format its own `versions/v2_{0,1,2,3}` module. Section 2.1.

The transaction code moved too (#8053/#8054/#8056): `rust/lance/src/dataset/transaction.rs` is **deleted**, replaced by a `rust/lance-table/src/transaction/` module tree (`builder`, `conflicts`, `operation`, `proto`, `manifest_build`, `validate`, `index_maintenance`, `row_version`, `update_map`). A `lance::dataset::transaction` shim still re-exports `Operation`, `Transaction`, `TransactionBuilder`, `RewriteGroup`, `UpdateMap` and friends, so the common surface is unbroken - but a symbol the shim omits, or a citation of the old path, needs retargeting.

File format versions

The file format carries a single major.minor version. Selected per-dataset at creation via `data_storage_version` and **fixed once the dataset exists** (to change it, rewrite the dataset).

| Version | Status | Notes | |---------|--------|-------| | `0.1` (`legacy`) | read-only | Original format; no longer writable | | `2.0` | stab

Read more
Ships withtenequm-skills

Claude Code skills for founders, developers, and web3 builders. This repository publishes reusable skill folders under skills//, ships stable bundle downloads through GitHub Releases, and publishes changed skills to ClawHub.

Get the whole plugin
Stats
36
Stars
1
Forks
Active
Maintenance
Python
Language
MIT
License
2d ago
Last commit
10mo ago
Created

Repo: tenequm/skills

Other skills on tenequm-skills.