Files
esh-pfi-infrastructure/docs/fleettools/claude-only.md
T
vh 53c3e8000e docs: add FleetTools — an agent-family-agnostic index of fleet capability
Every agent on nh3-dev — Claude, Codex, Grok, Aider — needs the same
answers: what runs here, how do I call it, what will bite me. Until now
that lived in ~/.claude/CLAUDE.md, which only Claude sessions load, and
it was interleaved with operator preferences that other families have
no use for.

Two-tier by design, matching the persistent-memory split: FLEETTOOLS.md
is a 135-line index an agent reads whole, and each entry links to a
detail file it opens only when it actually needs that tool. Reading the
index costs about a fifth of reading the tree.

Detail paths are absolute so they resolve from any working directory,
since a non-Claude agent will cat the path rather than follow a
markdown link. ~/FLEETTOOLS.md symlinks to the index for discovery.

Rule zero is that live inventories get queried, not transcribed:
Homepage /api/services, asset-engine /api/v1/services, LiteLLM
/v1/models, and every FastAPI seat's /openapi.json. A copied service
table would be stale within a month and this repo already has a
standing rule against second copies that drift.

Contents verified against the running fleet rather than copied from
existing docs: binaries resolved on PATH, seven endpoints probed live,
the LiteLLM roster counted at 40 models where the old note said ~30.
No credentials are included; the vault and its CLI are pointed at
instead.
2026-09-18 07:35:28 -07:00

62 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Claude-Code-only tooling
Everything here depends on the Claude Code harness. **A Codex, Grok, Aider or other
non-Claude agent cannot use these** — they are listed so you recognise a reference to
them rather than hunting for a binary that will not work.
## ratecheck — how close this session is to its rate limits
`~/.claude/bin/ratecheck` (NOT on PATH). Exit `0` GO · `1` PAUSE · `2` UNKNOWN. Prints
both windows, the file's age and the reset time.
The numbers are **not otherwise visible to an agent**: no CLI subcommand exposes them
and nothing else on disk carries them. The harness pipes them to the statusline only,
so `~/.claude/statusline-command.sh` tees them to `~/.claude/rate-limits.json` on every
render. **If that tee is removed, everything built on it silently stops working**,
which is why a stale file reports UNKNOWN rather than healthy.
- under ~85% — proceed normally
- ~85–93% — prefer the cheap path; resume an existing subagent rather than spawning one
- at/over the project threshold — stop starting new expensive work; let in-flight finish
- **UNKNOWN — proceed, loudly.** A broken instrument that halts everything is a
self-inflicted outage worse than the overspend it guards. Say plainly that limits
were unreadable and you continued blind.
⚠ A GO is margin, not permission for an arbitrarily large action — one consult subagent
has measured at 270k–650k tokens, so a round cleared at 92% can finish past 100%.
## remote-ssh MCP
Project-scoped in `eshpfi-management/.mcp.json`; tools `ssh_hosts` / `ssh_open` /
`ssh_run` / `ssh_peek` / `ssh_interrupt` / `ssh_list` / `ssh_close`. Holds a
**persistent shell**, so `cd` and exports survive between calls at ~6 ms per command.
For reconnaissance; it deliberately has no file transfer and no idempotency (that is
elway's half).
⚠⚠ **A bare `sudo` HANGS the session — always pipe it: `sudo -n <cmd> | cat`.** Cause:
sudo ≥1.9.14 defaults `use_pty` on; with stdin on `/dev/null` and stdout on the session
PTY the relay never completes and the completion marker never arrives. A pipe makes
stdout a non-tty and sudo skips the PTY.
⚠ The **host allowlist is the only real containment boundary** — the denylist is three
regexes and `bash -c` walks past it. `SSH_MCP_STRICT_ALLOWLIST=1` makes
`~/.config/remote-ssh-mcp/config.json`'s `allowedHosts` authoritative.
## task-board MCP
`task_start` / `task_update` / `task_wait` / `task_complete` to surface work in
progress at `http://10.250.50.70:7878/`. When you launch background shells, call
`task_set_shells` with one short description each (and again with `[]` when they
finish) — the board turns orange so the operator can tell the session is parked on
background work rather than stalled on them.
## Skills
Claude Code skills live in `~/.claude/skills/`. Notable ones with fleet meaning:
`/snapshot` (durable repo memory), `/handoff` (transfer active work to an agent of
another family — **this is the cross-family bridge**), `/heid` (cross-frontier consult),
`/park`, `/elitk`, `/vor`, `/tdd`.
**`/handoff` is the supported way to move in-flight work from Claude to Codex/Grok** —
it writes an agent-agnostic brief to `/tmp` naming the repo's convention files.