Ghostchars in deinem Terminal
Dieselbe Maschine wie diese Website, als ein npm-Paket: ein Kommandozeilenwerkzeug, ein Gate für CI und ein MCP-Server, den dein Coding-Agent aufrufen kann. Node 22 oder neuer, und nichts verlässt deinen Rechner.
- Kostenlos, MIT-Lizenz
- Keine Netzwerkaufrufe
- Skill, MCP-Server, Hooks
npx -y ghostchars clean -i notes.mdEs gibt keinen Installationsschritt: npx holt Version 1.0.2 und führt sie aus. Node 22 oder neuer ist die einzige Voraussetzung, und das Paket hat keine Laufzeitabhängigkeiten.
Was es tut
Vier Befehle, eine Maschine. Die Reinigungsschalter und ihre Schreibweisen sind genau die, die diese Website und die Mac-App verwenden; eine Stufe bedeutet also überall dasselbe.
clean
Liest stdin oder die Dateien, die du nennst, und schreibt den gereinigten Text nach stdout, oder überschreibt mit -i jede Datei direkt, atomar. Mit --check schreibt es nichts und endet mit Exit-Code 1, wenn sich etwas ändern würde.
inspect
Listet jedes verdächtige Zeichen mit Zeile, Spalte, Codepoint, Unicode-Namen und dem Schalter, der darauf wirken würde. Es ändert nichts und endet mit Exit-Code 1, wenn es etwas findet.
report
Misst die Gewohnheiten, die einen Entwurf maschinell geschrieben wirken lassen: gleichförmige Satzlängen, Standardübergänge, verräterische Wörter, Dichte der Gedankenstriche, Abschwächungen. Es ist kein Detektor und gibt keine Wahrscheinlichkeit aus.
check
Hält einen ganzen Dateibaum an eine Stufe und gibt jede Datei aus, die sich ändern würde, mit genauen Zeichenpositionen. Das ist der Befehl für CI und für einen Pre-Commit-Hook.
clean und inspect öffnen neben reinem Text auch .docx, .odt und .html und reinigen ein Dokument strukturell statt als Bytestrom. PDF ist nicht vorgesehen.
Eine Stufe ist ein benannter Satz von Schaltern, damit ein Mensch oder ein Agent ein Wort wählt statt zwölf Flags: default entfernt nur, was unsichtbar ist, text normalisiert zusätzlich Leerzeichen und typografische Satzzeichen, und max schaltet alles ein und ist verlustbehaftet.
Das Gate in CI
Ein Schritt, keine Action zu installieren, Exit-Code 1 bei Funden. Übergib in CI nie --fix: Es macht einen roten Build grün, ohne dass jemand liest, was sich geändert hat.
npx -y ghostchars check --bar textMit --sarif wird derselbe Lauf als SARIF-2.1.0-Protokoll ausgegeben, ein Ergebnis pro auffälligem Zeichen, und GitHub Code Scanning zeigt die Funde direkt im Pull Request.
- run: npx -y ghostchars check --bar text --sarif > ghostchars.sarif || true
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ghostchars.sarifEine ghostchars.json im Wurzelverzeichnis legt fest, welche Dateien an welche Stufe gehalten werden, und pinnt eine Datei, die sich absichtlich um genau N Zeichen unterscheidet. Ein Pin gilt in beide Richtungen: Eine Datei, die still korrigiert wurde, scheitert, bis der Pin entfernt ist.
Ohne Pfade findet check die Dateien mit git ls-files und respektiert damit die Ignore-Regeln, die dein Repository ohnehin hat. Binärdateien, Dateien über 2 MiB und Dateien, die kein gültiges UTF-8 sind, werden übersprungen, ohne dass der Lauf scheitert.
Für Coding-Agenten
Das Paket liefert die Dateien mit, die ein Agent braucht, um das Gate auszuführen, ohne jedes Mal darum gebeten zu werden. Nimm eine davon oder alle; sie stehen sich nicht im Weg, und keine davon ist ein Installer.
Der Skill
Ein Verzeichnis, SKILL.md und zwei Referenzdateien, gelesen von Claude Code, Codex, Cursor, VS Code mit Copilot und Gemini CLI. Es sagt dem Agenten, wann er das Werkzeug ausführen und was er mit jeder Art von Fund tun soll. Regeldateien für Cursor, Windsurf und Copilot sowie ein Block zum Einfügen in AGENTS.md, CLAUDE.md und GEMINI.md liegen daneben.
Der MCP-Server
ghostchars mcp spricht das Model Context Protocol über stdin und stdout und stellt vier schreibgeschützte Werkzeuge bereit: clean_text, inspect_text, style_report und check_paths. Ein fünftes, clean_files, schreibt auf die Festplatte und wird nur mit --allow-write registriert. Konfigurationsschnipsel liegen für sechs Hosts bei.
Der Claude-Code-Hook
Ein PostToolUse-Hook, der jede Datei prüft, die der Agent schreibt, und einen Fund als Rückmeldung zurückgibt, damit der Agent ihn im selben Zug behebt. Ein Skript und ein Eintrag in den Einstellungen.
Der Pre-Commit-Hook
Ein Block zum Einfügen in .pre-commit-config.yaml: ein lokaler Hook, der über die vorgemerkten Textdateien läuft, damit nichts Unsauberes committet wird, von niemandem. Wie der CI-Schritt übergibt er nie --fix.
{
"mcpServers": {
"ghostchars": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ghostchars", "mcp"]
}
}
}Der Schnipsel für Claude Code. Dieselben drei Wörter, npx -y ghostchars mcp, sind die gesamte Konfiguration für Codex, Cursor, VS Code, Gemini CLI und Windsurf.
Datenschutz
Alles läuft auf deinem Rechner. Es gibt keinen Netzwerkcode im Paket: keine Telemetrie, keine Update-Pings, keine Lizenzprüfung, kein Konto. Die einzigen Bytes, die den Prozess verlassen, sind die, die er ausgibt. Nichts, was du reinigst, prüfst oder auswertest, geht irgendwohin.
Dieselbe Maschine, überall sonst
Die Mac-App
Systemweites Reinigen hinter einem Tastenkürzel, in jeder App, in der du tippst, und Stapelreinigung für Dokumente. Das Tastenkürzel ist 20 Mal pro Woche gratis; $24 einmalig hebt die Grenze auf.
Die Browser-Erweiterung
Kostenlos, unbegrenzt in Popup und Rechtsklick-Menü, und sie sammelt nichts. Sie funktioniert heute, in Chrome und den darauf aufbauenden Browsern.
Fragen, die wirklich gestellt werden
Was braucht es?
Node 22 oder neuer, und sonst nichts. Das Paket hat null Laufzeitabhängigkeiten, und npx holt es beim ersten Aufruf; eine globale Installation gibt es also nur, wenn du eine willst.
Telefoniert es nach Hause?
Nein. Es gibt überhaupt keinen Netzwerkcode im Paket: keine Telemetrie, keine Update-Prüfung, keine Lizenzprüfung. Du kannst es auf einem Rechner ohne Verbindung ausführen, und es verhält sich identisch.
Wie verhält es sich zum Python-Skript?
Es ist dieselbe Maschine. Die Reinigungsschalter, ihre Schreibweisen und ihre Bedeutungen sind die der Python-Referenz-CLI, und Golden-Fixtures binden clean und inspect Byte für Byte daran. Neu sind die Kurzform der Stufen, die JSON- und SARIF-Ausgabe, der Befehl check mit seiner Konfiguration und seinen Pins sowie der MCP-Server.
Sagt mir report, ob ein Text von einer KI geschrieben wurde?
Nein. Es misst Gewohnheiten, die einen Entwurf maschinell geschrieben wirken lassen, damit du sie überarbeiten kannst, und es gibt keine Wahrscheinlichkeit, keine Punktzahl und kein Urteil aus. Es entscheidet nie, ob ein Text generiert wurde.
Öffnet check Dokumente?
Nein. check durchläuft ein Repository und öffnet keine Zip-Archive; clean und inspect sind die Befehle, die .docx, .odt und .html lesen. Nichts im Paket liest PDF, Bilder oder Google Docs.
Ist die CLI kostenlos?
Ja, und dahinter steckt keine Bezahlstufe. Das Paket steht unter MIT-Lizenz, das Gate, der MCP-Server und die Integrationen sind alle enthalten, und die Lizenz, die auf der Preisseite verkauft wird, ist für die Mac-App.