MDSF(1)

NAME

mdsfFormat markdown code blocks using your favorite tools

SYNOPSIS

$npm install -g mdsf-cli

INFO

102 stars
4 forks
0 views

DESCRIPTION

Format markdown code blocks using your favorite tools

README

mdsf

Format, and lint, markdown code snippets using your favorite tools.

Table of contents

Installation

The latest version of mdsf can be downloaded directly from github.com/hougesen/mdsf/releases.

Linux & MacOS

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/hougesen/mdsf/releases/latest/download/mdsf-installer.sh | sh

Windows

powershell -ExecutionPolicy ByPass -c "irm https://github.com/hougesen/mdsf/releases/latest/download/mdsf-installer.ps1 | iex"

Cargo

Install using the published crate:

cargo install mdsf --locked

or directly from source:

git clone git@github.com:hougesen/mdsf.git

cargo install --path ./mdsf --bin mdsf

If you do not have Cargo installed, you need to install it first.

npm/npx

You can install mdsf using npm:

npm install -g mdsf-cli

mdsf format .

or run it directly using npx:

npx mdsf-cli format .

Homebrew

brew install hougesen/tap/mdsf

Conda

An unofficial (and unsupported) Conda package can be found at https://anaconda.org/conda-forge/mdsf.

conda install conda-forge::mdsf

Usage

mdsf 0.12.0-next
Format, and lint, markdown code snippets using your favorite tools
Mads Hougesen <mads@mhouge.dk>

Usage: mdsf [OPTIONS] <COMMAND>

Commands:
  format       Run tools on input files
  verify       Verify files are formatted
  init         Create a new mdsf config
  completions  Generate shell completion
  cache-prune  Remove caches
  help         Print this message or the help of the given subcommand(s)

Options:
      --log-level <LOG_LEVEL>  [default: debug] [possible values: trace, debug, info, warn, error, off]
  -h, --help                   Print help
  -V, --version                Print version

Formatting code

The format command, as the name implies, is used to format documents.

mdsf format file.md
Run tools on input files

Usage: mdsf format [OPTIONS] [INPUT]...

Arguments:
  [INPUT]...
          Path to files and/or directories

Options:
      --stdin
          Read input from stdin and write output to stdout

      --config <CONFIG>
          Path to config file

      --debug
          Log stdout and stderr of formatters

      --threads <THREADS>
          Amount of threads to use.

          Defaults to 0 (auto).

      --cache
          Cache results

      --log-level <LOG_LEVEL>
          [default: debug]
          [possible values: trace, debug, info, warn, error, off]

      --timeout <TIMEOUT>
          Tool timeout in seconds.

          Defaults to no timeout.

      --on-missing-language-definition <ON_MISSING_LANGUAGE_DEFINITION>
          What to do when a codeblock language has no tools defined.

          Falls back to the value defined in your config file, if no argument is provided.

          [possible values: ignore, fail, fail-fast]

      --on-missing-tool-binary <ON_MISSING_TOOL_BINARY>
          What to do when the binary of a tool cannot be found.

          Falls back to the value defined in your config file, if no argument is provided.

          [possible values: ignore, fail, fail-fast]

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

Caching formatting results

To speed formatting caching can be enabled by supplying the format command with the --cache argument.

mdsf format --cache docs/
Removing old caches

Old caches can be removed by running the mdsf cache-prune command.

Remove caches

Usage: mdsf cache-prune [OPTIONS]

Options:
      --log-level <LOG_LEVEL>  [default: debug] [possible values: trace, debug, info, warn, error, off]
  -h, --help                   Print help
  -V, --version                Print version

Verifying code

You can verify that the document is formatted using the mdsf verify command.

mdsf verify docs/
Verify files are formatted

Usage: mdsf verify [OPTIONS] [INPUT]...

Arguments:
  [INPUT]...
          Path to files and/or directories

Options:
      --stdin
          Read input from stdin and write output to stdout

      --config <CONFIG>
          Path to config file

      --debug
          Log stdout and stderr of formatters

      --threads <THREADS>
          Amount of threads to use.

          Defaults to 0 (auto).

      --timeout <TIMEOUT>
          Tool timeout in seconds.

          Defaults to no timeout.

      --log-level <LOG_LEVEL>
          [default: debug]
          [possible values: trace, debug, info, warn, error, off]

      --on-missing-language-definition <ON_MISSING_LANGUAGE_DEFINITION>
          What to do when a codeblock language has no tools defined.

          Falls back to the value defined in your config file, if no argument is provided.

          [possible values: ignore, fail, fail-fast]

      --on-missing-tool-binary <ON_MISSING_TOOL_BINARY>
          What to do when the binary of a tool cannot be found.

          Falls back to the value defined in your config file, if no argument is provided.

          [possible values: ignore, fail, fail-fast]

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

GitHub Action

There are a lot of different ways to run mdsf using GitHub actions.

The easiest way, in my opinion, is to use the official GitHub action to install mdsf.

After that you can run the binary like you would in your terminal.

[!NOTE] mdsf is not a package manager.

You must also install the tools you wish to use in your GitHub action.

name: mdsf

on: push

jobs: format: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4

  - name: Install mdsf
    uses: hougesen/mdsf@main

  - name: Run mdsf
    run: mdsf format --log-level warn .

  - name: Commit changes
    uses: EndBug/add-and-commit@v9
    with:
      message: &quot;style: formatted markdown code blocks&quot;

Visual Studio Code

mdsf can be run using the VSCode extension.

[!NOTE] The mdsf VS Code extension does currently not support installing mdsf. Which means mdsf must be installed using other means.

Vim / NeoVim

conform.nvim

conform.nvim has native support for running mdsf.

local conform = require("conform")

conform.setup({ formatters_by_ft = { markdown = { "mdsf" }, -- ... }, -- ... })

treefmt

Add the following to your treefmt.toml to run mdsf using treefmt.

# treefmt.toml

[formatter.mdsf] command = "mdsf" options = ["format"] includes = ["*.md"]

pre-commit

See pre-commit for instructions

Sample .pre-commit-config.yaml:

repos:
  - repo: https://github.com/hougesen/mdsf
    rev: main
    hooks:
      - id: mdsf-format

Configuration

The default configuration of mdsf aims to as simple as possible. For that reason the default formatter for each language is the one most people have installed.

If you are interested in customizing which formatter is run, you can create a new mdsf configuration file by running mdsf init.

Create a new mdsf config

Usage: mdsf init [OPTIONS]

Options:
      --force
          Create config even if one already exists in current directory
      --format <FORMAT>
          [default: json] [possible values: json, toml, yaml]
      --schema-version <SCHEMA_VERSION>
          [default: locked] [possible values: locked, stable, development]
      --log-level <LOG_LEVEL>
          [default: debug] [possible values: trace, debug, info, warn, error, off]
  -h, --help
          Print help
  -V, --version
          Print version

mdsf supports running multiple formatters on the code snippet.

{
  "languages": {
    // Only run `ruff` on Python snippets,
    "python": "ruff:format",
    // Run `usort` on file and then `black`
    "python": ["usort", "black"],
    // Run `usort`, if that fails run `isort`, finally run `black`
    "python": [["usort", "isort"], "black"],
// Formatters listed under &quot;*&quot; will be run on any snippet.
&quot;*&quot;: [&quot;typos&quot;],

// Formatters listed under &quot;_&quot; will only be run when there is not formatter configured for the file type OR globally (&quot;*&quot;).
&quot;_&quot;: &quot;prettier&quot;

} }

Language aliases

Multiple languages can easily be mapped to the same tools using the language_aliases option.

{
  "language_aliases": {
    "language": "is_alias_of"
  }
}

In the example below bash and zsh would use the tools defined under languages.shell.

{
  "languages": {
    "shell": "shfmt"
  },
  "language_aliases": {
    "bash": "shell",
    "zsh": "shell"
  }
}

Newlines

By default LF (\n) is used for newlines.

That can be changed by specifying the newline config option.

{
  "newline": "lf" // "lf" | "cr" | "crlf"
}

Custom tools and commands

Custom commands can be defined in the mdsf.json file.

When defining the arguments the variable $PATH will automatically be replaced with the file path.

{
  "languages": {
    "rust": {
      "binary": "rustfmt",
      "arguments": ["--edition", "2018", "$PATH"],
      "stdin": false
    }
  }
}

Tools

[!NOTE] mdsf is not a package manager.

Only tools that are already installed will be used.

mdsf currently supports 346 tools. Feel free to open an issue/pull-request if your favorite tool/command is missing! 😃

NameDescriptionCategoriesLanguages
action-validatorTool to validate GitHub Action and Workflow YAML fileslinteryaml
actionlintStatic checker for GitHub Actions workflow fileslinteryaml
airR formatterformatterr
alejandraThe Uncompromising Nix Code Formatterformatternix
alexCatch insensitive, inconsiderate writingspell-checkmarkdown
amebaA static code analysis tool for Crystallintercrystal
ansible-lintansible-lint checks playbooks for practices and behavior that could potentially be improved and can fix some of the most common ones for youlinteransible
api-linterA linter for APIs defined in protocol bufferslinterprotobuf
asmfmtGo Assembler Formatterformattergo
astyleA Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Codeformatterc#, c++, c, java, objective-c
atlasManage your database schema as codeformatterhcl
auto-optionalMakes typed arguments Optional when the default argument is Noneformatterpython
autocorrectA linter and formatter to help you to improve copywriting, correct spaces, words, and punctuations between CJK (Chinese, Japanese, Korean)spell-check
autoflakeRemoves unused imports and unused variables as reported by pyflakeslinterpython
autopep8A tool that automatically formats Python code to conform to the PEP 8 style guideformatterpython
bashateCode style enforcement for bash programsformatterbash
beancount-blackOpinionated code formatter, just like Python's black code formatter but for Beancountformatterbeancount
beautyshA Bash beautifier for the massesformatterbash, shell
bibtex-tidyCleaner and Formatter for BibTeX filesformatterbibtex
bicepBicep is a declarative language for describing and deploying Azure resourcesformatterbicep
biomeA toolchain for web projectsformatter, linterjavascript, json, typescript, vue
blackThe uncompromising Python code formatterformatterpython
blade-formatterAn opinionated blade template formatter for Laravel that respects readabilityformatterblade, laravel, php
blueThe slightly less uncompromising Python code formatterformatterpython
bpfmtA formatter for Blueprint filesformatterblueprint
brittanyHaskell source code formatterformatterhaskell
brunetteA best practice Python code formatterformatterpython
bsfmtA code formatter for BrighterScript (and BrightScript)formatterbrighterscript, brightscript
bslintA linter for BrightScript and BrighterScriptlinterbrightscript, brightscripter
bufThe best way of working with Protocol Buffersformatterprotobuf
buildifierA bazel BUILD file formatter and editorformatterbazel
c3fmtA customizable code formatter for the C3 languageformatterc3
cabal-fmtAn experiment of formatting .cabal filesformattercabal
cabal-gildFormat Haskell package descriptionsformattercabal, haskell
cabal-prettifyPrettify your Cabal package configuration filesformattercabal
cabalCabal is a system for building and packaging Haskell libraries and programsformattercabal
caddyFormats or prettifies a Caddyfileformattercaddy
caramelFormatter for the Caramel programming languageformattercaramel
cedarCommand Line Interface for Cedarformattercedar
cfn-lintCloudFormation Linterlintercloudformation, json, yaml
checkmakeLinter/analyzer for Makefileslintermakefile
clang-formatA tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# codeformatterc#, c++, c, java, javascript, json, objective-c, protobuf
clang-tidyclang-tidy is a clang-based C++ “linter” toollinterc++
clj-kondoStatic analyzer and linter for Clojure code that sparks joylinterclojure, clojurescript
cljfmtA tool for formatting Clojure codeformatterclojure
cljstyleA tool for formatting Clojure codeformatterclojure
cmake-formatcmake-format can format your listfiles nicely so that they don't look like crapformattercmake
cmake-lintLint CMake fileslintercmake
codeqlFormat queries and libraries with CodeQLformattercodeql
codespellCheck code for common misspellingsspell-check
coffeelintLint your CoffeeScriptlintercoffeescript
cppcheckCppcheck is a static analysis tool for C/C++ codelinterc++, c
cpplintStatic code checker for C++linterc++
crlfmtFormatter for CockroachDB's additions to the Go style guideformattergo
crystalTools for the Crystal programming languageformattercrystal
csharpierCSharpier is an opinionated code formatter for C#formatterc#
css-beautifyA CSS formatterformattercss
csscombCSS coding style formatterformattercss
csslintAutomated linting of Cascading Stylesheetslintercss
cueThe home of the CUE language! Validate and define text-based and dynamic configurationformattercue
cueimportsCUE tool that updates your import lines, adding missing ones and removing unused onesformattercue
curlylintExperimental HTML templates linting for Jinja, Nunjucks, Django templates, Twig, Liquidlinterdjango, html, jinja, liquid, nunjucks, twig
d2A modern language that turns text to diagramsformatterd2
dartFormatter and linter for Dartformatter, linterdart, flutter
dcmCode Quality Tool for Flutter Developersformatter, linterdart, flutter
deadnixScan Nix files for dead codelinternix
denoFormatter and linter for JavaScript and TypeScriptformatter, linterjavascript, json, typescript
dfmtDfmt is a formatter for D source codeformatterd
dhallTools for the Dhall configuration languageformatterdhall
djadeA Django template formatterformatterdjango, python
djangofmtA fast, HTML aware, Django template formatterformatterdjango, html, python
djlintLint & Format HTML Templatesformatter, linterhandlebars, html, jinja, mustache, nunjucks, twig
docformatterFormats docstrings to follow PEP 257formatterpython
dockerfmtDockerfile formatter. a modern dockfmtformatterdocker
dockfmtDockerfile format and parser. Like gofmt but for Dockerfilesformatterdocker
docstrfmtA formatter for reStructuredTextformatterpython, restructuredtext, sphinx
doctocGenerates table of contents for markdown filesformattermarkdown
dotenv-linterLightning-fast linter for .env fileslinterenv
dprintA pluggable and configurable code formatting platform written in Rustformatter
dscannerSwiss-army knife for D source codelinterd
duneBuild tool for OCaml projectsformatterdune, ocaml, reasonml
dusterAutomatic configuration for Laravel apps to apply Tighten's standard linting & code standardsformatter, linterphp
dxFullstack app framework for web, desktop, and mobileformatterrsx, rust
easy-coding-standardThe Easiest way to add coding standard to your PHP projectformatter, linterphp
efmtErlang code formatterformattererlang
elm-formatelm-format formats Elm source code according to a standard set of rules based on the official Elm Style Guideformatterelm
eradicateRemoves commented-out code from Python fileslinterpython
erb-formatterFormat ERB files with speed and precisionformattererb, ruby
ergA statically typed language compatible with Pythonlintererg
erlfmtAn automated code formatter for Erlangformattererlang
eslintFind and fix problems in your JavaScript codelinterjavascript, typescript
fantomasFSharp source code formatterformatterf#
fish_indentFish indenter and prettifierformatterfish
fixjsonJSON Fixer for Humans using (relaxed) JSON5formatter, linterjson5, json
floskellFloskell is a flexible Haskell source code pretty printerformatterhaskell
flyntA tool to automatically convert old string literal formatting to f-stringsformatterpython
fnlfmtA formatter for Fennel codeformatterfennel
forgeFoundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rustformattersolidity
fortitudeA Fortran linterlinterfortran
fortran-linterA simple fortran syntax checker, including automatic fixing of the codeformatter, linterfortran
fourmoluA fourk of ormolu that uses four space indentation and allows arbitrary configurationformatterhaskell
fprettifyAuto-formatter for modern Fortran source codeformatterfortran
futharkCode formatter for the furhark programming languageformatterfuthark
fvmFlutter Version Management: A simple CLI to manage Flutter SDK versionsformatter, linterdart, flutter
gciGCI, a tool that control golang package import order and make it always deterministicformattergo
gdformatGDScript formatterformattergdscript
gdlintGDScript linterlintergdscript
gersemiA formatter to make your CMake code the real treasureformattercmake
ghokinParallelized formatter with no external dependencies for gherkin (cucumber, behat...)formatterbehat, cucumber, gherkin
gleamFormat Gleam source codeformattergleam
gluonA static, type inferred and embeddable language written in Rustformattergluon
gofmtGofmt formats Go programsformattergo
gofumptA stricter gofmtformattergo
goimports-reviserRight imports sorting & code formatting tool (goimports alternative)formattergo
goimportsgoimports updates your Go import lines, adding missing ones and removing unreferenced onesformattergo
golangci-lintFast linters runner for Goformatter, lintergo
golinesA golang formatter that fixes long linesformattergo
google-java-formatReformats Java source code to comply with Google Java Styleformatterjava
gospelMisspelled word linter for Go comments, string literals and embedded filesspell-checkgo
grafbaseThe Grafbase command line interfacelintergraphql
grainCode formatter for the Grain programming languageformattergrain
hadolintDockerfile linter, validate inline bash, written in Haskelllinterdockerfile
haml-lintTool for writing clean and consistent HAMLlinterhaml
hclfmtFormatter for hcl filesformatterhcl
hfmtFormat Haskell programs. Inspired by the gofmt utilityformatterhaskell
hindentHaskell pretty printerformatterhaskell
hlintHaskell source code suggestionslinterhaskell
hongdownHongdown is a Markdown formatter that enforces Hong Minhee's Markdown style conventionsformattermarkdown
html-beautifyA html formatterformatterhtml
htmlbeautifierA normaliser/beautifier for HTML that also understands embedded Ruby. Ideal for tidying up Rails templatesformattererb, html, ruby
htmlhintThe static code analysis tool you need for your HTMLlinterhtml
hurlfmtFormatter for hurl filesformatterhurl
imbaA formatter for Imbaformatterimba
inkoA language for building concurrent software with confidenceformatterinko
isortA Python utility to sort importsformatterpython
janet-formatA formatter for Janet codeformatterjanet
jokerSmall Clojure interpreter, linter and formatterformatter, linterclojure
jqCommand-line JSON processorformatterjson
jqfmtlike gofmt, but for jqformatterjq
js-beautifyBeautifier for javascriptformatterjavascript
json5formatJSON5 formatter that preserves contextual commentsformatterjson5, json
json_repairA module to repair invalid JSON from LLMslinterjson
jsonaJSONA parser, linter, formatter, lsp and cliformatter, linterjsona
jsonlintA JSON parser and validatorformatter, linterjson
jsonnet-lintLinter for jsonnet fileslinterjsonnet
jsonnetfmtFormatter for automatically fixing jsonnet stylistic problemsformatterjsonnet
jsonppA fast command line JSON pretty printerformatterjson
juliaformatter.jlAn opinionated code formatter for Julia. Plot twist - the opinion is your ownformatterjulia
justJust a command runnerformatterjust
kclKCL Format tool supports reformatting KCL files to the standard code styleformatterkcl
kdlfmtA formatter for kdl documentsformatterkdl
kdoc-formatterReformats Kotlin KDoc comments, reflowing text and other cleanupformatterkotlin
keep-sortedkeep-sorted is a language-agnostic formatter that sorts lines between two markers in a larger fileformatter
ktfmtA program that reformats Kotlin source code to comply with the common community standard for Kotlin code conventionsformatterkotlin
ktlintAn anti-bikeshedding Kotlin linter with built-in formatterlinterkotlin
kube-linterKubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practiceslinterkubernetes, yaml
kulala-fmtAn opinionated .http and .rest files linter and formatterformatterhttp
leptosfmtA formatter for the leptos view! macroformatterrust
liquidsoap-prettierPrettier plugin for liquidsoap scriptformatterliquidsoap
luacheckA tool for linting and static analysis of Lua codeformatterlua
luaformatterCode formatter for Luaformatterlua
luau-analyzeTypecheck and lint luau fileslinterluau
madoA fast Markdown linter written in Rustlintermarkdown
magoMago is a toolchain for PHP that aims to provide a set of tools to help developers write better codeformatter, linterphp
markdownfmtLike gofmt, but for Markdownformattermarkdown
markdownlint-cli2A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint librarylintermarkdown
markdownlintA Node.js style checker and lint tool for Markdown/CommonMark fileslintermarkdown
markuplintAn HTML linter for all markup developerslinterhtml
mbakembake is a Makefile formatter and linterformatter, lintermake
md-paddingAST-based padding for Markdown and natural language, improving readability in multilingual documentsformattermarkdown
mdformatCommonMark compliant Markdown formatterformattermarkdwon
mdsfRun mdsf inside mdsfformattermarkdown
mdslwPrepare your markdown for easy diff'ing!formattermarkdown
mesonMeson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possibleformattermeson
mh_lintA linter for MATLABlintermatlab
mh_styleA formatter for MATLABformattermatlab
misedev tools, env vars, task runner
misspellCorrect commonly misspelled English words in source filesspell-check
mixCode formatter for Elixirformatterelixir
mojoFormats Mojo source filesformattermojo
muonAn implementation of the meson build system in c99formatter, lintermeson
mypyOptional static typing for Pythonlinterpython
nasmfmtFormatter for NASM source filesformatterassembly
nginxbeautifierFormat and beautify nginx config filesformatternginx
nginxfmtnginx config file formatter/beautifier written in Python with no additional dependenciesformatternginx
nickelBetter configuration for lessformatternickel
nimprettyCode formatter for the Nim programming languageformatternim
nixfmtThe official formatter for Nix codeformatternix
nixpkgs-fmtNix code formatter for nixpkgsformatternix
nomadCLI for HashiCorp Nomadformatterhcl
nphAn opinionated code formatter for Nimformatternim
npm-groovy-lintLint, format and auto-fix your Groovy / Jenkinsfile / Gradle filesformatter, lintergroovy
nufmtThe nushell formatterformatternushell
ocamlformatAuto-formatter for OCaml codeformatterocaml
ocp-indentIndentation tool for OCamlformatterocaml
odinfmtFormatter for the Odin programming languageformatterodin
oelint-advAdvanced oelintlinterbitbake
opaFormat Rego source filesformatterrego
ormoluA formatter for Haskell source codeformatterhaskell
oxfmtOxfmt a fast JavaScript/TypeScript formatter written in Rustformatterjavascript, typescript
oxlintOxlint is designed to catch erroneous or useless code without requiring any configurations by defaultlinterjavascript, typescript
packerPacker is used to format HCL2 configuration filesformatterhcl
panacheA formatter and linter for Pandoc markdown, Quarto, and RMarkdownformattermarkdown, pandoc, quarto, rmarkdown
pasfmtDelphi code formatterformatterdelphi, pascal
perflintPython Linter for performance anti patternslinterpython
perltidyPerl::Tidy, a source code formatter for Perlformatterperl
pg_formatA PostgreSQL SQL syntax beautifierformattersql
php-cs-fixerA tool to automatically fix PHP Coding Standards issuesformatter, linterphp
phpcbfPHP Code Beautifier and Fixer fixes violations of a defined coding standardformatterphp
phpinsightsInstant PHP quality checks from your consolelinterphp
pintLaravel Pint is an opinionated PHP code style fixer for minimalistsformatter, linterphp
pklA configuration as code language with rich validation and toolingformatterpkl
prettierPrettier is an opinionated code formatterformatterangular, css, ember, graphql, handlebars, html, javascript, json, less, markdown, scss, typescript, vue
prettierdprettier, as a daemon, for improved formatting speedformatterangular, css, ember, graphql, handlebars, html, javascript, json, less, markdown, scss, typescript, vue
pretty-phpThe opinionated PHP code formatterformatterphp
prettypstFormatter for Typstformattertypst
prismaCommands for interacting with the prisma ORMformatterprisma
proselintA linter for prosespell-check
protolintA pluggable linter and fixer to enforce Protocol Buffer style and conventionslinterprotobuf
ptopFree Pascal source formatterformatterpascal
pug-lintAn unopinionated and configurable linter and style checker for Puglinterpug
puppet-lintCheck that your Puppet manifests conform to the style guidelinterpuppet
purs-tidyA syntax tidy-upper for PureScriptformatterpurescript
purtyPureScript pretty-printerformatterpurescript
pyclnA formatter for finding and removing unused import statementsformatterpython
pycodestyleSimple Python style checker in one Python filelinterpython
pydoclintA very fast Python docstring linterlinterpython
pydocstringformatterAutomatically format your Python docstrings to conform with PEP 8 and PEP 257formatterpython
pydocstyledocstring style checkerformatterpython
pyflakesA simple program which checks Python source files for errorslinterpython
pyinkPyink is a Python formatter, forked from Black with a few different formatting behaviorsformatterpython
pylintPylint is a static code analyser for Python 2 and 3linterpython
pymarkdownlntA GitHub Flavored Markdown compliant Markdown linterformatter, lintermarkdown
pymentFormat and convert Python docstrings and generates patchesformatterpython
pyreflyA fast type checker for Pythonlinterpython
pyupgradeA tool to automatically upgrade Python syntax to newer versionslinterpython
qmlfmtCommand line application that formats QML filesformatterqml
qmlformatqmlformat is a tool that automatically formats QML files in accordance with the QML Coding Conventionsformatterqml
qmllintqmllint is a tool shipped with Qt, that verifies the syntactic validity of QML fileslinterqml
quick-lint-jsquick-lint-js finds bugs in JavaScript programslinterjavascript
racoAn extensible code formatter for Racketformatterracket
reekCode smell detector for Rubylinterruby
refmtrefmt stands by Reason Formatter and it formats Reason programs, is a parser and pretty-printer for Reasonformatterreason
reformat-gherkinFormatter for Gherkin languageformattergherkin
refurbA tool for refurbishing and modernizing Python codebaseslinterpython
regalRegal is a linter and language server for Rego, bringing your policy development experience to the next levellinterrego
reorder-python-importsRewrites source to reorder python importsformatterpython
rescriptReScript is a robustly typed language that compiles to efficient and human-readable JavaScriptformatterrescript
revive~6x faster, stricter, configurable, extensible, and beautiful drop-in replacement for golintlintergo
rocA fast, friendly, functional languageformatterroc
rstfmtA formatter for reStructuredTextformatterrestructuredtext
rubocopA Ruby static code analyzer and formatter, based on the community Ruby style guideformatter, linterruby
rubyfmtRuby Autoformatterformatterruby
ruffAn extremely fast Python linter and code formatter, written in Rustformatter, linterpython
rufoThe Ruby Formatterformatterruby
rumdlA fast Markdown linter and formatterformatter, lintermarkdown
runeAn embeddable dynamic programming language for Rustformatterrune
runicA code formatter for Julia with rules set in stoneformatterjulia
rustfmtFormat Rust codeformatterrust
rustywindCLI for organizing Tailwind CSS classesformatterhtml
salt-lintA command-line utility that checks for best practices in SaltStacklintersalt
scalaCode formatter for Scalaformatterscala
scalafmtCode formatter for Scalaformatterscala
scalariformScala source code formatterformatterscala
seleneA blazing-fast modern Lua linter written in Rustlinterlua
semistandardAll the goodness of standardjs with semicolons sprinkled on topformatter, linterjavascript
shellcheckShellCheck, a static analysis tool for shell scriptslinterbash, shell
shellhardenThe corrective bash syntax highlighterlinterbash, shell
shfmtA shell parser, formatter, and interpreter with bash supportformattershell
sleekSleek is a CLI tool for formatting SQL. It helps you maintain a consistent style across your SQL code, enhancing readability and productivityformattersql
slim-lintConfigurable tool for analyzing Slim templateslinterslim
smlfmtA custom parser/auto-formatter for Standard MLformatterstandard-ml
snakefmtThe uncompromising Snakemake code formatterformattersnakemake
solhintSolhint is an open-source project to provide a linting utility for Solidity codelintersolidity
sphinx-lintCheck for stylistic and formal issues in .rst and .py files included in the documentationlinterpython, restructredtext
sql-formatterA whitespace formatter for different query languagesformattersql
sqlfluffA modular SQL linter and auto-formatter with support for multiple dialects and templated codeformatter, lintersql
sqlfmtsqlfmt formats your dbt SQL files so you don't have toformattersql
sqlintSimple SQL linter supporting ANSI and PostgreSQL syntaxeslintersql
sqruffFast SQL formatter/linterformatter, lintersql
squawkLinter for Postgres migrations & SQLlinterpostgresql, sql
standardjsJavaScript Style Guide, with linter & automatic code fixerformatter, linterjavascript
standardrbRuby's bikeshed-proof linter and formatterformatter, linterruby
statixlints and suggestions for the nix programming languagelinternix
stylefmtstylefmt is a tool that automatically formats stylesheetsformattercss, scss
stylelintA mighty CSS linter that helps you avoid errors and enforce conventionslintercss, scss
stylish-haskellHaskell code prettifierformatterhaskell
styluaA Lua code formatterformatterlua
superhtmlHTML Validator, Formatter, LSP, and Templating Language Libraryformatterhtml
svlintSystemVerilog linterlintersystemverilog
swift-formatFormatting technology for Swift source codeformatterswift
swiftformatA command-line tool and Xcode Extension for formatting Swift codeformatterswift
swiftlintA tool to enforce Swift style and conventionslinterswift
taploA TOML toolkit written in Rustformattertoml
tclfmtFormatter for Tcllintertcl
tclintLinter for Tcllintertcl
templA language for writing HTML user interfaces in Goformattergo, templ
terraformThe terraform fmt command is used to rewrite Terraform configuration files to a canonical format and styleformatterterraform
terragruntRecursively find hcl files and rewrite them into a canonical formatformatterhcl
tex-fmtAn extremely fast LaTeX formatter written in Rustformatterlatex
textlinttextlint is the pluggable linter for natural language textspell-check
tlintTighten linter for Laravel conventionslinterphp
tofuThe tofu fmt command is used to rewrite OpenTofu configuration files to a canonical format and styleformatterterraform, tofu
tombiTOML Formatter / Linterformatter, lintertoml
toml-sortA command line utility to sort and format toml filesformattertoml
topiaryTopiary aims to be a uniform formatter for simple languages, as part of the Tree-sitter ecosystemformatter
tryceratopsA linter to prevent exception handling antipatterns in Pythonlinterpython
ts-standardTypescript style guide, linter, and formatter using StandardJSformatter, lintertypescript
tspCLI for managing TypeSpec configurationsformattertypespec
tsqllintConfigurable linting for TSQLlintersql
twig-cs-fixerA tool to automatically fix Twig Coding Standards issuesformatter, lintertwig
twigcsThe missing checkstyle for twiglinterphp, twig
txtpbfmttxtpbfmt parses, edits and formats text proto files in a way that preserves commentsformatterprotobuf
tyAn extremely fast Python type checker written in Rustlinterpython
typosSource code spell checkerspell-check
typstfmtBasic formatter for the Typst languageformattertypst
typstyleBeautiful and reliable typst code formatterformattertypst
ufmtSafe, atomic formatting with black and usortformatterpython
uiuaA stack-based array programming languageformatteruiua
unimportThe ultimate linter and formatter for removing unused import statements in your codeformatterpython
usortSafe, minimal import sorting for Python projectsformatterpython
vTooling for V langformatterv
vacuumvacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis toollinterjson, openapi, yaml
verusfmtAn Opinionated Formatter for Verusformatterrust, verus
verylVeryl: A Modern Hardware Description Languageformatterveryl
vhdl-style-guideStyle guide enforcement for VHDLformattervhdl
vintFast and Highly Extensible Vim script Language Lintlintervimscript
waThe Wa Programming Languageformatterwa
wfindentIndents and optionally converts Fortran program sourcesformatterfortran
write-goodNaive linter for English proselinter
xmlformatFormat and compress XML documentsformatterxml
xmllintXML linterlinterxml
xoJavaScript/TypeScript linter (ESLint wrapper) with great defaultslinterjavascript, typescript
xqCommand-line XML and HTML beautifier and content extractorformatterhtml, xml
yamlfixA simple opinionated yaml formatter that keeps your commentsformatteryaml
yamlfmtAn extensible command line tool or library to format yaml filesformatteryaml
yamllintA linter for YAML fileslinteryaml
yapfA formatter for Python filesformatterpython
yard-lintCheck your YARD docs like RuboCop checks your code - a linter for YARD documentationlinterruby
yew-fmtCode formatter for the Yew frameworkformatterrust
yqyq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processorformatteryaml
zigReformat Zig source into canonical formformatterzig
ziggyFormats Ziggy documents and Ziggy schemasformatterziggy
zprintBeautifully format Clojure and Clojurescript source code and s-expressionsformatterclojure, clojurescript
zsweepLinter for Zshell scripting languagelinterzsh
zubanPython Type Checkerlinterpython

Commands

mdsf currently supports 402 commands. Feel free to open an issue/pull-request if your favorite tool/command is missing! 😃

NameCommand
action-validatoraction-validator $PATH
actionlintactionlint $PATH
air:formatair format $PATH
alejandraalejandra --quiet $PATH
alexalex --quiet $PATH
amebaameba --fix $PATH
ansible-lintansible-lint $PATH
api-linterapi-linter $PATH
asmfmtasmfmt -w $PATH
astyleastyle --quiet $PATH
atlas:fmtatlas schema fmt $PATH
atlas:lintatlas schema lint $PATH
auto-optionalauto-optional $PATH
autocorrectautocorrect --fix $PATH
autoflakeautoflake --quiet --in-place $PATH
autopep8autopep8 --in-place $PATH
bashatebashate $PATH
beancount-blackbean-black $PATH
beautyshbeautysh $PATH
bibtex-tidybibtex-tidy -m $PATH
bicep:formatbicep format $PATH
biome:check:unsafebiome check --write --unsafe $PATH
biome:checkbiome check --write $PATH
biome:formatbiome format --write $PATH
biome:lint:unsafebiome lint --write --unsafe $PATH
biome:lintbiome lint --write $PATH
blackblack --quiet $PATH
blade-formatterblade-formatter --write $PATH
blueblue --quiet $PATH
bpfmtbpfmt -w $PATH
brittanybrittany --write-mode=inplace $PATH
brunettebrunette --quiet $PATH
bsfmtbsfmt $PATH --write
bslintbslint --fix $PATH
buf:formatbuf format --write $PATH
buf:lintbuf lint $PATH
buildifierbuildifier $PATH
c3fmtc3fmt --in-place $PATH
cabal-fmtcabal-fmt --inplace $PATH
cabal-gildcabal-gild --input $PATH --output $PATH
cabal-prettifycabal-prettify $PATH
cabal:formatcabal format $PATH
caddy:fmtcaddy fmt $PATH -w
caramel:fmtcaramel fmt $PATH
cedar:formatcedar format
cfn-lintcfn-lint $PATH
checkmakecheckmake $PATH
clang-formatclang-format -i $PATH
clang-tidyclang-tidy --fix $PATH
clj-kondoclj-kondo --lint $PATH
cljfmt:fixcljfmt fix $PATH
cljstylecljstyle fix $PATH
cmake-formatcmake-format -i $PATH
cmake-lintcmake-lint $PATH
codeql:query:formatcodeql query format -i $PATH
codespellcodespell $PATH --check-hidden --write-changes
coffeelintcoffeelint -q $PATH
cppcheckcppcheck $PATH
cpplintcpplint --quiet $PATH
crlfmtcrlfmt -w $PATH
crystal:formatcrystal tool format $PATH
csharpiercsharpier format --write-stdout
css-beautifycss-beautify -r --type css -f $PATH
csscombcsscomb -t $PATH
csslintcsslint --quiet $PATH
cue:fmtcue fmt $PATH
cueimportscueimports
curlylintcurlylint -q $PATH
d2:fmtd2 fmt $PATH
dart:fixdart fix --apply $PATH
dart:formatdart format $PATH
dcm:fixdcm fix $PATH
dcm:formatdcm format $PATH
deadnixdeadnix -q --edit $PATH
deno:fmtdeno fmt --quiet $PATH
deno:lintdeno lint --fix $PATH
dfmtdfmt -i $PATH
dhall:formatdhall format $PATH
dhall:lintdhall lint $PATH
djadedjade $PATH
djangofmtdjangofmt $PATH
djlintdjlint $PATH --reformat
docformatterdocformatter --in-place $PATH
dockerfmtdockerfmt -w -n $PATH
dockfmtdockfmt fmt -w $PATH
docstrfmtdocstrfmt $PATH
doctocdoctoc $PATH
dotenv-linter:fixdotenv-linter fix $PATH
dprint:fmtdprint fmt $PATH
dscanner:fixdscanner fix $PATH
dscanner:lintdscanner lint $PATH
dune:format-dune-filedune format-dune-file
duster:fixduster fix --quiet --no-interaction $PATH
duster:lintduster lint --quiet --no-interaction $PATH
dx:fmtdx fmt --all-code --file $PATH
easy-coding-standardecs check $PATH --fix --no-interaction
efmtefmt -w $PATH
elm-formatelm-format --elm-version=0.19 --yes $PATH
eradicateeradicate --in-place $PATH
erb-formattererb-format $PATH --write
erg:linterg lint $PATH
erlfmterlfmt -w '$PATH'
eslinteslint --fix $PATH
fantomasfantomas $PATH
fish_indentfish_indent -w $PATH
fixjsonfixjson -w $PATH
floskellfloskell $PATH
flyntflynt $PATH
fnlfmtfnlfmt $PATH
forge:fmtforge fmt $PATH
fortitude:check:fix:unsafefortitude check --quiet --no-respect-gitignore --fix --unsafe-fixes $PATH
fortitude:check:fixfortitude check --quiet --no-respect-gitignore --fix $PATH
fortitude:checkfortitude check --quiet --no-respect-gitignore $PATH
fortran-linterfortran-linter -i $PATH
fourmolufourmolu -i $PATH
fprettifyfprettify $PATH
futhark:fmtfuthark fmt $PATH
fvm:dart:fixfvm dart fix --apply $PATH
fvm:dart:formatfvm dart format $PATH
gcigci write --skip-generated --skip-vendor $PATH
gdformatgdformat $PATH
gdlintgdlint $PATH
gersemigersemi -i -q $PATH
ghokin:checkghokin check $PATH
ghokin:fmtghokin fmt replace $PATH
gleam:formatgleam format $PATH
gluon:fmtgluon fmt $PATH
gofmtgofmt -w $PATH
gofumptgofumpt -w $PATH
goimports-revisergoimports-reviser -format $PATH
goimportsgoimports -w $PATH
golangci-lint:fmtgolangci-lint fmt $PATH
golangci-lint:run:fixgolangci-lint run --fix $PATH
golangci-lint:rungolangci-lint run $PATH
golinesgolines -w $PATH
google-java-formatgoogle-java-format -i $PATH
gospelgospel $PATH
grafbase:lintgrafbase lint $PATH
grain:formatgrain format $PATH -o $PATH
hadolinthadolint $PATH
haml-linthaml-lint --auto-correct $PATH
hclfmthclfmt -w $PATH
hfmthfmt -w $PATH
hindenthindent $PATH
hlinthlint $PATH
hongdownhongdown -w $PATH
html-beautifyhtml-beautify -r --type html -f $PATH
htmlbeautifierhtmlbeautifier $PATH
htmlhinthtmlhint $PATH
hurlfmthurlfmt --in-place $PATH
imba:fmtimba fmt -f $PATH
inko:fmtinko fmt $PATH
isortisort --quiet $PATH
janet-formatjanet-format
jokerjoker --format --write $PATH
jqjq
jqfmtjqfmt
js-beautifyjs-beautify -r --type js -f $PATH
json5formatjson5format -r $PATH
json_repairjson_repair -i $PATH
jsona:formatjsona format $PATH
jsona:lintjsona lint $PATH
jsonlint:sortjsonlint -s -i $PATH
jsonlintjsonlint -i $PATH
jsonnet-lintjsonnet-lint $PATH
jsonnetfmtjsonnetfmt -i $PATH
jsonppjsonpp -s
juliaformatter.jljulia -E using JuliaFormatter;format_file(\"$PATH\")
justjust --fmt --unstable --justfile $PATH
kcl:fmtkcl fmt $PATH
kcl:lintkcl lint $PATH
kdlfmt:v1kdlfmt format --kdl-version v1 $PATH
kdlfmt:v2kdlfmt format --kdl-version v2 $PATH
kdlfmtkdlfmt format $PATH
kdoc-formatterkdoc-formatter --quiet $PATH
keep-sortedkeep-sorted $PATH
ktfmtktfmt $PATH
ktlintktlint --format --log-level=error $PATH
kube-linter:lintkube-linter lint $PATH
kulala-fmt:checkkulala-fmt check $PATH
kulala-fmt:formatkulala-fmt format $PATH
leptosfmtleptosfmt $PATH
liquidsoap-prettierliquidsoap-prettier --write $PATH
luacheckluacheck $PATH
luaformatterlua-format -i $PATH
luau-analyzeluau-analyze $PATH
mado:checkmado check $PATH
mago:analyze:fix:unsafemago analyze --fix --potentially-unsafe --unsafe $PATH
mago:analyze:fixmago analyze --fix $PATH
mago:analyzemago analyze $PATH
mago:formatmago format $PATH
mago:lint:fix:unsafemago lint --fix --potentially-unsafe --unsafe $PATH
mago:lint:fixmago lint --fix $PATH
mago:lintmago lint $PATH
markdownfmtmarkdownfmt -w $PATH
markdownlint-cli2markdownlint-cli2 --fix $PATH
markdownlintmarkdownlint --fix $PATH
markuplintmarkuplint --fix $PATH
mbake:formatmbake format $PATH
mbake:validatembake validate $PATH
md-paddingmd-padding -i $PATH
mdformatmdformat $PATH
mdsf:formatmdsf format $PATH
mdsf:verifymdsf verify $PATH
mdslwmdslw $PATH
meson:fmtmeson fmt -i $PATH
mh_lintmh_lint $PATH
mh_stylemh_style $PATH
mise:fmtmise fmt --stdin
misspellmisspell -w $PATH
mix:formatmix format $PATH
mojo:formatmojo format -q $PATH
muon:fmtmuon fmt -i $PATH
muon:lintmuon lint -i $PATH
mypymypy $PATH
nasmfmtnasmfmt $PATH
nginxbeautifiernginxbeautifier $PATH
nginxfmtnginxfmt $PATH
nickel:formatnickel format $PATH
nimprettynimpretty $PATH
nixfmtnixfmt $PATH
nixpkgs-fmtnixpkgs-fmt $PATH
nomad:fmtnomad fmt $PATH
nphnph $PATH
npm-groovy-lintnpm-groovy-lint --format $PATH
nufmtnufmt $PATH
ocamlformatocamlformat --ignore-invalid-option --inplace --enable-outside-detected-project $PATH
ocp-indentocp-indent --inplace $PATH
odinfmtodinfmt -w $PATH
oelint-advoelint-adv --fix --nobackup --quiet $PATH
opa:fmtopa fmt $PATH -w
ormoluormolu --mode inplace $PATH
oxfmtoxfmt $PATH
oxlintoxlint --fix $PATH
packer:fixpacker fix $PATH
packer:fmtpacker fmt $PATH
packer:validatepacker validate $PATH
panache:formatpanache format $PATH
panache:lintpanache lint $PATH
pasfmtpasfmt $PATH
perflintperflint $PATH
perltidyperltidy -b $PATH
pg_formatpg_format --inplace $PATH
php-cs-fixer:fixphp-cs-fixer fix $PATH
phpcbfphpcbf $PATH
phpinsights:fixphpinsights fix $PATH --no-interaction --quiet
pintpint $PATH
pkl:formatpkl -w $PATH
prettierprettier --embedded-language-formatting off --log-level error --write $PATH
prettierdprettierd $PATH
pretty-phppretty-php $PATH
prettypstprettypst $PATH
prisma:formatprisma format --schema=$PATH
proselintproselint $PATH
protolintprotolint lint -fix $PATH
ptopptop $PATH $PATH
pug-lintpug-lint $PATH
puppet-lintpuppet-lint --fix $PATH
purs-tidypurs-tidy format-in-place $PATH
purtypurty --write $PATH
pyclnpycln --no-gitignore --quiet $PATH
pycodestylepycodestyle $PATH
pydoclintpydoclint $PATH
pydocstringformatterpydocstringformatter -w $PATH
pydocstylepydocstyle $PATH
pyflakespyflakes $PATH
pyinkpyink --quiet $PATH
pylintpylint --module-naming-style=any $PATH
pymarkdownlnt:fixpymarkdownlnt --return-code-scheme minimal fix $PATH
pymentpyment -w $PATH
pyreflypyrefly check $PATH
pyupgradepyupgrade --exit-zero-even-if-changed $PATH
qmlfmtqmlfmt -w $PATH
qmlformatqmlformat -i $PATH
qmllintqmllint $PATH
quick-lint-jsquick-lint-js $PATH
raco:fmtraco fmt -i $PATH
reekreek $PATH
refmtrefmt --in-place $PATH
reformat-gherkinreformat-gherkin $PATH
refurbrefurb $PATH
regal:fixregal fix $PATH
regal:lintregal lint $PATH
reorder-python-importsreorder-python-imports --exit-zero-even-if-changed $PATH
rescript:formatrescript format $PATH
reviverevive $PATH
roc:formatroc format $PATH
rstfmtrstfmt $PATH
rubocoprubocop --fix-layout --autocorrect --format quiet $PATH
rubyfmtrubyfmt -i $PATH
ruff:checkruff check --fix --quiet $PATH
ruff:formatruff format --quiet $PATH
ruforufo --simple-exit $PATH
rumdl:check:fixrumdl check --fix $PATH
rumdl:checkrumdl check $PATH
rumdl:fmtrumdl fmt $PATH
rune:fmtrune fmt $PATH
runicrunic --inplace $PATH
rustfmt:2015rustfmt --edition 2015 --quiet $PATH
rustfmt:2018rustfmt --edition 2018 --quiet $PATH
rustfmt:2021rustfmt --edition 2021 --quiet $PATH
rustfmt:2024rustfmt --edition 2024 --quiet $PATH
rustfmtrustfmt --edition 2024 --quiet $PATH
rustywindrustywind --write $PATH
salt-lintsalt-lint $PATH
scalascala fmt $PATH
scalafmtscalafmt --quiet --mode any $PATH
scalariformscalariform $PATH
seleneselene --no-summary --quiet $PATH
semistandardsemistandard --fix --stdin
shellcheckshellcheck $PATH
shellhardenshellharden --transform --replace $PATH
shfmtshfmt --write $PATH
sleeksleek $PATH
slim-lintslim-lint $PATH
smlfmtsmlfmt --force $PATH
snakefmtsnakefmt $PATH
solhintsolhint --quiet --fix --noPrompt $PATH
sphinx-lintsphinx-lint $PATH
sql-formattersql-formatter --fix $PATH
sqlfluff:fixsqlfluff fix --disable-progress-bar --nocolor --dialect ansi $PATH
sqlfluff:formatsqlfluff format --disable-progress-bar --nocolor --dialect ansi $PATH
sqlfluff:lintsqlfluff lint --disable-progress-bar --nocolor --dialect ansi $PATH
sqlfmtsqlfmt $PATH
sqlintsqlint $PATH
sqruffsqruff fix $PATH
squawksquawk $PATH
standardjsstandard --fix --stdin
standardrbstandardrb --fix $PATH
statix:checkstatix check $PATH
statix:fixstatix fix $PATH
stylefmtstylefmt $PATH
stylelintstylelint --fix $PATH
stylish-haskellstylish-haskell --inplace $PATH
styluastylua --verify $PATH
superhtml:fmtsuperhtml fmt $PATH
svlintsvlint $PATH
swift-formatswift-format --in-place $PATH
swiftformatswiftformat --quiet $PATH
swiftlintswiftlint $PATH
taplotaplo format $PATH
tclfmttclfmt $PATH
tclinttclint $PATH
templ:fmttempl fmt $PATH
terraform:fmtterraform fmt -write=true $PATH
terragrunt:hclfmtterragrunt hclfmt --terragrunt-hclfmt-file $PATH
tex-fmttex-fmt $PATH
textlint:fixtextlint --fix $PATH
textlinttextlint $PATH
tlint:formattlint format $PATH
tofu:fmttofu fmt -write=true $PATH
tombi:formattombi format -
tombi:linttombi lint $PATH
toml-sorttoml-sort -i $PATH
topiarytopiary format $PATH
tryceratopstryceratops --autofix $PATH
ts-standardts-standard --fix $PATH
tsp:formattsp format $PATH
tsqllinttsqllint --fix $PATH
twig-cs-fixer:checktwig-cs-fixer check $PATH --no-interaction
twig-cs-fixer:fixtwig-cs-fixer fix $PATH --no-interaction
twig-cs-fixer:linttwig-cs-fixer lint $PATH --no-interaction
twigcstwigcs $PATH
txtpbfmttxtpbfmt $PATH
tyty check $PATH
typostypos -w --no-ignore --hidden $PATH
typstfmttypstfmt $PATH
typstyletypstyle -i $PATH
ufmtufmt format $PATH
uiua:fmtuiua fmt $PATH
unimportunimport -r $PATH
usortusort format $PATH
v:fmtv fmt -w $PATH
vacuum:lintvacuum lint $PATH
verusfmtverusfmt $PATH
veryl:fmtveryl fmt $PATH
vhdl-style-guidevsg -f $PATH --fix
vint:neovimvint --enable-neovim $PATH
vintvint $PATH
wa:fmtwa fmt $PATH
wfindentwfindent $PATH
write-goodwrite-good $PATH
xmlformatxmlformat --overwrite $PATH
xmllintxmllint --format $PATH --output $PATH
xoxo --fix --stdin
xq:htmlxq --html
xqxq
yamlfixyamlfix $PATH
yamlfmtyamlfmt -quiet $PATH
yamllintyamllint $PATH
yapfyapf --in-place $PATH
yard-lintyard-lint $PATH
yew-fmtyew-fmt --edition 2021 $PATH
yqyq --inplace $PATH
zig:fmtzig fmt $PATH
ziggy:checkziggy check $PATH
ziggy:fmtziggy fmt $PATH
zprintzprint -w $PATH
zsweepzsweep --auto $PATH
zuban:checkzuban check $PATH
zuban:mypyzuban mypy $PATH
zubanzuban $PATH

Shell completions

Shell completions can be generated using mdsf completions <SHELL>.

Generate shell completion

Usage: mdsf completions [OPTIONS] <SHELL>

Arguments:
  <SHELL>  [possible values: bash, elvish, fish, nushell, powershell, zsh]

Options:
      --log-level <LOG_LEVEL>  [default: debug] [possible values: trace, debug, info, warn, error, off]
  -h, --help                   Print help
  -V, --version                Print version

Bash

Add the following to your .bashrc.

eval "$(mdsf completions bash)"

Zsh

Add the following to your .zshrc.

eval "$(mdsf completions zsh)"

Fish

Add the following to ~/.config/fish/config.fish.

mdsf completions fish | source

PowerShell

Add the following to your PowerShell configuration (Can be found by running $PROFILE).

Invoke-Expression (&mdsf completions powershell)

Elvish

Add the following to ~/.elvish/rc.elv.

eval (mdsf completions elvish)

Nushell

Generate completions for nushell.

mdsf completions nushell

Rust MSRV

mdsf is developed against the latest stable Rust version.

Older version might be indirectly supported, but it is not guaranteed without prior agreement.

Feel free to open an issue if you have a good reason for wanting support for a specific Rust compiler version.

Acknowledgement

mdsf was inspired by the amazing neovim formatting plugin conform.nvim.

Alternatives to mdsf

SEE ALSO

clihub3/4/2026MDSF(1)