Comprehensive end-to-end validation of the Archon Web UI using browser automation and codebase review. Use when: User wants to validate, test, or audit the Archon web interface, find UI/UX bugs, test workflow management, verify parallel agent orchestration, or run comprehensive browser-based E2E tests. Triggers: "validate ui", "test the ui", "e2e test", "browser test", "validate archon", "test archon ui", "ui audit", "ux review", "comprehensive test", "validate everything". Capability: Starts Archon, runs exhaustive browser automation tests via agent-browser CLI, performs codebase review, and produces a detailed bug/UX report. NOT for: Unit tests (use `bun test`), CLI-only validation (use /validation:validate-simple).
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Run exhaustive end-to-end browser automation tests and codebase review of the Archon Web UI. The goal: determine whether Archon is doing the best it possibly can to solve the problem of managing parallel agents, executing custom workflows, and providing full visibility into agent work.
Optional focus argument: $ARGUMENTS (e.g., "workflows", "chat", "projects"). If empty, run ALL sections.
# Kill any running Archon dev servers (backend + frontend)
pkill -f "bun.*dev:server" 2>/dev/null || true
pkill -f "bun.*dev:web" 2>/dev/null || true
pkill -f "bun.*packages/server" 2>/dev/null || true
pkill -f "bun.*packages/web" 2>/dev/null || true
pkill -f "vite.*5173" 2>/dev/null || true
# Kill any leftover processes on our ports
lsof -ti:3090 | xargs kill -9 2>/dev/null || true
lsof -ti:5173 | xargs kill -9 2>/dev/null || true
# Wait for ports to free up
sleep 2
# Verify ports are free
! lsof -i:3090 && ! lsof -i:5173 && echo "Ports 3090 and 5173 are free" || echo "WARNING: Ports still in use"# Check if agent-browser is available
which agent-browser 2>/dev/null || npx agent-browser --version 2>/dev/null
# If not installed globally, install it:
# npm install -g agent-browser && agent-browser install
# On WSL2/Linux, use --with-deps to get Chromium system dependencies:
# agent-browser install --with-deps
# IMPORTANT: Do NOT use bunx — Bun skips postinstall scripts that agent-browser needs.
# Use npx or global npm install.Start both services. Backend must be up before frontend SSE connections work.
# From the repo root: /path/to/archon
# Start backend (port 3090)
cd /path/to/archon && bun run dev:server &
sleep 5 # Wait for server initialization + DB
# Verify backend is healthy
curl -s http://localhost:3090/api/health | head -c 200
# Start frontend (port 5173)
cd /path/to/archon && bun run dev:web &
sleep 5 # Wait for Vite dev server
# Verify frontend is serving
curl -s http://localhost:5173 | head -c 200URLs:
http://localhost:5173http://localhost:3090/apihttp://localhost:3090/api/stream/{conversationId} (bypasses Vite proxy in dev)Check if there are existing codebases and conversations. If empty, create test data:
# Check existing codebases
curl -s http://localhost:3090/api/codebases | python3 -m json.tool 2>/dev/null || curl -s http://localhost:3090/api/codebases
# Register the current repo as a codebase (if none exist)
curl -s -X POST http://localhost:3090/api/codebases \
-H "Content-Type: application/json" \
-d '{"path": "/path/to/archon"}'
# Create a test conversation
curl -s -X POST http://localhost:3090/api/conversations \
-H "Content-Type: application/json" \
-d '{}' | python3 -m json.tool 2>/dev/nullUse the agent-browser CLI for all browser interactions. Follow the snapshot-refs workflow:
agent-browser open <url> — navigateagent-browser snapshot -i — get interactive elements with refsTake screenshots at each major test point: agent-browser screenshot /tmp/archon-test-{name}.png
/)1.1 Initial Load
http://localhost:51731.2 Stats Accuracy
GET /api/workflows/runs?status=runningGET /api/conversations1.3 Recent Items
/chat/{id}/workflows/runs/{id}1.4 Empty State
/chat2.1 Add Project (GitHub URL)
+ button next to "Projects" in the sidebarhttps://github.com/anthropics/claude-code)2.2 Add Project (Local Path)
+ again/path/to/archon)2.3 Select/Deselect Project
ProjectDetail view (shows project name, repo URL, conversations scoped to project, workflow runs)AllConversationsView (all conversations, no project filter)localStorage persists selection across page refresh2.4 Delete Project
2.5 Project Selector in Collapsible
3.1 New Chat (No Project)
/chat/{conversationId}3.2 New Chat (With Project)
/status)3.3 Slash Commands
/status — verify response shows session status/help — verify help text renders in markdown/commands — verify command list renders/getcwd — verify working directory is shown3.4 Message Rendering
target="_blank")3.5 Streaming & Real-time Updates
isStreaming flag clears on completion3.6 Tool Call Cards
3.7 Error Handling
3.8 Queue Position
3.9 Auto-scroll Behavior
3.10 Conversation Navigation
4.1 Rename Conversation
4.2 Delete Conversation
/4.3 Auto-title
4.4 Search
/ key — verify search input focuses5.1 Workflow List Page (/workflows)
/workflows5.2 Invoke Workflow from Workflows Page
archon-assist)/chat/{conversationId}5.3 Invoke Workflow from Sidebar (WorkflowInvoker)
ProjectDetail view5.4 Workflow Router (Agent Orchestrator)
WorkflowDispatchInline badge appears with spinner5.5 Workflow Progress in Chat
WorkflowProgressCard appears in the chat/workflows/runs/{runId}5.6 Workflow Execution Page (/workflows/runs/:runId)
WorkflowLogs renders the worker conversation messages5.7 Parallel Agent Steps
archon-comprehensive-pr-review has 5 parallel agents)ParallelBlockView renders showing parent step and nested agent list(completed/total agents)5.8 Loop Iterations
archon-test-loop or archon-ralph-fresh)LoopIterationView renders with iteration counter<promise>COMPLETE</promise>) ends the loop5.9 Workflow Artifacts
ArtifactSummary component renders at the bottom5.10 Workflow Stale Detection
stale indicator appears on the workflow card5.11 Cancel Workflow
6.1 Project Detail — Conversations
6.2 Project Detail — Workflow Runs
/workflows/runs/{id}6.3 Cross-Project Navigation
7.1 SSE Connection
agent-browser eval or console)/api/stream/{conversationId} is established7.2 SSE Reconnection
7.3 Multiple Tabs
agent-browser --session for parallel)8.1 Visual Hierarchy & Dark Theme
8.2 Loading States
8.3 Empty States
8.4 Responsiveness
agent-browser set viewport 1920 1080 # Desktop
agent-browser set viewport 1366 768 # Laptop
agent-browser set viewport 1024 768 # Tablet landscape
agent-browser set viewport 768 1024 # Tablet portrait
agent-browser set viewport 375 812 # Mobile8.5 Sidebar Resize
8.6 Keyboard Navigation
/ — verify search focusesEscape — verify search clearsEnter in message input — verify sends messageShift+Enter — verify inserts newline (does NOT send)8.7 Copy/Clipboard
8.8 External Links
vscode://file/... URL is constructed correctly9.1 Rapid Message Sending
9.2 Long Content
WorkflowResultCard truncation works (500 chars / 8 lines with "Show more")9.3 Special Characters
<script>alert('xss')</script>, markdown chars *_[](), emoji9.4 Browser Refresh During Streaming
9.5 Concurrent Workflows
9.6 Network Latency
Read the source code of every component and module listed below. For each, evaluate:
| File | Focus Areas |
|---|---|
packages/web/src/App.tsx | Route config, error boundary, QueryClient settings |
packages/web/src/components/chat/ChatInterface.tsx | SSE handler correctness, message state management, new-chat flow, workflow dispatch handling |
packages/web/src/components/chat/MessageList.tsx | Auto-scroll, WorkflowDispatchInline polling, WorkflowResultCard truncation |
packages/web/src/components/chat/MessageBubble.tsx | Markdown rendering, streaming cursor, thinking dots |
packages/web/src/components/chat/ToolCallCard.tsx | Expand/collapse, running state animation, output truncation |
packages/web/src/components/chat/WorkflowProgressCard.tsx | Timer accuracy, compact vs full mode, stale indicator |
packages/web/src/components/chat/LockIndicator.tsx | Show/hide transitions, queue position display |
packages/web/src/components/chat/MessageInput.tsx | Enter vs Shift+Enter, auto-resize, disabled state |
packages/web/src/components/layout/Sidebar.tsx | Resize drag, project add flow, search, new chat, localStorage persistence |
packages/web/src/components/sidebar/ProjectDetail.tsx | Scoped queries, conversation status dots, workflow run sorting |
packages/web/src/components/sidebar/WorkflowInvoker.tsx | Workflow fetch, create conversation + run flow, error handling |
packages/web/src/components/sidebar/AllConversationsView.tsx | Search filtering, codebase map construction, "New Chat" |
packages/web/src/components/sidebar/ProjectSelector.tsx | Delete confirmation, "All Projects" button |
packages/web/src/components/conversations/ConversationItem.tsx | Rename inline edit, delete flow, active state highlighting |
packages/web/src/components/workflows/WorkflowList.tsx | Two-tab layout, inline run panel, running indicator pulse |
packages/web/src/components/workflows/WorkflowExecution.tsx | Initial data reconstruction from events, live SSE overlay, worker vs parent flows |
packages/web/src/components/workflows/WorkflowLogs.tsx | Read-only chat view, SSE handlers, message filtering by timestamp |
packages/web/src/components/workflows/StepProgress.tsx | Step list rendering, parallel block delegation, active step highlight |
packages/web/src/components/workflows/StepLogs.tsx | Virtual scrolling, auto-scroll, metadata header |
packages/web/src/components/workflows/ArtifactSummary.tsx | Artifact type icons, URL links, path display |
packages/web/src/components/workflows/LoopIterationView.tsx | Progress bar math, max iteration capping |
packages/web/src/components/workflows/ParallelBlockView.tsx | Overall status derivation, nested agent list |
packages/web/src/hooks/useSSE.ts | Text batching (50ms flush), reconnection, handler ref stability |
packages/web/src/hooks/useWorkflowStatus.ts | Workflow state map, polling fallback (15s), stale detection |
packages/web/src/hooks/useAutoScroll.ts | Scroll threshold (50px), user scroll-up detection |
packages/web/src/lib/api.ts | SSE_BASE_URL calculation, error handling, 404 swallowing |
packages/web/src/lib/types.ts | SSEEvent union completeness, ChatMessage fields, WorkflowState shape |
packages/web/src/lib/message-cache.ts | Cache key correctness, memory management |
packages/web/src/contexts/ProjectContext.tsx | Stale project ID cleanup, codebase polling interval |
| File | Focus Areas |
|---|---|
packages/server/src/routes/api.ts | Endpoint correctness, CORS, SSE heartbeat loop, workflow run endpoint, codebase deduplication |
packages/server/src/adapters/web.ts | sendMessage category filtering, structured event handling, lock event flushing |
packages/server/src/adapters/web/persistence.ts | Segment splitting logic, tool call duration tracking, flush timing, 50-segment cap |
packages/server/src/adapters/web/transport.ts | Stream replacement race condition fix, buffer limits (100 msg / 200 conv), zombie reaper |
packages/server/src/adapters/web/workflow-bridge.ts | Event mapping completeness, bridge subscription lifecycle, parent forwarding |
packages/core/src/orchestrator/orchestrator.ts | Router prompt construction, background dispatch fire-and-forget, isolation resolution |
packages/core/src/workflows/executor.ts | Stale workflow detection (15min), step session continuity, parallel Promise.all, loop completion signal |
packages/core/src/workflows/router.ts | Case-insensitive matching, multiline regex, fallback behavior |
packages/core/src/workflows/event-emitter.ts | Listener error isolation, max listener cap, run registration lifecycle |
For every file reviewed, note findings in these categories:
After completing all tests and reviews, produce a structured report:
# Archon Web UI Validation Report
**Date**: {date}
**Tester**: Claude Code (agent-browser + codebase review)
**Archon Version**: {git commit hash}
**Screenshots**: /tmp/archon-test-*.png
## Executive Summary
{2-3 sentences: overall quality assessment, critical issues count, UX rating}
## Critical Bugs (P0)
{Bugs that break core functionality or lose data}
## Major Issues (P1)
{Issues that significantly degrade the experience}
## Minor Issues (P2)
{Polish items, edge cases, visual inconsistencies}
## UX Recommendations
{Suggestions for improving the user experience — not just bugs but "could be better"}
## Accessibility Findings
{Keyboard nav gaps, ARIA issues, contrast problems}
## Performance Observations
{Slow renders, unnecessary work, optimization opportunities}
## Codebase Quality Notes
{Dead code, inconsistencies, architectural concerns}
## What's Working Well
{Positive findings — features that are solid, patterns that are good}
## Detailed Test Results
### Dashboard Tests
| Test | Status | Notes |
|------|--------|-------|
| 1.1 Initial Load | PASS/FAIL | ... |
...
### Project Management Tests
...
### Chat Interface Tests
...
### Workflow Management Tests
...Is Archon currently doing the best it possibly can to solve the problem of managing a lot of agents in parallel and executing custom workflows with full visibility?
Specifically evaluate:
agent-browser commands via the Bash toolnpx agent-browser if not installed globallyagent-browser snapshot -i) to get fresh refs/tmp/archon-test-{section}-{name}.pngagent-browser wait --load networkidle after actions that trigger API callsagent-browser eval to check EventSource stateagent-browser closeace0a41
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.