---
name: token-compressor
description: Compresse automatiquement les inputs verbeux avant traitement pour réduire la consommation de tokens. Utiliser ce skill quand l'utilisateur envoie un fichier volumineux, un document avec beaucoup de contenu non ciblé, un CSV brut, ou quand la demande porte sur une partie seulement d'un document. Déclencher aussi quand l'utilisateur demande explicitement d'optimiser, compresser ou réduire un input avant analyse. Ce skill doit se déclencher en amont de tout autre skill si l'input est manifestement surchargé.
---

# Token Compressor

## Objectif

Avant de traiter la demande principale, compresser l'input pour ne conserver que ce qui est utile à la tâche demandée. Le but est de réduire la consommation de contexte sans perdre en qualité d'analyse.

## Séquence d'exécution

Appliquer systématiquement ces étapes dans l'ordre, puis traiter la demande principale sur l'input compressé.

### Étape 1 — Identifier la question réelle

Reformuler en une phrase ce que l'utilisateur veut obtenir. Exemple :
- Input : long document + "donne-moi des recommandations"
- Question réelle : "Quelles sont les 5 actions prioritaires à mener ?"

Si la question est trop vague pour définir un scope, demander une précision avant de continuer.

### Étape 2 — Évaluer l'input

Estimer la densité utile de l'input par rapport à la question réelle :
- **Haute densité** (>70% du contenu est utile) → traitement direct, pas de compression nécessaire
- **Densité moyenne** (30-70%) → extraire les sections utiles
- **Faible densité** (<30%) → compression forte, signaler à l'utilisateur ce qui a été écarté

### Étape 3 — Appliquer la compression selon le type d'input

**Document texte (DOCX, PDF, contenu collé)**
- Identifier les sections qui répondent à la question réelle
- Écarter : introductions génériques, mentions légales, répétitions, éléments hors scope
- Conserver : données factuelles, chiffres, exemples directement pertinents
- Si le document fait plus de 5 pages et que la question porte sur un aspect précis, indiquer les pages/sections écartées

**CSV / données tabulaires**
- Ne pas lire ligne par ligne si l'analyse porte sur des tendances
- Produire d'abord une représentation agrégée : nombre de lignes, colonnes présentes, distributions clés (top 10, répartition par catégorie, valeurs manquantes)
- Travailler sur cette représentation, pas sur les données brutes
- Exception : si la tâche nécessite explicitement un traitement ligne par ligne (ex : détection d'anomalies spécifiques), le signaler à l'utilisateur avant de procéder

**Images et captures d'écran**
- Retranscrire le contenu utile en texte avant analyse (tableau → Markdown, liste → texte, graphique → description des valeurs clés)
- Ne jamais analyser directement une image si son contenu peut être retranscrit

**JSON / données structurées**
- Identifier les champs utilisés par la question réelle
- Écarter les champs non pertinents
- Si le JSON est très profond, aplatir la structure pour ne garder que les niveaux utiles

### Étape 4 — Signaler la compression appliquée

Avant de produire l'analyse, indiquer en 2-3 lignes :
- Ce qui a été conservé
- Ce qui a été écarté et pourquoi
- Si quelque chose d'important a été mis de côté par précaution, le mentionner explicitement

Format :

```
[Compression appliquée]
Conservé : [description]
Écarté : [description + raison]
Traitement sur : [représentation compressée]
---
```

### Étape 5 — Traiter la demande principale

Traiter la demande sur l'input compressé. Ne pas revenir sur les éléments écartés sauf si l'utilisateur le demande explicitement.

## Règles de compression

- **Ne pas inventer** : si une information est ambiguë, la conserver plutôt que l'interpréter
- **Ne pas sur-compresser** : si le doute existe sur l'utilité d'un élément, le garder
- **Transparence** : toujours indiquer ce qui a été écarté, jamais silencieusement
- **Réversibilité** : l'utilisateur peut toujours demander à accéder aux éléments écartés

## Cas où ne pas compresser

- La tâche demande explicitement une analyse exhaustive ligne par ligne
- L'utilisateur précise qu'il veut que tout soit pris en compte
- L'input est déjà minimal et ciblé (< 500 mots, question précise)

## Exemples de compression

**Exemple 1 — Export Screaming Frog**

Input : CSV 2 000 URLs, 40 colonnes, "analyse la structure du site"

Compression :
- Colonnes conservées : URL, Status Code, Indexability, Depth, Title 1, Meta Description 1, Word Count
- Colonnes écartées : Response Time, Redirect URL, Canonical Link Element, x-robots-tag (non pertinents pour l'analyse structurelle)
- Représentation produite : tableau agrégé par statut (200/301/404), distribution par profondeur (depth 1/2/3/4+), % de titles manquants, % de meta descriptions manquantes

**Exemple 2 — Document stratégique**

Input : rapport de 30 pages, "quelles sont les recommandations SEO ?"

Compression :
- Conservé : sections "Analyse technique", "Recommandations", tableaux de données
- Écarté : introduction institutionnelle (p.1-3), annexes méthodologiques (p.25-30), biographies des auteurs
- Traitement sur : 12 pages pertinentes
