Skip to content

shinagawa-web/gomarklint

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

228 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

gomarklint

Test codecov Go Report Card Go Reference License: MIT OpenSSF Scorecard

English | 日本語

Demo

Blazing-fast Markdown linter built in Go — 100,000+ lines in ~170ms. Single binary, no Node.js required, and built-in HTTP link validation.

Quick install (macOS / Linux):

curl -fsSL https://raw.githubusercontent.com/shinagawa-web/gomarklint/main/install.sh | sh

Download binary (no Go required):

Download the latest binary for your platform from GitHub Releases.

# macOS / Linux
tar -xzf gomarklint_Darwin_x86_64.tar.gz
sudo mv gomarklint /usr/local/bin/
# or install to user-local directory (no sudo required)
mkdir -p ~/.local/bin && mv gomarklint ~/.local/bin/
# Windows (PowerShell)
Expand-Archive -Path gomarklint_Windows_x86_64.zip -DestinationPath "$env:LOCALAPPDATA\Programs\gomarklint"
# Add to PATH (run once)
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$env:LOCALAPPDATA\Programs\gomarklint", "User")

Via Homebrew:

brew install shinagawa-web/tap/gomarklint

Via npm:

npm install -g @shinagawa-web/gomarklint

Via go install:

go install github.com/shinagawa-web/gomarklint/v3@latest
  • 100,000+ lines in ~170ms — single binary, no JIT warmup, no runtime overhead.
  • Catch broken links and headings before your docs ship.
  • Enforce predictable structure (no more "why is this H4 under H2?").
  • Output that's friendly for both humans and machines (JSON).

CI Integration

GitHub Actions

GitHub Marketplace

name: Lint Markdown

on:
  pull_request:
    paths:
      - '**/*.md'

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shinagawa-web/gomarklint@v3

Without args, the action lints the files listed in the include field of .gomarklint.json. Pass args to override, e.g. args: docs/.

Full options including PR comments: see Marketplace listing

pre-commit

Add to your .pre-commit-config.yaml:

repos:
  - repo: https://github.com/shinagawa-web/gomarklint
    rev: v3.0.0
    hooks:
      - id: gomarklint

Documentation

Full documentation is available at shinagawa-web.github.io/gomarklint

Contributing

Issues, suggestions, and PRs are welcome!

Requirements: Go 1.22+ (latest stable recommended)

make test      # unit tests
make test-e2e  # end-to-end tests
make build     # build binary

Git hooks

Install the pre-push hook to run lint and unit tests automatically before pushing:

make install-hooks

To bypass the hook in an emergency:

git push --no-verify

License

MIT License

Packages

 
 
 

Contributors

Languages