bench
Print the published shiploop benchmark result (backlog and arms named) and the exact command to run a fresh with-shiploop-vs-without-shiploop A/B locally.…
Flow registry: extract inventories flows, list shows status, file queues validation tickets.
> /plugin marketplace add anshss/shiploop > /plugin install shiploop@shiploop
How it fires
How this command gets triggered: by you, by Claude, or both.
/flowsContext preview
What this command does when you run it.
Flow registry: extract inventories flows, list shows status, file queues validation tickets.
description: Flow registry: extract inventories flows, list shows status, file queues validation tickets. allowed-tools: Bash, Read, Agent
> **Defer to the workspace-local copy.** If the current workspace has installed its own > `.claude/commands/flows.md` (every scaffolded shiploop workspace does), follow THAT copy — it is > pinned to the workspace's harness version and its `scripts/govern/flows-*.sh` helpers. This global > copy is the fallback for a workspace that predates the flows feature; the playbook below is identical > in shape, but always run the workspace's own `scripts/govern/flows-*.sh`, never a hub path.
Manage the **flow registry** (`.claude/shiploop/validation/flows.md`) — the git-tracked inventory of user-reachable paths through the product, each keyed by a stable id and pinned to the code SHAs it was last validated at. `$ARGUMENTS` selects the subcommand: `extract` · `list` · `file <ids…|--all-stale|--all-untested>`.
**Load-bearing division of labor:** the model (you) orchestrates and *inventories*; **all registry writes go through the `scripts/govern/flows-*.sh` scripts** (deterministic bash owns bookkeeping, under the same lock as the governor). You never hand-edit `.claude/shiploop/validation/flows.md`.
Run from the workspace root (main checkout or a worktree). First learn the layout: `source scripts/lib/workspace.sh` (for `$REPOS`, `$GITHUB_ORG`).
---
Build the combinatorial list of **every user-facing path that might break** — the paths a user might take through the product that could regress. This is the product's *risk map*, and a fresh `extract` is often an adopter's first taste of shiploop. **Fan out with `Agent`** across subagents, one per surface, so no single context has to hold the whole codebase:
1. **Enumerate the surfaces to inventory.** Typically: every UI route/page, every API endpoint, every provider/integration matrix (a dimension that's *enumerable* — e.g. N providers × {deploy, feature-X, migration} — expands combinatorially into one flow id per cell), plus any snapshot/migration/backup paths. Use `$REPOS` to scope. 2. **Dispatch one subagent per surface** (sized per the delegation table; the shipped `investigator` agent type fits most surfaces), each returning a list of proposed flow blocks in the registry grammar (`## <id>` + `Kind` / `Surface` / `Paths` / `Status: UNTESTED`; `Gate` for an effectiveness flow). Ids are lowercase dot-kebab, coarse→fine (`deploy-gpu.vastai`). Derive `Paths:` from the real imports/dependencies, not just the obvious feature dir — first segment of every glob MUST be a sub-repo folder name. 3. **Collect the subagents' blocks into ONE staged file**, e.g. `logs/investigations/flows-extract/staged.md` (gitignored scratch — not the registry). 4. **Vet gate — merge is staged and operator-approved.** Show the diff, then apply only on an explicit yes:
scripts/govern/flows-extract-merge.sh logs/investigations/flows-extract/staged.md # DRY: ADD / REFRESH / FLAGGED # …review the classification with the operator… scripts/govern/flows-extract-merge.sh logs/investigations/flows-extract/staged.md --approve # apply ADD + REFRESH
The merge **only** adds new flows and refreshes `Paths`/`Surface` on existing ones. It **never** touches verdict state (`Status`/`Validated`/`Disposition`), and a `Kind` or `Gate` change on an existing id is **FLAGGED, never auto-applied** — a hallucinated or silently-reclassified flow must not become a fileable, later-billable row. Relay the flagged rows for a manual decision.
scripts/govern/flows-list.sh # read-only; annotates flows whose paths moved ("would go STALE")
scripts/govern/flows-list.sh --sweep # first RECORD the STALE degrades (persisting sweep), then listGrouped proven → measuring → untested → stale → failed → blocked → tombstoned. BLOCKED flows show their named blocker; MEASURING flows show their gate/sample window. Use `--sweep` when you want the staleness actually written to the registry (it commits + pushes via the same CAS path as land-resolution.sh).
Filing a flow queues a **real, often billable, deploy**, so this is deliberately conservative — it is **DRY by default** and files nothing until you pass `--yes`.
scripts/govern/flows-file.sh deploy-gpu.vastai comfyui.vastai # plan (dry) — resource-group batched scripts/govern/flows-file.sh --all-untested --max-deploys 5 # plan the untested backlog, capped scripts/govern/flows-file.sh deploy-gpu.vastai comfyui.vastai --yes # actually file
`Flow:` field) — one worker (a trim, single-ticket session), one deploy, N flows validated.
`WSP_BROWSER_CMD`, `analytics` → `WSP_ANALYTICS_QUERY_CMD`, `test-account` → `TEST_USER_EMAIL`, `deploy` → `GOVERN_DEPLOY_SWEEP_CMD`) can't be validated headlessly — `file` degrades it to BLOCKED with the named blocker and excludes it, rather than queuing a runnable-then-billable ticket.
post-worker orphan sweep is the safety net on the highest-spend path). Cheapest/fastest-provision flows are ordered first (so a truncated governor run maximizes coverage); slow-provision flows near `GOVERN_WORKER_TIMEOUT` are flagged.
Review the dry plan with the operator, confirm, then re-run with `--yes`. A filed flow is n
A harness for Claude Code. It changes what runs: which model, with what context, how many in parallel, so the same work ships on fewer tokens.
Print the published shiploop benchmark result (backlog and arms named) and the exact command to run a fresh with-shiploop-vs-without-shiploop A/B locally.…
Compress this workspace's CLAUDE.md by moving mechanically-triggered rules into just-in-time rule packs. Operator-triggered, never automatic.
Push direction: ports local mechanism-script fixes back to the hub as a reviewed PR. Opposite of /update.
Scaffold a new shiploop workspace or upgrade one. Routine bumps -> /update; push fixes upstream -> /push.
Show the governor fleet in your Claude Code statusline. Explicit, opt-in, and chains — it never replaces an existing statusline.