eyeball

Par github · awesome-copilot

Analyse de documents avec captures d'écran sources intégrées. Lorsque vous demandez à Copilot d'analyser un document, Eyeball génère un fichier Word où chaque affirmation factuelle inclut une capture d'écran surlignée issue du matériau source, afin que vous puissiez la vérifier par vous-même.

npx skills add https://github.com/github/awesome-copilot --skill eyeball

Eyeball

Analysez des documents avec preuve visuelle. Lorsqu'elle est activée, Eyeball produit un document Word sur le Bureau de l'utilisateur où chaque affirmation factuelle comprend une capture d'écran intégrée du matériel source avec le texte cité surligné en jaune.

Activation

Quand l'utilisateur invoque cette skill (par exemple, « utilise eyeball », « exécute eyeball sur ceci », « eyeball ce document »), répondez avec :

Eyeball est actif. Je vais analyser le document et produire un doc Word avec des captures d'écran des sources intégrées pour que vous puissiez vérifier chaque affirmation de vos propres yeux.

Suivez ensuite le workflow ci-dessous.

Sources Supportées

  • Fichiers locaux : Documents Word (.docx, .doc), PDFs (.pdf), fichiers RTF
  • URLs web : N'importe quelle page web publiquement accessible

Localisation de l'Outil

L'utilitaire Python Eyeball se trouve à :

<plugin_dir>/skills/eyeball/tools/eyeball.py

Pour trouver le chemin réel, exécutez :

find ~/.copilot/installed-plugins -name "eyeball.py" -path "*/eyeball/*" 2>/dev/null

S'il ne s'y trouve pas, vérifiez le répertoire du projet ou le répertoire home de l'utilisateur pour le repo eyeball.

Configuration à la Première Utilisation

Avant la première utilisation, vérifiez que les dépendances sont installées :

python3 <path-to>/eyeball.py setup-check

Si quelque chose manque, installez les dépendances requises :

pip3 install pymupdf pillow python-docx playwright
python3 -m playwright install chromium

Sous Windows, installez aussi pywin32 pour l'automatisation Word :

pip install pywin32

Workflow

Suivez ces étapes exactement. L'ordre est important.

Étape 1 : Lire le texte source

Avant d'écrire une analyse, extrayez et lisez le texte complet du document source :

python3 <path-to>/eyeball.py extract-text --source "<path-or-url>"

Lisez la sortie attentivement. Identifiez les numéros de section réels, les titres, les numéros de page et le langage clé.

CRITIQUE : Ne sautez pas cette étape. N'écrivez pas une analyse basée sur des hypothèses sur la structure du document. Lisez le texte réel.

Étape 2 : Écrire l'analyse avec citations exactes

Pour chaque point de votre analyse, vous devez :

  1. Référencer le numéro de section correct tel qu'il apparaît dans le document (par exemple, « Section 9 » et non « Section 8 » parce que vous aviez supposé la numérotation).
  2. Référencer le numéro de page correct où la section apparaît dans le texte extrait.
  3. Sélectionner des ancres qui sont des phrases verbatim du source qui soutiennent directement votre affirmation.

Étape 3 : Sélectionner les ancres correctement

C'est l'étape la plus importante. Les ancres déterminent ce qui est surligné dans les captures d'écran.

À FAIRE :

  • Utiliser des phrases verbatim du texte source qui soutiennent directement votre affirmation
  • Utiliser plusieurs ancres pour couvrir la plage complète de texte que le lecteur doit voir
  • Utiliser des phrases spécifiques et peu communes qui n'apparaissent que là où vous l'entendez

À NE PAS FAIRE :

  • Utiliser des labels de sujet génériques (par exemple, « Confidentialité ») qui apparaissent partout dans le document
  • Utiliser les titres de section seuls quand ils apparaissent comme références croisées ailleurs
  • Utiliser des mots uniques courants qui correspondent à de nombreux endroits

Exemples :

FAUX -- utilise un label de sujet générique qui correspond partout :

{"anchors": ["User-Generated Content"], "target_page": 8}

CORRECT -- utilise le langage spécifique qui soutient l'affirmation :

{"anchors": ["retain ownership", "Ownership of Content, Right to Post"], "target_page": 8}

FAUX -- le titre de section apparaît comme référence croisée sur les pages antérieures :

{"anchors": ["LIMITATION OF LIABILITY"]}

CORRECT -- inclut le numéro de section pour la précision, cible la page correcte :

{"anchors": ["12. LIMITATION OF LIABILITY", "INDIRECT", "CONSEQUENTIAL"], "target_page": 13}

Étape 4 : Construire le document d'analyse

Construisez un tableau JSON de sections et appelez la commande build :

python3 <path-to>/eyeball.py build \
  --source "<path-or-url>" \
  --output ~/Desktop/<title>.docx \
  --title "Analysis Title" \
  --subtitle "Source description" \
  --sections '[
    {
      "heading": "1. Section Title",
      "analysis": "Your analysis text here. Reference Section X on page Y...",
      "anchors": ["verbatim phrase 1", "verbatim phrase 2"],
      "target_page": 5,
      "context_padding": 40
    },
    {
      "heading": "2. Another Section",
      "analysis": "More analysis...",
      "anchors": ["exact quote from source"],
      "target_pages": [10, 11],
      "context_padding": 50
    }
  ]'

Champs de l'objet section :

  • heading (requis) : Titre de la section dans le document de sortie
  • analysis (requis) : Votre texte d'analyse
  • anchors (requis) : Liste de phrases verbatim du source à rechercher et surligher
  • target_page (optionnel) : Numéro de page unique (indexé à partir de 1) à rechercher
  • target_pages (optionnel) : Liste de numéros de page à rechercher (captures d'écran assemblées verticalement)
  • context_padding (optionnel) : Padding en points PDF au-dessus/en-dessous de la région d'ancre (défaut : 40). Augmentez pour plus de contexte.

Étape 5 : Livrer la sortie

Enregistrez la sortie sur le Bureau de l'utilisateur. Dites à l'utilisateur le nom du fichier et qu'il peut l'ouvrir pour vérifier chaque affirmation par rapport aux captures d'écran sources surlignées.

Auto-vérification Avant Livraison

Avant d'enregistrer le document final, vérifiez mentalement :

  1. Le texte d'analyse de chaque section référence-t-il le numéro de section correct du source ?
  2. Les ancres sont-elles des phrases verbatim qui apparaissent sur la page cible ?
  3. Chaque ancre soutient-elle directement l'affirmation de l'analyse, et pas seulement le même sujet ?
  4. Si la capture d'écran ne correspond pas à l'analyse, l'analyse est-elle fausse ou l'ancre est-elle fausse ? Corrigez ce qui est incorrect.

Notes

  • Le document de sortie inclut des captures d'écran surlignées dont la taille est dynamique. Si vous fournissez plusieurs ancres, la capture d'écran s'agrandit pour les couvrir toutes.
  • Quand un terme de recherche n'est pas trouvé, le document de sortie le note. Si cela arrive, l'ancre n'était probablement pas assez verbatim. Ajustez et reconstruisez.
  • Pour les pages web, Playwright rend la page en PDF d'abord. Les numéros de page résultants peuvent différer de ce que vous voyez dans un navigateur. Utilisez la sortie de texte extrait (étape 1) pour déterminer les numéros de page corrects.
  • Si l'utilisateur a déjà fourni le texte source ou que vous l'avez déjà lu dans la conversation courante, vous pouvez sauter l'étape 1. Mais toujours vérifier les numéros de section et les références de page par rapport au texte réel avant d'écrire l'analyse.

Skills similaires