CtrlK
BlogDocsLog inGet started
Tessl Logo

agui-dotnet-reasoning

Surface a reasoning/thinking model's intermediate thoughts separately from its final answer with the AG-UI .NET SDK — so a client can show the agent "thinking" before it responds, and handle that reasoning trace correctly across turns. USE FOR: distinguishing the model's reasoning trace from its answer on the client by matching TextReasoningContent vs TextContent in each ChatResponseUpdate's Contents; rendering thinking and answer in different ways as they stream; deciding whether to carry the reasoning text into later turns (whether to append/resend the model's reasoning back into conversation history). DO NOT USE FOR: plain text streaming with no reasoning display (use agui-dotnet-streaming-chat); tools, shared state, interrupts, multimodal, generative UI, or protobuf.

77

Quality

96%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

100%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.

Excellent content: an executable, idiomatic code example that directly demonstrates the skill's one task, tight prose with no padding, a genuinely useful anti-patterns section (re-sending reasoning as history, mixing channels), and concrete verification steps. No bundle files are referenced and none are needed at this size.

DimensionReasoningScore

Conciseness

The body is lean and code-first: a two-sentence framing of the TextReasoningContent/TextContent distinction, one complete code example, one sentence on interleaving, two pointed anti-patterns, and a two-item verify list. Nothing explains concepts Claude already knows, and every token earns its place.

5 / 5

Actionability

The C# example is copy-paste ready and complete for the common case: `using Microsoft.Extensions.AI;`, message setup, `await foreach` over `client.GetStreamingResponseAsync`, and a switch with property patterns (`case TextReasoningContent { Text: { Length: > 0 } thinking }`) that directly implements the separation. The only placeholders (`RenderThinking`/`RenderAnswer`) are inherently app-specific UI hooks, explicitly labeled.

5 / 5

Workflow Clarity

This is a simple single-task skill and the action is unambiguous (iterate `update.Contents`, branch on content type). Per the simple-skill guideline this scores 5; it additionally includes a Verify section with two concrete checks (reasoning updates precede the answer; the answer contains only the response text).

5 / 5

Progressive Disclosure

The body is under 50 lines with no need for external references (no references/, scripts/, or assets/ exist in the bundle), and content is well-organized into three clearly signaled sections (Separate thinking from the answer, Anti-patterns, Verify). Per the guideline for short single-purpose skills, well-organized sections alone merit 5.

5 / 5

Total

20

/

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 description: concrete capabilities named at the API-type level, an explicit USE FOR / DO NOT USE FOR boundary, and good natural-language triggers. The only gap is a couple of common synonyms (chain-of-thought, extended thinking) that a user might naturally say.

Suggestions

Add "chain of thought" or "extended thinking" as a natural synonym in the description (e.g. "reasoning/thinking (chain-of-thought) trace") so users who use those phrasings trigger the skill.

Optionally name the message type users interact with when asking about reasoning (e.g. mention "streaming chat" alongside reasoning display) to further sharpen the boundary against the sibling streaming skill.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with exact API type names: "distinguishing the model's reasoning trace from its answer on the client by matching TextReasoningContent vs TextContent in each ChatResponseUpdate's Contents", "rendering thinking and answer in different ways as they stream", and "deciding whether to carry the reasoning text into later turns". Coverage is comprehensive for the skill's scope (separate, render, carry-forward).

5 / 5

Completeness

It explicitly answers both: what ("Surface a reasoning/thinking model's intermediate thoughts separately from its final answer with the AG-UI .NET SDK") and when (an explicit "USE FOR:" clause with three concrete trigger scenarios, plus a "DO NOT USE FOR:" clause). This matches the anchor-5 example structure of concrete what + explicit when.

5 / 5

Trigger Term Quality

Good natural keyword coverage with synonyms: "reasoning/thinking model", "intermediate thoughts", "reasoning trace", "conversation history". A few natural variants users might say are absent (e.g. "chain of thought", "extended thinking"), which sits it between anchor 4 and 5, closer to 4 than the comprehensive-synonym anchor 5.

4 / 5

Distinctiveness Conflict Risk

Clear niche (reasoning/thinking display in the AG-UI .NET SDK) with an explicit "DO NOT USE FOR" clause that redirects the nearest overlapping case to a named sibling skill ("plain text streaming with no reasoning display (use agui-dotnet-streaming-chat)") and excludes tools, state, interrupts, multimodal, generative UI, protobuf. 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.