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.

72

Quality

89%

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

86%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 tight, well-structured skill: executable code for the common approval path, SDK-specific wire details Claude would not know, and explicit anti-patterns plus a verify checklist. The server-side interrupt path and error-recovery guidance are the remaining gaps that keep actionability and workflow clarity below top marks.

Suggestions

Add a compact executable code snippet for the server-side interrupt bridge (detect FunctionCallContent, yield InterruptRequestContent, rewrite InterruptResponseContent back into FunctionCallContent + FunctionResultContent) instead of describing it in prose.

Include the declaration of turn1 (or a shared helper) in the interrupt example so the snippet is self-contained and copy-paste ready.

Extend the Verify section with a recovery step for the common failure modes — e.g. no ToolApprovalRequestContent found in the first turn, or a resume that re-finishes with outcome=interrupt because the request/response pair was not appended with matching ids.

DimensionReasoningScore

Conciseness

The body is lean and assumes competence: no space is spent on what agents or approval patterns are, and every prose line carries SDK-specific knowledge ("AGUIChatClient encodes the response as RunAgentInput.Resume[] on the wire", the re-pairing of request/response). Every token earns its place, matching the 5 anchor.

5 / 5

Actionability

The approval path is copy-paste executable for both server and client, but the interrupt snippet depends on turn1 from an earlier example, AskHuman is a placeholder, and the server-side interrupt bridge (detect FunctionCallContent, emit InterruptRequestContent(call.CallId), rewrite back to FunctionCallContent + FunctionResultContent) is described in prose rather than code. Mostly executable with minor gaps — the 4 anchor.

4 / 5

Workflow Clarity

Both flows are clearly sequenced (server wrap → client detect → resume with request+response) and the Verify section provides explicit checkpoints (interrupt outcome, approved vs. rejected effects, answer reflected in final output). Not 5: there is no error-recovery feedback loop for when the request/pairing is missing or the resume fails, so minor validation gaps remain.

4 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ are absent) and none are needed: the ~100-line body is compact, well-sectioned with headers, and inlines nothing that belongs in a separate file. Well-organized sections with no external references required.

5 / 5

Total

18

/

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.

An exemplary description: concrete, third-person, with explicit USE FOR / DO NOT USE FOR boundaries and named sibling-skill routing. The only weakness is that natural trigger phrases compete with heavy technical parentheticals, slightly reducing natural-term coverage.

DimensionReasoningScore

Specificity

"gate a sensitive tool behind explicit approval, or interrupt a run to collect free-form input" names the domain and multiple concrete actions, backed by exact SDK types (ApprovalRequiredAIFunction, ToolApprovalRequestContent/ToolApprovalResponseContent, InterruptRequestContent/InterruptResponseContent, RunAgentInput.Resume). Coverage of the pause/resume lifecycle is comprehensive, matching the anchor for multiple specific concrete actions.

5 / 5

Completeness

It clearly answers both "what" (pause an AG-UI agent run for a human, then resume it, including how a paused run surfaces as RUN_FINISHED outcome=interrupt) and "when" via explicit USE FOR and DO NOT USE FOR trigger clauses — matching the anchor that requires both with concrete trigger phrases.

5 / 5

Trigger Term Quality

"requiring human approval before a tool executes" and "pausing a run to ask the user a question" are natural phrases a user would say, giving good keyword coverage. Not 5 because the natural terms are partly buried in dense parenthetical class lists, and a few natural synonyms (e.g. "human in the loop", "confirm before running") are absent.

4 / 5

Distinctiveness Conflict Risk

The DO NOT USE FOR clause explicitly redirects overlapping cases to named sibling skills (agui-dotnet-server-tools, agui-dotnet-client-tools, agui-dotnet-streaming-chat) and excludes shared state, generative UI, multimodal, protobuf — a clear niche with minimal 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.

Validation — 16 / 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.