Skip to content

Supported Languages

Taskless checks code with ast-grep and prose with Vale. What a rule can read is whatever those two engines can read, so the lists below come from each engine at the version @taskless/cli@0.11.2 ships.

A language missing here can still be enforced. A linter rule is written for a tool your repository already runs, and a runtime rule can read anything.

ast-grep parses 28 languages. The second column is ast-grep’s own spelling, which is what a rule’s language: field takes.

Languagelanguage:
BashBash
CC
C#CSharp
C++Cpp
CSSCss
DartDart
ElixirElixir
GoGo
HaskellHaskell
HCL (Terraform)Hcl
HTMLHtml
JavaJava
JavaScriptJavaScript
JSONJson
KotlinKotlin
LuaLua
MarkdownMarkdown
NixNix
PHPPhp
PythonPython
RubyRuby
RustRust
ScalaScala
SoliditySolidity
SwiftSwift
TSX (TypeScript with JSX)Tsx
TypeScriptTypeScript
YAMLYaml

TypeScript and Tsx are separate parsers, so a rule over .tsx files must say Tsx. The list comes from ast-grep run -h on the pinned binary.

Vale picks how to read a file from its extension. These lists come from FormatByExtension in Vale’s source at v3.21.0.

The whole document is prose, and the format’s own syntax is skipped.

FormatExtensions
AsciiDoc.adoc, .asciidoc, .asc
DITA.dita
HTML.html, .htm, .shtml, .xhtml
Jupyter Notebook.ipynb
Markdown.md, .mdown, .markdown, .markdn, .rmd
MDX.mdx
MyST.myst
Org.org
QDoc.qdoc, .qdocinc
Quarto.qmd
reStructuredText.rst, .rest
Typst.typ
XML.xml, .xsd

AsciiDoc, DITA, reStructuredText, Typst, and XML are on this list because Vale reads them by calling an external program. Taskless ships none of those programs and leaves these files out of the Vale run, so a repository checks the same way on every machine.

Only the comments are read. The code itself is invisible to a Vale rule.

FormatExtensions
C and C++.cpp, .cc, .c, .cp, .cxx, .c++, .h, .hpp, .h++
C#.cs, .csx
Clojure.clj, .cljs, .cljc, .cljd
CSS.css
Elixir.ex, .exs
Go.go
Haskell.hs
Java.java, .bsh
JavaScript.js, .jsx
Julia.jl
Lua.lua
Perl.pl, .pm, .pod
PHP.php
PowerShell.ps1, .psm1, .psd1
Protocol Buffers.proto
Python.py, .py3, .pyw, .rpy, .rpy3, .rpyw, .cpy, .cpy3, .cpyw, .sconstruct
QML.qml
R.r
Ruby.rb, .Gemfile, .Rakefile, .Brewfile, .gemspec
Rust.rs
Sass, SCSS, and Less.sass, .scss, .less
Scala.scala, .sbt
Swift.swift
TypeScript.ts, .tsx
FormatExtensions
JSON.json
Plain text.txt
TOML.toml
YAML.yaml, .yml

Any extension not listed on this page is also read as plain text: the whole file is one block of prose, code included.

See the Vale engine page for how a rule chooses which of these files it applies to.