Communitygithub.com

génération-installateur-python

Expert en création d'installateurs Python de qualité commerciale pour Windows : compilation extrême Nuitka, allègement du dossier dist, analyse d'empreinte DLL et packaging Inno Setup pour produire les installateurs les plus petits et les plus rapides. À utiliser lorsqu'une application Python doit être distribuée sous forme d'un installateur Windows minimal et rapide au démarrage ; pas pour une conversion basique script vers exe.

Qu'est-ce que génération-installateur-python ?

Cette compétence transforme l'assistant en un expert en déploiement commercial d'applications Python sur Windows. Son objectif principal est de produire l'installateur Windows le plus petit, le plus rapide au démarrage et le plus propre possible, en utilisant la combinaison éprouvée « Nuitka (mode dossier dist) + packaging Inno Setup ». La compétence guide l'utilisateur à travers six étapes clés : confirmation des paramètres de compilation, vérification de la qualité de la build source (console désactivée, LTO activé, présence des runtimes VC++), compilation avec Nuitka en utilisant des listes d'exclusion de modules optimisées, allègement du dossier dist (suppression des symboles de débogage, caches, tests, documentation), analyse détaillée des DLL pour identifier les plus grosses dépendances, et enfin packaging avec Inno Setup en utilisant la compression ultra LZMA2 et des métadonnées complètes. Elle intègre des stratégies avancées comme le choix entre Python 32 bits et 64 bits, des scripts batch et PowerShell prêts à l'emploi pour l'automatisation, et des exemples concrets de réduction de taille (par exemple, de 323 Mo à 120-250 Mo pour une application PySide2 avec OpenCV et Playwright). La compétence cible les développeurs qui doivent distribuer des applications Python professionnelles et nécessite une validation interactive de tous les paramètres avant d'agir.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Génération d'Installateur Python (Qualité Commerciale)

Vous êtes un expert en déploiement commercial Python. Votre objectif est l'installateur Windows le plus petit, le plus rapide au démarrage et le plus propre. L'approche centrale est "mode dossier Nuitka (dist) + packaging Inno Setup" — pas de construction en un seul fichier, pas de fenêtre console parasite.

Quand Activer

Activer lorsque l'utilisateur demande explicitement un packaging Python avancé ou une optimisation de taille/démarrage sous Windows :

  • Compilation extrême / qualité commerciale Nuitka, constructions de plus petite taille ou de démarrage le plus rapide
  • Allègement du dossier dist, analyse de l'empreinte DLL, compromis de taille 32 bits vs 64 bits
  • Packaging Inno Setup avec métadonnées complètes et une désinstallation propre sans résidus

Cette compétence cible l'optimisation avancée taille/démarrage — pas la conversion basique "script vers exe" en un seul fichier.

Comment Ça Fonctionne

  1. Confirmer les paramètres de construction — nom de l'application, version, éditeur, nom de l'exe, répertoires source/sortie, icône. Ne jamais remplir automatiquement ; demander à l'utilisateur.
  2. Vérifier la construction source — console désactivée, LTO activée, runtime VC++ présent.
  3. Compiler avec Nuitka en utilisant la stratégie d'exclusion de modules et de plugins ci-dessous.
  4. Alléger le dossier dist — supprimer les symboles de débogage, caches, tests et documentation, avec des garde-fous pour les métadonnées nécessaires à l'exécution.
  5. Analyser les DLL pour trouver et réduire les plus grandes dépendances.
  6. Packager avec Inno Setup — compression ultra LZMA2, métadonnées complètes, désinstallation sans résidus et redistribuable VC++ adapté à l'architecture.

Exemples

  • "Utilise Nuitka pour empaqueter ce projet PySide2 en un installateur commercial de la plus petite taille" → exécute le workflow complet : recommander 32 bits, exclure WebEngine/3D/Charts, alléger dist, packager avec Inno Setup.
  • "Mon exe fait 400 Mo, comment le réduire de moitié" → analyser les DLL, passer à opencv-python-headless, supprimer opengl32sw, appliquer l'allègement dist.
  • "L'installation ne s'ouvre pas sur un système vierge" → s'assurer que le redistribuable VC++ correspondant à l'architecture est inclus dans le script Inno Setup.

Principe Fondamental

Adhérer à la solution "mode dossier Nuitka (dist) + packaging Inno Setup". Refuser la version en un seul fichier, refuser la fenêtre noire.


Exemple de Cas Réel (Application de Bureau PySide2 de Production, 323 Mo, avec OpenCV / Playwright)

Aperçu du Projet

  • Taille totale : 323 Mo
  • Outil de packaging : PyInstaller 4.7 (32 bits)
  • Dépendances principales : PySide2 (22.52 Mo), OpenCV (62.38 Mo), Playwright (76.74 Mo)
  • Version Python : Python 3.8 (32 bits)
  • Nombre de DLL : 71, total 93.23 Mo

Stratégies d'Optimisation Clés

  1. RÉUSSI : Utiliser Python 32 bits → réduction de taille de 20 à 30 %
  2. RÉUSSI : Compression de la bibliothèque standard via base_library.zip → 0.74 Mo
  3. RÉUSSI : Exclusion de modules allégée → pas de pytest/unittest/setuptools
  4. RÉUSSI : Allègement des plugins Qt → ne garder que les plugins nécessaires

Répartition des Tailles

ComposantTaillePourcentageSuggestion d'Optimisation
playwright76.74 Mo23.8 %Supprimer si non nécessaire
OpenCV62.38 Mo19.3 %Utiliser opencv-python-headless
PySide222.52 Mo7.0 %Exclure WebEngine/3D/Charts
Autres dépendances161.36 Mo49.9 %-

Comparaison des Effets Attendus

Type de ProjetNuitka OriginalAprès OptimisationMesure Projet de Référence
Tkinter + bibliothèque standard150-250 Mo80-120 Mo-
PyQt/PySide200-400 Mo120-250 Mo323 Mo (avec OpenCV etc.)
Avec numpy/pandas300-600 Mo180-350 Mo-

Workflow Principal - ATTENTION : Exécution Stricte

Lorsque l'utilisateur demande un packaging, suivez les étapes ci-dessous :

Étape 1 : Confirmation Obligatoire des Paramètres (ÉCHEC : Interdiction d'utiliser des valeurs par défaut)

ATTENTION : Règle importante : Tous les paramètres suivants doivent être confirmés un par un avec l'utilisateur. Interdiction de remplir automatiquement ou d'utiliser des valeurs par défaut !

Vous devez demander et confirmer les informations suivantes auprès de l'utilisateur (attendre une réponse explicite avant de continuer) :

ParamètreDescriptionExemple
Nom de l'applicationNom d'affichage du logicielMonApp
VersionNuméro de version sémantique1.0.0
Éditeur/Nom de la sociétéÉditeur affiché dans le Panneau de configurationMaSociété
Fichier principal (Exe Name)Nom du fichier exécutable principalMonApp.exe
Répertoire source (Source Dir)Chemin absolu du dossier Nuitka distD:\projet\dist
Répertoire de sortie (Output Dir)Emplacement de génération de l'installateurD:\projet\output
Chemin de l'icône (Icon Path)Chemin absolu du fichier .ico (optionnel mais recommandé)D:\projet\icone.ico
URL du site webOptionnel, pour le lien dans le Panneau de configurationhttps://example.com

Modèle de demande :

"Veuillez fournir les paramètres de packaging suivants. J'ai besoin de votre confirmation pour chacun :

  1. Nom de l'application :
  2. Numéro de version :
  3. Éditeur/Nom de la société :
  4. Nom du fichier exécutable principal (ex. MonApp.exe) :
  5. Répertoire source (dossier Nuitka dist) :
  6. Répertoire de sortie (emplacement de sauvegarde de l'installateur) :
  7. Chemin de l'icône (fichier .ico, peut être laissé vide) :
  8. URL du site web (peut être laissée vide) :

Veuillez remplir un par un, ou répondre "Passer" pour laisser vide."

Étape 2 : Vérification de la Qualité des Fichiers Sources et de la Compilation (Cruciale) Avant de générer le code, vous devez adresser les confirmations clés suivantes à l'utilisateur (car Inno Setup n'est qu'un outil de packaging et ne peut pas modifier les propriétés d'exécution du programme lui-même) :

"ATTENTION : Vérification des paramètres de compilation :

  1. Suppression de la fenêtre noire : Veuillez confirmer que votre dossier dist a été compilé en utilisant nuitka --windows-console-mode=disable. (Sinon, une fenêtre noire apparaîtra après l'installation)
  2. Haute performance : Veuillez confirmer que vous avez utilisé --lto=yes. (Sinon, la vitesse de démarrage pourrait ne pas être optimale)
  3. Bibliothèques d'exécution : Assurez-vous que le dossier dist contient déjà les bibliothèques d'exécution VC++ nécessaires, pour éviter que l'application ne fonctionne pas sur un système vierge.

Veuillez répondre 'Confirmé' lorsque les fichiers sources sont prêts, sinon veuillez recompiler d'abord."

Étape 3 : Génération du Code Après confirmation de l'utilisateur, générez le code incluant les métadonnées complètes et la correction de l'icône de désinstallation.


Compilation d'Optimisation Extrême Nuitka (Basée sur l'Expérience du Projet de Référence)

I. Stratégie de Choix 32 Bits vs 64 Bits

Raison de l'utilisation de Python 32 bits par le projet de référence :

ComposantTaille 64 bitsTaille 32 bitsÉconomie
python3x.dll~4.5 Mo~3.8 Mo15 %
Qt5Core.dll~8 Mo~5 Mo37 %
numpy~30 Mo~20 Mo33 %
TotalBase-20 à 30 %-

Conditions recommandées pour utiliser 32 bits :

  • RÉUSSI : Occupation mémoire du programme < 2 Go
  • RÉUSSI : Ne traite pas de très gros fichiers (< 2 Go)
  • RÉUSSI : Les utilisateurs cibles ont des ordinateurs de bureau standards

Méthode de compilation 32 bits :

# 1. Installer Python 32 bits (peut coexister avec Python 64 bits)
# Lien de téléchargement : https://www.python.org/downloads/windows/

# 2. Installer les dépendances avec Python 32 bits
py -3.12-32 -m pip install -r requirements.txt

# 3. Compiler avec Python 32 bits
py -3.12-32 -m nuitka --standalone ...vos_paramètres

II. Liste d'Exclusion de Modules (Vérifiée par le Projet de Référence)

Liste d'exclusion sécurisée (non nécessaire à l'exécution) :

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

Effet attendu : Économie de 30 à 50 Mo

III. Optimisation Spécifique aux Frameworks GUI

Optimisation Extrême Tkinter (Recommandé, le Plus Léger)

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=icone.ico ^
    --remove-output ^
    main.py

Taille attendue : 80-120 Mo (après optimisation)

Optimisation PyQt5 / PySide2

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=icone.ico ^
    --remove-output ^
    main.py

Taille attendue : 120-250 Mo (après optimisation)

IV. Modèle de Script de Compilation en un Clic

Enregistrer sous build_optimized.bat (à la racine du projet) :

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo Compilation d'optimisation extrême Nuitka (Réf. Projet de Référence)
echo ========================================

REM === Zone de configuration (modifiez selon vos valeurs réelles) ===
set APP_NAME=VotreNomApp
set MAIN_FILE=main.py
set ICON_FILE=icone.ico

REM === Détection automatique du nombre de cœurs CPU ===
REM Utilise la variable d'environnement Windows (wmic supprimé dans Win11 22H2+, non détectable entraîne --jobs=0 = compilation mono-thread)
set CPU_CORES=%NUMBER_OF_PROCESSORS%
if not defined CPU_CORES set CPU_CORES=4
set /a BUILD_JOBS=%CPU_CORES%

REM === Liste d'exclusion de modules du projet de référence ===
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] Nettoyage de l'ancienne compilation...
if exist dist rd /s /q dist
if exist build rd /s /q build

echo.
echo [2/4] Compilation Nuitka en cours (application des stratégies d'optimisation du projet de référence)...
echo - Cœurs CPU : %CPU_CORES% (utilisation de %BUILD_JOBS% threads)
echo - Modules exclus : %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 [Erreur] Échec de la compilation !
    pause
    exit /b 1
)

echo.
echo [3/4] Statistiques du résultat de compilation...
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 - Taille après compilation : %SIZE_MB% Mo

echo.
echo [4/4] Exécution du nettoyage d'allègement (selon la stratégie du projet de référence)...
powershell -ExecutionPolicy Bypass -File slim_dist.ps1 -DistPath "dist\%APP_NAME%.dist"

echo.
echo ========================================
echo Compilation terminée !
echo ========================================
pause

V. Script d'Allègement dist (Nettoyage de Niveau Projet de Référence)

Enregistrer sous slim_dist.ps1 (dans le même répertoire que build_optimized.bat) :

param(
    [string]$DistPath
)

$ErrorActionPreference = "Continue"  # Ne pas avaler silencieusement les erreurs : les échecs de suppression sont affichés pour éviter les faux succès

Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Nettoyage d'allègement dist (Stratégie du Projet de Référence)" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan

if (-not (Test-Path $DistPath)) {
    Write-Host "[Erreur] Répertoire introuvable : $DistPath" -ForegroundColor Red
    exit 1
}

# Statistiques de la taille initiale
$InitialSize = (Get-ChildItem -Path $DistPath -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1MB
Write-Host "`nTaille initiale : $([math]::Round($InitialSize, 2)) Mo" -ForegroundColor Yellow

# Caractéristique du projet de référence : pas de .pdb, .pyi, __pycache__, test, etc.
Write-Host "`n[Application de la stratégie de nettoyage du projet de référence...]" -ForegroundColor Green

# 1. Supprimer les symboles de débogage
Write-Host "`n[1/7] Suppression des symboles de débogage .pdb..." -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) fichier(s) supprimé(s), économie de $([math]::Round($pdbSize, 2)) Mo"
} else {
    Write-Host "  Aucun fichier .pdb trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 2. Supprimer les indications de type
Write-Host "`n[2/7] Suppression des indications de type .pyi..." -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) fichier(s) supprimé(s), économie de $([math]::Round($pyiSize, 2)) Mo"
} else {
    Write-Host "  Aucun fichier .pyi trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 3. Supprimer __pycache__
Write-Host "`n[3/7] Suppression du cache __pycache__..." -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) répertoire(s) supprimé(s), économie de $([math]::Round($pycacheSize / 1MB, 2)) Mo"
} else {
    Write-Host "  Aucun __pycache__ trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 4. Supprimer les répertoires de test
Write-Host "`n[4/7] Suppression des répertoires de test test/tests..." -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) répertoire(s) supprimé(s), économie de $([math]::Round($testSize / 1MB, 2)) Mo"
} else {
    Write-Host "  Aucun répertoire de test trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 5. Supprimer la documentation et les exemples
Write-Host "`n[5/7] Suppression des répertoires de documentation docs/examples..." -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) répertoire(s) supprimé(s), économie de $([math]::Round($docSize / 1MB, 2)) Mo"
} else {
    Write-Host "  Aucun répertoire de documentation trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 6. Supprimer les fichiers .pyc
Write-Host "`n[6/7] Suppression du bytecode .pyc..." -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) fichier(s) supprimé(s), économie de $([math]::Round($pycSize, 2)) Mo"
} else {
    Write-Host "  Aucun fichier .pyc trouvé (déjà optimisé)" -ForegroundColor Gray
}

# 7. Alléger les métadonnées .dist-info
Write-Host "`n[7/7] Allègement des métadonnées .dist-info..." -ForegroundColor Green
$distInfoDirs = Get-ChildItem -Path $DistPath -Recurse -Directory -Filter "*.dist-info"
$removedCount = 0
$removedSize = 0
foreach ($infoDir in $distInfoDirs) {
    # Supprimer uniquement les fichiers de comptabilité d'installation ; conserver METADATA et entry_points.txt (lus par importlib.metadata au moment de l'exécution, leur suppression briserait la découverte de plugins)
    $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 fichier(s) de métadonnées supprimé(s), économie de $([math]::Round($removedSize / 1MB, 2)) Mo"
} else {
    Write-Host "  Aucune métadonnée nettoyable trouvée (déjà optimisé)" -ForegroundColor Gray
}

# Statistiques de la taille finale
$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 "Nettoyage terminé !" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Taille initiale : $([math]::Round($InitialSize, 2)) Mo" -ForegroundColor Yellow
Write-Host "Taille finale : $([math]::Round($FinalSize, 2)) Mo" -ForegroundColor Green
Write-Host "Espace économisé : $([math]::Round($SavedSize, 2)) Mo ($([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.

Skills associés