Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Flox Environments

ASecurity

Use when creating reproducible cross-platform (macOS/Linux) dev environments with Flox, or when a project mentions .flox/, manifest.toml, or flox activate. Covers the exact manifest.toml schema ([install], [vars], [hook], [profile], [services], [include], [options]), version pinning, pkg-group/priority conflict resolution, per-language recipes, and CLI commands.

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentspythonrustgoc++shellbashsqlnodenodejsfastapi

Works with

cliapi

Security Analysis

A92/100
mediumInstalls packages at runtime which could introduce malicious dependencies
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add Mixard/fable-pack --skill flox-environments --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flox Environments?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Flox Environments
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mixard-flox-environments/badge)](https://www.skillsdirectory.com/skills/mixard-flox-environments)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: flox-environments
description: Use when creating reproducible cross-platform (macOS/Linux) dev environments with Flox, or when a project mentions .flox/, manifest.toml, or flox activate. Covers the exact manifest.toml schema ([install], [vars], [hook], [profile], [services], [include], [options]), version pinning, pkg-group/priority conflict resolution, per-language recipes, and CLI commands.
---

# Flox Environments

Flox creates reproducible development environments defined in a single TOML manifest, built on Nix (150,000+ packages), working identically on macOS and Linux without containers. Environments live in `.flox/env/manifest.toml` and are entered with `flox activate`.

Key paths:
- `.flox/env/manifest.toml` — environment definition (commit this)
- `$FLOX_ENV` — runtime path to installed packages (like `/usr`: `bin/`, `lib/`, `include/`)
- `$FLOX_ENV_CACHE` — persistent local storage for caches, venvs, data (survives rebuilds; NOT committed)
- `$FLOX_ENV_PROJECT` — project root (where `.flox/` lives)

## CLI Commands

```bash
flox init                       # Create new environment
flox search <package> [--all]   # Search packages (case-sensitive; --all for broader search)
flox show <package>             # Show available versions
flox install <package>          # Add a package
flox list                       # List installed packages
flox list -c                    # Show raw manifest
flox activate                   # Enter environment
flox activate -- <cmd>          # Run one command inside the environment, no subshell
flox activate --start-services  # Enter environment and start [services]
flox edit                       # Edit manifest interactively
flox edit -f <file>             # Apply a manifest from a file
flox push                       # Push environment to FloxHub
flox activate -r owner/env-name # Activate a remote FloxHub environment
```

## Manifest Structure

```toml
# .flox/env/manifest.toml

[install]
ripgrep.pkg-path = "ripgrep"
jq.pkg-path = "jq"

[vars]
DATABASE_URL = "postgres://localhost:5432/myapp"

[hook]
# Non-interactive setup, runs on every activation
on-activate = """
  echo "Environment ready"
"""

[profile]
# Shell functions/aliases available in the interactive shell
common = """
  alias dev="npm run dev"
"""

[options]
systems = ["x86_64-linux", "aarch64-linux", "x86_64-darwin", "aarch64-darwin"]
```

Rule of thumb: if it should happen automatically, put it in `[hook]`; if the user should be able to type it, put it in `[profile]`. Hook-defined functions are NOT available in the interactive shell.

## Package Installation

### Version pinning

```toml
[install]
nodejs.pkg-path = "nodejs"
nodejs.version = "^20.0"          # Semver range: latest 20.x

postgres.pkg-path = "postgresql"
postgres.version = "16.2"         # Exact version
```

### Platform-specific packages

```toml
[install]
valgrind.pkg-path = "valgrind"
valgrind.systems = ["x86_64-linux", "aarch64-linux"]

# macOS frameworks
Security.pkg-path = "darwin.apple_sdk.frameworks.Security"
Security.systems = ["x86_64-darwin", "aarch64-darwin"]

# GNU tools on macOS (where BSD defaults differ)
coreutils.pkg-path = "coreutils"
coreutils.systems = ["x86_64-darwin", "aarch64-darwin"]
```

### Conflict resolution

When two packages install the same binary, `priority` decides (lower number wins):

```toml
[install]
gcc.pkg-path = "gcc12"
gcc.priority = 3

clang.pkg-path = "clang_18"
clang.priority = 5               # gcc wins file conflicts
```

Use `pkg-group` to make packages resolve versions together:

```toml
[install]
python.pkg-path = "python311"
python.pkg-group = "python-stack"

pip.pkg-path = "python311Packages.pip"
pip.pkg-group = "python-stack"
```

## Language Recipes

### Python with uv

```toml
[install]
python.pkg-path = "python311"
uv.pkg-path = "uv"

[vars]
UV_CACHE_DIR = "$FLOX_ENV_CACHE/uv-cache"
PIP_CACHE_DIR = "$FLOX_ENV_CACHE/pip-cache"

[hook]
on-activate = """
  venv="$FLOX_ENV_CACHE/venv"
  if [ ! -d "$venv" ]; then
    uv venv "$venv" --python python3
  fi
  if [ -f "$venv/bin/activate" ]; then
    source "$venv/bin/activate"
  fi
  if [ -f requirements.txt ] && [ ! -f "$FLOX_ENV_CACHE/.deps_installed" ]; then
    uv pip install --python "$venv/bin/python" -r requirements.txt --quiet
    touch "$FLOX_ENV_CACHE/.deps_installed"
  fi
"""
```

### Node.js

```toml
[install]
nodejs.pkg-path = "nodejs"
nodejs.version = "^20.0"

[hook]
on-activate = """
  if [ -f package.json ] && [ ! -d node_modules ]; then
    npm install --silent
  fi
"""
```

### Rust

```toml
[install]
rustup.pkg-path = "rustup"
pkg-config.pkg-path = "pkg-config"
openssl.pkg-path = "openssl"

[vars]
RUSTUP_HOME = "$FLOX_ENV_CACHE/rustup"
CARGO_HOME = "$FLOX_ENV_CACHE/cargo"

[profile]
common = """
  export PATH="$CARGO_HOME/bin:$PATH"
"""
```

### Go

```toml
[install]
go.pkg-path = "go"
gopls.pkg-path = "gopls"
delve.pkg-path = "delve"

[vars]
GOPATH = "$FLOX_ENV_CACHE/go"
GOBIN = "$FLOX_ENV_CACHE/go/bin"

[profile]
common = """
  export PATH="$GOBIN:$PATH"
"""
```

### C/C++

```toml
[install]
gcc.pkg-path = "gcc13"
gcc.pkg-group = "compilers"

# IMPORTANT: gcc alone doesn't expose libstdc++ headers — you need gcc-unwrapped
gcc-unwrapped.pkg-path = "gcc-unwrapped"
gcc-unwrapped.pkg-group = "libraries"

cmake.pkg-path = "cmake"
gnumake.pkg-path = "gnumake"

gdb.pkg-path = "gdb"
gdb.systems = ["x86_64-linux", "aarch64-linux"]
```

## Services

```toml
[services]
postgres.command = "postgres -D $FLOX_ENV_CACHE/pgdata -k $FLOX_ENV_CACHE"
redis.command = "redis-server --port 6379 --daemonize no"
```

Start with `flox activate --start-services`. Initialize stateful services idempotently in `[hook]`:

```toml
[hook]
on-activate = """
  if [ ! -d "$FLOX_ENV_CACHE/pgdata" ]; then
    initdb -D "$FLOX_ENV_CACHE/pgdata" --no-locale --encoding=UTF8
  fi
"""
```

## Environment Sharing and Composition

Commit `.flox/` to git; collaborators run `git clone && flox activate`. For reusable bases, push to FloxHub and compose:

```toml
[include]
base.floxhub = "myorg/python-base"

[install]
fastapi.pkg-path = "python311Packages.fastapi"   # additions on top of base
```

## Anti-Patterns

- **Absolute paths in `[vars]`** — use `$FLOX_ENV_PROJECT` instead of `/home/alice/...`.
- **`exit` in hooks** — kills the shell. Use `return 1` instead.
- **Secrets in the manifest** — it is committed. Use `API_KEY = "${API_KEY:-}"` and pass at runtime: `API_KEY=... flox activate`.
- **Non-idempotent hooks** — guard slow work with a flag file in `$FLOX_ENV_CACHE` (see Python recipe); otherwise it reruns on every activation.
- **User commands in `[hook]`** — functions defined in hooks are not available interactively; put them in `[profile]`.

## Debugging

```bash
flox list -c                      # Show raw manifest
flox activate -- which python     # Check which binary resolves
flox activate -- env | grep FLOX  # See Flox environment variables
flox search <package> --all       # Broader search (search is case-sensitive)
```

Common issues:
- Package not found: search is case-sensitive; try `flox search --all`.
- File conflicts between packages: add `priority` to the package that should win.
- Hook failures: use `return`, not `exit`; guard with `${FLOX_ENV_CACHE:-}`.
- Stale dependencies: delete the `$FLOX_ENV_CACHE/.deps_installed` flag file.

## Agent Workflow

Flox installs work entirely in user space (no sudo), are project-scoped, and are captured in `manifest.toml` (reversible, reproducible). Pattern for adding a tool on the fly:

```bash
flox search jq
flox install jq
flox activate -- jq '.results[]' data.json

# Or edit the manifest programmatically
tmp_manifest="$(mktemp)"
flox list -c > "$tmp_manifest"
# add package to [install], then:
flox edit -f "$tmp_manifest"
```

Attribution

MixardMixard
View sourceMore from Mixard →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

1023331 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3331 votes

catchup

Recovers prior coding-agent session context by running `catchup <agent> --since-compact`, which extracts a clean summary of a previous Codex, Claude Code, Antigravity, OpenCode, or Pi Agent session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", or asks to recover/summarize a previous session before continuing. Do NOT use for the current conversation, git history, or any non-agent log.

611 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →