CtrlK
BlogDocsLog inGet started
Tessl Logo

agui-dotnet-human-in-the-loop

Pause an AG-UI agent run for a human, then resume it, with the AG-UI .NET SDK — gate a sensitive tool behind explicit approval, or interrupt a run to collect free-form input from the user before continuing. USE FOR: requiring human approval before a tool executes (ApprovalRequiredAIFunction + ToolApprovalRequestContent/ToolApprovalResponseContent, resume by appending the request + CreateResponse(approved)); pausing a run to ask the user a question and resuming with their answer (InterruptRequestContent / InterruptResponseContent, RunAgentInput.Resume); how a paused run surfaces as RUN_FINISHED outcome=interrupt and how the client detects and answers it. DO NOT USE FOR: tools that run without approval on the server (use agui-dotnet-server-tools) or in the client (use agui-dotnet-client-tools); plain chat (use agui-dotnet-streaming-chat); shared state, generative UI, multimodal, or protobuf.

71

Quality

86%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured, executable skill with complete client code and explicit verification checkpoints for a destructive gated tool. The main gaps are the missing server-side interrupt code example and the absence of any progressive-disclosure file split for a moderately long skill.

Suggestions

Add a concrete server-side interrupt code example (the DelegatingChatClient that emits InterruptRequestContent and rewrites the response into FunctionCallContent + FunctionResultContent) to match the executable depth of the client examples.

Tighten the opening framing paragraph and the server-bridging prose; the run-pausing mechanics are partly re-stated across the intro, the interrupt section, and the Verify section.

Consider extracting the longer server-side bridging detail into a one-level-deep reference file to bring the body closer to a lean overview and lift progressive disclosure.

DimensionReasoningScore

Conciseness

Mostly lean and assumes Claude's competence (no preamble on what AG-UI or .NET is), but a few framing sentences like the opening "A paused run completes its turn..." and the dense server-bridging paragraph could be trimmed.

4 / 5

Actionability

Client-side approval and interrupt flows are fully executable copy-paste C# with imports and real types, but the server-side interrupt bridging (detect FunctionCallContent, emit InterruptRequestContent, rewrite on resume) is described only in prose with no code, leaving a gap.

4 / 5

Workflow Clarity

The pause → detect → decide → resume sequence is clear in code, and a dedicated "## Verify" section provides explicit validation checkpoints for both approval and interrupt outcomes, including the rejected-approval case where the effect must not occur.

5 / 5

Progressive Disclosure

Well-organized into clear sections (Approval, Interrupt, Anti-patterns, Verify) with no content that clearly belongs in a separate file, but at ~100 lines it exceeds the under-50-line simple-skill exception and contains no one-level-deep references, so it stops short of the overview-pointing-to-details pattern.

4 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong, specific description that clearly states capabilities, triggers, and boundaries with concrete API references and explicit deconfliction against sibling skills. The only weakness is trigger-term naturalness, diluted by dense SDK type names.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — "Pause an AG-UI agent run for a human, then resume it", "gate a sensitive tool behind explicit approval", "interrupt a run to collect free-form input" — covering both approval and interrupt flows comprehensively.

5 / 5

Completeness

Explicitly answers both what (pause/resume, gate approval, interrupt for input) and when via a concrete "USE FOR:" clause with trigger scenarios, plus a "DO NOT USE FOR:" boundary.

5 / 5

Trigger Term Quality

Includes natural phrases users would say ("human approval", "ask the user a question", "collect free-form input") but they are heavily interspersed with SDK jargon (ApprovalRequiredAIFunction, RunAgentInput.Resume), leaving a few common variations unstated.

4 / 5

Distinctiveness Conflict Risk

Clear niche (human-in-the-loop approval & interrupts) with an explicit "DO NOT USE FOR" list redirecting to sibling skills (server-tools, client-tools, streaming-chat), minimizing conflict risk.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
ag-ui-protocol/ag-ui
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.