Language support

ESML is a polyglot project. This page lists every language we support in the repo, the LSP server used for code intelligence, the formatter and linter, and the command that installs it.

Matrix

Language

LSP server

Formatter

Linter

Install

Python

pyright

ruff format

ruff check

bash scripts/setup_lang_support.sh python

Rust

rust-analyzer

rustfmt

clippy

bash scripts/setup_lang_support.sh rust

C

clangd

clang-format

clang-tidy

bash scripts/setup_lang_support.sh c

C++

clangd

clang-format

clang-tidy

bash scripts/setup_lang_support.sh cpp

Go

gopls

gofmt

golangci-lint

bash scripts/setup_lang_support.sh go

JavaScript

typescript-language-server

prettier

eslint

bash scripts/setup_lang_support.sh javascript

TypeScript

typescript-language-server

prettier

eslint + tsc --noEmit

bash scripts/setup_lang_support.sh typescript

R

languageserver

styler

lintr

bash scripts/setup_lang_support.sh r

Bash

bash-language-server

shfmt

shellcheck

bash scripts/setup_lang_support.sh bash

Zsh

bash-language-server

shfmt -ln bash

shellcheck --shell=bash

bash scripts/setup_lang_support.sh zsh

POSIX shell

bash-language-server

shfmt -ln posix

shellcheck --shell=sh

bash scripts/setup_lang_support.sh shell

SQL

sqls

sqlfluff fix

sqlfluff lint

bash scripts/setup_lang_support.sh sql

Lua

lua-language-server

stylua

bash scripts/setup_lang_support.sh lua

One-shot install

bash scripts/setup_lang_support.sh all

Post-edit formatter hook

Whenever Claude Code edits a source file in this repo, a PostToolUse hook dispatches the matching formatter + linter automatically. The hook is defined in .claude/settings.json and the dispatch script lives at .claude/hooks/lang_format.sh.

If a formatter is not installed, the hook warns and continues — it never blocks the edit. Run /esml-lang-setup <lang> to install the missing tool.

Model Context Protocol servers

Project-scoped MCP servers are declared in .mcp.json at the repo root:

Name

Purpose

Auth

filesystem

File ops scoped to dev/sphinx/project/

none

sqlite-esml

Read-only queries against esml_datasets.db (41 datasets)

none

git

Structured git operations beyond plain Bash

none

github

Issues and PRs on the EpiNodes org

GITHUB_TOKEN

fetch

HTTP fetch for CKAN API and docs

none

memory

Alternative persistence store for Perseus

none

Skills

Custom ESML skills live under .claude/skills/esml-*/SKILL.md:

  • /esml-lang-setup <lang,...> — install tooling for one or more languages

  • /esml-lang-check [staged|all] — run the lint+format matrix over changed files

  • /esml-perseus-vision [plan|scaffold|status] — scaffold the Perseus vision feature

  • /esml-polyglot-add <lang> — add a new language backend to the REPL polyglot mode

  • /esml-frontend <cmd> <surface> — frontend design via the vendored Impeccable skills

Eighteen additional frontend design skills live under .claude/skills/impeccable, audit, polish, critique, layout, typeset, colorize, animate, delight, adapt, bolder, clarify, distill, harden, optimize, overdrive, quieter, shape — vendored from https://github.com/pbakaus/impeccable (Apache 2.0).