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.
Code: ast-grep v0.45.3
Section titled “Code: ast-grep v0.45.3”ast-grep parses 28 languages. The second column is ast-grep’s own spelling, which is what a rule’s language: field takes.
| Language | language: |
|---|---|
| Bash | Bash |
| C | C |
| C# | CSharp |
| C++ | Cpp |
| CSS | Css |
| Dart | Dart |
| Elixir | Elixir |
| Go | Go |
| Haskell | Haskell |
| HCL (Terraform) | Hcl |
| HTML | Html |
| Java | Java |
| JavaScript | JavaScript |
| JSON | Json |
| Kotlin | Kotlin |
| Lua | Lua |
| Markdown | Markdown |
| Nix | Nix |
| PHP | Php |
| Python | Python |
| Ruby | Ruby |
| Rust | Rust |
| Scala | Scala |
| Solidity | Solidity |
| Swift | Swift |
| TSX (TypeScript with JSX) | Tsx |
| TypeScript | TypeScript |
| YAML | Yaml |
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.
Prose: Vale v3.21.0
Section titled “Prose: Vale v3.21.0”Vale picks how to read a file from its extension. These lists come from FormatByExtension in Vale’s source at v3.21.0.
Markup
Section titled “Markup”The whole document is prose, and the format’s own syntax is skipped.
| Format | Extensions |
|---|---|
| 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.
Source code
Section titled “Source code”Only the comments are read. The code itself is invisible to a Vale rule.
| Format | Extensions |
|---|---|
| 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 |
Plain text and data
Section titled “Plain text and data”| Format | Extensions |
|---|---|
| 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.