MarsDawn

marsdawn pour les agents

Une référence pour les agents IA et les scripts qui appellent l’outil en ligne de commande marsdawn. Chaque exemple de cette page a été exécuté avec l’outil compilé à partir des sources actuelles.

Pour convertir un fichier Markdown en PDF, lancez marsdawn export notes.md --json et lisez un objet JSON sur stdout. Les diagrammes Mermaid et le code coloré sont rendus de la même façon que dans l’app MarsDawn. export n’a pas besoin de l’app ; open, si.

Ce qu’il fait

Ce qu’il ne fait pas

export

marsdawn export notes.md --json

Écrit notes.pdf à côté de notes.md. Options :

marsdawn export notes.md -o out.pdf --theme classic --paper letter --force --json

Succès, code de sortie 0 :

{"diagramErrors":[],"ok":true,"output":"/path/to/out.pdf","pages":1,"paper":"letter","theme":"classic"}

open

marsdawn open notes.md --json
marsdawn open notes.md:120 --json
marsdawn open notes.md --line 120 --json
marsdawn open . --json
marsdawn open notes.md --folder . --background --json

Succès, code de sortie 0 :

{"app":"/Applications/MarsDawn.app","ok":true,"opened":[{"line":120,"path":"/path/to/notes.md"}]}

Avec un dossier (marsdawn 0.5.1 et versions ultérieures), code de sortie 0 :

{"app":"/Applications/MarsDawn.app","folder":{"path":"/path/to/project","requested":true},"ok":true,"opened":[{"path":"/path/to/project/notes.md"}]}

marsdawn 0.2.x affichait opened sous forme de liste de chemins. Vérifiez marsdawn --version si vous devez gérer les deux.

Ouvrir les fichiers à mesure que Claude Code les modifie

Un hook Claude Code facultatif : après que Claude a écrit ou modifié un fichier Markdown, il ouvre ce fichier dans MarsDawn en arrière-plan, une fois par fichier et par session. Il est désactivé tant que vous ne l’ajoutez pas, projet par projet, car une fenêtre que vous n’avez pas demandée détourne l’attention. Il exécute une commande shell et ne coûte aucun token de modèle.

Il nécessite marsdawn 0.5.1 ou version ultérieure, pour --background, ainsi que l’app MarsDawn.

Enregistrez ceci sous .claude/hooks/marsdawn-open.sh dans votre projet, et rendez-le exécutable avec chmod +x :

#!/bin/sh
# Claude Code PostToolUse hook: open a Markdown file Claude just wrote or edited in MarsDawn,
# in the background, once per file per session. Never blocks Claude: every path exits 0.
input=$(cat)
file=$(printf '%s' "$input" | /usr/bin/jq -r '.tool_input.file_path // empty' 2>/dev/null)
session=$(printf '%s' "$input" | /usr/bin/jq -r '.session_id // "unknown"' 2>/dev/null)

case "$file" in
  *.md|*.markdown) ;;
  *) exit 0 ;;
esac
[ -f "$file" ] || exit 0
# A hook runs with Claude Code's PATH, which may not include Homebrew's.
marsdawn=$(command -v marsdawn || { [ -x /opt/homebrew/bin/marsdawn ] && echo /opt/homebrew/bin/marsdawn; }) || exit 0
[ -n "$marsdawn" ] || exit 0

# One list per session, so a file opens once however often Claude edits it.
seen="${TMPDIR:-/tmp}/marsdawn-hook/$session"
mkdir -p "$(dirname "$seen")"
grep -qxF "$file" "$seen" 2>/dev/null && exit 0
echo "$file" >> "$seen"

"$marsdawn" open --background "$file" >/dev/null 2>&1 || true
exit 0

Ajoutez ensuite le hook à .claude/settings.json dans le projet, ou à .claude/settings.local.json pour le garder pour vous :

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/marsdawn-open.sh" }
        ]
      }
    ]
  }
}

Échecs

Avec --json, un échec affiche un objet JSON sur stdout et se termine avec son code :

{"error":"output_exists","message":"/path/to/notes.pdf already exists. Pass --force to replace it.","ok":false}

Schémas JSON

JSON Schema (draft 2020-12) pour chaque résultat --json :

Variables d’environnement

Configuration requise

Installation

Avec Homebrew. Sur puce Apple, il installe un bottle précompilé en quelques secondes, sans Xcode. Sur un Mac Intel, il compile marsdawn à partir des sources, ce qui prend quelques minutes et nécessite Xcode 26 ou version ultérieure.

brew tap redtear1115/tap && brew install marsdawn
marsdawn --version

Ou compilez-le à partir des sources. La première compilation récupère les dépendances et compile, ce qui prend aussi quelques minutes.

git clone https://github.com/redtear1115/mars-dawn-kit.git
cd mars-dawn-kit
swift build -c release --product marsdawn
.build/release/marsdawn export notes.md --json

marsdawn --version affiche le numéro de version, par exemple 0.3.0, et se termine avec le code 0.

Pour aller plus loin