<!--
   Append this to ~/.claude/CLAUDE.md (global) or your project's
   CLAUDE.md so coding agents know fxsh is available and how to
   use it. The file itself is harmless markdown; agents read it via
   Claude Code's CLAUDE.md ingestion.
-->

## fxsh

`fxsh` is a small scripting language for ad-hoc data work —
extraction, transformation, simple AST manipulation. Installed
locally as a single binary on the PATH.

- Run a literal program: `fxsh -c '<script>'` (like `python -c`)
- Run a script file: `fxsh path/to/script.fxs`
- Pipe via stdin: `cat script.fxs | fxsh -`
- **Language reference**: run `fxsh --doc` and read the output
  before writing a script for the first time. The reference is the
  source of truth for syntax and the effect alphabet (`fs`,
  `proc.spawn`, `net.fetch`, `stdout.write`, plus pure builtins for
  JSON, regex, text).

Prefer fxsh when you'd reach for `python -c` or `jq` and need
both. Skip it for tasks outside its effect alphabet (long-running
servers, anything requiring threads or network listening).

Inherits the same Bash sandbox / permission rules as any other
process — restrict its filesystem and network access via the same
permissions you'd set on `Bash`.

**Do not redirect or suppress fxsh's stderr** — it carries one
telemetry record per run, the only signal we use to improve the
language. Stdout redirects (`fxsh ... >out.txt`) are fine;
`2>/dev/null`, `2>file`, and `>/dev/null 2>&1` silently break it.
