craft-ls
craft-ls is a Language Server Protocol implementation for *craft1 tools.
craft-ls enables editors that support the LSP to get quality of life improvements while working on *craft configuration files.
Features
| Feature | Snapcraft | Rockcraft | Charmcraft1 |
|---|---|---|---|
| Diagnostics | ✅ | ✅ | ✅ |
| Documentation on hover | ✅ | ✅ | ✅ |
| Symbols | ✅ | ✅ | ✅ |
| Autocompletion | ✅ | ✅ | ✅ |
https://github.com/user-attachments/assets/e4b831b5-dcac-4efd-aabb-d3040899b52b
Usage
Installation
Using uv or pipx
uv tool install craft-ls
pipx install craft-ls
Setup
Helix
# languages.toml
[[language]]
name = "yaml"
language-servers = ["craft-ls"]
[language-server.craft-ls]
command = "craft-ls"
VSCode
The VSCode extension can be installed from the marketplace. It requires a Python 3.12 interpreter. If not automatically picked, you may configure it using the following key:
"craft-ls.interpreter": [
"/usr/bin/python3.12"
]
Neovim
Add the following to your Neovim configuration (e.g., ~/.config/nvim/init.lua
or a plugin file):
vim.lsp.config("craft_ls", {
cmd = { "craft-ls" },
filetypes = { "yaml" },
root_markers = {
"snapcraft.yaml",
"rockcraft.yaml",
"charmcraft.yaml",
"snap",
".git",
},
})
vim.lsp.enable("craft_ls")
Roadmap
Project availability:
- Python package
- Snap
- Nix flake
- VSCode extension
Features:
- Diagnostics
- Autocompletion on typing
- Symbol documentation
Ecosystem:
- Encourage *craft tools to refine their JSONSchemas even further
Metadata
Release files for craft-ls 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| craft_ls-0.5.0.tar.gz | 84.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| craft_ls-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 131.2 kB
Release files / craft_ls-0.5.0.tar.gz
| Download URL | craft_ls-0.5.0.tar.gz |
|---|---|
| Size | 84.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5009c2f34ed29232f06b2c293375ee34a6f4d18f230cd6ec09558d6b96ef625b
|
|
BLAKE2b-256 checksum How to use checksums |
adbf0d7b3449f5d3927186bea12c376049caa0c977ceed690d48d302eb6582ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.
Transparency logRelease files / craft_ls-0.5.0-py3-none-any.whl
| Download URL | craft_ls-0.5.0-py3-none-any.whl |
|---|---|
| Size | 46.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46d8cc53b5ac543750b1fbd2b484ed12155860ad165f20e47b9cd5db6ec14005
|
|
BLAKE2b-256 checksum How to use checksums |
b529392599383b464e85f17b24b0cfe4c949188af888cdc840810ec9c6de1153
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.
Transparency log