Communitygithub.com

Python-Installer-Erstellung (Professionell)

Professioneller Experte für die Erstellung von Python-Installern für Windows: Nuitka-Extremkompilierung, Dist-Verschlankung, DLL-Footprint-Analyse und Inno-Setup-Paketierung für die kleinsten und schnellsten Installer.

Was ist Python-Installer-Erstellung (Professionell)?

Diese Fähigkeit ist für Entwickler gedacht, die eine kommerzielle, möglichst kleine und schnell startende Windows-Installer für ihre Python-Anwendung benötigen – weit über einfache Skript-zu-EXE-Konvertierungen hinaus. Der Kernansatz kombiniert die Nuitka-Folder-Mode-Kompilierung (dist) mit Inno Setup zur Paketierung und verfolgt eine mehrstufige Optimierungsstrategie. Dazu gehören die gezielte Auswahl zwischen 32-Bit- und 64-Bit-Python (ca. 20-30% Platzeinsparung mit 32-Bit), eine aggressive Modulausschlussliste (z. B. Tests, Docs, Pip), die Entfernung von Debug-Symbolen und Cache-Dateien im dist-Ordner sowie eine detaillierte DLL-Analyse, um die größten Abhängigkeiten zu identifizieren und zu trimmen. Die Fähigkeit wird auf Plattformen wie Claude Code, Cursor oder Codex aktiviert und richtet sich primär an Windows-Benutzer. Ein besonderes Merkmal ist der strenge Workflow: Der Benutzer muss vor der Code-Generierung alle Parameter (App-Name, Version, Pfade, Icon) bestätigen und die korrekte Compilierung (kein Konsolenfenster, LTO aktiviert) sicherstellen. Als Referenz dient ein reales Projekt (323 MB PySide2-App), anhand dessen die Optimierungsschritte und erwarteten Ergebnisse (z. B. 120-250 MB für PyQt/PySide) detailliert demonstriert werden. Die Fähigkeit bietet zudem ein komplettes PowerShell-Slimming-Skript und eine Batch-Datei für einen optimierten Build-Prozess.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/generating-python-installer

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Python-Installer-Erstellung (Professionell)?

Sie sind ein Experte für die kommerzielle Bereitstellung von Python-Anwendungen. Ihr Ziel ist der kleinste, am schnellsten startende und sauberste Windows-Installer. Der Kernansatz ist "Nuitka-Ordner-Modus (dist) + Inno-Setup-Paketierung" – keine Single-File-Builds, kein ungewolltes Konsolenfenster.

Wann aktivieren

Aktivieren, wenn der Benutzer explizit nach fortschrittlicher Python-Paketierung oder Größen-/Startzeit-Optimierung unter Windows fragt:

  • Nuitka Extreme / Kommerzielle Kompilierung, kleinste Größe oder schnellster Start
  • dist-Ordner-Verschlankung, DLL-Footprint-Analyse, 32-Bit- vs. 64-Bit-Größenabwägungen
  • Inno-Setup-Paketierung mit vollständigen Metadaten und einer sauberen, rückstandsfreien Deinstallation

Dieses Skill zielt auf fortgeschrittene Größen-/Startzeit-Optimierung ab – nicht auf die einfache "Skript-zu-EXE"-Konvertierung.

Funktionsweise

  1. Build-Parameter bestätigen – App-Name, Version, Herausgeber, EXE-Name, Quell-/Ausgabeverzeichnisse, Icon. Niemals automatisch ausfüllen; den Benutzer fragen.
  2. Quell-Build überprüfen – Konsole deaktiviert, LTO aktiviert, VC++-Laufzeit vorhanden.
  3. Mit Nuitka kompilieren unter Verwendung der Modulausschluss- und Plugin-Strategie unten.
  4. dist-Ordner verschlanken – Debug-Symbole, Caches, Tests und Dokumentation entfernen, mit Schutz für zur Laufzeit benötigte Metadaten.
  5. DLLs analysieren, um die größten Abhängigkeiten zu finden und zu trimmen.
  6. Mit Inno Setup paketieren – LZMA2-Ultra-Kompression, vollständige Metadaten, rückstandsfreie Deinstallation und eine architekturgleiche VC++-Redistributable.

Beispiele

  • "用 Nuitka 把这个 PySide2 项目打成最小体积的商业安装包" → den vollständigen Workflow ausführen: 32-Bit empfehlen, WebEngine/3D/Charts ausschließen, dist verschlanken, mit Inno Setup paketieren.
  • "我的 exe 有 400 MB,怎么瘦身到一半" → DLLs analysieren, zu opencv-python-headless wechseln, opengl32sw entfernen, dist-Verschlankung anwenden.
  • "安装后在纯净系统打不开" → sicherstellen, dass die passende VC++-Redistributable im Inno-Setup-Skript gebündelt ist.

Kernphilosophie

Beständiges Festhalten am "Nuitka-Ordner-Modus (dist) + Inno-Setup-Paketierung"-Ansatz. Keine Single-File-Versionen, keine schwarzen Fenster.


Praxis-Referenzbeispiel (Produktionsreife PySide2-Desktop-Anwendung, 323 MB, inkl. OpenCV / Playwright)

Projektübersicht

  • Gesamtgröße: 323 MB
  • Paketierungstool: PyInstaller 4.7 (32-Bit)
  • Hauptabhängigkeiten: PySide2 (22.52 MB), OpenCV (62.38 MB), Playwright (76.74 MB)
  • Python-Version: Python 3.8 (32-Bit)
  • DLL-Anzahl: 71, insgesamt 93.23 MB

Wichtige Optimierungsstrategien

  1. PASS: 32-Bit-Python verwenden → 20-30% Größenreduzierung
  2. PASS: base_library.zip komprimiert die Standardbibliothek → 0.74 MB
  3. PASS: Modulausschluss optimiert → kein pytest/unittest/setuptools
  4. PASS: Qt-Plugins optimiert → nur notwendige Plugins behalten

Größenverteilung

KomponenteGrößeAnteilOptimierungsvorschlag
playwright76.74 MB23.8%Kann bei Bedarf entfernt werden
OpenCV62.38 MB19.3%opencv-python-headless verwenden
PySide222.52 MB7.0%WebEngine/3D/Charts ausschließen
Andere Abhängigkeiten161.36 MB49.9%-

Erwartete Ergebnisse im Vergleich

ProjekttypNuitka OriginalNach OptimierungTatsächliche Messung Referenzprojekt
Tkinter + Standardbibliothek150-250 MB80-120 MB-
PyQt/PySide200-400 MB120-250 MB323 MB (mit OpenCV usw.)
Mit numpy/pandas300-600 MB180-350 MB-

Kern-Workflow (Arbeitsablauf) - WARNUNG: Streng einhalten

Wenn der Benutzer eine Paketierung anfordert, führen Sie die folgenden Schritte aus:

Schritt 1: Parameter zwingend bestätigen (FEHLER: Keine Standardwerte verwenden)

WARNUNG: Wichtige Regel: Alle folgenden Parameter müssen einzeln mit dem Benutzer abgestimmt werden. Automatisches Ausfüllen oder Verwenden von Standardwerten ist verboten!

Der Benutzer muss zu den folgenden Informationen befragt werden und diese bestätigen (auf eine eindeutige Antwort des Benutzers warten, bevor fortgefahren wird):

ParameterBeschreibungBeispiel
Softwarename (App Name)Anzeigename der Software红墨批注
Versionsnummer (Version)Semantische Versionsnummer1.0.0
Herausgeber/Firmenname (Publisher)In der Systemsteuerung angezeigter HerausgeberYourCompany
Hauptprogramm (Exe Name)Name der Haupt-EXE-DateiRedInk.exe
Quellpfad (Source Dir)Absoluter Pfad zum Nuitka-dist-OrdnerD:\project\dist
Ausgabepfad (Output Dir)Speicherort des InstallersD:\project\output
Icon-Pfad (Icon Path)Absoluter Pfad zur .ico-Datei (optional, aber empfohlen)D:\project\icon.ico
Webseite (URL)Optional, für Link in der Systemsteuerunghttps://example.com

Nachfrage-Vorlage:

"Bitte geben Sie die folgenden Paketierungsparameter an. Ich benötige Ihre Bestätigung für jeden Punkt:

  1. Softwarename:
  2. Versionsnummer:
  3. Herausgeber/Firmenname:
  4. Hauptprogramm-Dateiname (z. B. xxx.exe):
  5. Quellpfad (Nuitka-dist-Ordner):
  6. Ausgabepfad (Speicherort des Installers):
  7. Icon-Pfad (.ico-Datei, kann leer gelassen werden):
  8. Webseite (kann leer gelassen werden):

Bitte füllen Sie jeden Punkt aus oder antworten Sie mit 'Überspringen' für leere Werte."

Schritt 2: Qualitäts- und Kompilierungsprüfung der Quelldateien (Kritisch) Vor der Code-Generierung muss der Benutzer die folgende kritische Bestätigung geben (da Inno Setup nur ein Paketierungstool ist und die Laufzeiteigenschaften des Programms nicht ändern kann):

"WARNUNG: Kompilierungsparameter-Prüfung:

  1. Kein Konsolenfenster: Bitte bestätigen Sie, dass Ihr dist-Ordner mit nuitka --windows-console-mode=disable kompiliert wurde. (Sonst erscheint nach der Installation ein schwarzes Fenster.)
  2. Hohe Leistung: Bitte bestätigen Sie, ob --lto=yes verwendet wurde. (Sonst ist die Startzeit möglicherweise nicht optimal.)
  3. Laufzeitbibliothek: Bitte stellen Sie sicher, dass der dist-Ordner die erforderlichen VC++-Laufzeitbibliotheken enthält, um die Ausführung auf einem sauberen System zu gewährleisten.

Bitte antworten Sie mit 'Bestätigt', wenn die Quelldateien bereit sind. Andernfalls kompilieren Sie bitte neu."

Schritt 3: Code generieren Nach der Bestätigung durch den Benutzer Code ausgeben, der vollständige Metadaten und eine Reparatur des Deinstallations-Icons enthält.


Nuitka Extreme Optimierungskompilierung (Basierend auf Referenzprojekt-Erfahrung)

I. 32-Bit vs. 64-Bit-Auswahlstrategie

Grund für die Verwendung von 32-Bit-Python im Referenzprojekt:

Komponente64-Bit-Größe32-Bit-GrößeEinsparung
python3x.dll~4.5 MB~3.8 MB15%
Qt5Core.dll~8 MB~5 MB37%
numpy~30 MB~20 MB33%
GesamtBasislinie-20~30%-

Empfohlene Bedingungen für 32-Bit:

  • PASS: Programmspeicherverbrauch < 2 GB
  • PASS: Es werden keine sehr großen Dateien verarbeitet (< 2 GB)
  • PASS: Zielbenutzer sind normale Bürocomputer

32-Bit-Kompilierungsmethode:

# 1. 32-Bit-Python installieren (kann neben 64-Bit existieren)
# Download: https://www.python.org/downloads/windows/

# 2. Abhängigkeiten mit 32-Bit-Python installieren
py -3.12-32 -m pip install -r requirements.txt

# 3. Mit 32-Bit-Python kompilieren
py -3.12-32 -m nuitka --standalone ...deine Parameter

II. Modulausschlussliste (vom Referenzprojekt verifiziert)

Sichere Ausschlussliste (zur Laufzeit nicht benötigt):

unittest,test,pytest,_pytest,doctest,pdb,pdbpp,
setuptools,pip,distutils,pkg_resources,
email.mime,http.server,xmlrpc,pydoc

Erwarteter Effekt: 30-50 MB einsparen

III. GUI-Framework-spezifische Optimierung

Tkinter Extreme Optimierung (empfohlen, am leichtgewichtigsten)

nuitka --standalone --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=8 ^
    --enable-plugin=tk-inter ^
    --enable-plugin=anti-bloat ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=unittest,test,pytest,_pytest,doctest,pdb,pdbpp ^
    --nofollow-import-to=setuptools,pip,distutils,pkg_resources ^
    --nofollow-import-to=email.mime,http.server,xmlrpc,pydoc ^
    --python-flag=no_docstrings ^
    --output-dir=dist ^
    --windows-icon-from-ico=icon.ico ^
    --remove-output ^
    main.py

Erwartete Größe: 80-120 MB (nach Optimierung)

PyQt5 / PySide2 Optimierung

nuitka --standalone --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=8 ^
    --enable-plugin=pyqt5 ^
    --enable-plugin=anti-bloat ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=unittest,test,pytest,_pytest,doctest,pdb ^
    --nofollow-import-to=setuptools,pip,distutils,pkg_resources ^
    --nofollow-import-to=PyQt5.QtWebEngine,PyQt5.QtWebEngineWidgets ^
    --nofollow-import-to=PyQt5.Qt3D,PyQt5.QtCharts ^
    --python-flag=no_docstrings ^
    --include-qt-plugins=sensible,styles,platforms ^
    --output-dir=dist ^
    --windows-icon-from-ico=icon.ico ^
    --remove-output ^
    main.py

Erwartete Größe: 120-250 MB (nach Optimierung)

IV. Vorlage für Ein-Klick-Kompilierungsskript

Speichern als build_optimized.bat (Projektstammverzeichnis):

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo Nuitka Extreme Optimierungskompilierung (Referenz: Referenzprojekt)
echo ========================================

REM === Konfigurationsbereich (An Ihre Werte anpassen) ===
set APP_NAME=IhrSoftwarename
set MAIN_FILE=main.py
set ICON_FILE=icon.ico

REM === Automatische CPU-Kern-Erkennung ===
REM Windows-Umgebungsvariable verwenden (wmic in Win11 22H2+ entfernt, falls nicht erkannt, wird --jobs=0 zu Single-Thread-Kompilierung)
set CPU_CORES=%NUMBER_OF_PROCESSORS%
if not defined CPU_CORES set CPU_CORES=4
set /a BUILD_JOBS=%CPU_CORES%

REM === Modulausschlussliste vom Referenzprojekt ===
set EXCLUDE_MODULES=unittest,test,pytest,_pytest,doctest,pdb,pdbpp
set EXCLUDE_MODULES=%EXCLUDE_MODULES%,setuptools,pip,distutils,pkg_resources
set EXCLUDE_MODULES=%EXCLUDE_MODULES%,email.mime,http.server,xmlrpc,pydoc

echo.
echo [1/4] Alte Builds bereinigen...
if exist dist rd /s /q dist
if exist build rd /s /q build

echo.
echo [2/4] Nuitka-Kompilierung läuft (Optimierungsstrategie vom Referenzprojekt angewendet)...
echo - CPU-Kerne: %CPU_CORES% (verwende %BUILD_JOBS% Threads)
echo - Modulausschluss: %EXCLUDE_MODULES%
echo.

nuitka --standalone ^
    --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=%BUILD_JOBS% ^
    --enable-plugin=anti-bloat ^
    --enable-plugin=tk-inter ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=%EXCLUDE_MODULES% ^
    --python-flag=no_docstrings ^
    --output-dir=dist ^
    --windows-icon-from-ico=%ICON_FILE% ^
    --remove-output ^
    %MAIN_FILE%

if %errorlevel% neq 0 (
    echo.
    echo [Fehler] Kompilierung fehlgeschlagen!
    pause
    exit /b 1
)

echo.
echo [3/4] Kompilierungsergebnis erfassen...
for /f %%a in ('powershell -NoProfile -Command "(Get-ChildItem -LiteralPath 'dist\%APP_NAME%.dist' -Recurse -File | Measure-Object -Property Length -Sum).Sum"') do set TOTAL_SIZE=%%a
set TOTAL_SIZE=%TOTAL_SIZE:,=%
set /a SIZE_MB=%TOTAL_SIZE% / 1048576
echo - Größe nach Kompilierung: %SIZE_MB% MB

echo.
echo [4/4] Verschlandungsbereinigung durchführen (Referenz: Referenzprojekt-Strategie)...
powershell -ExecutionPolicy Bypass -File slim_dist.ps1 -DistPath "dist\%APP_NAME%.dist"

echo.
echo ========================================
echo Kompilierung abgeschlossen!
echo ========================================
pause

V. dist-Verschlankungsskript (Bereinigung auf Referenzprojekt-Niveau)

Speichern als slim_dist.ps1 (gleiches Verzeichnis wie build_optimized.bat):

param(
    [string]$DistPath
)

$ErrorActionPreference = "Continue"  # Fehler nicht still unterdrücken: Löschfehler werden angezeigt, um falsche Erfolge zu vermeiden

Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "dist-Verschlankungsbereinigung (Referenz: Referenzprojekt-Strategie)" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

if (-not (Test-Path $DistPath)) {
    Write-Host "[Fehler] Verzeichnis nicht gefunden: $DistPath" -ForegroundColor Red
    exit 1
}

# Anfangsgröße erfassen
$InitialSize = (Get-ChildItem -Path $DistPath -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1MB
Write-Host "`nAnfangsgröße: $([math]::Round($InitialSize, 2)) MB" -ForegroundColor Yellow

# Charakteristik des Referenzprojekts: Keine .pdb, .pyi, __pycache__, test usw.
Write-Host "`n[Wende Bereinigungsstrategie des Referenzprojekts an...]" -ForegroundColor Green

# 1. Debug-Symbole löschen
Write-Host "`n[1/7] Lösche .pdb-Debug-Symbole..." -ForegroundColor Green
$pdbFiles = Get-ChildItem -Path $DistPath -Recurse -Include *.pdb -File
$pdbSize = ($pdbFiles | Measure-Object -Property Length -Sum).Sum / 1MB
if ($pdbFiles.Count -gt 0) {
    $pdbFiles | Remove-Item -Force
    Write-Host "   $($pdbFiles.Count) Dateien gelöscht, $([math]::Round($pdbSize, 2)) MB eingespart"
} else {
    Write-Host "  Keine .pdb-Dateien gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 2. Typannotationen löschen
Write-Host "`n[2/7] Lösche .pyi-Typannotationen..." -ForegroundColor Green
$pyiFiles = Get-ChildItem -Path $DistPath -Recurse -Include *.pyi -File
$pyiSize = ($pyiFiles | Measure-Object -Property Length -Sum).Sum / 1MB
if ($pyiFiles.Count -gt 0) {
    $pyiFiles | Remove-Item -Force
    Write-Host "   $($pyiFiles.Count) Dateien gelöscht, $([math]::Round($pyiSize, 2)) MB eingespart"
} else {
    Write-Host "  Keine .pyi-Dateien gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 3. __pycache__ löschen
Write-Host "`n[3/7] Lösche __pycache__-Cache..." -ForegroundColor Green
$pycacheDirs = Get-ChildItem -Path $DistPath -Recurse -Directory -Filter "__pycache__"
$pycacheSize = 0
foreach ($dir in $pycacheDirs) {
    $size = (Get-ChildItem -Path $dir.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum
    $pycacheSize += $size
    Remove-Item -Path $dir.FullName -Recurse -Force
}
if ($pycacheDirs.Count -gt 0) {
    Write-Host "   $($pycacheDirs.Count) Verzeichnisse gelöscht, $([math]::Round($pycacheSize / 1MB, 2)) MB eingespart"
} else {
    Write-Host "  Keine __pycache__ gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 4. Testverzeichnisse löschen
Write-Host "`n[4/7] Lösche test/tests-Testverzeichnisse..." -ForegroundColor Green
$testDirs = Get-ChildItem -Path $DistPath -Recurse -Directory | Where-Object { $_.Name -match '^tests?$' }
$testSize = 0
foreach ($dir in $testDirs) {
    $size = (Get-ChildItem -Path $dir.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum
    $testSize += $size
    Remove-Item -Path $dir.FullName -Recurse -Force
}
if ($testDirs.Count -gt 0) {
    Write-Host "   $($testDirs.Count) Verzeichnisse gelöscht, $([math]::Round($testSize / 1MB, 2)) MB eingespart"
} else {
    Write-Host "  Keine Testverzeichnisse gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 5. Dokumentation und Beispiele löschen
Write-Host "`n[5/7] Lösche docs/examples-Dokumentationsverzeichnisse..." -ForegroundColor Green
$docDirs = Get-ChildItem -Path $DistPath -Recurse -Directory | Where-Object { $_.Name -match '^(docs|examples|samples|demo)$' }
$docSize = 0
foreach ($dir in $docDirs) {
    $size = (Get-ChildItem -Path $dir.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum
    $docSize += $size
    Remove-Item -Path $dir.FullName -Recurse -Force
}
if ($docDirs.Count -gt 0) {
    Write-Host "   $($docDirs.Count) Verzeichnisse gelöscht, $([math]::Round($docSize / 1MB, 2)) MB eingespart"
} else {
    Write-Host "  Keine Dokumentationsverzeichnisse gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 6. .pyc-Dateien löschen
Write-Host "`n[6/7] Lösche .pyc-Bytecode..." -ForegroundColor Green
$pycFiles = Get-ChildItem -Path $DistPath -Recurse -Include *.pyc -File
$pycSize = ($pycFiles | Measure-Object -Property Length -Sum).Sum / 1MB
if ($pycFiles.Count -gt 0) {
    $pycFiles | Remove-Item -Force
    Write-Host "   $($pycFiles.Count) Dateien gelöscht, $([math]::Round($pycSize, 2)) MB eingespart"
} else {
    Write-Host "  Keine .pyc-Dateien gefunden (bereits optimiert)" -ForegroundColor Gray
}

# 7. .dist-info-Metadaten optimieren
Write-Host "`n[7/7] Optimiere .dist-info-Metadaten..." -ForegroundColor Green
$distInfoDirs = Get-ChildItem -Path $DistPath -Recurse -Directory -Filter "*.dist-info"
$removedCount = 0
$removedSize = 0
foreach ($infoDir in $distInfoDirs) {
    # Nur Installationsbuchhaltungsdateien löschen; METADATA und entry_points.txt behalten (werden von importlib.metadata zur Laufzeit gelesen, Löschen würde Plugin-Erkennung beeinträchtigen)
    $filesToRemove = @("RECORD", "INSTALLER", "direct_url.json")
    foreach ($fileName in $filesToRemove) {
        $file = Join-Path $infoDir.FullName $fileName
        if (Test-Path $file) {
            $size = (Get-Item $file).Length
            $removedSize += $size
            Remove-Item $file -Force
            $removedCount++
        }
    }
}
if ($removedCount -gt 0) {
    Write-Host "   $removedCount Metadatendateien gelöscht, $([math]::Round($removedSize / 1MB, 2)) MB eingespart"
} else {
    Write-Host "  Keine bereinigbaren Metadaten gefunden (bereits optimiert)" -ForegroundColor Gray
}

# Endgültige Größe erfassen
$FinalSize = (Get-ChildItem -Path $DistPath -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1MB
$SavedSize = $InitialSize - $FinalSize
$SavedPercent = if ($InitialSize -gt 0) { ($SavedSize / $InitialSize) * 100 } else { 0 }

Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Bereinigung abgeschlossen!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Anfangsgröße: $([math]::Round($InitialSize, 2)) MB" -ForegroundColor Yellow
Write-Host "Endgröße: $([math]::Round($FinalSize, 2)) MB" -ForegroundColor Green
Write-Host "Platzersparnis: $([math]::Round($SavedSize, 2)) MB ($([math]::Round($SavedPercent, 1))%)" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Verwandte Skills