/ml-data-leakage-guard
Detects and prevents data leakage in machine learning and mathematical modeling. Use after ML tasks involving data cleaning, feature engineering, data augmentation, algorithm development, normalization, missing value imputation, dimensionality reduction, feature selection, or
$ npx -y skills add foryourhealth111-pixel/Vibe-Skills --skill ml-data-leakage-guard --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ml-data-leakage-guard
Context preview
The summary Claude sees to decide when to auto-load this skill.
Detects and prevents data leakage in machine learning and mathematical modeling. Use after ML tasks involving data cleaning, feature engineering, data augmentation, algorithm development, normalization, missing value imputation, dimensionality reduction, feature selection, or
SKILL.md
ml-data-leakage-guard.SKILL.mdname: ml-data-leakage-guard
description: "Detects and prevents data leakage in machine learning and mathematical modeling. Use after ML tasks involving data cleaning, feature engineering, data augmentation, algorithm development, normalization, missing value imputation, dimensionality reduction, feature selection, or time series modeling. Checks if features/statistics would be available at prediction time."
ML Data Leakage Guard Skill
Automatically detects and prevents data leakage in machine learning workflows by verifying that all preprocessing steps, feature engineering, and statistical computations would be available at prediction time.
When to Use This Skill
Use this skill after work involving:
- Data preprocessing (normalization, standardization, scaling)
- Missing value imputation
- Feature engineering and feature selection
- Dimensionality reduction (PCA, SVD, t-SNE)
- Target encoding or label encoding
- Time series feature construction
- Data augmentation strategies
- Algorithm development and optimization
- Train-test split procedures
- Cross-validation setup
Not For / Boundaries
- Pure theoretical ML discussions without implementation
- Model architecture design (without data preprocessing)
- Hyperparameter tuning (unless it involves data-dependent operations)
Core Principle
**The Golden Rule**: At the exact moment of prediction in production, can I access this value from the database or compute it using only information available up to that point?
If the answer is "no" or "not completely", then data leakage exists.
Quick Reference
Critical Leakage Patterns
**Pattern 1: Preprocessing Before Split**
# ❌ WRONG: Leakage - fit on entire dataset
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X) # Uses test set statistics
X_train, X_test = train_test_split(X_scaled, y)
# ✅ CORRECT: Fit only on training data
X_train, X_test, y_train, y_test = train_test_split(X, y)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train) # Fit on train only
X_test_scaled = scaler.transform(X_test) # Transform test using train statistics
**Pattern 2: Global Missing Value Imputation**
# ❌ WRONG: Uses global statistics including test set
df['age'].fillna(df['age'].mean(), inplace=True) # Global mean includes test data
X_train, X_test = train_test_split(df, y)
# ✅ CORRECT: Compute statistics on training set only
X_train, X_test, y_train, y_test = train_test_split(df, y)
train_mean = X_train['age'].mean() # Only from training data
X_train['age'].fillna(train_mean, inplace=True)
X_test['age'].fillna(train_mean, inplace=True) # Use train mean for test
**Pattern 3: PCA/Dimensionality Reduction on Full Dataset**
# ❌ WRONG: PCA learns variance structure from test set
pca = PCA(n_components=10)
X_reduced = pca.fit_transform(X) # Includes test set variance
X_train, X_test = train_test_split(X_reduced, y)
# ✅ CORRECT: Fit PCA only on training data
X_train, X_test, y_train, y_test = train_test_split(X, y)
pca = PCA(n_components=10)
X_train_reduced = pca.fit_transform(X_train) # Learn from train only
X_test_reduced = pca.transform(X_test) # Apply train-learned transformation
**Pattern 4: Target Encoding with Full Dataset**
# ❌ WRONG: Uses target values from test set
category_means = df.groupby('category')['target'].mean() # Includes test targets
df['category_encoded'] = df['category'].map(category_means)
X_train, X_test = train_test_split(df, y)
# ✅ CORRECT: Compute encoding only from training targets
X_train, X_test, y_train, y_test = train_test_split(df, y)
category_means = X_train.groupby('category')['target'].mean() # Train only
X_train['category_encoded'] = X_train['category'].map(category_means)
X_test['category_encoded'] = X_test['category'].map(category_means)**Pattern 5: Feature Selection on Full Dataset**
# ❌ WRONG: Feature selection sees test set
from sklearn.feature_selection import SelectKBest
selector = SelectKBest(k=10)
X_selected = selector.fit_transform(X, y) # Uses test set for selection
X_train, X_test = train_test_split(X_selected, y)
# ✅ CORRECT: Select features using training data only
X_train, X_test, y_train, y_test = train_test_split(X, y)
selector = SelectKBest(k=10)
X_train_selected = selector.fit_transform(X_train, y_train) # Train only
X_test_selected = selector.transform(X_test) # Apply train-learned selection
**Pattern 6: Random Split on Temporal Data**
# ❌ WRONG: Random split on time series (uses future to predict past)
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# ✅ CORRECT: Time-based split for temporal data
split_date = '2024-01-01'
X_train = df[df['date'] < split_date]
X_test = df[df['date'] >= split_date]
**Pattern 7: Future Function in Time Series Features**
# ❌ WRONG: Uses future data to compute current features
df['daily_avg'] = df.groupby('date')['value'].transform('mean') # Includes all day's data
# ✅ CORRECT: Use only past data (expanding window)
df = df.sort_values('timestamp')
df['cumulative_avg'] = df.groupby('user_id')['value'].expanding().mean().reset_index(0, drop=True)**Pattern 8: Post-Event Features**
# ❌ WRONG: Feature only exists after the outcome
# Predicting loan default using "number of collection calls" as feature
# Collection calls only happen AFTER default occurs
# ✅ CORRECT: Use only pre-event features
# Use features available BEFORE the outcome: credit score, income, debt ratio, etc.
**Pattern 9: Leakage in Cross-Validation**
# ❌ WRONG: Preprocessing before CV split
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
scores = cross_val_score(model, X_scaled, y, cv=5) # Each fold sees other folds' statistics
# ✅ CORRECT: Preprocessing inside CV pipeline
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', LogisticRegression())
])
scores = cross_val_Read more
name: ml-data-leakage-guard description: "Detects and prevents data leakage in machine learning and mathematical modeling. Use after ML tasks involving data cleaning, feature engineering, data augmentation, algorithm development, normalization, missing value imputation, dimensionality reduction, feature selection, or time series modeling. Checks if features/statistics would be available at prediction time."
ML Data Leakage Guard Skill
Automatically detects and prevents data leakage in machine learning workflows by verifying that all preprocessing steps, feature engineering, and statistical computations would be available at prediction time.
When to Use This Skill
Use this skill after work involving:
- Data preprocessing (normalization, standardization, scaling)
- Missing value imputation
- Feature engineering and feature selection
- Dimensionality reduction (PCA, SVD, t-SNE)
- Target encoding or label encoding
- Time series feature construction
- Data augmentation strategies
- Algorithm development and optimization
- Train-test split procedures
- Cross-validation setup
Not For / Boundaries
- Pure theoretical ML discussions without implementation
- Model architecture design (without data preprocessing)
- Hyperparameter tuning (unless it involves data-dependent operations)
Core Principle
**The Golden Rule**: At the exact moment of prediction in production, can I access this value from the database or compute it using only information available up to that point?
If the answer is "no" or "not completely", then data leakage exists.
Quick Reference
Critical Leakage Patterns
**Pattern 1: Preprocessing Before Split**
# ❌ WRONG: Leakage - fit on entire dataset scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # Uses test set statistics X_train, X_test = train_test_split(X_scaled, y) # ✅ CORRECT: Fit only on training data X_train, X_test, y_train, y_test = train_test_split(X, y) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) # Fit on train only X_test_scaled = scaler.transform(X_test) # Transform test using train statistics
**Pattern 2: Global Missing Value Imputation**
# ❌ WRONG: Uses global statistics including test set df['age'].fillna(df['age'].mean(), inplace=True) # Global mean includes test data X_train, X_test = train_test_split(df, y) # ✅ CORRECT: Compute statistics on training set only X_train, X_test, y_train, y_test = train_test_split(df, y) train_mean = X_train['age'].mean() # Only from training data X_train['age'].fillna(train_mean, inplace=True) X_test['age'].fillna(train_mean, inplace=True) # Use train mean for test
**Pattern 3: PCA/Dimensionality Reduction on Full Dataset**
# ❌ WRONG: PCA learns variance structure from test set pca = PCA(n_components=10) X_reduced = pca.fit_transform(X) # Includes test set variance X_train, X_test = train_test_split(X_reduced, y) # ✅ CORRECT: Fit PCA only on training data X_train, X_test, y_train, y_test = train_test_split(X, y) pca = PCA(n_components=10) X_train_reduced = pca.fit_transform(X_train) # Learn from train only X_test_reduced = pca.transform(X_test) # Apply train-learned transformation
**Pattern 4: Target Encoding with Full Dataset**
# ❌ WRONG: Uses target values from test set
category_means = df.groupby('category')['target'].mean() # Includes test targets
df['category_encoded'] = df['category'].map(category_means)
X_train, X_test = train_test_split(df, y)
# ✅ CORRECT: Compute encoding only from training targets
X_train, X_test, y_train, y_test = train_test_split(df, y)
category_means = X_train.groupby('category')['target'].mean() # Train only
X_train['category_encoded'] = X_train['category'].map(category_means)
X_test['category_encoded'] = X_test['category'].map(category_means)**Pattern 5: Feature Selection on Full Dataset**
# ❌ WRONG: Feature selection sees test set from sklearn.feature_selection import SelectKBest selector = SelectKBest(k=10) X_selected = selector.fit_transform(X, y) # Uses test set for selection X_train, X_test = train_test_split(X_selected, y) # ✅ CORRECT: Select features using training data only X_train, X_test, y_train, y_test = train_test_split(X, y) selector = SelectKBest(k=10) X_train_selected = selector.fit_transform(X_train, y_train) # Train only X_test_selected = selector.transform(X_test) # Apply train-learned selection
**Pattern 6: Random Split on Temporal Data**
# ❌ WRONG: Random split on time series (uses future to predict past) X_train, X_test = train_test_split(df, test_size=0.2, random_state=42) # ✅ CORRECT: Time-based split for temporal data split_date = '2024-01-01' X_train = df[df['date'] < split_date] X_test = df[df['date'] >= split_date]
**Pattern 7: Future Function in Time Series Features**
# ❌ WRONG: Uses future data to compute current features
df['daily_avg'] = df.groupby('date')['value'].transform('mean') # Includes all day's data
# ✅ CORRECT: Use only past data (expanding window)
df = df.sort_values('timestamp')
df['cumulative_avg'] = df.groupby('user_id')['value'].expanding().mean().reset_index(0, drop=True)**Pattern 8: Post-Event Features**
# ❌ WRONG: Feature only exists after the outcome # Predicting loan default using "number of collection calls" as feature # Collection calls only happen AFTER default occurs # ✅ CORRECT: Use only pre-event features # Use features available BEFORE the outcome: credit score, income, debt ratio, etc.
**Pattern 9: Leakage in Cross-Validation**
# ❌ WRONG: Preprocessing before CV split
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
scores = cross_val_score(model, X_scaled, y, cv=5) # Each fold sees other folds' statistics
# ✅ CORRECT: Preprocessing inside CV pipeline
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', LogisticRegression())
])
scores = cross_val_VibeSkills is a general-purpose Skill that automatically routes local Skills and intelligently orchestrates harness workflows.
Repo: foryourhealth111-pixel/Vibe-Skills
Other skills on vibe-skills.
- /LQF_Machine_Learning_Expert_Guide
LQF Machine Learning Expert Guide - Routed skill for ML/Statistical Modeling with Critical Discussion Mode. Triggers on: machine learning, modeling, prediction, training, classification, regression, clustering, deep learning, neural network, model evaluation, feature
Open skill - /adaptyv
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use
Open skill - /aeon
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations
Open skill - /algorithmic-art
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing
Open skill - /alpha-vantage
Access real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API. Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash
Open skill - /architecture-patterns
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.
Open skill
