Skip to content
Back to skills

Giskard Tests

ASecurity

Test ML models with Giskard's scan() vulnerability detector + test catalog (performance, robustness, fairness, data leakage, ethical issues) for tabular and NLP models. Wrap a prediction function in giskard.Model + a DataFrame in giskard.Dataset; emit test suites that pass/fail in CI. Use when a trained tabular or NLP model is about to ship with no test suite of its own, or when a feature-engineering or hyperparameter change needs a pre-merge scan for newly introduced vulnerabilities.

  • 10 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 12, 2026
testingpythongobashtestingperformance

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned October 12, 2026

npx -y skills add testland/qa --skill giskard-tests --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Giskard Tests?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Giskard Tests
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/testland-giskard-tests/badge)](https://www.skillsdirectory.com/skills/testland-giskard-tests)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: giskard-tests
description: "Test ML models with Giskard's scan() vulnerability detector + test catalog (performance, robustness, fairness, data leakage, ethical issues) for tabular and NLP models. Wrap a prediction function in giskard.Model + a DataFrame in giskard.Dataset; emit test suites that pass/fail in CI. Use when a trained tabular or NLP model is about to ship with no test suite of its own, or when a feature-engineering or hyperparameter change needs a pre-merge scan for newly introduced vulnerabilities."
metadata:
  keywords: "giskard, ml-testing, model-vulnerabilities, fairness-testing, tabular-models"
  version: "1.3.5"
---

# giskard-tests

Giskard wraps any prediction function and DataFrame, then runs a
`scan()` that surfaces *"performance biases, unrobustness, data
leakage, stochasticity, underconfidence, ethical issues"* per the
[Giskard tabular quickstart].

## When to use

- Pre-deployment model audit (fairness + robustness scan).
- Pre-merge gate after a feature-engineering or hyperparameter
  change - re-run scan, fail PR if new vulnerabilities surface.
- Generating an initial test suite for a model with no existing tests.

## Step 1 - Install

```bash
pip install giskard --upgrade
```

Per the [Giskard tabular quickstart].

## Step 2 - Wrap the dataset

```python
from giskard import Dataset

giskard_dataset = Dataset(
    df=raw_data,
    target=TARGET_COLUMN,
    name="Titanic dataset",
    cat_columns=CATEGORICAL_COLUMNS,
)
```

`cat_columns` matters - Giskard treats categoricals differently for
slicing + drift detection.

## Step 3 - Wrap the model

```python
from giskard import Model
import numpy as np
import pandas as pd

def prediction_function(df: pd.DataFrame) -> np.ndarray:
    preprocessed_df = preprocessing_function(df)
    return classifier.predict_proba(preprocessed_df)

giskard_model = Model(
    model=prediction_function,
    model_type="classification",
    name="Titanic model",
    classification_labels=classifier.classes_,
    feature_names=FEATURE_NAMES,
)
```

The `prediction_function` returns probabilities (not class labels)
for classification - required by Giskard's calibration checks.

## Step 4 - Scan for vulnerabilities

```python
from giskard import scan

results = scan(giskard_model, giskard_dataset)
results.to_html("scan_report.html")
```

Per the [Giskard tabular quickstart], scan covers categories:
performance bias, unrobustness, data leakage, stochasticity,
underconfidence, ethical issues. HTML report is artifact-friendly
for CI.

## Step 5 - Generate a test suite from scan

```python
test_suite = results.generate_test_suite("My first test suite")
suite_results = test_suite.run()

if not suite_results.passed:
    raise SystemExit("Giskard test suite failed; see report")
```

## Step 6 - Add specific tests from catalog

```python
from giskard import testing

test_suite.add_test(
    testing.test_f1(
        model=giskard_model,
        dataset=giskard_dataset,
        threshold=0.7,
    )
)

# Slicing test: F1 must hold on a subset
female_slice = giskard_dataset.slice(lambda df: df[df.sex == "female"])
test_suite.add_test(
    testing.test_f1(
        model=giskard_model,
        dataset=female_slice,
        threshold=0.65,
    )
)

test_suite.run()
```

Catalog includes `test_f1`, `test_accuracy`, `test_recall`,
`test_drift_*`, metamorphic transformations. Reference the
[Giskard tabular quickstart] for the current full list.

## Step 7 - CI integration

```yaml
- name: Giskard scan
  run: |
    python ml/giskard_scan.py
    # Script raises SystemExit on failure
- name: Upload Giskard report
  uses: actions/upload-artifact@v4
  with:
    name: giskard-report
    path: scan_report.html
```

## Anti-patterns

| Anti-pattern | Why it fails | Fix |
|---|---|---|
| Skip `cat_columns` parameter | Categorical features treated as numeric; bogus drift | Always pass `cat_columns` (Step 2) |
| Wrap a `predict()` (classes) instead of `predict_proba()` (probs) | Calibration tests cannot run | Use `predict_proba` for classification (Step 3) |
| Run scan once, don't add to suite | One-off finding never re-checked | Generate suite from scan (Step 5); CI gates re-run |
| Block CI on every minor scan finding | Noise; team disables Giskard | Set per-test threshold; gate on critical+major only |
| Reuse training dataset for scan | False sense of robustness; scan needs unseen data | Use held-out test split |

## Limitations

- Giskard's NLP scan covers fewer languages than tabular. Verify
  language support in the [Giskard tabular quickstart] sister
  pages.
- `scan()` is non-deterministic with stochastic models; pin
  `random_state` in the model and Giskard config for reproducible CI.

## References

- [Giskard tabular quickstart] - Model/Dataset wrapping, scan, suite generation, test catalog

[Giskard tabular quickstart]: https://legacy-docs.giskard.ai/en/latest/getting_started/quickstart/quickstart_tabular.html

Files in this skill

  • .tessl-plugin/plugin.json618 B
  • SKILL.md4.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.