Developer and creative tools

antimemes/

memelint

A linter that checks comments, docstrings, and docs against Simplified Technical English (ASD-STE100), with per-project word lists.

What’s new here

memelint checks source-code prose against ASD-STE100, a controlled-language standard. It reports violations by rule number: STE 1.1 flags an unapproved word, STE 4.2 flags a contraction, STE 6.3 flags a sentence over 25 words. A project-level allowlist in memelint.toml covers domain terms not in the STE dictionary.

What it does

memelint parses source files with tree-sitter grammars and extracts comments, docstrings, and documentation text. It then checks that text against the ASD-STE100 Issue 9 vocabulary and rules. Six rules are currently checked:

  • 1.1 unapproved word, with approved alternatives
  • 1.2 approved word used in the wrong part of speech
  • 1.6 word not in the dictionary and not in your word list
  • 3.5 -ing form of an approved verb
  • 4.2 contraction
  • 6.3 sentence longer than 25 words

memelint check --fix rewrites contractions automatically. --unsafe-fixes also swaps unapproved words for their STE-approved alternatives; you review the diff before committing.

Rust, Python, JavaScript, TypeScript, Go, C, Java, Nix, TOML, and Markdown grammars are compiled in. Additional tree-sitter .so grammar files (the same files Neovim uses) can be loaded from a directory. The Nix package includes each grammar that nixpkgs has. Markdown is off until [languages.markdown] has check = true.

Who it’s for

Teams that want rule-based enforcement of Simplified Technical English in their codebase’s prose. Useful when your comments, docstrings, or documentation need to follow ASD-STE100 rules, and you want violations caught in CI or locally before merge. Also helpful for projects that maintain per-project terminology lists and want unknown words flagged.

Try it

Prebuilt binaries for Linux and macOS (x86_64 and aarch64) are in the v0.0.6 release. The installer script covers both:

curl -fsSL https://memelint.sh | sh
memelint check

With Nix flakes, no installation is needed:

nix run github:antimemes/memelint -- check

For CI, add a workflow file at .github/workflows/memelint.yml:

name: memelint
 
on:
  push:
    branches: [main]
  pull_request:
 
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: antimemes/memelint@latest

GitHub Actions findings appear as pull request annotations. Project-specific terms go in memelint.toml at the repo root:

words = ["gantry", "sprocket"]

How mature is it

Created 2026-10-13, so under a week old at the time of writing. Six releases in four days (latest v0.0.6, 2026-10-17). 37 commits in the last 90 days. One contributor. 9 stars, 0 forks. The README states the license is MIT or Apache-2.0, at your option; GitHub reports Apache-2.0. Active but very early.