screenshot

Utilise quand l'utilisateur demande explicitement une capture d'écran du bureau ou du système (plein écran, application ou fenêtre spécifique, ou région en pixels), ou quand les capacités de capture spécifiques à l'outil ne sont pas disponibles et qu'une capture au niveau du système d'exploitation est nécessaire.

npx skills add https://github.com/openai/skills --skill screenshot

Capture de capture d'écran

Suivez ces règles d'emplacement de sauvegarde à chaque fois :

  1. Si l'utilisateur spécifie un chemin, sauvegardez-y.
  2. Si l'utilisateur demande une capture d'écran sans chemin, sauvegardez à l'emplacement de capture d'écran par défaut du système d'exploitation.
  3. Si Codex a besoin d'une capture d'écran pour sa propre inspection, sauvegardez dans le répertoire temporaire.

Priorité des outils

  • Préférez les capacités de capture d'écran spécifiques aux outils lorsqu'elles sont disponibles (par exemple : un MCP Figma/skill pour les fichiers Figma, ou des outils Playwright/agent-browser pour les navigateurs et les applications Electron).
  • Utilisez cette skill lorsqu'elle est explicitement demandée, pour les captures de bureau système complet, ou lorsqu'une capture spécifique à un outil ne peut pas obtenir ce dont vous avez besoin.
  • Sinon, traitez cette skill comme valeur par défaut pour les applications de bureau sans meilleur outil de capture intégré.

Vérification préalable des permissions macOS (réduire les invites répétées)

Sur macOS, exécutez le helper de vérification préalable une fois 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 helpers acheminent le cache du module Swift vers $TMPDIR/codex-swift-module-cache pour éviter les invites supplémentaires du cache du module sandbox.

bash <path-to-skill>/scripts/ensure_macos_permissions.sh

Pour éviter plusieurs invites d'approbation sandbox, combinez vérification préalable + capture en une seule commande lorsque c'est 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 dans temp :

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 rédériver les commandes spécifiques au système d'exploitation.

macOS et Linux (helper Python)

Exécutez le helper à partir de la racine du repo :

python3 <path-to-skill>/scripts/take_screenshot.py

Modèles courants :

  • Emplacement par défaut (l'utilisateur a demandé « 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 acceptable ; capture toutes les fenêtres correspondantes) :
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex"
  • Titre de fenêtre spécifique dans 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 en pixels (x,y,l,h) :
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp --region 100,200,800,600
  • Fenêtre focalisée/active (capture uniquement la fenêtre au premier plan ; utilisez --app pour 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. Lorsque 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 visionneuse d'images, et manipulez les images uniquement si nécessaire ou demandé.

Exemples de flux de travail

  • « Regardez <App> et dites-moi ce que vous voyez » : capture dans temp, puis visualisez chaque chemin imprimé 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 Figma/skill pour capturer d'abord la conception, puis capturez l'application en exécution avec cette skill (généralement dans temp) et comparez les captures brutes avant toute manipulation.

Comportement multi-écrans

  • Sur macOS, les captures de plein écran sauvegardent un fichier par écran lorsque plusieurs moniteurs sont connectés.
  • Sur Linux et Windows, les captures de plein écran utilisent le bureau virtuel (tous les moniteurs dans une image) ; utilisez --region pour isoler un seul écran si nécessaire.

Prérequis Linux et logique de sélection

Le helper sélectionne automatiquement le premier outil disponible :

  1. scrot
  2. gnome-screenshot
  3. ImageMagick import

Si aucun n'est disponible, demandez à l'utilisateur d'installer l'un d'eux et relancez.

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 lorsque disponible.

Windows (helper PowerShell)

Exécutez le helper PowerShell :

powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1

Modèles 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 en pixels (x,y,l,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 focaliser d'abord) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp -ActiveWindow
  • Handle de fenêtre spécifique (uniquement lorsqu'il est fourni) :
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -WindowHandle 123456

Commandes directes du système d'exploitation (secours)

Utilisez-les lorsque vous ne pouvez pas exécuter les helpers.

macOS

  • Plein écran vers un chemin spécifique :
screencapture -x output/screen.png
  • Région en 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 en 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.sh pour 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 les erreurs Swift ModuleCache dans une exécution en sandbox, relancez la commande avec des permissions escaladées.
  • Si la capture d'application/fenêtre macOS ne retourne aucune correspondance, exécutez --list-windows --app "AppName" et relancez 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-screenshot, et command -v import.
  • Si la sauvegarde à l'emplacement par défaut du système d'exploitation échoue avec des erreurs de permission dans un sandbox, relancez la commande avec des permissions escaladées.
  • Signalez toujours le chemin du fichier sauvegardé dans la réponse.