← Back to list
benoitvx

data-gouv

by benoitvx

đŸ‡«đŸ‡· Skill professionnel pour Claude Code - AccĂšs au catalogue de donnĂ©es ouvertes data.gouv.fr

⭐ 20🍮 0📅 Dec 12, 2025

SKILL.md


name: data-gouv description: Skill professionnel pour Claude Code permettant d'accéder, télécharger et analyser les données ouvertes françaises via data.gouv.fr. Inclut une librairie Python complÚte, des exemples de code, et une documentation détaillée des datasets les plus utilisés. version: 2.1.0 author: Benoit Vinceneux license: Licence Ouverte 2.0 tags: [opendata, france, data, api, python, datasets, statistics]

Skill data.gouv.fr pour Claude Code

⚠ Nature de ce skill

Ce skill est une documentation + librairie Python, PAS un plugin avec des commandes interactives.

Ce que vous trouverez ici :

  • 📚 Documentation de l'API data.gouv.fr
  • 🐍 Librairie Python rĂ©utilisable
  • 📊 Datasets documentĂ©s avec exemples
  • 💡 Code prĂȘt Ă  l'emploi

Ce que vous ne trouverez PAS ici :

  • ❌ Commandes slash (/data-gouv-search, etc.)
  • ❌ Agents interactifs
  • ❌ RequĂȘtes en langage naturel

Pour des commandes interactives, utilisez le MCP officiel data.gouv.fr.


Vue d'ensemble

Ce skill fournit un accÚs programmatique complet aux données ouvertes françaises hébergées sur data.gouv.fr, le portail national des données publiques.

Capacités principales :

  • 🔍 Recherche de datasets via l'API officielle
  • đŸ“„ TĂ©lĂ©chargement automatique et mise en cache
  • đŸ§č Parsing intelligent des formats français (CSV avec ;, dates DD/MM/YYYY, dĂ©cimales ,)
  • 📊 Chargement direct dans pandas DataFrames
  • 📚 Documentation complĂšte des datasets frĂ©quemment utilisĂ©s
  • 🐍 Librairie Python rĂ©utilisable et professionnelle

Nouvelles fonctionnalités v2.0.0

Cette version 2.0.0 ajoute le support du MCP (Model Context Protocol) officiel de data.gouv.fr en complément de notre librairie Python.

Deux approches complémentaires

1. Notre librairie Python (recommandée pour 80% des cas)

  • ✅ Simple : pip install et c'est tout
  • ✅ Offline : Cache local
  • ✅ Portable : Fonctionne partout
  • ✅ LĂ©ger : Pas de Docker ni serveur

2. MCP officiel data.gouv.fr (pour 20% des cas avancés)

  • ✅ RequĂȘtes SQL complexes via Hydra
  • ✅ Recherche dans toute la base
  • ✅ CrĂ©ation de datasets
  • ⚠ NĂ©cessite Docker + configuration

Comment choisir ?

Utilisez notre librairie Python si :

  • Vous voulez tĂ©lĂ©charger et analyser des datasets
  • Vous travaillez offline ou avec cache
  • Vous faites des scripts automatisĂ©s
  • Vous prĂ©fĂ©rez la simplicitĂ©

Utilisez le MCP officiel si :

  • Vous avez besoin de requĂȘtes SQL complexes
  • Vous voulez crĂ©er/modifier des datasets
  • Vous posez des questions en langage naturel sur les donnĂ©es

Documentation

Installation

Via le marketplace Claude Code (recommandé)

/plugin marketplace add benoitvx/data-gouv-skill
/plugin install data-gouv@data-gouv-skill

Installation manuelle

# Installation globale (disponible dans tous les projets)
cd ~/.claude/skills
git clone https://github.com/benoitvx/data-gouv-skill.git

# OU installation par projet
cd /chemin/vers/votre/projet
mkdir -p .claude/skills
cd .claude/skills
git clone https://github.com/benoitvx/data-gouv-skill.git

Dépendances Python

pip install pandas requests openpyxl

Utilisation rapide

Une fois installé, vous pouvez directement utiliser la librairie dans Claude Code :

# Importer la librairie
from data-gouv.lib.datagouv import DataGouvAPI, quick_search

# Recherche rapide
datasets = quick_search("vaccination")
for ds in datasets:
    print(f"{ds['title']} - {ds['organization']['name']}")

# Utilisation complĂšte de l'API
api = DataGouvAPI()

# Rechercher des datasets
results = api.search_datasets("qualité eau", page_size=10)

# Charger directement un CSV
df = api.load_csv("https://www.data.gouv.fr/fr/datasets/r/resource-id")

# Obtenir la derniĂšre ressource d'un dataset
resource = api.get_latest_resource("dataset-id", format="csv")

Structure du skill

data-gouv-skill/
├── .claude-plugin/
│   ├── plugin.json          # MĂ©tadonnĂ©es du plugin
│   └── marketplace.json     # Configuration marketplace
│
├── skills/data-gouv/
│   ├── SKILL.md            # Ce fichier (point d'entrĂ©e)
│   │
│   ├── lib/
│   │   └── datagouv.py     # Librairie Python principale
│   │
│   ├── datasets/           # Documentation des datasets
│   │   ├── iqvia-vaccination.md
│   │   ├── eau-potable.md
│   │   ├── calendrier-scolaire.md
│   │   └── ...
│   │
│   └── examples/           # Exemples de code
│       ├── basic_search.py
│       ├── vaccination_analysis.py
│       ├── water_quality.py
│       └── ...
│
├── scripts/
│   ├── sync-datasets.sh    # Synchroniser les mĂ©tadonnĂ©es
│   └── update-metadata.py  # Mettre à jour la documentation
│
└── README.md               # Documentation GitHub

Datasets documentés

Le skill inclut une documentation détaillée pour les datasets les plus utilisés :

1. IQVIA France - Vaccinations anti-grippales

Organisation : IQVIA France
Mise Ă  jour : Hebdomadaire (campagne de vaccination)
Format : CSV, XLSX

Données de suivi des campagnes de vaccination contre la grippe saisonniÚre, avec détail par région, département, tranche d'ùge et type de site de vaccination.

Documentation : datasets/iqvia-vaccination.md

Exemple d'utilisation :

# Rechercher le dataset de la campagne actuelle
results = api.search_datasets("vaccination grippe 2025-2026", organization="iqvia-france")
dataset_id = results['data'][0]['id']

# Charger les données
resource = api.get_latest_resource(dataset_id, format='csv')
df = api.load_csv(resource['url'])

# Filtrer par région
df_na = df[df['code_region'] == '75']  # Nouvelle-Aquitaine
print(f"Total vaccinations: {df_na['nb_doses'].sum():,}")

2. ContrĂŽle sanitaire de l'eau potable

Organisation : MinistÚre de la Santé
Mise Ă  jour : Mensuelle
Format : CSV (fichiers volumineux)

Résultats complets des analyses de qualité de l'eau du robinet, commune par commune, avec tous les paramÚtres testés (microbiologie, chimie, physico-chimie).

Documentation : datasets/eau-potable.md

Exemple d'utilisation :

# Charger le fichier de correspondance communes/UDI
dataset_id = "resultats-du-controle-sanitaire-de-leau-distribuee-commune-par-commune"
dataset = api.get_dataset(dataset_id)

# Obtenir les données pour une commune
udi_com = api.load_csv(udi_com_resource_url)
udi_larochelle = udi_com[udi_com['codecommune'] == '17300']

# Analyser la conformité
results = api.load_csv(results_resource_url)
conformite = results['conforme'].value_counts()
taux = (conformite.get('O', 0) / len(results)) * 100
print(f"Taux de conformité: {taux:.1f}%")

3. Calendrier scolaire

Organisation : Ministùre de l'Éducation Nationale
Mise Ă  jour : Annuelle
Format : CSV, JSON

Calendrier officiel des vacances scolaires par zone académique (A, B, C) et pour l'ensemble du territoire.

Zones académiques :

  • Zone A : Besançon, Bordeaux, Clermont-Ferrand, Dijon, Grenoble, Limoges, Lyon, Poitiers
  • Zone B : Aix-Marseille, Amiens, Caen, Lille, Nancy-Metz, Nantes, Nice, OrlĂ©ans-Tours, Reims, Rennes, Rouen, Strasbourg
  • Zone C : CrĂ©teil, Montpellier, Paris, Toulouse, Versailles

Autres datasets disponibles

  • Population lĂ©gale (INSEE)
  • Code Officiel GĂ©ographique (COG)
  • QualitĂ© de l'air
  • Production d'Ă©nergie renouvelable
  • Transports publics (GTFS)
  • Pharmacies et services de santĂ©

Librairie Python

Classe principale : DataGouvAPI

from data-gouv.lib.datagouv import DataGouvAPI

api = DataGouvAPI(cache_dir="/custom/cache/dir")  # optionnel

Méthodes disponibles

search_datasets(query, organization=None, tag=None, page_size=20, page=1)

  • Rechercher des datasets dans le catalogue
  • Retourne : Dict[str, Any] avec rĂ©sultats et mĂ©tadonnĂ©es

get_dataset(dataset_id)

  • Obtenir les dĂ©tails complets d'un dataset
  • Retourne : Dict[str, Any] ou None

get_latest_resource(dataset_id, format='csv', title_contains=None)

  • Obtenir la ressource la plus rĂ©cente d'un format donnĂ©
  • Retourne : Dict[str, Any] ou None

download_resource(resource_url, cache=True)

  • TĂ©lĂ©charger une ressource (avec cache automatique)
  • Retourne : bytes ou None

load_csv(resource_url, sep=None, encoding=None, decimal=',', cache=True)

  • Charger un CSV avec dĂ©tection automatique des formats français
  • Retourne : pd.DataFrame ou None

Fonctions utilitaires

from data-gouv.lib.datagouv import quick_search, load_dataset_csv

# Recherche rapide
datasets = quick_search("vaccination", limit=5)

# Chargement rapide d'un CSV
df = load_dataset_csv("dataset-id", resource_index=0)

Exemples complets

Analyse de vaccination par département

from data-gouv.lib.datagouv import DataGouvAPI
import pandas as pd
import matplotlib.pyplot as plt

api = DataGouvAPI()

# Charger les données
results = api.search_datasets("vaccination grippe 2025-2026", organization="iqvia-france")
dataset_id = results['data'][0]['id']
resource = api.get_latest_resource(dataset_id, format='csv')
df = api.load_csv(resource['url'])

# Analyser par département en Nouvelle-Aquitaine
df_na = df[df['code_region'] == '75']
par_dept = df_na.groupby('libelle_departement')['nb_doses'].sum().sort_values()

# Visualiser
plt.figure(figsize=(12, 6))
par_dept.plot(kind='barh')
plt.title('Vaccinations anti-grippales par département (Nouvelle-Aquitaine)')
plt.xlabel('Nombre de doses')
plt.tight_layout()
plt.savefig('vaccinations_departement.png', dpi=150)

Comparaison qualité de l'eau entre communes

from data-gouv.lib.datagouv import DataGouvAPI

api = DataGouvAPI()

communes = {
    'La Rochelle': '17300',
    'Royan': '17306',
    'Saintes': '17415'
}

# Charger les données
dataset_id = "resultats-du-controle-sanitaire-de-leau-distribuee-commune-par-commune"
dataset = api.get_dataset(dataset_id)

# Analyser chaque commune
for nom, code in communes.items():
    # ... (voir datasets/eau-potable.md pour le code complet)
    print(f"{nom}: {taux_conformite:.1f}% de conformité")

Bonnes pratiques

1. Utiliser le cache

Le cache est activé par défaut et économise de la bande passante :

api = DataGouvAPI(cache_dir="~/.cache/datagouv")
df = api.load_csv(url, cache=True)  # cache=True par défaut

2. Gérer les fichiers volumineux

Pour les gros fichiers (>100 MB), charger par chunks :

chunks = []
for chunk in pd.read_csv(url, chunksize=10000, sep=';', encoding='utf-8'):
    # Filtrer immédiatement
    chunk_filtered = chunk[chunk['region'] == 'Nouvelle-Aquitaine']
    chunks.append(chunk_filtered)

df = pd.concat(chunks, ignore_index=True)

3. Valider les données

Toujours vérifier la qualité des données chargées :

df = api.load_csv(url)

if df is not None:
    print(f"✓ ChargĂ©: {len(df)} lignes, {len(df.columns)} colonnes")
    print(f"✓ Colonnes: {df.columns.tolist()}")
    print(f"✓ PĂ©riode: {df['date'].min()} Ă  {df['date'].max()}")
else:
    print("✗ Erreur de chargement")

4. Gestion des erreurs

try:
    df = api.load_csv(url)
    if df is None:
        raise ValueError("Failed to load CSV")

    # Traiter les données
    result = df.groupby('region')['value'].sum()

except Exception as e:
    print(f"Erreur: {e}")
    # Fallback ou alternative

Formats de données français

CSV

  • SĂ©parateur : ; (dĂ©tectĂ© automatiquement)
  • Encodage : utf-8, latin-1, ou cp1252 (dĂ©tectĂ© automatiquement)
  • DĂ©cimales : , au lieu de . (gĂ©rĂ© automatiquement)

Dates

  • Format courant : DD/MM/YYYY
  • Format ISO : YYYY-MM-DD
  • Semaines ISO : YYYY-Www (ex: 2025-W42)

Codes géographiques

  • Commune : Code INSEE 5 chiffres (ex: 17300)
  • DĂ©partement : 2 ou 3 chiffres (ex: 17, 2A, 2B)
  • RĂ©gion : 2 chiffres (ex: 75 pour Nouvelle-Aquitaine)

Ressources et support

Documentation officielle

Organisations principales

  • INSEE : Statistiques, population, Ă©conomie
  • MinistĂšre de la SantĂ© : SantĂ© publique, qualitĂ© de l'eau
  • IQVIA France : Campagnes de vaccination
  • SantĂ© Publique France : Surveillance sanitaire
  • MinistĂšre de l'Éducation : DonnĂ©es scolaires
  • MinistĂšre de la Transition Écologique : Environnement, Ă©nergie

Support du skill

  • Issues : GitHub Issues
  • Contributions : Pull requests bienvenues !
  • Licence : Licence Ouverte 2.0 (compatible CC-BY)

Contribution

Les contributions sont les bienvenues ! Pour ajouter un nouveau dataset documenté :

  1. Créer un fichier datasets/nom-dataset.md
  2. Suivre le modĂšle des datasets existants
  3. Ajouter des exemples de code concrets
  4. Soumettre une pull request

Changelog

v2.0.0 (2025-12-02)

  • 🚀 Ajout support MCP officiel data.gouv.fr
  • 📝 Guide de choix entre librairie Python et MCP
  • 📚 Documentation complĂšte du MCP officiel
  • 🔗 Liens vers repository officiel
  • ✹ Deux approches complĂ©mentaires pour tous les cas d'usage

v1.0.0 (2025-12-02)

  • 🎉 Version initiale
  • ✅ Librairie Python complĂšte
  • ✅ Documentation IQVIA Vaccination
  • ✅ Documentation QualitĂ© de l'eau
  • ✅ Exemples de code
  • ✅ Cache automatique
  • ✅ Support formats français

Auteur : Benoit Vinceneux Licence : Licence Ouverte 2.0 Version : 2.0.0 DerniĂšre mise Ă  jour : 2025-12-02

Score

Total Score

65/100

Based on repository quality metrics

✓SKILL.md

SKILL.mdăƒ•ă‚Ąă‚€ăƒ«ăŒć«ăŸă‚ŒăŠă„ă‚‹

+20
✓LICENSE

ăƒ©ă‚€ă‚»ăƒłă‚čăŒèš­ćźšă•ă‚ŒăŠă„ă‚‹

+10
○èȘŹæ˜Žæ–‡

100æ–‡ć­—ä»„äžŠăźèȘŹæ˜ŽăŒă‚ă‚‹

0/10
○äșș気

GitHub Stars 100仄䞊

0/15
âœ“æœ€èż‘ăźæŽ»ć‹•

3ăƒ¶æœˆä»„ć†…ă«æ›Žæ–°

+5
â—‹ăƒ•ă‚©ăƒŒă‚Ż

10ć›žä»„äžŠăƒ•ă‚©ăƒŒă‚Żă•ă‚ŒăŠă„ă‚‹

0/5
✓Issue缡理

ă‚ȘăƒŒăƒ—ăƒłIssueが50æœȘæș€

+5
✓蚀èȘž

ăƒ—ăƒ­ă‚°ăƒ©ăƒŸăƒłă‚°èš€èȘžăŒèš­ćźšă•ă‚ŒăŠă„ă‚‹

+5
✓タグ

1ă€ä»„äžŠăźă‚żă‚°ăŒèš­ćźšă•ă‚ŒăŠă„ă‚‹

+5

Reviews

💬

Reviews coming soon