wastech-mdlint

Deterministisches Linting für das Markdown, das Ihre Agenten lesen.

  • Open Source
  • Wird aktiv entwickelt
  • MIT

wastech-mdlint ist eine CLI und Bibliothek in TypeScript, die den Markdown-Kontext in Ihrem Repository prüft, von AGENTS.md und CLAUDE.md bis zum Dokumentationsbaum. Jede Prüfung läuft lokal, ohne Netzwerkzugriffe und ohne ein Modell dazwischen, sodass dieselben Dateien immer dasselbe Ergebnis liefern.

Repository ansehenAuf npm ansehen

Warum es hier ist

Gute Arbeit von Agenten hängt auch davon ab, dass die Dateien, die sie lesen, in Ordnung sind, und dafür habe ich dieses Tool geschrieben. Es läuft lokal und in der CI, und ich nutze es in meinen eigenen Produkten, darunter Wastime und diese Website. Eine funktionierende Konfiguration liegt im öffentlichen Repository von wastech-orchestrator.

Problem

Die Dateien, die Ihre Agenten lesen, ändern sich mit dem Code, und wenn nichts sie prüft, laufen Links ins Leere, sobald eine Datei verschoben wird, und Kontextdateien wachsen über die Größe hinaus, die ein Modell gut liest. Dabei schlägt kein Test fehl, also ist das erste Anzeichen vielleicht ein Agent, der schlechter arbeitet, und das schiebt man leicht auf das Modell.

Lösung

wastech-mdlint behandelt Markdown für Agenten wie Quellcode. Es bringt 22 eingebaute Regeln mit, von Link-Zielen bis zu Pflichtspalten in Tabellen, dazu Budgetregeln, die der Kontextgröße eine Obergrenze setzen. Eigene Regeln werden als Konfiguration aus einem geschlossenen Satz von Prüfungen geschrieben, sodass in Ihrer CI kein beliebiger Code läuft.

  • Sobald eine Konfiguration die Regeln einschaltet, lassen defekte interne Links und verrutschte Tabellen eine Prüfung in der CI oder bei einem lokalen Lauf fehlschlagen.
  • Ein Token-Budget für den Kontext wird zu einer Grenze, die die CI prüfen kann.
  • Eigene Regeln sind reine Daten, sodass ihr Lauf in der CI eines anderen keinen Code ausführt.

Wichtige Funktionen

  • 22 eingebaute RegelnKategorien für Tabellen, Abschnitte und Struktur, Verweise, Qualität der Inhalte und die Integrität des Graphen.
  • Kontext-Hygiene für LLMsBudgets für Bytes, Zeilen und Tokens, dazu ein Budget für Eager-Importe in Kontextdateien.
  • Deklarative eigene RegelnEin geschlossenes Vokabular von Prüfungen, in der Konfiguration zusammengesetzt, ohne Neubau und ohne Ausführung von Code in Ihrer CI.

Beispielläufe

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)
Ausgabe von wastech-mdlint 0.2.2 auf der Fixture mit einem defekten Link aus seiner eigenen Testsuite.
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
Ausgabe von wastech-mdlint 0.2.2 auf der Graph-Fixture aus seiner eigenen Testsuite. In sie ist absichtlich ein Zyklus aus Verweisen eingebaut, den der Bericht finden soll.

Für wen

  • Teams, die viel Dokumentation und Kontext für Agenten pflegen.
  • Alle, die CLAUDE.md / AGENTS.md / SKILL.md in einem Repository haben.

Stack

Sprache
  • TypeScript
Laufzeit
  • Node.js 24 LTS
Struktur
  • Monorepo mit npm workspaces
  • TypeScript project references
KI-Integration
  • Model Context Protocol (stdio)

Installation

npm install --save-dev @wastech-mdlint/clinpx wastech-mdlint initnpx wastech-mdlint lint .
Voraussetzung ist Node.js 24.17 oder neuer. Ohne Konfiguration führt der Linter keine Regeln aus, deshalb kommt der Befehl init zuerst. Er durchsucht Ihre Dokumente, entwirft einen Regelsatz und schreibt ihn, sobald Sie bestätigen.

Grenzen

  • Externe HTTP-Links werden nicht geprüft, so bleibt jeder Lauf lokal und deterministisch.
  • Eigene Regeln sind nur Daten, ohne Konfigurationen in TypeScript oder JavaScript und ohne Plugins mit eigenem Code.
  • Der Kontextgraph wird bei jedem Lauf neu aufgebaut, einen inkrementellen Cache gibt es noch nicht.

Möchten Sie dieselben Prüfungen im Repository Ihres Teams?

Schreiben Sie mir