Communitygithub.com

ItamarZand88/awesome-agent-conventions

Ein kuratierter Leitfaden zu Konventionsdateien, die KI-Agenten lesen, schreiben und verwenden: AGENTS.md, CLAUDE.md, SKILL.md, llms.txt, MCP-Konfigurationen, Regeln und Beispiele.

Was ist awesome-agent-conventions?

Diese Fähigkeit bietet eine umfassende und kuratierte Sammlung von Konventionsdateien, die für moderne KI-Agenten und Entwicklungswerkzeuge wie Claude Code, Cursor und Codex relevant sind. Sie deckt eine breite Palette von Dateitypen ab, darunter AGENTS.md, CLAUDE.md, SKILL.md, llms.txt sowie Konfigurationen für das Model Context Protocol (MCP) und agentenspezifische Regeln. Der Leitfaden enthält detaillierte Beispiele und Best Practices für jede Datei, sodass Entwickler und Agenten schnell verstehen, wie diese Konventionen strukturiert und eingesetzt werden. Ziel ist es, die Interoperabilität und das Verständnis zwischen verschiedenen Agenten-Ökosystemen zu fördern, indem standardisierte, gemeinsame Konfigurationen und Dokumentationen bereitgestellt werden. Die Fähigkeit ist plattformunabhängig und dient als zentrale Anlaufstelle für alle, die die Verhaltensweise und das Wissen ihrer KI-Assistenten durch klar definierte Konventionsdateien steuern möchten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add ItamarZand88/awesome-agent-conventions

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation


name: pdf description: Verwenden Sie diese Fähigkeit, wenn der Benutzer etwas mit PDF-Dateien tun möchte. Dies umfasst das Lesen oder Extrahieren von Text/Tabellen aus PDFs, das Zusammenführen oder Kombinieren mehrerer PDFs zu einer, das Aufteilen von PDFs, das Drehen von Seiten, das Hinzufügen von Wasserzeichen, das Erstellen neuer PDFs, das Ausfüllen von PDF-Formularen, das Ver-/Entschlüsseln von PDFs, das Extrahieren von Bildern und die OCR-Bearbeitung gescannter PDFs, um sie durchsuchbar zu machen. Wenn der Benutzer eine .pdf-Datei erwähnt oder darum bittet, eine zu erstellen, verwenden Sie diese Fähigkeit. license: Proprietär. LICENSE.txt enthält die vollständigen Bedingungen

PDF-Verarbeitungsleitfaden

Überblick

Dieser Leitfaden behandelt wesentliche PDF-Verarbeitungsoperationen mit Python-Bibliotheken und Befehlszeilenwerkzeugen. Für erweiterte Funktionen, JavaScript-Bibliotheken und detaillierte Beispiele lesen Sie REFERENCE.md. Wenn Sie ein PDF-Formular ausfüllen müssen, lesen Sie FORMS.md und befolgen Sie dessen Anweisungen.

Schnellstart

from pypdf import PdfReader, PdfWriter

# Ein PDF lesen
reader = PdfReader("document.pdf")
print(f"Seiten: {len(reader.pages)}")

# Text extrahieren
text = ""
for page in reader.pages:
    text += page.extract_text()

Python-Bibliotheken

pypdf - Grundlegende Operationen

PDFs zusammenführen

from pypdf import PdfWriter, PdfReader

writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
    reader = PdfReader(pdf_file)
    for page in reader.pages:
        writer.add_page(page)

with open("merged.pdf", "wb") as output:
    writer.write(output)

PDF aufteilen

reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page_{i+1}.pdf", "wb") as output:
        writer.write(output)

Metadaten extrahieren

reader = PdfReader("document.pdf")
meta = reader.metadata
print(f"Titel: {meta.title}")
print(f"Autor: {meta.author}")
print(f"Betreff: {meta.subject}")
print(f"Ersteller: {meta.creator}")

Seiten drehen

reader = PdfReader("input.pdf")
writer = PdfWriter()

page = reader.pages[0]
page.rotate(90)  # 90 Grad im Uhrzeigersinn drehen
writer.add_page(page)

with open("rotated.pdf", "wb") as output:
    writer.write(output)

pdfplumber - Text- und Tabellenextraktion

Text mit Layout extrahieren

import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

Tabellen extrahieren

with pdfplumber.open("document.pdf") as pdf:
    for i, page in enumerate(pdf.pages):
        tables = page.extract_tables()
        for j, table in enumerate(tables):
            print(f"Tabelle {j+1} auf Seite {i+1}:")
            for row in table:
                print(row)

Erweiterte Tabellenextraktion

import pandas as pd

with pdfplumber.open("document.pdf") as pdf:
    all_tables = []
    for page in pdf.pages:
        tables = page.extract_tables()
        for table in tables:
            if table:  # Prüfen, ob Tabelle nicht leer ist
                df = pd.DataFrame(table[1:], columns=table[0])
                all_tables.append(df)

# Alle Tabellen kombinieren
if all_tables:
    combined_df = pd.concat(all_tables, ignore_index=True)
    combined_df.to_excel("extracted_tables.xlsx", index=False)

reportlab - PDFs erstellen

Grundlegende PDF-Erstellung

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter

# Text hinzufügen
c.drawString(100, height - 100, "Hallo Welt!")
c.drawString(100, height - 120, "Dies ist ein mit reportlab erstelltes PDF")

# Eine Linie hinzufügen
c.line(100, height - 140, 400, height - 140)

# Speichern
c.save()

PDF mit mehreren Seiten erstellen

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.lib.styles import getSampleStyleSheet

doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
story = []

# Inhalt hinzufügen
title = Paragraph("Berichtstitel", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))

body = Paragraph("Dies ist der Text des Berichts. " * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())

# Seite 2
story.append(Paragraph("Seite 2", styles['Heading1']))
story.append(Paragraph("Inhalt für Seite 2", styles['Normal']))

# PDF erstellen
doc.build(story)

Tief- und Hochstellungen

WICHTIG: Verwenden Sie niemals Unicode-Tief-/Hochstellungszeichen (₀₁₂₃₄₅₆₇₈₉, ⁰¹²³⁴⁵⁶⁷⁸⁹) in ReportLab-PDFs. Die integrierten Schriftarten enthalten diese Glyphen nicht, was dazu führt, dass sie als ausgefüllte schwarze Kästchen dargestellt werden.

Verwenden Sie stattdessen die XML-Markup-Tags von ReportLab in Paragraph-Objekten:

from reportlab.platypus import Paragraph
from reportlab.lib.styles import getSampleStyleSheet

styles = getSampleStyleSheet()

# Tiefstellungen: <sub>-Tag verwenden
chemical = Paragraph("H<sub>2</sub>O", styles['Normal'])

# Hochstellungen: <super>-Tag verwenden
squared = Paragraph("x<super>2</super> + y<super>2</super>", styles['Normal'])

Bei canvas-gezeichnetem Text (keine Paragraph-Objekte) die Schriftgröße und -position manuell anpassen, anstatt Unicode-Tief-/Hochstellungen zu verwenden.

Befehlszeilenwerkzeuge

pdftotext (poppler-utils)

# Text extrahieren
pdftotext input.pdf output.txt

# Text mit Layout-Erhaltung extrahieren
pdftotext -layout input.pdf output.txt

# Bestimmte Seiten extrahieren
pdftotext -f 1 -l 5 input.pdf output.txt  # Seiten 1-5

qpdf

# PDFs zusammenführen
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

# Seiten aufteilen
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf

# Seiten drehen
qpdf input.pdf output.pdf --rotate=+90:1  # Seite 1 um 90 Grad drehen

# Passwort entfernen
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf

pdftk (falls verfügbar)

# Zusammenführen
pdftk file1.pdf file2.pdf cat output merged.pdf

# Aufteilen
pdftk input.pdf burst

# Drehen
pdftk input.pdf rotate 1east output rotated.pdf

Häufige Aufgaben

Text aus gescannten PDFs extrahieren

# Erfordert: pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path

# PDF in Bilder konvertieren
images = convert_from_path('scanned.pdf')

# OCR für jede Seite
text = ""
for i, image in enumerate(images):
    text += f"Seite {i+1}:\n"
    text += pytesseract.image_to_string(image)
    text += "\n\n"

print(text)

Wasserzeichen hinzufügen

from pypdf import PdfReader, PdfWriter

# Wasserzeichen erstellen (oder vorhandenes laden)
watermark = PdfReader("watermark.pdf").pages[0]

# Auf alle Seiten anwenden
reader = PdfReader("document.pdf")
writer = PdfWriter()

for page in reader.pages:
    page.merge_page(watermark)
    writer.add_page(page)

with open("watermarked.pdf", "wb") as output:
    writer.write(output)

Bilder extrahieren

# Mit pdfimages (poppler-utils)
pdfimages -j input.pdf output_prefix

# Dies extrahiert alle Bilder als output_prefix-000.jpg, output_prefix-001.jpg usw.

Passwortschutz

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

# Passwort hinzufügen
writer.encrypt("userpassword", "ownerpassword")

with open("encrypted.pdf", "wb") as output:
    writer.write(output)

Kurzreferenz

AufgabeBestes WerkzeugBefehl/Code
PDFs zusammenführenpypdfwriter.add_page(page)
PDFs aufteilenpypdfEine Seite pro Datei
Text extrahierenpdfplumberpage.extract_text()
Tabellen extrahierenpdfplumberpage.extract_tables()
PDFs erstellenreportlabCanvas oder Platypus
Zusammenführen (Befehlszeile)qpdfqpdf --empty --pages ...
OCR für gescannte PDFspytesseractZuerst in Bild konvertieren
PDF-Formulare ausfüllenpdf-lib oder pypdf (siehe FORMS.md)Siehe FORMS.md

Nächste Schritte

  • Für erweiterte pypdfium2-Nutzung siehe REFERENCE.md
  • Für JavaScript-Bibliotheken (pdf-lib) siehe REFERENCE.md
  • Wenn Sie ein PDF-Formular ausfüllen müssen, befolgen Sie die Anweisungen in FORMS.md
  • Für Fehlerbehebungsleitfäden siehe REFERENCE.md

Verwandte Skills