Skip to content
Back to skills

Foolbox

ASecurity

"Foolbox operating guidance for wrapping vision models, running

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
businesspythonrustbashapibackend

Works with

  • cli
  • api

Security analysis

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

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

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill foolbox --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Foolbox?

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

Security grade badge for Foolbox
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-foolbox/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-foolbox)

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: foolbox
description: "Foolbox operating guidance for wrapping vision models, running
  adversarial attacks, measuring clean and robust accuracy, handling
  NumPy/PyTorch/TensorFlow/JAX backends, and loading Foolbox-compatible
  model-zoo repositories."
disable-model-invocation: true
metadata:
  disco-role: operating
license: MIT
---

# Foolbox

Foolbox 3.3.4 is an EagerPy-based library for generating and evaluating
adversarial examples against image classifiers. Use this skill when a task
mentions Foolbox, `foolbox`, adversarial examples, robust accuracy, attack
budgets, `LinfPGD`/FGSM/DeepFool/BoundaryAttack, model wrappers, or Foolbox
model-zoo repositories.

## Command, cache, and output paths

The commands in this skill use the generated skill root, not the native Foolbox
checkout and not the caller's current directory. From any cwd, set the root to
the directory containing this `SKILL.md` and change into it before running a
command that uses a relative skill path:

```bash
# Replace this non-executable placeholder with the absolute directory containing this SKILL.md.
export SKILL_ROOT=/path/to/installed/skills/disco/foolbox
cd "$SKILL_ROOT"
```

Use the actual installed skill-root path if it differs from the example above.
The root `scripts/` and `sub-skills/` paths below are relative to `SKILL_ROOT`;
an absolute path such as `python "$SKILL_ROOT/scripts/smoke.py"` is equivalent.
Write generated plots and other artifacts only to an explicit absolute path or
to a dedicated directory such as `"$SKILL_ROOT/outputs/"` (create it first);
do not rely on an unspecified cwd and do not write into the native checkout or
the skill's source/reference assets. Foolbox model-zoo clones and downloaded
weights use Foolbox's own cache (typically under `~/.foolbox_zoo`), not these
relative paths; inspect the exact returned path and never delete the whole cache
as cleanup.

Cloning a zoo repository or downloading/extracting weights is a networked,
potentially untrusted external-state operation. Obtain explicit approval before
calling `zoo.get_model(...)` or `zoo.fetch_weights(...)`, even when a cache entry
may already exist. The local zoo checker and bundled sample assets are the
offline alternatives.

## Install and verify

Install the package and the small helper dependencies only with the environment's
package-install/network approval; otherwise use an existing environment:

```bash
cd "$SKILL_ROOT"
python -m pip install foolbox pillow matplotlib
python -c "import foolbox as fb; print(fb.__version__)"
```

PyTorch, TensorFlow, and JAX are deliberately not base dependencies. Install
one separately using its own supported wheel/build when the selected model or
gradient attack needs it. Run the bundled CPU-native check before a larger
workflow:

```bash
cd "$SKILL_ROOT"
python scripts/smoke.py --help
python scripts/smoke.py
```

Read [`references/api-reference.md`](references/api-reference.md) for the
verified public signatures and output-shape rules. Read
[`references/troubleshooting.md`](references/troubleshooting.md) when imports,
bounds, preprocessing, optional frameworks, or attack outputs fail.

## Route by task

- **Wrap a model, prepare sample images, transform bounds, compute accuracy, or
  plot results:** read [`sub-skills/models/SKILL.md`](sub-skills/models/SKILL.md).
- **Choose or run attacks, compare robust accuracy, use criteria/distances,
  compose EOT or DatasetAttack, or author a new attack:** read
  [`sub-skills/attacks/SKILL.md`](sub-skills/attacks/SKILL.md).
- **Load a local/remote Foolbox model repository or fetch weights:** read
  [`sub-skills/zoo/SKILL.md`](sub-skills/zoo/SKILL.md).

## Core execution contract

1. Make the model callable through the matching Foolbox wrapper and state its
   input bounds before attacking. Include preprocessing and data format when
   they are not already native to the model.
2. Keep images and labels batched. Labels are a 1-D integer tensor aligned with
   the first dimension of model outputs.
3. Choose an untargeted label criterion (`labels` passed directly) or an
   explicit `TargetedMisclassification(target_classes)` criterion.
4. Call an attack with `epsilons=<float>`, `epsilons=<sequence>`, or `None` only
   when that attack supports minimization without a fixed budget.
5. Interpret `(raw, clipped, success)`: clipped results obey the requested
   distance budget; `success` is a boolean mask of actual adversarial examples.
   For a sequence of epsilons, raw/clipped are lists and success has shape
   `(K, N)`; for one scalar, outputs are tensors and success has shape `(N,)`.
6. Report clean accuracy, attack family, distance, epsilon(s), backend, and
   robust accuracy (`1 - success.float32().mean(axis=-1)`) together.

## Scope and limitations

The CPU/NumPy route and black-box/noise attacks are covered by the local smoke
and native verification plan. Framework gradient attacks, EOT over stochastic
models, and pretrained example models remain backend- and often network-
dependent; do not claim them verified merely because `import foolbox` works.
The model-zoo route can clone repositories or download weights and must be
explicitly approved before network or external-state operations.

## Provenance

Before using version-sensitive behavior or refreshing this skill, read
[`references/repo-provenance.md`](references/repo-provenance.md).

Files in this skill

  • SKILL.md5.3 KB
  • references/api-reference.md4.2 KB
  • references/repo-provenance.md1.4 KB
  • references/repo-routing-metadata.json321 B
  • references/troubleshooting.md3.5 KB
  • scripts/check_optional_frameworks.py545 B
  • scripts/smoke.py1.8 KB
  • sub-skills/attacks/SKILL.md3.7 KB
  • sub-skills/attacks/references/api-reference.md2.1 KB
  • sub-skills/attacks/references/attack-authoring.md1.3 KB
  • sub-skills/attacks/references/attack-overview.md2.3 KB
  • sub-skills/attacks/references/troubleshooting.md1.8 KB
  • sub-skills/attacks/references/workflows.md2.8 KB
  • sub-skills/attacks/scripts/smoke_attacks.py1.5 KB
  • sub-skills/models/SKILL.md7.5 KB
  • sub-skills/models/references/api-reference.md8 KB
  • sub-skills/models/references/troubleshooting.md7.6 KB
  • sub-skills/models/references/workflows.md8.3 KB
  • sub-skills/models/scripts/smoke_models.py3.6 KB
  • sub-skills/zoo/SKILL.md3.3 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.