i18n/de/skills/annotate-source-files/SKILL.md
PUT-Workflow-Annotationen zu Quelldateien hinzufügen, mit dem korrekten sprachspezifischen Kommentar-Präfix. Behandelt Annotationssyntax, Skeleton-Generierung via put_generate(), mehrzeilige Annotationen, .internal-Variablen und Validierung. Unterstützt 30+ Sprachen mit automatischer Kommentar-Präfix-Erkennung. Verwenden, nach der Codebase-Analyse mit einem Annotationsplan, beim Hinzufügen von Workflow-Dokumentation oder beim Dokumentieren von Datenpipelines.
npx skillsauth add pjt222/agent-almanac annotate-source-filesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
PUT-Workflow-Annotationen zu Quelldateien hinzufügen, sodass putior strukturierte Workflow-Daten extrahieren und Mermaid-Diagramme generieren kann.
analyze-codebase-workflow mit vorhandenem Annotationsplanput_generate() für Skeleton-Generierung verwendet werden soll (Standard: ja)Jede Sprache hat ein spezifisches Kommentar-Präfix für PUT-Annotationen. get_comment_prefix() verwenden, um das korrekte zu finden.
library(putior)
# Häufige Präfixe
get_comment_prefix("R") # "#"
get_comment_prefix("py") # "#"
get_comment_prefix("sql") # "--"
get_comment_prefix("js") # "//"
get_comment_prefix("ts") # "//"
get_comment_prefix("go") # "//"
get_comment_prefix("rs") # "//"
get_comment_prefix("m") # "%"
get_comment_prefix("lua") # "--"
Erwartet: Ein String wie "#", "--", "//" oder "%".
Zeilen- und Block-Kommentare: putior erkennt Annotationen sowohl in Zeilen-Kommentaren (
//,#,--) als auch in C-Stil-Block-Kommentaren (/* */,/** */). Für JS/TS werden sowohl//als auch/* */-Blöcke gescannt. Python-Triple-Quote-Strings (''' ''') werden nicht erkannt — für Python#verwenden.
Bei Fehler: Wenn die Erweiterung nicht erkannt wird, ist die Dateisprache möglicherweise nicht unterstützt. get_supported_extensions() für die vollständige Liste prüfen. Für nicht unterstützte Sprachen # als konventionellen Standard verwenden.
put_generate() verwenden, um Annotations-Templates basierend auf auto-erkanntem I/O zu erstellen.
# Vorschläge in der Konsole ausgeben
put_generate("./src/etl/")
# Einzeiliger Stil (Standard)
put_generate("./src/etl/", style = "single")
# Mehrzeiliger Stil für komplexe Annotationen
put_generate("./src/etl/", style = "multiline")
# In Zwischenablage kopieren zum Einfügen
put_generate("./src/etl/", output = "clipboard")
Beispiel-Ausgabe für eine R-Datei:
# put id:'extract_data', label:'Extract Customer Data', input:'customers.csv', output:'raw_data.internal'
Beispiel-Ausgabe für SQL:
-- put id:'load_data', label:'Load Customer Table', output:'customers'
Erwartet: Eine oder mehrere Annotations-Kommentarzeilen pro Quelldatei, vorausgefüllt mit erkannten Funktionsnamen und I/O.
Bei Fehler: Wenn keine Vorschläge generiert werden, enthält die Datei möglicherweise keine erkennbaren I/O-Muster. Annotationen manuell basierend auf dem Verständnis des Codes schreiben.
Die generierten Skeletons bearbeiten, um genaue Beschriftungen, Verbindungen und Metadaten hinzuzufügen.
Annotationssyntax-Referenz:
<prefix> put id:'unique_id', label:'Menschenlesbare Beschriftung', input:'datei1.csv, datei2.rds', output:'ergebnis.parquet, zusammenfassung.internal'
Felder:
id (erforderlich): Eindeutige Kennung, für Knotenverbindungen verwendetlabel (erforderlich): Menschenlesbare Beschreibung, im Diagramm angezeigtinput: Komma-getrennte Liste von Input-Dateien oder -Variablenoutput: Komma-getrennte Liste von Output-Dateien oder -Variablen.internal-Erweiterung: Markiert In-Memory-Variablen (nicht zwischen Skripten persistiert)node_type: Steuert Mermaid-Knotenform und CSS-Klassen-Styling. Werte:
"input" — Stadion-Form ([...]) für Datenquellen und Konfiguration"output" — Subroutinen-Form [[...]] für generierte Artefakte"process" — Rechteck [...] für Verarbeitungsschritte (Standard)"decision" — Raute {...} für bedingte Logik"start" / "end" — Stadion-Form ([...]) für Einstiegs-/EndknotenBeispiel mit node_type:
# put id:'config', label:'Load Config', node_type:'input', output:'config.internal'
# put id:'transform', label:'Apply Rules', node_type:'process', input:'config.internal', output:'result.rds'
# put id:'report', label:'Generate Report', node_type:'output', input:'result.rds'
Mehrzeilige Syntax (für komplexe Annotationen):
# put id:'complex_step', \
# label:'Mehrzeilige Beschriftung', \
# input:'data.csv, config.yaml', \
# output:'result.parquet'
Dateiübergreifender Datenfluss (Skripte über dateibasiertes I/O verbinden):
# Skript 1: extract.R
# put id:'extract', label:'Daten extrahieren', output:'raw_data.internal, raw_data.rds'
data <- read.csv("source.csv")
saveRDS(data, "raw_data.rds")
# Skript 2: transform.R
# put id:'transform', label:'Daten transformieren', input:'raw_data.rds', output:'clean_data.parquet'
data <- readRDS("raw_data.rds")
arrow::write_parquet(clean, "clean_data.parquet")
Erwartet: Annotationen mit genauen IDs, Beschriftungen und I/O-Feldern verfeinert, die den tatsächlichen Datenfluss widerspiegeln.
Bei Fehler: Wenn I/O unklar ist, .internal-Erweiterung für In-Memory-Intermediate-Werte und explizite Dateinamen für persistierte Daten verwenden.
Annotationen am Anfang jeder Datei oder unmittelbar über dem relevanten Code-Block platzieren.
Platzierungskonventionen:
Beispiel-Platzierung in einer R-Datei:
#!/usr/bin/env Rscript
# ETL-Extraktionsskript
#
# put id:'read_source', label:'Quelldaten einlesen', input:'raw_data.csv', output:'df.internal'
df <- read.csv("raw_data.csv")
# put id:'clean_data', label:'Bereinigen und validieren', input:'df.internal', output:'clean.rds'
df_clean <- df[complete.cases(df), ]
saveRDS(df_clean, "clean.rds")
Das Edit-Tool verwenden, um Annotationen in bestehende Dateien einzufügen, ohne umgebenden Code zu stören.
Erwartet: Annotationen an geeigneten Stellen in jeder Quelldatei eingefügt.
Bei Fehler: Wenn Annotationen die Syntax-Hervorhebung im Editor stören, sicherstellen, dass das Kommentar-Präfix für die Sprache korrekt ist. PUT-Annotationen sind Standard-Kommentare und sollten die Code-Ausführung nicht beeinflussen.
putiors Validierung ausführen, um Annotationssyntax und Konnektivität zu prüfen.
# Annotierte Dateien scannen
workflow <- put("./src/", validate = TRUE)
# Auf Validierungsprobleme prüfen
print(workflow)
cat(sprintf("Gesamtknoten: %d\n", nrow(workflow)))
# Verbindungen durch Prüfung von Input/Output-Überschneidung verifizieren
inputs <- unlist(strsplit(workflow$input, ",\\s*"))
outputs <- unlist(strsplit(workflow$output, ",\\s*"))
connected <- intersect(inputs, outputs)
cat(sprintf("Verbundene Datenflüsse: %d\n", length(connected)))
# Diagramm generieren zur visuellen Inspektion
cat(put_diagram(workflow, theme = "github", show_source_info = TRUE))
# Mit auto-erkannten Daten zusammenführen für maximale Abdeckung
merged <- put_merge("./src/", merge_strategy = "supplement")
cat(put_diagram(merged, theme = "github"))
Erwartet: Alle Annotationen werden ohne Fehler geparst. Das Diagramm zeigt einen verbundenen Workflow. put_merge() füllt Lücken aus der Auto-Erkennung.
Bei Fehler: Häufige Validierungsprobleme:
id:'name → id:'name'id:"name" → id:'name'id muss innerhalb des gesamten gescannten Verzeichnisses eindeutig sein\ muss das letzte Zeichen vor dem Zeilenumbruch seinput("./src/") gibt einen DataFrame mit der erwarteten Knotenanzahl zurückid-Werte im gescannten Verzeichnisput_diagram() erzeugt ein verbundenes Flowchart (nicht nur isolierte Knoten).internal-Variablen erscheinen nur als Outputs, nie als dateiübergreifende Inputsid:'name'. Doppelte Anführungszeichen verursachen Parsing-Probleme in String-Kontexten.id muss innerhalb des gescannten Bereichs global eindeutig sein. Namenskonvention wie <skript>_<schritt> verwenden (z. B. extract_read, transform_clean)..internal als dateiübergreifender Input: .internal-Variablen existieren nur während der Skript-Ausführung. Um Daten zwischen Skripten zu übergeben, ein persistiertes Dateiformat als Output eines Skripts und Input des nächsten verwenden.# in einer SQL-Datei oder // in Python zu verwenden, lässt die Annotation als Code statt als Kommentar behandelt werden.\ enden und die nächste Zeile muss mit dem Kommentar-Präfix beginnen.# für Python-PUT-Annotationen verwenden.analyze-codebase-workflow — Voraussetzung: erzeugt den Annotationsplan, dem dieses Skill folgtgenerate-workflow-diagram — nächster Schritt: endgültiges Diagramm aus Annotationen generiereninstall-putior — putior muss vor dem Annotieren installiert seinconfigure-putior-mcp — MCP-Tools bieten interaktive Annotationshilfetesting
Launch all available agents in parallel waves for open-ended hypothesis generation on problems where the correct domain is unknown. Use when facing a cross-domain problem with no clear starting point, when single-agent approaches have stalled, or when diverse perspectives are more valuable than deep expertise. Produces a ranked hypothesis set with convergence analysis and adversarial refinement.
tools
Write integration tests for a Node.js CLI application using the built-in node:test module. Covers the exec helper pattern, output assertions, filesystem state verification, cleanup hooks, JSON output parsing, error case testing, and state restoration after destructive tests. Use when adding tests to an existing CLI, testing a new command, verifying adapter behavior across frameworks, or setting up CI for a CLI tool.
development
Screen a proposed trademark for conflicts and distinctiveness before filing. Covers trademark database searches (TMview, WIPO Global Brand Database, USPTO TESS), distinctiveness analysis using the Abercrombie spectrum, likelihood of confusion assessment using DuPont factors and EUIPO relative grounds, common law rights evaluation, and goods/services overlap analysis. Produces a conflict report with a risk matrix. Use before adopting a new brand name, logo, or slogan — distinct from patent prior art search, which uses different databases, legal frameworks, and analysis methods.
tools
Scaffold a new CLI command using Commander.js with options, action handler, three output modes (human-readable, quiet, JSON), and optional ceremony variant. Covers command naming, option design, shared context patterns, error handling, and integration testing. Use when adding a command to an existing Commander.js CLI, designing a new CLI tool from scratch, or standardizing command structure across a multi-command CLI.