Highlights:
- Centralized tool loop via `BaseLoopState`; OpenAI (Responses), Anthropic, and Gemini migrated. Gemini now always uses the shared loop.
- `ask.stream_async()` returns an `AsyncIterable[str]` directly (no await at call site).
- Structured outputs: providers finalize only when `auto_finalize_missing_output=True` (default on). Turn‑limit semantics and text‑only streaming preserved.
- OpenAI: ignore `temperature` for reasoning models (`gpt‑5`, `o1`, `o3`); a debug log is emitted when dr
Installs into .claude/skills of the current project.
Are you the author of 2940 V022 29369ff3?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-2940-v022-29369ff3)