Validate AI/ML models and datasets for bias, fairness, and ethical concerns. Use when auditing AI systems for ethical compliance, fairness assessment, or bias detection. Trigger with phrases like "evaluate model fairness", "check for bias", or "validate AI ethics".
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
npx agent-skills-cli listSkill Instructions
name: validating-ai-ethics-and-fairness description: 'Validate AI/ML models and datasets for bias, fairness, and ethical concerns.
Use when auditing AI systems for ethical compliance, fairness assessment, or bias detection.
Trigger with phrases like "evaluate model fairness", "check for bias", or "validate AI ethics".
' allowed-tools: Read, Write, Edit, Grep, Glob, Bash(python:*) version: 1.0.0 author: Jeremy Longshore jeremy@intentsolutions.io license: MIT tags:
- ai
- compliance
- audit compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw
AI Ethics Validator
Overview
Validate AI/ML models and datasets for bias, fairness, and ethical compliance using quantitative fairness metrics and structured audit workflows.
Prerequisites
- Python 3.9+ with Fairlearn >= 0.9 (
pip install fairlearn) - IBM AI Fairness 360 toolkit (
pip install aif360) for comprehensive bias analysis - pandas, NumPy, and scikit-learn for data manipulation and model evaluation
- Model predictions (probabilities or binary labels) and corresponding ground truth labels
- Demographic attribute columns (age, gender, race, etc.) accessible under appropriate data governance
- Optional: Google What-If Tool for interactive fairness exploration on TensorFlow models
Instructions
- Load the model predictions and ground truth dataset using the Read tool; verify schema includes sensitive attribute columns
- Define the protected attributes and privileged/unprivileged group definitions for the fairness analysis
- Compute representation statistics: group counts, class label distributions, and feature coverage per demographic segment
- Calculate core fairness metrics using Fairlearn or AIF360:
- Demographic parity ratio (selection rate parity across groups)
- Equalized odds difference (TPR and FPR parity)
- Equal opportunity difference (TPR parity only)
- Predictive parity (precision parity across groups)
- Calibration scores per group (predicted probability vs observed outcome)
- Apply four-fifths rule: flag any metric where the ratio falls below 0.80 as potential adverse impact
- Classify each finding by severity: low (ratio 0.90-1.0), medium (0.80-0.90), high (0.70-0.80), critical (below 0.70)
- Identify proxy variables by computing correlation between non-protected features and sensitive attributes
- Generate mitigation recommendations: resampling, reweighting, threshold adjustment, or in-processing constraints (e.g.,
ExponentiatedGradientfrom Fairlearn) - Produce a compliance assessment mapping findings to IEEE Ethically Aligned Design, EU Ethics Guidelines for Trustworthy AI, and ACM Code of Ethics
- Document all ethical decisions, trade-offs, and residual risks in a structured audit report
Output
- Fairness metric dashboard: per-group values for demographic parity, equalized odds, equal opportunity, predictive parity, and calibration
- Severity-classified findings table: metric name, affected groups, ratio value, severity level, recommended action
- Representation analysis: group sizes, class distributions, feature coverage gaps
- Proxy variable report: features correlated with protected attributes above threshold (r > 0.3)
- Mitigation plan: ranked strategies with expected fairness improvement and accuracy trade-off estimates
- Compliance matrix: pass/fail against IEEE, EU, and ACM ethical guidelines with evidence citations
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Insufficient group sample size | Fewer than 30 observations in a demographic group | Aggregate related subgroups; use bootstrap confidence intervals; flag metric as unreliable |
| Missing sensitive attributes | Protected attribute columns absent from dataset | Apply proxy detection via correlated features; request attribute access under data governance approval |
| Conflicting fairness criteria | Demographic parity and equalized odds contradict | Document the impossibility theorem trade-off; prioritize the metric most aligned with the deployment context |
| Data quality failures | Inconsistent encoding or null values in attribute columns | Standardize categorical encodings; impute or exclude nulls; validate with schema checks before analysis |
| Model output format mismatch | Predictions not in expected probability or binary format | Convert logits to probabilities via sigmoid; binarize at the decision threshold before metric computation |
Examples
Scenario 1: Hiring Model Audit -- Validate a resume-screening classifier for gender and age bias. Compute demographic parity across male/female groups and age buckets (18-30, 31-50, 51+). Apply the four-fifths rule. Finding: female selection rate at 0.72 of male rate (critical severity). Recommend reweighting training samples and adjusting the decision threshold.
Scenario 2: Credit Scoring Fairness -- Assess a credit approval model for racial disparate impact. Calculate equalized odds (TPR and FPR) across racial groups. Finding: FPR for Group A is 2.1x Group B (high severity). Recommend in-processing constraint using ExponentiatedGradient with FalsePositiveRateParity.
Scenario 3: Healthcare Risk Prediction -- Evaluate a patient risk model for age and socioeconomic bias. Compute calibration curves per group. Finding: model overestimates risk for low-income patients by 15%. Recommend recalibration using Platt scaling per subgroup with post-deployment monitoring for fairness drift.
Resources
- Fairlearn Documentation -- bias detection, mitigation algorithms, MetricFrame API
- AI Fairness 360 (AIF360) -- comprehensive fairness toolkit with 70+ metrics
- Google What-If Tool -- interactive fairness exploration
- EU Ethics Guidelines for Trustworthy AI -- regulatory framework
- IEEE Ethically Aligned Design -- technical ethics standards
- Impossibility theorem reference: Chouldechova (2017) on incompatibility of fairness criteria
More by jeremylongshore
View allgenerating-docker-compose-files: This skill enables Claude to generate Docker Compose configurations for multi-container applications. It leverages best practices for production-ready deployments, including defining services, networks, volumes, health checks, and resource limits. Claude should use this skill when the user requests a Docker Compose file, specifies application architecture involving multiple containers, or mentions needs for container orchestration, environment variables, or persistent data management in a Docker environment. Trigger terms include "docker-compose", "docker compose file", "multi-container", "container orchestration", "docker environment", "service definition", "volume management", "network configuration", "health checks", "resource limits", and ".env files".
managing-environment-configurations: This skill enables Claude to manage environment configurations and secrets across different deployments using the environment-config-manager plugin. It is invoked when the user needs to generate, update, or retrieve configuration settings for various environments (e.g., development, staging, production). Use this skill when the user explicitly mentions "environment configuration," "secrets management," "deployment configuration," or asks to "generate config files". It helps streamline DevOps workflows by providing production-ready configurations based on best practices.
Automatically manages PostgreSQL backups with pgBackRest and Wasabi S3 storage when working with FairDB databases Activates when you request "fairdb backup manager" functionality.
generating-smart-commits: This skill generates conventional commit messages using AI analysis of staged Git changes. It automatically determines the commit type (feat, fix, docs, etc.), identifies breaking changes, and formats the message according to conventional commit standards. Use this when asked to create a commit message, write a Git commit, or when the user uses the `/commit-smart` or `/gc` command. It is especially useful after changes have been staged with `git add`.
