moai-streaming-ui
About
moai-streaming-ui provides enhanced visual feedback during long-running operations with progress indicators, status displays, and interactive elements. Use this skill when you need to improve user experience during complex workflows by showing real-time progress and providing clear user feedback. It integrates seamlessly with tools like Bash, Read, and Write for comprehensive streaming UI capabilities.
Quick Install
Claude Code
Recommended/plugin add https://github.com/modu-ai/moai-adkgit clone https://github.com/modu-ai/moai-adk.git ~/.claude/skills/moai-streaming-uiCopy and paste this command in Claude Code to install this skill
Documentation
Enhanced Streaming UI System
Skill Metadata
| Field | Value |
|---|---|
| Version | 1.0.0 |
| Tier | Alfred (User Experience) |
| Auto-load | During long-running operations |
| Purpose | Enhanced visual feedback and progress indication |
What It Does
Advanced streaming UI system that provides rich visual feedback, progress indicators, and interactive status displays during complex operations. Enhances user experience by making long-running processes transparent and engaging.
Core capabilities:
- ✅ Multi-style progress indicators (bars, spinners, percentages)
- ✅ Real-time status updates and progress tracking
- ✅ Interactive user feedback mechanisms
- ✅ Color-coded severity levels and alerts
- ✅ Step-by-step workflow visualization
- ✅ Performance metrics and timing information
- ✅ Error state handling and recovery guidance
- ✅ Completion summaries and next step suggestions
When to Use
- ✅ During long-running operations (>5 seconds)
- ✅ When executing multi-step workflows
- ✅ During file operations or API calls
- ✅ When user needs progress feedback
- ✅ During background processing tasks
- ✅ When running tests or builds
- ✅ During complex Alfred command executions
UI Components Library
1. Progress Indicators
Progress Bars
# Basic progress bar
progress_bar(65, 100, "Installing dependencies")
# Output: [████████████████████ ] 65%
# Animated progress bar
animated_progress(current_step, total_steps, steps)
# Output: Step 3/5: [⚙️] Configuring database...
Spinners
# Basic spinner
spinner("Processing files", "dots")
# Output: Processing files...
# Custom spinner
spinner("Downloading", "arrow")
# Output: Downloading ↗
Percentage Display
# Percentage with context
percentage_with_context(45, "Code compilation")
# Output: 📊 Code compilation: 45% complete
2. Status Indicators
Success States
success_indicator("Build completed successfully")
# Output: ✅ Build completed successfully
success_with_details("Tests passed", "127/128 tests passed")
# Output: ✅ Tests passed (127/128)
Warning States
warning_indicator("Memory usage high")
# Output: ⚠️ Memory usage high: 85% used
warning_with_action("Disk space low", "Clear cache files")
# Output: ⚠️ Disk space low → Action: Clear cache files
Error States
error_indicator("Connection failed")
# Output: ❌ Connection failed
error_with_recovery("API timeout", "Retry with exponential backoff")
# Output: ❌ API timeout → Recovery: Retry with exponential backoff
3. Interactive Elements
User Prompts
user_prompt("Continue with deployment?", ["yes", "no", "cancel"])
# Output: ❓ Continue with deployment? [Y]es [N]o [C]ancel
user_prompt_with_default("Choose environment", ["dev", "staging", "prod"], "staging")
# Output: 🌍 Choose environment [D]ev [S]taging [P]rod (default: staging)
Confirmation Required
confirmation_required("Delete 15 files?")
# Output: ⚠️ Confirmation required: Delete 15 files? [y/N]
confirmation_with_details("Merge branch", "main → feature/auth")
# Output: 🔄 Confirm merge: main → feature/auth? [y/N]
4. Workflow Visualization
Step Indicators
workflow_steps([
("✅", "Setup completed"),
("🔄", "Running tests..."),
("⏸️", "Build pending"),
("⏸️", "Deploy pending")
])
# Output:
# Step 1: ✅ Setup completed
# Step 2: 🔄 Running tests...
# Step 3: ⏸️ Build pending
# Step 4: ⏸️ Deploy pending
Phase Indicators
phase_indicator("Phase 2/4: Implementation", 25)
# Output: 🎯 Phase 2/4: Implementation [█████ ] 25%
Integration Patterns
1. Alfred Command Integration
# In /alfred:2-run implementation
def run_spec_implementation(spec_id):
# Start progress tracking
Skill("moai-streaming-ui")
# → Display: 🚀 Starting SPEC-AUTH-001 implementation...
for step in implementation_steps:
# Show current step
show_step_progress(step)
# → Display: 🔄 Step 2/5: Writing tests...
# Execute step
result = execute_step(step)
# Update status
if result.success:
success_step(step)
# → Display: ✅ Step 2 completed: Tests written
else:
error_step(step, result.error)
# → Display: ❌ Step 2 failed: Test syntax error
2. Long-Running Operation Wrapper
def with_progress_indicator(operation, description):
"""Wrap any operation with progress UI"""
Skill("moai-streaming-ui")
# Start indicator
start_progress(description)
try:
result = operation()
# Success completion
complete_progress(description, success=True)
return result
except Exception as e:
# Error completion
complete_progress(description, success=False, error=str(e))
raise
3. Background Task Monitoring
def monitor_background_task(task_id):
"""Monitor and display background task progress"""
while not task_complete(task_id):
progress = get_task_progress(task_id)
Skill("moai-streaming-ui")
show_progress(progress.percentage, progress.current_step)
sleep(1) # Update every second
# Final status
Skill("moai-streaming-ui")
show_completion(task_result)
Progress Tracking Systems
1. Multi-Step Workflows
class WorkflowProgress:
def __init__(self, steps):
self.steps = steps
self.current = 0
def start(self):
Skill("moai-streaming-ui")
show_workflow_start(self.steps)
def next_step(self):
self.current += 1
Skill("moai-streaming-ui")
show_current_step(self.current, self.steps[self.current])
def complete(self):
Skill("moai-streaming-ui")
show_workflow_complete()
# Usage
workflow = WorkflowProgress([
"Analyze requirements",
"Write tests",
"Implement code",
"Run validation",
"Generate documentation"
])
workflow.start()
# → 🎯 Starting workflow: 5 steps planned
2. File Operations Progress
def track_file_operation(files, operation):
"""Track progress for file operations"""
total = len(files)
for i, file_path in enumerate(files):
current_progress = (i + 1) / total * 100
Skill("moai-streaming-ui")
show_file_progress(operation, file_path, current_progress, i + 1, total)
# Perform operation
perform_operation(file_path)
# Completion
Skill("moai-streaming-ui")
show_operation_complete(operation, total)
# Usage
track_file_operation(source_files, "Copying files")
# → 📁 Copying files: file.py (45/100) [███████████████ ] 45%
3. API/Network Operations
def track_api_requests(requests):
"""Track progress for multiple API requests"""
completed = 0
total = len(requests)
for request in requests:
Skill("moai-streaming-ui")
show_api_progress("Making API request", completed + 1, total)
try:
response = make_request(request)
completed += 1
Skill("moai-streaming-ui")
show_api_success(completed, total)
except Exception as e:
Skill("moai-streaming-ui")
show_api_error(str(e), completed + 1, total)
Status Display Templates
1. Operation Start
def show_operation_start(operation, details=None):
"""Display operation start message"""
lines = [f"🚀 {operation}"]
if details:
lines.append(f"📋 {details}")
lines.append("⏱️ Started at " + datetime.now().strftime("%H:%M:%S"))
Skill("moai-streaming-ui")
display_message("\n".join(lines))
2. Progress Update
def show_progress_update(operation, progress, current_item=None):
"""Display progress update"""
percentage = progress.percentage
bar = create_progress_bar(percentage)
lines = [
f"🔄 {operation}",
f"📊 {bar} {percentage:.1f}%",
]
if current_item:
lines.append(f"📁 Current: {current_item}")
if progress.eta:
lines.append(f"⏱️ ETA: {progress.eta}")
Skill("moai-streaming-ui")
display_message("\n".join(lines))
3. Operation Completion
def show_operation_complete(operation, result, duration=None):
"""Display operation completion"""
if result.success:
lines = [
f"✅ {operation} completed successfully"
]
if result.summary:
lines.append(f"📊 {result.summary}")
else:
lines = [
f"❌ {operation} failed"
]
if result.error:
lines.append(f"🔴 Error: {result.error}")
if duration:
lines.append(f"⏱️ Duration: {duration}")
lines.append(f"🏁 Finished at " + datetime.now().strftime("%H:%M:%S"))
Skill("moai-streaming-ui")
display_message("\n".join(lines))
Error Handling and Recovery
1. Retry Mechanisms
def show_retry_attempt(operation, attempt, max_attempts):
"""Display retry attempt information"""
Skill("moai-streaming-ui")
message = f"🔄 {operation} - Retry {attempt}/{max_attempts}"
if attempt > 1:
message += f" (previous attempts failed)"
display_message(message)
2. Error Recovery Options
def show_recovery_options(error, options):
"""Display error recovery options to user"""
Skill("moai-streaming-ui")
lines = [
f"❌ Error: {error}",
"🔧 Recovery options:"
]
for i, option in enumerate(options, 1):
lines.append(f" {i}. {option}")
lines.append("❓ Choose recovery option [1-{}]".format(len(options)))
display_message("\n".join(lines))
3. Graceful Degradation
def show_fallback_behavior(operation, fallback_reason):
"""Display fallback behavior information"""
Skill("moai-streaming-ui")
message = f"⚠️ {operation} - Using fallback: {fallback_reason}"
display_message(message)
Performance Considerations
1. Update Frequency
# Don't update too frequently (avoid spam)
MIN_UPDATE_INTERVAL = 0.5 # 500ms minimum
# Throttle updates
if time_since_last_update() < MIN_UPDATE_INTERVAL:
return # Skip this update
2. Memory Efficiency
# Reuse UI elements
progress_bar_template = "[{█}{ }{ }]"
status_cache = {}
# Limit displayed items
MAX_DISPLAY_ITEMS = 50
if len(items) > MAX_DISPLAY_ITEMS:
items = items[:MAX_DISPLAY_ITEMS] + [f"... and {len(items) - MAX_DISPLAY_ITEMS} more"]
3. Async Updates
# Non-blocking UI updates
async def update_progress_async(progress):
"""Update UI without blocking operation"""
Skill("moai-streaming-ui")
show_progress(progress)
await asyncio.sleep(0) # Yield control
Usage Examples
Example 1: Test Execution
def run_tests_with_progress():
"""Run tests with progress indication"""
Skill("moai-streaming-ui")
show_operation_start("Running test suite", "128 tests found")
tests = get_all_tests()
passed = 0
failed = 0
for i, test in enumerate(tests):
progress = (i + 1) / len(tests) * 100
Skill("moai-streaming-ui")
show_progress_update("Running tests", progress, test.name)
result = run_single_test(test)
if result.passed:
passed += 1
else:
failed += 1
Skill("moai-streaming-ui")
show_test_failure(test.name, result.error)
# Final summary
Skill("moai-streaming-ui")
show_operation_complete("Test suite", TestResult(passed, failed))
Example 2: File Processing
def process_files_with_progress(files, operation):
"""Process files with progress tracking"""
Skill("moai-streaming-ui")
show_operation_start(operation, f"{len(files)} files to process")
for i, file_path in enumerate(files):
progress = (i + 1) / len(files) * 100
Skill("moai-streaming-ui")
show_file_progress(operation, file_path.name, progress, i + 1, len(files))
try:
process_file(file_path)
Skill("moai-streaming-ui")
show_file_success(file_path.name)
except Exception as e:
Skill("moai-streaming-ui")
show_file_error(file_path.name, str(e))
Example 3: API Workflow
def execute_api_workflow_with_progress():
"""Execute multi-step API workflow with visual feedback"""
steps = [
("Authenticate", authenticate_api),
("Upload data", upload_data),
("Process results", process_results),
("Download response", download_response)
]
Skill("moai-streaming-ui")
show_workflow_start([step[0] for step in steps])
for i, (step_name, step_func) in enumerate(steps):
Skill("moai-streaming-ui")
show_current_step(i + 1, len(steps), step_name)
try:
result = step_func()
Skill("moai-streaming-ui")
show_step_success(step_name)
except Exception as e:
Skill("moai-streaming-ui")
show_step_error(step_name, str(e))
raise
End of Skill | Rich visual feedback for enhanced user experience during complex operations
GitHub Repository
Related Skills
sglang
MetaSGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.
evaluating-llms-harness
TestingThis Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.
content-collections
MetaThis skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.
llamaguard
OtherLlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.
