Capture d'écran
Suivez ces règles de localisation d'enregistrement à chaque fois :
- Si l'utilisateur spécifie un chemin, enregistrez là.
- Si l'utilisateur demande une capture d'écran sans chemin, enregistrez à l'emplacement par défaut de la capture d'écran du système d'exploitation.
- Si Codex a besoin d'une capture d'écran pour sa propre inspection, enregistrez dans le répertoire temporaire.
Priorité des outils
- Privilégiez les capacités de capture d'écran spécifiques aux outils quand disponibles (par exemple : un MCP/skill Figma pour les fichiers Figma, ou les outils Playwright/agent-browser pour les navigateurs et les applications Electron).
- Utilisez ce skill quand explicitement demandé, pour les captures d'écran de bureau complètes, ou quand une capture spécifique à un outil ne peut pas obtenir ce dont vous avez besoin.
- Sinon, traitez ce skill comme le par défaut pour les applications de bureau sans un outil de capture mieux intégré.
Prévérification des permissions macOS (réduire les invites répétées)
Sur macOS, exécutez une fois l'aide-script de préflight avant la capture de fenêtre/application. Il vérifie la permission d'enregistrement d'écran, explique pourquoi elle est nécessaire et la demande en un seul endroit.
Les aide-scripts acheminent le cache de module Swift vers $TMPDIR/codex-swift-module-cache pour éviter les invites supplémentaires du cache de module du sandbox.
bash <path-to-skill>/scripts/ensure_macos_permissions.sh
Pour éviter les invites d'approbation sandbox multiples, combinez préflight + capture dans une seule commande si possible :
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex"
Pour les exécutions d'inspection Codex, conservez la sortie en temporaire :
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
python3 <path-to-skill>/scripts/take_screenshot.py --app "<App>" --mode temp
Utilisez les scripts fournis pour éviter de redériver les commandes spécifiques au système d'exploitation.
macOS et Linux (aide-script Python)
Exécutez l'aide-script depuis la racine du repo :
python3 <path-to-skill>/scripts/take_screenshot.py
Motifs courants :
- Emplacement par défaut (l'utilisateur demande « une capture d'écran ») :
python3 <path-to-skill>/scripts/take_screenshot.py
- Emplacement temporaire (vérification visuelle Codex) :
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp
- Emplacement explicite (l'utilisateur a fourni un chemin ou un nom de fichier) :
python3 <path-to-skill>/scripts/take_screenshot.py --path output/screen.png
- Capture d'application/fenêtre par nom d'application (macOS uniquement ; la correspondance partielle est OK ; capture toutes les fenêtres correspondantes) :
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex"
- Titre de fenêtre spécifique au sein d'une application (macOS uniquement) :
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex" --window-name "Settings"
- Lister les identifiants de fenêtre correspondants avant la capture (macOS uniquement) :
python3 <path-to-skill>/scripts/take_screenshot.py --list-windows --app "Codex"
- Région de pixels (x,y,w,h) :
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp --region 100,200,800,600
- Fenêtre active/au premier plan (capture uniquement la fenêtre au premier plan ; utilisez
--apppour capturer toutes les fenêtres) :
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp --active-window
- Identifiant de fenêtre spécifique (utilisez --list-windows sur macOS pour découvrir les identifiants) :
python3 <path-to-skill>/scripts/take_screenshot.py --window-id 12345
Le script affiche un chemin par capture. Quand plusieurs fenêtres ou écrans correspondent, il affiche plusieurs chemins (un par ligne) et ajoute des suffixes comme -w<windowId> ou -d<display>. Consultez chaque chemin séquentiellement avec l'outil de visualisation d'images et manipulez uniquement les images si nécessaire ou demandé.
Exemples de flux de travail
- « Jetons un œil à <App> et dis-moi ce que tu vois » : capturez en temporaire, puis consultez chaque chemin affiché dans l'ordre.
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
python3 <path-to-skill>/scripts/take_screenshot.py --app "<App>" --mode temp
- « La conception de Figma ne correspond pas à ce qui est implémenté » : utilisez un MCP/skill Figma pour capturer d'abord la conception, puis capturez l'application en cours d'exécution avec ce skill (généralement en temporaire) et comparez les captures brutes avant toute manipulation.
Comportement multi-écran
- Sur macOS, les captures en plein écran enregistrent un fichier par écran quand plusieurs moniteurs sont connectés.
- Sur Linux et Windows, les captures en plein écran utilisent le bureau virtuel (tous les moniteurs dans une image) ; utilisez
--regionpour isoler un seul écran si nécessaire.
Prérequis et logique de sélection Linux
L'aide-script sélectionne automatiquement le premier outil disponible :
scrotgnome-screenshot- ImageMagick
import
Si aucun n'est disponible, demandez à l'utilisateur d'en installer un et réessayez.
Les régions de coordonnées nécessitent scrot ou ImageMagick import.
--app, --window-name et --list-windows sont macOS uniquement. Sur Linux, utilisez --active-window ou fournissez --window-id quand disponible.
Windows (aide-script PowerShell)
Exécutez l'aide-script PowerShell :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1
Motifs courants :
- Emplacement par défaut :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1
- Emplacement temporaire (vérification visuelle Codex) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp
- Chemin explicite :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Path "C:\Temp\screen.png"
- Région de pixels (x,y,w,h) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp -Region 100,200,800,600
- Fenêtre active (demandez à l'utilisateur de la mettre au premier plan d'abord) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp -ActiveWindow
- Handle de fenêtre spécifique (uniquement quand fourni) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -WindowHandle 123456
Commandes OS directes (solutions de secours)
Utilisez-les quand vous ne pouvez pas exécuter les aide-scripts.
macOS
- Plein écran vers un chemin spécifique :
screencapture -x output/screen.png
- Région de pixels :
screencapture -x -R100,200,800,600 output/region.png
- Identifiant de fenêtre spécifique :
screencapture -x -l12345 output/window.png
- Sélection interactive ou sélection de fenêtre :
screencapture -x -i output/interactive.png
Linux
- Plein écran :
scrot output/screen.png
gnome-screenshot -f output/screen.png
import -window root output/screen.png
- Région de pixels :
scrot -a 100,200,800,600 output/region.png
import -window root -crop 800x600+100+200 output/region.png
- Fenêtre active :
scrot -u output/window.png
gnome-screenshot -w -f output/window.png
Gestion des erreurs
- Sur macOS, exécutez d'abord
bash <path-to-skill>/scripts/ensure_macos_permissions.shpour demander l'enregistrement d'écran en un seul endroit. - Si vous voyez « screen capture checks are blocked in the sandbox », « could not create image from display », ou des erreurs Swift
ModuleCacheen exécution en sandbox, réexécutez la commande avec des permissions élevées. - Si la capture d'application/fenêtre macOS ne retourne pas de correspondances, exécutez
--list-windows --app "AppName"et réessayez avec--window-id, et assurez-vous que l'application est visible à l'écran. - Si la capture de région/fenêtre Linux échoue, vérifiez la disponibilité des outils avec
command -v scrot,command -v gnome-screenshotetcommand -v import. - Si l'enregistrement à l'emplacement par défaut du système d'exploitation échoue avec des erreurs de permission en sandbox, réexécutez la commande avec des permissions élevées.
- Signalez toujours le chemin du fichier enregistré dans la réponse.