MCP HubMCP Hub
Вернуться к навыкам

generate-workflow-diagram

pjt222
Обновлено 2 days ago
7 просмотров
17
2
17
Посмотреть на GitHub
Метаaiautomation

О программе

Этот навык создает тематические блок-схемы Mermaid из данных рабочего процесса putior. Он предлагает 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 — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.

Просмотреть навык

polymarket

Мета

Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.

Просмотреть навык

creating-opencode-plugins

Мета

Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.

Просмотреть навык

sglang

Мета

SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

Просмотреть навык