claudeloop-rest-surfacelisted
Install: claude install-skill the-vibey-project/vibey
# claudeloop REST surface (generated, not hand-written)
> **Codex skill mirror** of `.claude/skills/claudeloop-rest-surface/SKILL.md`. When this guidance changes, update Claude skill, Cursor rule, and `.agents/skills/` in the same PR.
`claudeloop api ...` covers all of the `anthropic` Python SDK's endpoint
methods without a single one being hand-written. This is the load-bearing
constraint of the whole subsystem — see ADR 0006 for why (short version:
Anthropic's own `ant` CLI already exists and covers this surface from the
same OpenAPI spec; a hand-written duplicate would silently rot the moment
anyone stopped tracking upstream SDK changes by hand).
## How discovery works — no live client needed
Walk the **class tree** under `anthropic.resources` via its
`cached_property` descriptors, not an instantiated `anthropic.Anthropic()`
client. This means discovery works with zero credentials configured — the
drift-gate CI test can run without any API key secret. Each leaf yields a
resource path, a method name, and its `inspect.signature`.
## Command binding rules
- **Path/scalar parameters** → real, typed Typer options.
- **Request body** → `--json <inline>` / `--json-file <path>` with `@path`
file inlining, matching `ant`'s own approach — do not flatten every
nested `TypedDict` field into individual flags; `ant` independently
reached the same conclusion for the same reason (the request shapes are
too deeply nested for that to stay usable).
- **`--raw`** selects the SD