name: ml-pipeline
description: >
Complete machine learning pipeline for trading: feature engineering, AutoML, deep learning, and financial RL.
Use for automated parameter sweeps, feature creation, model training, and anti-leakage validation.
version: "2.0.0"
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
metadata:
consolidates:
- ml-feature-engineering
- deep-learning-optimizer-5
- pytorch-lightning-2
- scikit-learn-ml-framework
- automl-pipeline-builder-2
- ml-feature-engineering-helper
- ml-fundamentals
- machine-learning-feature-engineering-toolkit
ML Pipeline
Unified skill for the complete ML pipeline within a quant trading research system.
Consolidates eight prior skills into a single authoritative reference covering
the full lifecycle: data validation, feature creation, selection,
transformation, anti-leakage checks, pipeline automation, deep learning optimization, and deployment.
1. When to Use
Activate this skill when the task involves any of the following:
- Creating, selecting, or transforming features for an ML-driven strategy.
- Auditing an existing feature pipeline for data leakage or overfitting risk.
- Automating an end-to-end ML pipeline (data prep through model export).
- Evaluating feature importance, scaling, encoding, or interaction effects.
- Integrating features with a feature store (Feast, Tecton, custom Parquet store).
- Explaining core ML concepts (bias-variance, cross-validation, regularisation)
in the context of feature engineering decisions.
2. Inputs to Gather
Before starting work, collect or confirm:
| Input |
Details |
| Objective |
Target metric (Sharpe, accuracy, RMSE ...), constraints, time horizon. |
| Data |
Symbols / instruments, timeframe, bar type, sampling frequency, data sources. |
| Leakage risks |
Point-in-time concerns, survivorship bias, look-ahead in labels or features. |
| Compute budget |
CPU/GPU limits, wall-clock budget for AutoML search. |
| Latency |
Online vs. offline inference, acceptable prediction latency. |
| Interpretability |
Regulatory or research need for explainable features / models. |
| Deployment target |
Where the model will run (notebook, backtest harness, live engine). |
3. Feature Creation Patterns
3.1 Numerical Features
- Interaction terms:
price * volume, high / low, close - open.
- Rolling statistics: mean, std, skew, kurtosis over configurable windows.
- Polynomial / log transforms:
log(volume + 1), spread^2.
- Binning / discretisation: equal-width, quantile-based, or domain-driven bins.
3.2 Categorical Features
- One-hot encoding: for low-cardinality categoricals (sector, exchange).
- Target encoding: mean-target per category with smoothing (careful of leakage -- use only in-fold means).
- Ordinal encoding: when categories have a natural order (credit rating).
3.3 Time-Series Specific
- Lag features:
return_{t-1}, return_{t-5}, etc.
- Calendar features: day-of-week, month, quarter, options-expiry flag.
- Rolling z-score:
(x - rolling_mean) / rolling_std for stationarity.
- Fractional differentiation: preserve memory while achieving stationarity (Lopez de Prado).
3.4 Feature Selection Techniques
- Filter methods: mutual information, variance threshold, correlation pruning.
- Wrapper methods: recursive feature elimination (RFE), forward/backward selection.
- Embedded methods: L1 regularisation, tree-based importance, SHAP values.
- Permutation importance: model-agnostic; run on out-of-fold predictions.
4. Anti-Leakage Checks
Data leakage is the single most common cause of inflated backtest results.
Apply these checks at every pipeline stage:
4.1 Label Leakage
- Labels must be computed from future returns relative to the feature
timestamp. Verify that the label window does not overlap the feature window.
- Use purging and embargo when labels span multiple bars.
4.2 Feature Leakage
- No feature may use information from time
t+1 or later at prediction time t.
- Rolling statistics must use a closed left window:
df['feat'].rolling(20).mean().shift(1).
- Target-encoded categoricals must be computed on the training fold only.
4.3 Cross-Validation Leakage
- Use purged k-fold or walk-forward CV for time-series. Never use random
k-fold on ordered data.
- Insert an embargo gap between train and test folds to prevent bleed-through
from autocorrelation.
4.4 Survivorship & Selection Bias
- Ensure the universe of instruments at time
t reflects what was actually
tradable at that time (delisted stocks, halted symbols removed later).
- Backfill from point-in-time databases where available.
4.5 Validation Checklist
Run before every backtest:
[ ] Labels computed strictly from future returns (no overlap with features)
[ ] All rolling features shifted by at least 1 bar
[ ] Target encoding uses in-fold means only
[ ] Walk-forward or purged CV used (no random shuffle on time-series)
[ ] Embargo gap >= max(label_horizon, autocorrelation_lag)
[ ] Universe is point-in-time (no survivorship bias)
[ ] No global scaling fitted on full dataset (fit on train, transform test)
5. Pipeline Automation (AutoML)
5.1 Prerequisites
- Python environment with one or more AutoML libraries:
Auto-sklearn, TPOT, H2O AutoML, PyCaret, Optuna, or custom Optuna pipelines.
- Training data in CSV / Parquet / database.
- Problem type identified: classification, regression, or time-series forecasting.
5.2 Pipeline Steps
| Step |
Action |
| 1. Define requirements |
Problem type, evaluation metric, time/resource budget, interpretability needs. |
| 2. Data infrastructure |
Load data, quality assessment, train/val/test split strategy, define feature transforms. |
| 3. Configure AutoML |
Select framework, define algorithm search space, set preprocessing steps, choose tuning strategy (Bayesian, random, Hyperband). |
| 4. Execute training |
Run automated feature engineering, model selection, hyperparameter optimisation, cross-validation. |
| 5. Analyse & export |
Compare models, extract best config, feature importance, visualisations, export for deployment. |
5.3 Pipeline Configuration Template
pipeline_config = {
"task_type": "classification", # or "regression", "time_series"
"time_budget_seconds": 3600,
"algorithms": ["rf", "xgboost", "catboost", "lightgbm"],
"preprocessing": ["scaling", "encoding", "imputation"],
"tuning_strategy": "bayesian", # or "random", "hyperband"
"cv_folds": 5,
"cv_type": "purged_kfold", # or "walk_forward"
"embargo_bars": 10,
"early_stopping_rounds": 50,
"metric": "sharpe_ratio", # domain-specific metric
}
5.4 Output Artifacts
automl_config.py -- pipeline configuration.
best_model.pkl / .joblib / .onnx -- serialised model.
feature_pipeline.pkl -- fitted preprocessing + feature transforms.
evaluation_report.json -- metrics, confusion matrix / residuals, feature rankings.
deployment/ -- prediction API code, input validation, requirements.txt.
6. Core ML Fundamentals (Feature-Engineering Context)
6.1 Bias-Variance Trade-off
- More features increase model capacity (lower bias) but risk overfitting (higher variance).
- Use regularisation (L1/L2), feature selection, or dimensionality reduction to manage.
6.2 Evaluation Strategy
- Walk-forward validation: the gold standard for time-series strategies.
Roll a fixed-width training window forward; test on the next out-of-sample period.
- Monte Carlo permutation tests: shuffle labels and re-evaluate to estimate
the probability that observed performance is due to chance.
- Combinatorial purged CV (CPCV): generate many train/test combinations with
purging for more robust performance estimates.
6.3 Feature Scaling
- Fit scalers (StandardScaler, MinMaxScaler, RobustScaler) on the training set only.
- Apply the same fitted scaler to validation and test sets.
- RobustScaler is often preferred for financial data due to heavy tails.
6.4 Handling Missing Data
- Forward-fill then backward-fill for price data (be aware of leakage on backfill).
- Indicator column for missingness can itself be informative.
- Tree-based models can handle NaN natively; linear models cannot.
7. Workflow
For any feature engineering task, follow this sequence:
- Restate the task in measurable terms (metric, constraints, deadline).
- Enumerate required artifacts: datasets, feature definitions, configs, scripts, reports.
- Propose a default approach and 1-2 alternatives with trade-offs.
- Implement feature pipeline with anti-leakage checks built in.
- Validate with walk-forward CV, Monte Carlo, and the leakage checklist above.
- Deliver repo-ready code, documentation, and a run command.
8. Deep Learning Optimization
8.1 Optimizer Selection
| Optimizer |
Best For |
Learning Rate |
| Adam |
Most cases, adaptive |
1e-3 to 1e-4 |
| AdamW |
Transformers, weight decay |
1e-4 to 1e-5 |
| SGD + Momentum |
Large batches, fine-tuning |
1e-2 to 1e-3 |
| RAdam |
Stability without warmup |
1e-3 |
8.2 Learning Rate Scheduling
- OneCycleLR: Best for short training, fast convergence
- CosineAnnealing: Smooth decay, good generalization
- ReduceOnPlateau: Adaptive when validation loss plateaus
- Warmup + Decay: Standard for transformers
8.3 Regularization Techniques
- Dropout: 0.1-0.5 for fully connected layers
- L2 (Weight Decay): 1e-4 to 1e-2
- Batch Normalization: Stabilizes training
- Early Stopping: Monitor validation loss, patience 5-10 epochs
8.4 PyTorch Lightning Integration
import pytorch_lightning as pl
class TradingModel(pl.LightningModule):
def configure_optimizers(self):
optimizer = torch.optim.AdamW(self.parameters(), lr=1e-4)
scheduler = torch.optim.lr_scheduler.OneCycleLR(
optimizer, max_lr=1e-3, total_steps=self.trainer.estimated_stepping_batches
)
return [optimizer], [scheduler]
8.5 Financial Reinforcement Learning
- State: Market features, portfolio state, position
- Action: Buy/Sell/Hold, position sizing
- Reward: Risk-adjusted returns (Sharpe, Sortino)
- Frameworks: Stable-Baselines3, RLlib, FinRL
9. Error Handling
| Problem |
Cause |
Fix |
| AutoML search finds no good model |
Insufficient time budget or poor features |
Increase budget, engineer better features, expand algorithm search space. |
| Out of memory during training |
Dataset too large for available RAM |
Downsample, use incremental learning, simplify feature engineering. |
| Model accuracy below threshold |
Weak signal or overfitting |
Collect more data, add domain-driven features, regularise, adjust metric. |
| Feature transforms produce NaN/Inf |
Division by zero, log of negative |
Add guards: np.where(denom != 0, ...), np.log1p(np.abs(x)). |
| Optimiser fails to converge |
Bad hyperparameter ranges |
Tighten search bounds, increase iterations, exclude unstable algorithms. |
10. Bundled Scripts
All scripts live in scripts/ within this skill directory.
| Script |
Purpose |
data_validation.py |
Validate input data quality before pipeline execution. |
model_evaluation.py |
Evaluate trained model performance and generate reports. |
pipeline_deployment.py |
Deploy a trained pipeline to a target environment with rollback support. |
feature_engineering_pipeline.py |
End-to-end feature engineering: load, clean, transform, select, train. |
feature_importance_analyzer.py |
Analyse feature importance (permutation, SHAP, tree-based). |
data_visualizer.py |
Visualise feature distributions and relationships to target. |
feature_store_integration.py |
Integrate with feature stores (Feast, Tecton) for online/offline serving. |
11. Resources
Frameworks
Key References
- Lopez de Prado, Advances in Financial Machine Learning (2018) -- purged CV, fractional differentiation, meta-labelling.
- Hastie, Tibshirani & Friedman, The Elements of Statistical Learning -- bias-variance, regularisation, model selection.
- scikit-learn user guide: feature extraction, preprocessing, model selection.
Best Practices
- Always start with a simple baseline before running AutoML.
- Balance automation with domain knowledge -- blind search rarely beats informed priors.
- Monitor resource consumption; set hard timeouts.
- Validate on true out-of-sample holdout data, not just cross-validation.
- Document every pipeline decision for reproducibility.
Source: modbender/skill-library-mcp — distributed by TomeVault.
1---2name: modbender-skill-library-mcp-ml-pipeline3description: ---4---5---6name: ml-pipeline7description: >8 Complete machine learning pipeline for trading: feature engineering, AutoML, deep learning, and financial RL.9 Use for automated parameter sweeps, feature creation, model training, and anti-leakage validation.10version: "2.0.0"11allowed-tools: Read, Write, Edit, Bash, Glob, Grep12metadata:13 consolidates:14 - ml-feature-engineering15 - deep-learning-optimizer-516 - pytorch-lightning-217 - scikit-learn-ml-framework18 - automl-pipeline-builder-219 - ml-feature-engineering-helper20 - ml-fundamentals21 - machine-learning-feature-engineering-toolkit22---2324# ML Pipeline2526Unified skill for the complete ML pipeline within a quant trading research system.27Consolidates eight prior skills into a single authoritative reference covering28the full lifecycle: data validation, feature creation, selection,29transformation, anti-leakage checks, pipeline automation, deep learning optimization, and deployment.3031---3233## 1. When to Use3435Activate this skill when the task involves any of the following:3637- Creating, selecting, or transforming features for an ML-driven strategy.38- Auditing an existing feature pipeline for data leakage or overfitting risk.39- Automating an end-to-end ML pipeline (data prep through model export).40- Evaluating feature importance, scaling, encoding, or interaction effects.41- Integrating features with a feature store (Feast, Tecton, custom Parquet store).42- Explaining core ML concepts (bias-variance, cross-validation, regularisation)43 in the context of feature engineering decisions.4445---4647## 2. Inputs to Gather4849Before starting work, collect or confirm:5051| Input | Details |52|-------|---------|53| **Objective** | Target metric (Sharpe, accuracy, RMSE ...), constraints, time horizon. |54| **Data** | Symbols / instruments, timeframe, bar type, sampling frequency, data sources. |55| **Leakage risks** | Point-in-time concerns, survivorship bias, look-ahead in labels or features. |56| **Compute budget** | CPU/GPU limits, wall-clock budget for AutoML search. |57| **Latency** | Online vs. offline inference, acceptable prediction latency. |58| **Interpretability** | Regulatory or research need for explainable features / models. |59| **Deployment target** | Where the model will run (notebook, backtest harness, live engine). |6061---6263## 3. Feature Creation Patterns6465### 3.1 Numerical Features6667- **Interaction terms**: `price * volume`, `high / low`, `close - open`.68- **Rolling statistics**: mean, std, skew, kurtosis over configurable windows.69- **Polynomial / log transforms**: `log(volume + 1)`, `spread^2`.70- **Binning / discretisation**: equal-width, quantile-based, or domain-driven bins.7172### 3.2 Categorical Features7374- **One-hot encoding**: for low-cardinality categoricals (sector, exchange).75- **Target encoding**: mean-target per category with smoothing (careful of leakage -- use only in-fold means).76- **Ordinal encoding**: when categories have a natural order (credit rating).7778### 3.3 Time-Series Specific7980- **Lag features**: `return_{t-1}`, `return_{t-5}`, etc.81- **Calendar features**: day-of-week, month, quarter, options-expiry flag.82- **Rolling z-score**: `(x - rolling_mean) / rolling_std` for stationarity.83- **Fractional differentiation**: preserve memory while achieving stationarity (Lopez de Prado).8485### 3.4 Feature Selection Techniques8687- **Filter methods**: mutual information, variance threshold, correlation pruning.88- **Wrapper methods**: recursive feature elimination (RFE), forward/backward selection.89- **Embedded methods**: L1 regularisation, tree-based importance, SHAP values.90- **Permutation importance**: model-agnostic; run on out-of-fold predictions.9192---9394## 4. Anti-Leakage Checks9596Data leakage is the single most common cause of inflated backtest results.97Apply these checks at every pipeline stage:9899### 4.1 Label Leakage100101- Labels must be computed from **future** returns relative to the feature102 timestamp. Verify that the label window does not overlap the feature window.103- Use purging and embargo when labels span multiple bars.104105### 4.2 Feature Leakage106107- No feature may use information from time `t+1` or later at prediction time `t`.108- Rolling statistics must use a **closed** left window: `df['feat'].rolling(20).mean().shift(1)`.109- Target-encoded categoricals must be computed on the **training fold only**.110111### 4.3 Cross-Validation Leakage112113- Use **purged k-fold** or **walk-forward** CV for time-series. Never use random114 k-fold on ordered data.115- Insert an **embargo gap** between train and test folds to prevent bleed-through116 from autocorrelation.117118### 4.4 Survivorship & Selection Bias119120- Ensure the universe of instruments at time `t` reflects what was actually121 tradable at that time (delisted stocks, halted symbols removed later).122- Backfill from point-in-time databases where available.123124### 4.5 Validation Checklist125126Run before every backtest:127128```text129[ ] Labels computed strictly from future returns (no overlap with features)130[ ] All rolling features shifted by at least 1 bar131[ ] Target encoding uses in-fold means only132[ ] Walk-forward or purged CV used (no random shuffle on time-series)133[ ] Embargo gap >= max(label_horizon, autocorrelation_lag)134[ ] Universe is point-in-time (no survivorship bias)135[ ] No global scaling fitted on full dataset (fit on train, transform test)136```137138---139140## 5. Pipeline Automation (AutoML)141142### 5.1 Prerequisites143144- Python environment with one or more AutoML libraries:145 Auto-sklearn, TPOT, H2O AutoML, PyCaret, Optuna, or custom Optuna pipelines.146- Training data in CSV / Parquet / database.147- Problem type identified: classification, regression, or time-series forecasting.148149### 5.2 Pipeline Steps150151| Step | Action |152|------|--------|153| **1. Define requirements** | Problem type, evaluation metric, time/resource budget, interpretability needs. |154| **2. Data infrastructure** | Load data, quality assessment, train/val/test split strategy, define feature transforms. |155| **3. Configure AutoML** | Select framework, define algorithm search space, set preprocessing steps, choose tuning strategy (Bayesian, random, Hyperband). |156| **4. Execute training** | Run automated feature engineering, model selection, hyperparameter optimisation, cross-validation. |157| **5. Analyse & export** | Compare models, extract best config, feature importance, visualisations, export for deployment. |158159### 5.3 Pipeline Configuration Template160161```python162pipeline_config = {163 "task_type": "classification", # or "regression", "time_series"164 "time_budget_seconds": 3600,165 "algorithms": ["rf", "xgboost", "catboost", "lightgbm"],166 "preprocessing": ["scaling", "encoding", "imputation"],167 "tuning_strategy": "bayesian", # or "random", "hyperband"168 "cv_folds": 5,169 "cv_type": "purged_kfold", # or "walk_forward"170 "embargo_bars": 10,171 "early_stopping_rounds": 50,172 "metric": "sharpe_ratio", # domain-specific metric173}174```175176### 5.4 Output Artifacts177178- `automl_config.py` -- pipeline configuration.179- `best_model.pkl` / `.joblib` / `.onnx` -- serialised model.180- `feature_pipeline.pkl` -- fitted preprocessing + feature transforms.181- `evaluation_report.json` -- metrics, confusion matrix / residuals, feature rankings.182- `deployment/` -- prediction API code, input validation, requirements.txt.183184---185186## 6. Core ML Fundamentals (Feature-Engineering Context)187188### 6.1 Bias-Variance Trade-off189190- More features increase model capacity (lower bias) but risk overfitting (higher variance).191- Use regularisation (L1/L2), feature selection, or dimensionality reduction to manage.192193### 6.2 Evaluation Strategy194195- **Walk-forward validation**: the gold standard for time-series strategies.196 Roll a fixed-width training window forward; test on the next out-of-sample period.197- **Monte Carlo permutation tests**: shuffle labels and re-evaluate to estimate198 the probability that observed performance is due to chance.199- **Combinatorial purged CV (CPCV)**: generate many train/test combinations with200 purging for more robust performance estimates.201202### 6.3 Feature Scaling203204- Fit scalers (StandardScaler, MinMaxScaler, RobustScaler) on the **training set only**.205- Apply the same fitted scaler to validation and test sets.206- RobustScaler is often preferred for financial data due to heavy tails.207208### 6.4 Handling Missing Data209210- Forward-fill then backward-fill for price data (be aware of leakage on backfill).211- Indicator column for missingness can itself be informative.212- Tree-based models can handle NaN natively; linear models cannot.213214---215216## 7. Workflow217218For any feature engineering task, follow this sequence:2192201. **Restate** the task in measurable terms (metric, constraints, deadline).2212. **Enumerate** required artifacts: datasets, feature definitions, configs, scripts, reports.2223. **Propose** a default approach and 1-2 alternatives with trade-offs.2234. **Implement** feature pipeline with anti-leakage checks built in.2245. **Validate** with walk-forward CV, Monte Carlo, and the leakage checklist above.2256. **Deliver** repo-ready code, documentation, and a run command.226227---228229## 8. Deep Learning Optimization230231### 8.1 Optimizer Selection232233| Optimizer | Best For | Learning Rate |234|-----------|----------|---------------|235| Adam | Most cases, adaptive | 1e-3 to 1e-4 |236| AdamW | Transformers, weight decay | 1e-4 to 1e-5 |237| SGD + Momentum | Large batches, fine-tuning | 1e-2 to 1e-3 |238| RAdam | Stability without warmup | 1e-3 |239240### 8.2 Learning Rate Scheduling241242- **OneCycleLR**: Best for short training, fast convergence243- **CosineAnnealing**: Smooth decay, good generalization244- **ReduceOnPlateau**: Adaptive when validation loss plateaus245- **Warmup + Decay**: Standard for transformers246247### 8.3 Regularization Techniques248249- **Dropout**: 0.1-0.5 for fully connected layers250- **L2 (Weight Decay)**: 1e-4 to 1e-2251- **Batch Normalization**: Stabilizes training252- **Early Stopping**: Monitor validation loss, patience 5-10 epochs253254### 8.4 PyTorch Lightning Integration255256```python257import pytorch_lightning as pl258259class TradingModel(pl.LightningModule):260 def configure_optimizers(self):261 optimizer = torch.optim.AdamW(self.parameters(), lr=1e-4)262 scheduler = torch.optim.lr_scheduler.OneCycleLR(263 optimizer, max_lr=1e-3, total_steps=self.trainer.estimated_stepping_batches264 )265 return [optimizer], [scheduler]266```267268### 8.5 Financial Reinforcement Learning269270- **State**: Market features, portfolio state, position271- **Action**: Buy/Sell/Hold, position sizing272- **Reward**: Risk-adjusted returns (Sharpe, Sortino)273- **Frameworks**: Stable-Baselines3, RLlib, FinRL274275---276277## 9. Error Handling278279| Problem | Cause | Fix |280|---------|-------|-----|281| AutoML search finds no good model | Insufficient time budget or poor features | Increase budget, engineer better features, expand algorithm search space. |282| Out of memory during training | Dataset too large for available RAM | Downsample, use incremental learning, simplify feature engineering. |283| Model accuracy below threshold | Weak signal or overfitting | Collect more data, add domain-driven features, regularise, adjust metric. |284| Feature transforms produce NaN/Inf | Division by zero, log of negative | Add guards: `np.where(denom != 0, ...)`, `np.log1p(np.abs(x))`. |285| Optimiser fails to converge | Bad hyperparameter ranges | Tighten search bounds, increase iterations, exclude unstable algorithms. |286287---288289## 10. Bundled Scripts290291All scripts live in `scripts/` within this skill directory.292293| Script | Purpose |294|--------|---------|295| `data_validation.py` | Validate input data quality before pipeline execution. |296| `model_evaluation.py` | Evaluate trained model performance and generate reports. |297| `pipeline_deployment.py` | Deploy a trained pipeline to a target environment with rollback support. |298| `feature_engineering_pipeline.py` | End-to-end feature engineering: load, clean, transform, select, train. |299| `feature_importance_analyzer.py` | Analyse feature importance (permutation, SHAP, tree-based). |300| `data_visualizer.py` | Visualise feature distributions and relationships to target. |301| `feature_store_integration.py` | Integrate with feature stores (Feast, Tecton) for online/offline serving. |302303---304305## 11. Resources306307### Frameworks308309- **scikit-learn** -- preprocessing, feature selection, pipelines.310- **Auto-sklearn / TPOT / H2O AutoML / PyCaret** -- automated pipeline search.311- **Optuna** -- flexible hyperparameter optimisation.312- **SHAP** -- model-agnostic feature importance.313- **Feast / Tecton** -- feature store management.314- **PyTorch Lightning** -- https://lightning.ai/docs/pytorch/stable/315- **Stable-Baselines3** -- https://stable-baselines3.readthedocs.io/316- **FinRL** -- https://github.com/AI4Finance-Foundation/FinRL317318### Key References319320- Lopez de Prado, *Advances in Financial Machine Learning* (2018) -- purged CV, fractional differentiation, meta-labelling.321- Hastie, Tibshirani & Friedman, *The Elements of Statistical Learning* -- bias-variance, regularisation, model selection.322- scikit-learn user guide: feature extraction, preprocessing, model selection.323324### Best Practices325326- Always start with a simple baseline before running AutoML.327- Balance automation with domain knowledge -- blind search rarely beats informed priors.328- Monitor resource consumption; set hard timeouts.329- Validate on true out-of-sample holdout data, not just cross-validation.330- Document every pipeline decision for reproducibility.331332---333> Source: [modbender/skill-library-mcp](https://github.com/modbender/skill-library-mcp) — distributed by [TomeVault](https://tomevault.io).334<!-- tomevault:4.0:skill_md:2026-06-16 -->