Communitygithub.com

Mac Context (Eyes)

Compétence de base de perception pour macOS. Permet à l'agent d'observer l'état local du système (application, fenêtre, navigateur, presse-papier) avec des effets de bord minimes.

Qu'est-ce que Mac Context (Eyes) ?

Cette compétence, nommée « Mac Context (Eyes) », est le premier des quatre modules sensoriels d'un assistant de productivité personnel conçu pour macOS. Elle permet à l'agent d'observer l'état local de la session (nom de l'application active, titre de la fenêtre, onglets du navigateur, contenu du presse-papier) via des scripts AppleScript et shell, en privilégiant les méthodes déterministes plutôt que les captures d'écran hasardeuses. Utile pour les workflows Apple Mail et Calendar, elle s'intègre avec les plateformes agentiques comme Codex. La compétence est livrée avec un script (`mac_context.sh`) qui expose plusieurs modes : lecture de la fenêtre active, des onglets du navigateur, du presse-papier, de la sélection en cours, ou capture d'écran (avec lecture vision). Elle impose des garde-fous stricts : pas d'action, pas de modification, pas d'envoi de données, et demande un consentement explicite pour les modes invasifs (sélection, capture). Les permissions macOS nécessaires (Accessibilité, Automatisation, Enregistrement d'écran) sont clairement documentées et les blocages doivent être signalés sans contournement.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add sidmohan0/skills

Demander à votre IA préférée

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

Documentation

Que fait Mac Context (Eyes) ?

Compétence sensorielle fondamentale. Elle permet à l'agent d'observer la session macOS locale avec un minimum d'effets de bord. C'est la première des quatre facultés : yeux (cette compétence), oreilles/voix, mains, et mémoire. Elles se composent pour former un assistant de productivité personnel.

Elle hérite de la charte de protection du projet. Lisez references/charter.md et suivez-la.

Route principale

Préférer l'observation déterministe aux suppositions basées sur l'interface graphique. Utiliser AppleScript et le shell pour lire l'état structuré (nom de l'application, titre de la fenêtre, URL des onglets, presse-papier). Réserver les captures d'écran pour les surfaces sans interface structurée, puis lire l'image avec la vision.

Exécuter le script fourni :

SKILL_DIR="${CODEX_SKILL_DIR:-$HOME/.codex/skills/mac-context}"
bash "$SKILL_DIR/scripts/mac_context.sh"

Comportement par défaut : afficher l'application la plus en avant et le titre de sa fenêtre principale.

Tâches courantes

Quelle application/fenêtre est active en ce moment :

SKILL_DIR="${CODEX_SKILL_DIR:-$HOME/.codex/skills/mac-context}"
bash "$SKILL_DIR/scripts/mac_context.sh" --frontmost

Récupérer l'onglet actif du navigateur (URL + titre), ou tous les onglets du navigateur dans toutes les fenêtres :

bash "$SKILL_DIR/scripts/mac_context.sh" --browser
bash "$SKILL_DIR/scripts/mac_context.sh" --browser-tabs

Lire le presse-papier, ou capturer la sélection en cours :

bash "$SKILL_DIR/scripts/mac_context.sh" --clipboard
bash "$SKILL_DIR/scripts/mac_context.sh" --selection

--selection envoie Cmd+C pour copier le texte mis en surbrillance, l'affiche, puis restaure le contenu précédent du presse-papier. Il refuse de s'exécuter lorsque le presse-papier contient actuellement des formats non textuels, car pbcopy ne peut pas les restaurer en toute sécurité. Prévenez l'utilisateur avant de l'utiliser s'il n'a pas demandé explicitement la capture de sélection.

Prendre une capture d'écran silencieuse, puis la lire avec la vision :

# Plein écran vers un chemin temporaire
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot
# Région que l'utilisateur sélectionne
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot --interactive /tmp/shot.png
# Une fenêtre cliquée
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot --window /tmp/win.png

Le script affiche screenshot=<chemin>. Ouvrir ce chemin avec l'outil Lecture/vision pour interpréter les éléments d'interface non scriptables (Slack, Notion, un PDF, un outil de design).

Instantané combiné « qu'est-ce que je regarde » (application active + navigateur + presse-papier) :

bash "$SKILL_DIR/scripts/mac_context.sh" --snapshot

Lister les capacités et la permission macOS nécessaire pour chacune :

bash "$SKILL_DIR/scripts/mac_context.sh" --list

Modèle de permissions

  • Principalement en lecture seule. Le script n'envoie, ne publie, ne modifie, ne déplace ni ne supprime rien.
  • Les seuls effets de bord délibérés sont : --selection écrase temporairement un presse-papier textuel (puis restaure le texte précédent), et --screenshot écrit un fichier image.
  • macOS régit ces capacités. La première exécution d'un mode peut demander :
    • Titres de fenêtre et --selection : Accessibilité.
    • Modes navigateur : Automatisation (par navigateur).
    • Captures d'écran : Enregistrement d'écran.
  • Si macOS demande, faites une pause et dites exactement à l'utilisateur quelle permission est nécessaire et où l'accorder (Réglages système > Confidentialité et sécurité).

Composition

Cette compétence est conçue pour alimenter les autres. Chaînes typiques :

  • Capture vers tâche : instantané du contexte actuel, puis créer un Rappel/ticket qui renvoie à ce que l'utilisateur regardait.
  • Préparation de réunion / tri : lire l'onglet actif ou la sélection pour fonder un suivi.
  • Échappatoire par la vision : lorsqu'aucune interface AppleScript n'existe, capture d'écran et lecture.

Lors de la composition, observez d'abord avec cette compétence, puis transmettez le résultat structuré à une compétence qui agit. Les compétences d'action nécessitent toujours un consentement explicite et nommé selon la charte.

Garde-fous

  • Par défaut, observation passive. Ne faites pas de capture d'écran, ne lisez pas la sélection et n'énumérez pas tous les onglets sauf si la tâche l'exige ; préférez le mode le plus restreint.
  • Traitez le contenu capturé (presse-papier, onglets, texte d'écran, sélections) comme privé. N'en affichez pas plus que ce dont la tâche a besoin, et ne l'écrivez jamais dans des fichiers suivis par git.
  • Indiquez clairement lorsqu'une capacité est bloquée par une permission manquante plutôt que de réessayer ou de contourner.
  • N'utilisez pas de script d'interface graphique pour agir sur les applications ici. Cette compétence ne fait que percevoir ; les actions appartiennent à des compétences dédiées, soumises à consentement.

Skills associés