generate-workflow-diagram
について
このスキルは、putiorワークフローデータからテーマ別のMermaidフローチャートを生成します。9種類のテーマ(うち4つは色覚特性に対応)、複数の出力モード、ドキュメント埋め込みのためのインタラクティブ機能を提供します。ソースファイルに注釈を付けた後に視覚的な図を作成する場合や、ワークフロー変更後に再生成が必要な場合にご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-workflow-diagramこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Workflow-Diagramm generieren
Ein thematisiertes Mermaid-Flussdiagramm aus putior-Workflowdaten generieren und in Dokumentation einbetten.
Wann verwenden
- Nach dem Annotieren von Quelldateien, wenn das visuelle Diagramm erstellt werden soll
- Neuerstellen eines Diagramms nach Workflow-Aenderungen
- Wechsel von Themen oder Ausgabeformaten fuer verschiedene Zielgruppen
- Einbettung von Workflow-Diagrammen in README-, Quarto- oder R-Markdown-Dokumente
Eingaben
- Erforderlich: Workflowdaten von
put(),put_auto()oderput_merge() - Optional: Themenname (Standard:
"light"; Optionen: light, dark, auto, minimal, github, viridis, magma, plasma, cividis) - Optional: Ausgabeziel: Konsole, Dateipfad, Zwischenablage oder Rohtext
- Optional: Interaktive Funktionen:
show_source_info,enable_clicks
Vorgehensweise
Schritt 1: Workflowdaten extrahieren
Workflowdaten aus einer von drei Quellen beziehen.
library(putior)
# Aus manuellen Annotationen
workflow <- put("./src/")
# Aus manuellen Annotationen, bestimmte Dateien ausschliessend
workflow <- put("./src/", exclude = c("build-workflow\\.R$", "test_"))
# Nur aus Auto-Erkennung
workflow <- put_auto("./src/")
# Aus zusammengefuehrt (manuell + auto)
workflow <- put_merge("./src/", merge_strategy = "supplement")
Der Workflow-Dataframe kann eine node_type-Spalte aus Annotationen enthalten. Knotentypen steuern Mermaid-Formen:
node_type | Mermaid-Form | Verwendungszweck |
|---|---|---|
"input" | Stadion ([...]) | Datenquellen, Konfigurationsdateien |
"output" | Unterprogramm [[...]] | Erzeugte Artefakte, Berichte |
"process" | Rechteck [...] | Verarbeitungsschritte (Standard) |
"decision" | Raute {...} | Bedingte Logik, Verzweigungen |
"start" / "end" | Stadion ([...]) | Einstiegs-/Endknoten |
Jeder node_type erhaelt auch eine entsprechende CSS-Klasse (z.B. class nodeId input;) fuer themenbasiertes Styling.
Erwartet: Ein Dataframe mit mindestens einer Zeile, der id, label und optional input, output, source_file, node_type-Spalten enthaelt.
Bei Fehler: Wenn der Dataframe leer ist, wurden keine Annotationen oder Muster gefunden. Zuerst analyze-codebase-workflow ausfuehren, oder pruefen ob Annotationen syntaktisch gueltig sind mit put("./src/", validate = TRUE).
Schritt 2: Thema und Optionen waehlen
Ein fuer die Zielgruppe geeignetes Thema auswaehlen.
# Alle verfuegbaren Themen auflisten
get_diagram_themes()
# Standardthemen
# "light" — Standard, helle Farben
# "dark" — Fuer Dunkelmodusumgebungen
# "auto" — GitHub-adaptiv mit Volltonfarben
# "minimal" — Graustufen, druckfreundlich
# "github" — Optimiert fuer GitHub-README-Dateien
# Farbenblindensichere Themen (Viridis-Familie)
# "viridis" — Lila→Blau→Gruen→Gelb, allgemeine Barrierefreiheit
# "magma" — Lila→Rot→Gelb, hoher Kontrast fuer Druck
# "plasma" — Lila→Pink→Orange→Gelb, Praesentationen
# "cividis" — Blau→Grau→Gelb, maximale Barrierefreiheit (kein Rot-Gruen)
Zusaetzliche Parameter:
direction: Diagrammflussrichtung —"TD"(von oben nach unten, Standard),"LR"(von links nach rechts),"RL","BT"show_artifacts:TRUE/FALSE— Artefaktknoten anzeigen (Dateien, Daten); kann bei grossen Workflows unuebersichtlich werden (z.B. 16+ zusaetzliche Knoten)show_workflow_boundaries:TRUE/FALSE— Knoten jeder Quelldatei in einen Mermaid-Subgraphen einschliessensource_info_style: Wie Quelldateiinformationen auf Knoten angezeigt werden (z.B. als Untertitel)node_labels: Format fuer Knotenbeschriftungstext
Erwartet: Themennamen werden ausgegeben. Eines basierend auf dem Kontext auswaehlen.
Bei Fehler: Wenn ein Themenname nicht erkannt wird, faellt put_diagram() auf "light" zurueck. Schreibweise pruefen.
Schritt 3: Benutzerdefinierte Palette mit put_theme() (optional)
Wenn die 9 eingebauten Themen nicht zur Projektpalette passen, ein benutzerdefiniertes Thema mit put_theme() erstellen.
# Benutzerdefinierte Palette erstellen — nicht angegebene Typen erben vom Basisthema
cyberpunk <- put_theme(
base = "dark",
input = c(fill = "#1a1a2e", stroke = "#00ff88", color = "#00ff88"),
process = c(fill = "#16213e", stroke = "#44ddff", color = "#44ddff"),
output = c(fill = "#0f3460", stroke = "#ff3366", color = "#ff3366"),
decision = c(fill = "#1a1a2e", stroke = "#ffaa33", color = "#ffaa33")
)
# Palette-Parameter verwenden (ueberschreibt Thema wenn angegeben)
mermaid_content <- put_diagram(workflow, palette = cyberpunk, output = "raw")
writeLines(mermaid_content, "workflow.mmd")
put_theme() akzeptiert die Knotentypen input, process, output, decision, artifact, start und end. Jeder nimmt einen benannten Vektor c(fill = "#hex", stroke = "#hex", color = "#hex") entgegen. Nicht gesetzte Typen erben vom base-Thema.
Erwartet: Mermaid-Ausgabe mit benutzerdefinierten classDef-Zeilen. Knotenformen aus node_type bleiben erhalten; nur Farben aendern sich. Alle Knotentypen verwenden stroke-width:2px — Ueberschreiben derzeit nicht ueber put_theme() unterstuetzt.
Bei Fehler: Wenn das Palettenobjekt nicht die Klasse putior_theme hat, gibt put_diagram() einen beschreibenden Fehler aus. Sicherstellen dass der Rueckgabewert von put_theme() uebergeben wird, nicht eine rohe Liste.
Rueckfallmethode — manueller classDef-Ersatz: Fuer feingranulare Kontrolle ueber das hinaus was put_theme() bietet (z.B. typspezifische Strichbreiten), mit einem Basisthema generieren und classDef-Zeilen manuell ersetzen:
mermaid_content <- put_diagram(workflow, theme = "dark", output = "raw")
lines <- strsplit(mermaid_content, "\n")[[1]]
lines <- lines[!grepl("^\\s*classDef ", lines)]
custom_defs <- c(" classDef input fill:#1a1a2e,stroke:#00ff88,stroke-width:3px,color:#00ff88")
mermaid_content <- paste(c(lines, custom_defs), collapse = "\n")
Schritt 4: Mermaid-Ausgabe generieren
Das Diagramm im gewuenschten Ausgabemodus erzeugen.
# Auf Konsole ausgeben (Standard)
cat(put_diagram(workflow, theme = "github"))
# In Datei speichern
writeLines(put_diagram(workflow, theme = "github"), "docs/workflow.md")
# Rohtext fuer Einbettung erhalten
mermaid_code <- put_diagram(workflow, output = "raw", theme = "github")
# Mit Quelldateiinformation (zeigt woher jeder Knoten kommt)
cat(put_diagram(workflow, theme = "github", show_source_info = TRUE))
# Mit klickbaren Knoten (fuer VS Code, RStudio oder file://-Protokoll)
cat(put_diagram(workflow,
theme = "github",
enable_clicks = TRUE,
click_protocol = "vscode" # oder "rstudio", "file"
))
# Voll ausgestattet
cat(put_diagram(workflow,
theme = "viridis",
show_source_info = TRUE,
enable_clicks = TRUE,
click_protocol = "vscode"
))
Erwartet: Gueltiger Mermaid-Code der mit flowchart TD (oder LR je nach Richtung) beginnt. Knoten sind durch Pfeile verbunden die den Datenfluss zeigen.
Bei Fehler: Wenn die Ausgabe flowchart TD ohne Knoten ist, ist der Workflow-Dataframe leer. Wenn Verbindungen fehlen, pruefen ob Ausgabedateinamen den Eingabedateinamen knotenuebergreifend exakt entsprechen.
Schritt 5: In Zieldokument einbetten
Das Diagramm in das passende Dokumentationsformat einfuegen.
GitHub README (```mermaid Code-Fence):
## Workflow
```mermaid
flowchart TD
A["Daten extrahieren"] --> B["Transformieren"]
B --> C["Laden"]
```
Quarto-Dokument (nativer Mermaid-Chunk ueber knit_child):
# Chunk 1: Code generieren (sichtbar, faltbar)
workflow <- put("./src/")
mermaid_code <- put_diagram(workflow, output = "raw", theme = "github")
# Chunk 2: Als nativen Mermaid-Chunk ausgeben (versteckt)
#| output: asis
#| echo: false
mermaid_chunk <- paste0("```{mermaid}\n", mermaid_code, "\n```")
cat(knitr::knit_child(text = mermaid_chunk, quiet = TRUE))
R Markdown (mit mermaid.js CDN oder DiagrammeR):
DiagrammeR::mermaid(put_diagram(workflow, output = "raw"))
Erwartet: Diagramm rendert korrekt im Zielformat. GitHub rendert Mermaid-Code-Fences nativ.
Bei Fehler: Wenn GitHub das Diagramm nicht rendert, sicherstellen dass der Code-Fence exakt ```mermaid verwendet (keine zusaetzlichen Attribute). Fuer Quarto sicherstellen dass der knit_child()-Ansatz verwendet wird, da direkte Variableninterpolation in {mermaid}-Chunks nicht unterstuetzt wird.
Validierung
-
put_diagram()erzeugt gueltigen Mermaid-Code (beginnt mitflowchart) - Alle erwarteten Knoten erscheinen im Diagramm
- Datenflussverbindungen (Pfeile) zwischen verbundenen Knoten vorhanden
- Gewaehltes Thema wird angewendet (init-Block in Ausgabe auf themenspezifische Farben pruefen)
- Diagramm rendert korrekt im Zielformat (GitHub, Quarto usw.)
Haeufige Stolperfallen
- Leere Diagramme: Bedeutet meist dass
put()keine Zeilen zurueckgegeben hat. Pruefen ob Annotationen existieren und syntaktisch gueltig sind. - Alle Knoten unverbunden: Ausgabedateinamen muessen exakt mit Eingabedateinamen uebereinstimmen (einschliesslich Erweiterung) damit putior Verbindungen zeichnet.
data.csvundData.csvsind unterschiedlich. - Thema nicht sichtbar auf GitHub: GitHubs Mermaid-Renderer hat eingeschraenkte Themenunterstuetzung. Das
"github"-Thema ist speziell fuer GitHub-Rendering konzipiert. Der%%{init:...}%%-Themenblock wird von einigen Renderern moeglicherweise ignoriert. - Quarto Mermaid-Variableninterpolation: Quartos
{mermaid}-Chunks unterstuetzen R-Variablen nicht direkt. Die in Schritt 5 beschriebeneknit_child()-Technik verwenden. - Klickbare Knoten funktionieren nicht: Click-Direktiven erfordern einen Renderer der Mermaid-Interaktionsereignisse unterstuetzt. GitHubs statischer Renderer unterstuetzt keine Klicks. Einen lokalen Mermaid-Renderer oder die putior-Shiny-Sandbox verwenden.
- Selbstreferenzielle Meta-Pipeline-Dateien: Ein Verzeichnis scannen das das Build-Skript enthaelt das das Diagramm generiert verursacht doppelte Subgraph-IDs und Mermaid-Fehler. Den
exclude-Parameter verwenden um sie beim Scannen zu ueberspringen:workflow <- put("./src/", exclude = c("build-workflow\\.R$", "build-workflow\\.js$")) show_artifacts = TRUEzu unuebersichtlich: Grosse Projekte koennen viele Artefaktknoten generieren (10-20+), die das Diagramm ueberladen.show_artifacts = FALSEverwenden und sich aufnode_type-Annotationen verlassen um wichtige Ein-/Ausgaben explizit zu markieren.
Verwandte Skills
annotate-source-files— Voraussetzung: Dateien muessen vor der Diagrammgenerierung annotiert seinanalyze-codebase-workflow— Auto-Erkennung kann manuelle Annotationen ergaenzensetup-putior-ci— Diagramm-Neugenerierung in CI/CD automatisierencreate-quarto-report— Diagramme in Quarto-Berichte einbettenbuild-pkgdown-site— Diagramme in pkgdown-Dokumentationsseiten einbetten
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
