Agent skill

Validating UI Features

by microsoft-foundry in microsoft-foundry/foundry-agent-webapp

Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info.

MITAuto-check passedDocuments & Office

Install Validating UI Features

skills CLI
$ npx skills add microsoft-foundry/foundry-agent-webapp --skill validating-ui-features -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft-foundry/foundry-agent-webapp validating-ui-features --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft-foundry/foundry-agent-webapp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/validating-ui-features .claude/skills/validating-ui-features && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
validating-ui-features
GitHub stars
127
Token cost
~2.8k tokens
SKILL.md length
967 words
Files
11
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info.

  • Works in 12 steps: Navigate to http://localhost:5173 → Wait for authentication and agent… → Find Settings button in ChatInput… → …
  • Documents & Office work in your project
  • SKILL.md covers Prerequisites, Quick Test Commands, Test 1: Theme Toggle (Settings… and Test 2: New Chat Button, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Validating UI Features is an agent skill from microsoft-foundry/foundry-agent-webapp. Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files (for example `test-files/code-sample.md`, `test-files/complex-response.md` and `test-files/test-prompts.json`).

It sits in Documents & Office. The repository describes itself as: GitHub Copilot enabled repo for building and deploying a web application with Entra ID authentication and integrated with Azure AI Foundry Agents. The licence is MIT.

When your agent uses it

  • Documents & Office work in your project

Example prompts

  • “Use the validating-ui-features skill to provide step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown…”
  • “/validating-ui-features”

Requirements

  • Python 3

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. Navigate to http://localhost:5173
  2. Wait for authentication and agent metadata load
  3. Find Settings button in ChatInput toolbar (gear icon, aria-label="Settings")
  4. Click Settings button
  5. Verify SettingsPanel drawer opens from right side
  6. Verify "Appearance" section visible with ThemePicker
  7. Click ThemePicker dropdown (currently shows "Light" or saved preference)
  8. Select "Dark" option
  9. Verify Theme changes
  10. Select "Light" option
  11. Verify Theme changes back
  12. Select "System" option

What it can do on your machine

Read from SKILL.md and the folder at commit f6cb362. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, json and html).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Validating UI Features loads about 2.8k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 967 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~41
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft-foundry/foundry-agent-webapp at commit f6cb362, republished under its MIT licence (© microsoft-foundry). 967 words, ~2,764 tokens.

Download SKILL.mdSave it as .claude/skills/validating-ui-features/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
validating-ui-features
description
Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info.

Validating UI Features

CRITICAL: Load this skill before running any UI validation tests.

Prerequisites

  • Local dev servers running (Backend: 8080, Frontend: 5173)
  • Playwright MCP tools available
  • Authenticated user session (MSAL popup completed)

Quick Test Commands

TestCommand
Start serversVS Code task: Start Dev (VS Code Terminals)
Navigatebrowser_navigate to http://localhost:5173
Check stateLook for 🔄 entries in browser console

Test 1: Theme Toggle (Settings Panel)

Purpose

Verify the Settings panel opens and theme switching works correctly.

UI Flow
text
ChatInput toolbar → Settings button (gear) → SettingsPanel drawer → ThemePicker dropdown
Steps
  1. Navigate to http://localhost:5173
  2. Wait for authentication and agent metadata load
  3. Find Settings button in ChatInput toolbar (gear icon, aria-label="Settings")
  4. Click Settings button
  5. Verify SettingsPanel drawer opens from right side
  6. Verify "Appearance" section visible with ThemePicker
  7. Click ThemePicker dropdown (currently shows "Light" or saved preference)
  8. Select "Dark" option
  9. Verify Theme changes:
    • Background becomes dark (≈ rgb(32, 31, 30))
    • Text becomes light
    • No console errors
  10. Select "Light" option
  11. Verify Theme changes back:
    • Background becomes light (≈ rgb(255, 255, 255))
    • Text becomes dark
  12. Select "System" option
  13. Verify Theme matches OS preference
  14. Close Settings panel (X button or click outside)
Console Evidence
javascript
// No errors should appear
// LocalStorage updated:
localStorage.getItem('ai-foundry-theme') // "Dark", "Light", or "System"
DOM Changes
  • <body> FluentProvider styles update
  • CSS variables change: --colorNeutralBackground1, --colorNeutralForeground1
Pass Criteria
  • Settings panel opens/closes without errors
  • All three theme options selectable
  • Visual theme changes immediately on selection
  • Theme persists after closing panel

Test 2: New Chat Button

Purpose

Verify the New Chat button clears messages and resets conversation state.

UI Flow
text
Send message → Wait for response → Click New Chat button → Verify reset
Prerequisites
  • At least one message exchange completed
Steps
  1. Send a test message: "Hello, testing new chat button"
  2. Wait for assistant response to complete (status: idle)
  3. Verify New Chat button is enabled (not grayed out)
  4. Click New Chat button (ChatAdd icon, aria-label="New chat")
  5. Verify immediate changes:
    • Messages array cleared (empty chat area)
    • StarterMessages component visible (agent intro + prompts)
    • Input field focused and empty
    • New Chat button now disabled (no messages to clear)
Console Evidence
javascript
🔄 [timestamp] CHAT_CLEAR
Action: {type: CHAT_CLEAR}
Changes: {
  chat.messages.length: N → 0
}
Pass Criteria
  • Button disabled when no messages
  • Button enabled after first message
  • Click clears all messages instantly
  • StarterMessages reappear
  • conversationId reset to null
  • Input field receives focus
  • No console errors

Test 3: Cancel Stream (Stop Button)

Purpose

Verify streaming can be cancelled mid-response.

UI Flow
text
Send long prompt → While streaming → Click Stop button → Verify cancellation
Steps
  1. Start a new chat (or use existing)
  2. Send a prompt that triggers a long code response:
    text
    Write a comprehensive Python script that calculates Fibonacci numbers using 5 different methods: recursive, memoized, iterative, matrix exponentiation, and Binet's formula. Include detailed docstrings, type hints, performance benchmarks, and unit tests for each method.
  3. Immediately observe:
    • Status changes to streaming
    • Stop button becomes enabled (aria-label="Cancel response")
    • Send button becomes disabled
    • Text chunks appearing in assistant message
  4. Click Stop button while streaming is active
  5. Verify cancellation:
    • Streaming stops immediately
    • Partial response preserved (not deleted)
    • Status returns to idle
    • Send button re-enabled
    • Stop button disabled again
Keyboard Shortcut
  • Press Escape key during streaming → should also cancel
Console Evidence
javascript
🔄 [timestamp] CHAT_CANCEL_STREAM
Action: {type: CHAT_CANCEL_STREAM}
Changes: {
  chat.status: streaming → idle,
  chat.streamingMessageId: "xxx" → undefined
}
Edge Cases
  • Very fast response may complete before cancel → OK, not an error
  • Multiple rapid clicks → should be idempotent
Pass Criteria
  • Stop button disabled when not streaming
  • Stop button enabled during streaming
  • Click stops stream immediately
  • Partial response text preserved
  • Status returns to idle
  • Escape key works as shortcut
  • No errors in console

Test 4: Markdown Code Block Rendering

Purpose

Verify code blocks render with syntax highlighting, line numbers, and copy button.

UI Flow
text
Send code request → Wait for response → Verify code block UI
Steps
  1. Start a new chat
  2. Send a code generation prompt:
    text
    Write a Python function to calculate fibonacci numbers with proper type hints
  3. Wait for response to complete
  4. Verify code block structure:
    • Container with dark background
    • Header bar showing "python" language label
    • "Copy" button in header
    • Line numbers on left side
    • Syntax highlighting (keywords, strings, comments in different colors)
  5. Click "Copy" button
  6. Verify code copied (paste somewhere to confirm)
Show full SKILL.md (412 more words)Show less
Additional Test Prompts

From test-files/test-prompts.json:

json
[
  "Create a TypeScript interface for a user profile with nested preferences",
  "Show me a bash script to backup a PostgreSQL database",
  "Write a SQL query with a CTE to find duplicate customer records"
]
Expected Code Block DOM
html
<div class="codeBlock">
  <div class="codeHeader">
    <span class="codeLanguage">python</span>
    <button>Copy</button>
  </div>
  <div> <!-- SyntaxHighlighter -->
    <!-- Line numbers + highlighted code -->
  </div>
</div>
Syntax Highlighting Colors (vscDarkPlus theme)
ElementColor
Keywords (def, return, if)Purple/Blue
StringsOrange
CommentsGreen
Function namesYellow
TypesCyan
Pass Criteria
  • Language label displayed correctly
  • Copy button present and functional
  • Syntax highlighting applied
  • Line numbers visible
  • Long lines wrap (no horizontal overflow)
  • Multiple code blocks render independently

Test 5: Complex Markdown Rendering

Purpose

Verify tables, lists, headings, and text formatting render correctly.

Steps
  1. Send a complex markdown prompt:
    text
    Create a comprehensive guide with:
    - A comparison table of React, Vue, and Angular
    - Numbered installation steps
    - A code example
    - Bold and italic text formatting
    - A blockquote with a tip
  2. Wait for response to complete
  3. Verify each element:
Expected Elements
ElementVerification
TableBorders visible, headers bold, rows alternate
Ordered listNumbers 1, 2, 3... with proper indentation
Unordered listBullets with proper indentation
Nested listSub-items indented further
Bold texttext renders with heavier weight
Italic texttext renders with slant
Inline codecode has background highlight
BlockquoteLeft border, indented, lighter text
LinksUnderlined, opens in new tab
Pass Criteria
  • Tables render with visible structure
  • Lists have proper indentation
  • Text formatting (bold/italic) applied
  • Inline code visually distinct
  • Links functional and styled
  • No raw markdown visible

Test 6: Token Usage Info

Purpose

Verify response footer shows timing, token counts, and expandable usage details.

UI Flow
text
Send message → Wait for response → Verify footer → Click expand → Verify breakdown
Steps
  1. Send any message and wait for response to complete
  2. Verify response footer displays:
    • Response time (e.g., 3575ms)
    • Total token count (e.g., 848 tokens)
    • Info icon button (aria-label="Show token usage details")
  3. Hover over info icon
  4. Verify usage details panel shows:
    • "Usage Information" header
    • Input tokens (e.g., Input: 799 tokens)
    • Output tokens (e.g., Output: 49 tokens)
Console Evidence
javascript
Action: {type: CHAT_STREAM_COMPLETE, usage: Object}
// usage object: { promptTokens, completionTokens, totalTokens }
Pass Criteria
  • Response time displayed after completion
  • Total token count displayed
  • Info icon button present
  • Input/Output breakdown shows on hover
  • Values are non-zero numbers

Test Files Reference

FilePurpose
test-files/test-prompts.jsonPrompts for each test scenario
test-files/code-sample.mdExpected code block rendering
test-files/complex-response.mdExpected complex markdown
test-files/test.txtPlain text upload test
test-files/test.pngImage upload test

Troubleshooting

IssueLikely CauseSolution
Theme not changingThemeContext not receiving updateCheck FluentProvider wrapping
New chat button always disabledhasMessages prop falseCheck messages array binding
Cancel not workingAbortController not setCheck currentStreamAbort in ChatService
Code not highlightedLanguage not detectedCheck regex pattern in Markdown.tsx
Copy button not workingcopy-to-clipboard importCheck package installed
Table not renderingGFM plugin missingCheck remarkGfm in Markdown.tsx

Quick Validation Checklist

text
□ Theme Toggle
  □ Settings opens
  □ Dark theme works
  □ Light theme works
  □ System theme works
  □ Persists on refresh

□ New Chat
  □ Button disabled initially
  □ Enabled after message
  □ Clears messages
  □ Resets conversation

□ Cancel Stream
  □ Stop enabled during stream
  □ Cancels immediately
  □ Preserves partial response
  □ Escape key works

□ Code Blocks
  □ Language label
  □ Copy button works
  □ Syntax highlighting
  □ Line numbers

□ Complex Markdown
  □ Tables
  □ Lists
  □ Formatting
  □ Links

□ Token Usage
  □ Response time shown
  □ Token count shown
  □ Info icon present
  □ Input/Output breakdown on hover

© microsoft-foundry, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files in .github/skills/validating-ui-features of microsoft-foundry/foundry-agent-webapp.

  • SKILL.md
  • test-files/code-sample.md
  • test-files/complex-response.md
  • test-files/test-prompts.json
  • test-files/test.csv
  • test-files/test.html
  • test-files/test.json
  • test-files/test.md
  • test-files/test.png
  • test-files/test.txt
  • test-files/test.xml

Open the folder on GitHubat commit f6cb362

Compare with similar skills

Validating UI Features next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Validating UI Features compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Validating UI Features this skillmicrosoft-foundry/foundry-agent-webapp127—~2.8kAutomated safety check: PassMIT
Markdown Article FormatterJimLiu/baoyu-skills26k6 repos~3.5kAutomated safety check: PassMIT
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Obsidian MarkdownAtmosphere/atmosphere3.8k20 repos~1.3kAutomated safety check: PassApache-2.0
DOCXrvdbreemen/OTGW-firmware20733 repos~4.3kAutomated safety check: PassProprietary
Gzh Designisjiamu/gzh-design-skill3.9k1 repos~2.2kAutomated safety check: PassAGPL-3.0

Similar skills

  • Markdown Article Formatter

    JimLiu/baoyu-skills

    Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.

    26k GitHub starsUsed in 6 repos~3.5k tokens
    Documents & OfficeAuto-check passed
  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Obsidian Markdown

    Atmosphere/atmosphere

    Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax.

    3.8k GitHub starsUsed in 20 repos~1.3k tokens
    Documents & OfficeAuto-check passed
  • DOCX

    rvdbreemen/OTGW-firmware

    A skill your agent uses whenever the user wants to create, read, edit, or manipulate Word documents (.docx files).

    207 GitHub starsUsed in 33 repos~4.3k tokens
    Documents & OfficeAuto-check passed
  • Gzh Design

    isjiamu/gzh-design-skill

    微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…

    3.9k GitHub starsUsed in 1 repo~2.2k tokens
    Documents & OfficeAuto-check passed
  • Reads, creates and edits Word .docx files with python-docx, and drops to raw OOXML for tracked changes, comments and byte-exact edits.

    41k GitHub stars~2.5k tokensUpdated 3 days ago
    Documents & OfficeAuto-check passed

More from microsoft-foundry/foundry-agent-webapp

All 19 skills in this repo
  • Committing Code

    microsoft-foundry/foundry-agent-webapp

    Provides commit message format and workflow for this repository.

    127 GitHub stars~512 tokensUpdated 5 mo ago
    Auto-check passed
  • Implementing Chat Streaming

    microsoft-foundry/foundry-agent-webapp

    Provides SSE streaming patterns for the chat API and frontend.

    127 GitHub stars~1.9k tokensUpdated 5 mo ago
    Auto-check passed
  • Planning Features

    microsoft-foundry/foundry-agent-webapp

    Provides structured plan template for feature implementation.

    127 GitHub stars~548 tokensUpdated 5 mo ago
    Auto-check passed
  • Researching Azure AI SDK

    microsoft-foundry/foundry-agent-webapp

    Provides research patterns for Foundry Agent Service SDK. An agent skill from microsoft-foundry/foundry-agent-webapp.

    127 GitHub stars~4.7k tokensUpdated 5 mo ago
    Auto-check passed
  • Deploying To Azure

    microsoft-foundry/foundry-agent-webapp

    Provides deployment commands and troubleshooting for Azure Container Apps.

    127 GitHub stars~2.2k tokensUpdated 5 mo ago
    Auto-check: warnings
  • Syncing MCP Servers

    microsoft-foundry/foundry-agent-webapp

    Synchronize MCP server configuration between VS Code (.vscode/mcp.json) and Copilot CLI (~/.copilot/mcp-config.json).

    127 GitHub stars~1.3k tokensUpdated 5 mo ago
    Auto-check passed

Questions about Validating UI Features

What does Validating UI Features do?

Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info. Validating UI Features is an agent skill from microsoft-foundry/foundry-agent-webapp. Provides step-by-step procedures for validating UI features - theme toggle, new chat, cancel stream, markdown rendering, and token usage info.

When should I use Validating UI Features?

Validating UI Features fits situations like: documents & Office work in your project.

How do I install Validating UI Features in Claude Code?

Run `npx skills add microsoft-foundry/foundry-agent-webapp --skill validating-ui-features -a claude-code`. Or copy the skill folder (.github/skills/validating-ui-features in microsoft-foundry/foundry-agent-webapp) into .claude/skills/validating-ui-features in your project. Claude Code loads it when a task matches its description.

How do I install Validating UI Features in Codex?

Run `npx skills add microsoft-foundry/foundry-agent-webapp --skill validating-ui-features -a codex`. Or copy the skill folder (.github/skills/validating-ui-features in microsoft-foundry/foundry-agent-webapp) into .agents/skills/validating-ui-features in your project. Codex loads it when a task matches its description.

Can I use Validating UI Features in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft-foundry/foundry-agent-webapp --skill validating-ui-features -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/validating-ui-features, .gemini/skills/validating-ui-features, .github/skills/validating-ui-features and .opencode/skills/validating-ui-features in your project.

What does Validating UI Features need to run?

SKILL.md names no scripts, command-line tools or credentials: Validating UI Features is instructions for the agent only. Our summary lists: Python 3.

Does Validating UI Features access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Validating UI Features safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Validating UI Features use?

Validating UI Features is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Validating UI Features use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Validating UI Features?

Skills that share tags, products or a category with Validating UI Features: Markdown Article Formatter (JimLiu/baoyu-skills, 26k stars), Markitdown (ImCa0/just-laws, 781 stars), Obsidian Markdown (Atmosphere/atmosphere, 3.8k stars) and DOCX (rvdbreemen/OTGW-firmware, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Validating UI Features?

microsoft-foundry (a GitHub organization) maintains it in microsoft-foundry/foundry-agent-webapp, which has 127 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on April 21, 2026.

Source: microsoft-foundry/foundry-agent-webapp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.