data-quality-checker
Skill28 starsChanged 27 days agoMITView on GitHub
Vérification de la qualité des données — complétude, cohérence, unicité, validité et fraîcheur. À utiliser quand l'utilisateur doit valider des données, détecter des anomalies ou mettre en place des contrôles qualité sur des pipelines de données. Se déclenche aussi avec "qualité des données", "data quality", "données manquantes", "doublons", "validation de données", "anomalie données", "contrôle qualité data". Also triggers on "data quality checks", "validate a dataset", "detect missing values".
- Installs packages
2 other projects use a version of this.
Adopted by
Most recently taken up by
- nek1987/auto-agent-harnesstheir own version, first seen Oct 11, 2026
- IngAs8/ClaudeSkilltheir own version, first seen Sep 28, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- nek1987/auto-agent-harness★ 4same name
- IngAs8/ClaudeSkill★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository347 other files it gives its agents.
- agent-a2a-protocol-guideSkill
- agent-agent-observabilitySkill
- agent-api-caller-subagentSkill
- agent-autogen-guideSkill
- agent-browser-agent-builderSkill
- agent-claude-code-extension-builderSkill
- agent-code-review-subagentSkill
- agent-coding-agent-builderSkill
- agent-conflict-resolverSkill
- agent-consensus-builderSkill
- agent-context-managerSkill
- agent-cost-optimizerSkill
- agent-crewai-expertSkill
- agent-customer-support-agentSkill
- agent-data-analyst-agentSkill
- agent-database-query-subagentSkill
- agent-deployment-guideSkill
- agent-email-agent-builderSkill
- agent-evaluation-frameworkSkill
- agent-file-processor-subagentSkill
- agent-handoff-designerSkill
- agent-hierarchy-designerSkill
- agent-human-in-the-loop-designerSkill
- agent-langgraph-designerSkill
- agent-load-balancerSkill
- agent-marketplace-creatorSkill
- agent-mcp-server-builderSkill
- agent-memory-designerSkill
- agent-message-protocolSkill
- agent-monitoring-setupSkill
- agent-multi-agent-orchestratorSkill
- agent-openai-assistants-builderSkill
- agent-pipeline-composerSkill
- agent-pool-managerSkill
- agent-prompt-tunerSkill
- agent-research-agent-designerSkill
- agent-result-aggregatorSkill
- agent-retry-strategistSkill
- agent-sales-agent-builderSkill
- agent-security-hardenerSkill
- agent-semantic-kernel-guideSkill
- agent-skill-creatorSkill
- agent-skill-routerSkill
- agent-spawnerSkill
- agent-state-synchronizerSkill
- agent-subagent-delegatorSkill
- agent-supervisor-builderSkill
- agent-task-decomposerSkill
- agent-testing-frameworkSkill
- agent-tool-calling-architectSkill
- agent-voice-agent-builderSkill
- agent-web-scraper-subagentSkill
- agent-workflow-automation-agentSkill
- ai-ml-anomaly-detection-builderSkill
- ai-ml-computer-vision-guideSkill
- ai-ml-dataset-builderSkill
- ai-ml-ml-experiment-trackerSkill
- ai-ml-model-fine-tunerSkill
- ai-ml-model-optimization-guideSkill
- ai-ml-nlp-pipeline-designerSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 241
Never say "happy to help", "sure!", "great question", "let me", or similar.
- Distinctive: line 244
Stop when done. No summary, no recap, no trailing commentary.
- Distinctive: line 245
No politeness wrappers. Direct and blunt.
- Distinctive: line 248
No emoji unless asked.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Vérificateur de Qualité des Données
Workflow en 5 étapes
1. Profiler les données
Avant tout check, explorer la structure et la distribution réelle.
-- Profil rapide d'une table (PostgreSQL / SQL Server compatible)
SELECT
column_name,
data_type,
COUNT(*) AS total_rows,
SUM(CASE WHEN column_name IS NULL THEN 1 ELSE 0 END) AS null_count,
COUNT(DISTINCT column_name) AS distinct_count
FROM information_schema.columns
WHERE table_name = 'orders'
GROUP BY column_name, data_type;# Profil pandas — snapshot en 3 lignes
import pandas as pd
df = pd.read_sql("SELECT * FROM orders LIMIT 500000", con=engine)
print(df.describe(include="all"))
print(df.isnull().mean().sort_values(ascending=False)) # taux nullité par col2. Définir les règles de qualité
Chaque règle doit avoir : dimension, seuil warning, seuil error, justification métier.
| Dimension | Question | Seuil warning | Seuil error |
| Complétude | Valeurs NULL ? | > 1 % | > 5 % |
| Unicité | Doublons ? | > 0 | > 0 (clés primaires) |
| Validité | Format/plage respectés ? | > 0,5 % invalides | > 2 % |
| Cohérence | Jointures orphelines ? | > 0 | > 0 (FK obligatoires) |
| Fraîcheur | Données périmées ? | > 12 h | > 24 h |
| Volume | Nombre de lignes anormal ? | ± 20 % vs veille | ± 50 % |
3. Implémenter les checks SQL
Complétude
-- Taux de nullité multi-colonnes (SQL Server / PostgreSQL)
SELECT
col,
COUNT(*) AS total,
SUM(CASE WHEN val IS NULL THEN 1 ELSE 0 END) AS nulls,
ROUND(100.0 * SUM(CASE WHEN val IS NULL THEN 1 ELSE 0 END) / COUNT(*), 2) AS null_pct
FROM (
SELECT 'email' AS col, email AS val FROM customers UNION ALL
SELECT 'phone' AS col, phone AS val FROM customers UNION ALL
SELECT 'status' AS col, status AS val FROM customers
) t
GROUP BY col
ORDER BY null_pct DESC;Unicité
-- Doublons sur clé composite
SELECT order_id, customer_id, COUNT(*) AS nb
FROM orders
GROUP BY order_id, customer_id
HAVING COUNT(*) > 1
ORDER BY nb DESC;Validité
-- Valeurs hors plage / enum invalide
SELECT COUNT(*) AS invalid_rows
FROM orders
WHERE amount <= 0
OR amount > 999999
OR order_date > CURRENT_DATE
OR status NOT IN ('pending','processing','completed','cancelled');
-- Format email (PostgreSQL)
SELECT email FROM customers
WHERE email !~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';Cohérence (intégrité référentielle)
-- Commandes orphelines (sans client)
SELECT o.order_id, o.customer_id
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.id
WHERE c.id IS NULL;
-- Incohérence logique : date livraison avant date commande
SELECT order_id, order_date, delivery_date
FROM orders
WHERE delivery_date < order_date;Fraîcheur
-- Alerte si table non alimentée depuis N heures
SELECT
'orders' AS tbl,
MAX(updated_at) AS last_update,
DATEDIFF(MINUTE, MAX(updated_at), GETUTCDATE()) AS minutes_lag
FROM orders
HAVING DATEDIFF(MINUTE, MAX(updated_at), GETUTCDATE()) > 60;
-- PostgreSQL : remplacer DATEDIFF(...) par EXTRACT(EPOCH FROM (NOW()-MAX(updated_at)))/60Anomalie de volume
-- Comparer le volume du jour J vs J-1
SELECT
CAST(created_at AS DATE) AS day,
COUNT(*) AS row_count,
LAG(COUNT(*)) OVER (ORDER BY CAST(created_at AS DATE)) AS prev_day,
ROUND(100.0 * (COUNT(*) - LAG(COUNT(*)) OVER (ORDER BY CAST(created_at AS DATE)))
/ NULLIF(LAG(COUNT(*)) OVER (ORDER BY CAST(created_at AS DATE)), 0), 1) AS pct_change
FROM orders
GROUP BY CAST(created_at AS DATE)
ORDER BY day DESC;4. Automatiser avec un framework
Great Expectations (Python)
pip install great_expectations
great_expectations initimport great_expectations as gx
context = gx.get_context()
ds = context.sources.add_pandas("orders_ds")
da = ds.add_dataframe_asset("orders")
batch = da.add_batch_definition_whole_dataframe("batch").get_batch(
batch_parameters={"dataframe": df}
)
suite = context.add_expectation_suite("orders_suite")
suite.add_expectation(gx.expectations.ExpectColumnValuesToNotBeNull(column="customer_id"))
suite.add_expectation(gx.expectations.ExpectColumnValuesToBeUnique(column="order_id"))
suite.add_expectation(gx.expectations.ExpectColumnValuesToBeBetween(
column="amount", min_value=0.01, max_value=999999.99
))
suite.add_expectation(gx.expectations.ExpectTableRowCountToBeBetween(
min_value=1000, max_value=10_000_000
))
results = batch.validate(suite)
print(results.success) # False = au moins une règle KOdbt tests (si stack dbt)
# models/schema.yml
models:
- name: orders
columns:
- name: order_id
tests: [unique, not_null]
- name: amount
tests:
- not_null
- dbt_utils.accepted_range:
min_value: 0.01
max_value: 999999
- name: status
tests:
- accepted_values:
values: ['pending','processing','completed','cancelled']
- name: customer_id
tests:
- relationships:
to: ref('customers')
field: iddbt test --select orders # lancer les checks
dbt test --select orders --store-failures # stocker les lignes KO dans la BDD5. Monitorer et alerter
- Stocker les résultats dans une table de métriques qualité (date, table, dimension, valeur, statut).
- Brancher un dashboard (Grafana, Metabase) sur cette table.
- Déclencher une alerte (Slack, email, PagerDuty) si
statut = ERROR.
-- Table de suivi recommandée
CREATE TABLE dq_metrics (
run_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
table_name VARCHAR(100),
dimension VARCHAR(50), -- completeness / uniqueness / validity / ...
metric_name VARCHAR(100),
metric_value DECIMAL(18,4),
threshold_warn DECIMAL(18,4),
threshold_err DECIMAL(18,4),
status VARCHAR(10) -- OK / WARN / ERROR
);Garde-fous et anti-patterns
| Piège | Bonne pratique |
| Checker seulement en amont (ingestion) | Checker aussi après les transformations |
| Seuils identiques pour toutes les colonnes | Adapter les seuils au contexte métier (email optionnel ≠ FK obligatoire) |
| Bloquer le pipeline sur tout KO | Distinguer warning (log + continue) vs error (arrêt pipeline) |
Ignorer les valeurs vides "" vs NULL | Traiter les deux : IS NULL OR TRIM(col) = '' |
| Checks ponctuels sans historique | Stocker les métriques pour détecter les dérives graduelles |
| Valider uniquement le schéma | Valider aussi les distributions (z-score, percentiles) |
| Checks trop lents sur grande table | Utiliser le sampling sur > 100 M lignes (TABLESAMPLE 1 PERCENT) |
Critères de choix d'outil
| Contexte | Outil recommandé |
| Stack Python/Pandas ad hoc | Great Expectations |
| Pipeline dbt existant | dbt tests + dbt-utils |
| SQL pur, sans dépendance | Requêtes custom + table dq_metrics |
| Scala/Spark | Deequ (AWS) ou spark-dq |
| Cloud AWS | AWS Glue Data Quality |
| Cloud Azure | Azure Purview / DQ rules |
Communication Rules — MANDATORY
- Ultra-concise. No filler, no preamble, no pleasantries.
- Never say "happy to help", "sure!", "great question", "let me", or similar.
- Tool first, talk second. Act before explaining.
- Result first. Lead with outcome, not process.
- Stop when done. No summary, no recap, no trailing commentary.
- No politeness wrappers. Direct and blunt.
- Minimum words. If one word works, do not use ten.
- No unsolicited explanations.
- No emoji unless asked.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

