スキル一覧に戻る

generate-workflow-diagram

pjt222
更新日 2 days ago
2 閲覧
17
2
17
GitHubで表示
メタaiautomation

について

このスキルは、putiorワークフローデータからテーマ別のMermaidフローチャートを生成します。9種類のテーマ(うち4つは色覚特性に対応)、複数の出力モード、ドキュメント埋め込みのためのインタラクティブ機能を提供します。ソースファイルに注釈を付けた後に視覚的な図を作成する場合や、ワークフロー変更後に再生成が必要な場合にご利用ください。

クイックインストール

Claude Code

推奨
メイン
npx skills add pjt222/agent-almanac -a claude-code
プラグインコマンド代替
/plugin add https://github.com/pjt222/agent-almanac
Git クローン代替
git 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() oder put_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_typeMermaid-FormVerwendungszweck
"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 einschliessen
  • source_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 mit flowchart)
  • 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.csv und Data.csv sind 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 beschriebene knit_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 = TRUE zu unuebersichtlich: Grosse Projekte koennen viele Artefaktknoten generieren (10-20+), die das Diagramm ueberladen. show_artifacts = FALSE verwenden und sich auf node_type-Annotationen verlassen um wichtige Ein-/Ausgaben explizit zu markieren.

Verwandte Skills

  • annotate-source-files — Voraussetzung: Dateien muessen vor der Diagrammgenerierung annotiert sein
  • analyze-codebase-workflow — Auto-Erkennung kann manuelle Annotationen ergaenzen
  • setup-putior-ci — Diagramm-Neugenerierung in CI/CD automatisieren
  • create-quarto-report — Diagramme in Quarto-Berichte einbetten
  • build-pkgdown-site — Diagramme in pkgdown-Dokumentationsseiten einbetten

GitHub リポジトリ

pjt222/agent-almanac
パス: i18n/de/skills/generate-workflow-diagram
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

関連スキル

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を選択してください。

スキルを見る