wastech-mdlint

Deterministyczne lintowanie Markdownu, który czytają twoi agenci.

  • Open source
  • Aktywnie rozwijany
  • MIT

wastech-mdlint to CLI i biblioteka w TypeScripcie, które sprawdzają kontekst w Markdownie w twoim repozytorium, od AGENTS.md i CLAUDE.md po całe drzewo dokumentacji. Każda kontrola działa lokalnie, bez zapytań sieciowych i bez modelu w pętli, więc te same pliki zawsze dają ten sam wynik.

Zobacz repozytoriumZobacz na npm

Dlaczego tu jest

Dobra praca agentów zależy między innymi od porządku w plikach, które czytają, i właśnie do tego napisałem to narzędzie. Działa lokalnie i w CI, a używam go we własnych produktach, między innymi w Wastime i na tej stronie. Działającą konfigurację można zobaczyć w publicznym repozytorium wastech-orchestrator.

Problem

Pliki, które czytają twoi agenci, zmieniają się razem z kodem i jeśli nic ich nie sprawdza, linki przestają działać po przeniesieniu pliku, a pliki kontekstu rosną ponad rozmiar, który model dobrze czyta. Żaden test wtedy nie pada, więc pierwszym sygnałem może być to, że agent pracuje gorzej, a łatwo zrzucić to na model.

Rozwiązanie

wastech-mdlint traktuje Markdown dla agentów jak kod źródłowy. Ma 22 wbudowane reguły, od celów linków po wymagane kolumny tabel, oraz reguły budżetu, które ograniczają rozmiar kontekstu. Własne reguły zapisuje się jako konfigurację z zamkniętego zestawu asercji, więc w twoim CI nie uruchamia się żaden dowolny kod.

  • Gdy konfiguracja włącza reguły, zepsute linki wewnętrzne i rozjechane tabele oblewają kontrolę w CI albo przy lokalnym uruchomieniu.
  • Budżet tokenów na kontekst staje się limitem, który CI może sprawdzić.
  • Własne reguły to zwykłe dane, więc uruchomienie ich w cudzym CI nie wykonuje żadnego kodu.

Najważniejsze funkcje

  • 22 wbudowane regułyKategorie dla tabel, sekcji i struktury, odwołań, jakości treści i spójności grafu.
  • Higiena kontekstu dla LLMBudżety bajtów, linii i tokenów oraz budżet importów eager dla plików kontekstu.
  • Deklaratywne własne regułyZamknięty słownik asercji składanych w konfiguracji – bez przebudowy i bez wykonywania kodu w twoim CI.

Przykładowe uruchomienia

wastech-mdlint lint .broken.md 3:11 error Link target "missing.md" does not resolve to a file. REF-001✖ 1 problem (1 error, 0 warnings)
Wynik wastech-mdlint 0.2.2 na przykładzie z zepsutym linkiem z jego własnych testów.
wastech-mdlint graph .nodes: 8edges: 7cycles: 1entry points (3): design.md index.md orphan.mdtop hubs: (none: no document has 3 or more incoming references)cycles: cycle-a.md -> cycle-b.md -> cycle-a.mdclusters: cluster 1 (5 files): design.md glossary.md guide.md index.md requirements.md cluster 2 (2 files): cycle-a.md cycle-b.md cluster 3 (1 files): orphan.mdreading order (6): design.md index.md glossary.md guide.md orphan.md requirements.mdall 2 documents below sit in a cycle.excluded from reading order (2): cycle-a.md cycle-b.mdcoverage: nodes: 8 edges: 7 files outside corpus (1): appendix.md
Wynik wastech-mdlint 0.2.2 na przykładzie grafu z jego własnych testów. Celowo zawiera on cykl odwołań, który raport ma wychwycić.

Dla kogo

  • Zespoły, które utrzymują dużo dokumentacji i kontekstu dla agentów.
  • Każdy, kto trzyma CLAUDE.md / AGENTS.md / SKILL.md w repozytorium.

Technologie

Język
  • TypeScript
Środowisko uruchomieniowe
  • Node.js 24 LTS
Struktura
  • Monorepo na npm workspaces
  • TypeScript project references
Integracja z AI
  • Model Context Protocol (stdio)

Instalacja

npm install --save-dev @wastech-mdlint/clinpx wastech-mdlint initnpx wastech-mdlint lint .
Wymaga Node.js 24.17 lub nowszego. Bez konfiguracji linter nie uruchamia żadnej reguły, więc najpierw idzie polecenie init. Skanuje ono twoje dokumenty, przygotowuje zestaw reguł i zapisuje go po twoim potwierdzeniu.

Ograniczenia

  • Zewnętrzne linki HTTP nie są sprawdzane, dzięki czemu każde uruchomienie pozostaje lokalne i deterministyczne.
  • Własne reguły to wyłącznie dane, bez konfiguracji w TypeScripcie czy JavaScripcie i bez wtyczek z kodem użytkownika.
  • Graf kontekstu jest budowany od nowa przy każdym uruchomieniu, na razie bez przyrostowej pamięci podręcznej.

Chcesz takich samych kontroli w repozytorium twojego zespołu?

Napisz do mnie