textual-ui-developer
Develop and improve the MassGen Textual TUI by running it in a browser via textual-serve and using Claude's browser tool for visual feedback.
Install
mkdir -p .claude/skills/textual-ui-developer && curl -L -o skill.zip "https://mcp.directory/api/skills/download/5512" && unzip -o skill.zip -d .claude/skills/textual-ui-developer && rm skill.zipInstalls to .claude/skills/textual-ui-developer
About this skill
Textual UI Developer
Use this skill to improve the MassGen Textual UI while minimizing flaky reproduction and API cost.
Use This Skill When
- You need to debug timeline rendering or ordering issues.
- You need to verify layout/styling changes in the real Textual shell.
- You need to update or add TUI regression tests (snapshot/golden/transcript).
- You need to reproduce UI behavior from
events.jsonldeterministically.
Default Strategy
Prefer deterministic workflows before live model runs:
- Reproduce from recorded/synthetic events (
events.jsonl) with no API calls. - Confirm behavior in the real shell using
--tui-real. - Encode findings into tests (unit, transcript golden, snapshot).
- Use live
massgen --display textualor--textual-serveonly when needed.
Quick Commands
# Full frontend/TUI test suite
uv run pytest massgen/tests/frontend -q
# Timeline transcript goldens
uv run pytest massgen/tests/frontend/test_timeline_transcript_golden.py -q
UPDATE_GOLDENS=1 uv run pytest massgen/tests/frontend/test_timeline_transcript_golden.py -q
# Snapshot scaffold tests
uv run pytest massgen/tests/frontend/test_timeline_snapshot_scaffold.py -q
uv run pytest massgen/tests/frontend/test_timeline_snapshot_scaffold.py --snapshot-update -q
uv run pytest massgen/tests/frontend/test_timeline_snapshot_scaffold.py -q --snapshot-report snapshot_report.html
uv run python scripts/render_snapshot_svgs.py --real-tui-only
# Event replay (no API cost)
uv run python scripts/dump_timeline_from_events.py /path/to/events.jsonl [agent_id]
uv run python scripts/dump_timeline_from_events.py --tui /path/to/events.jsonl [agent_id]
uv run python scripts/dump_timeline_from_events.py --tui-real /path/to/events.jsonl [agent_id]
# Example synthetic fixture
uv run python scripts/dump_timeline_from_events.py --tui-real massgen/tests/frontend/fixtures/synthetic_tui_events.jsonl agent_a
Workflow
1) Reproduce with Event Replay (No API Cost)
Start with transcript replay to verify timeline semantics quickly:
uv run python scripts/dump_timeline_from_events.py /path/to/events.jsonl agent_a
Then inspect visually:
# Lightweight timeline-focused view
uv run python scripts/dump_timeline_from_events.py --tui /path/to/events.jsonl agent_a
# Full runtime TextualApp shell
uv run python scripts/dump_timeline_from_events.py --tui-real /path/to/events.jsonl agent_a
Optional speed control for real replay:
MASSGEN_TUI_REPLAY_SPEED=8 uv run python scripts/dump_timeline_from_events.py --tui-real /path/to/events.jsonl agent_a
Exit replay with q.
2) Convert Findings into Tests
Pick the narrowest layer that captures the bug:
- Unit logic:
test_tool_batch_tracker.py,test_content_processor.py, helpers. - Transcript/golden behavior:
test_timeline_transcript_golden.py+massgen/tests/frontend/golden/. - Widget/shell snapshots:
test_timeline_snapshot_scaffold.py+massgen/tests/frontend/__snapshots__/. - Replay script behavior:
test_dump_timeline_from_events_script.py.
Final Presentation Focus Loop
When iterating specifically on final-answer visualization:
- Validate header semantics in unit tests (winner line, tie-break markers, vote line formatting) in
test_timeline_section_widget.py. - Regenerate only final-presentation snapshots if intended UI changed:
uv run pytest massgen/tests/frontend/test_timeline_snapshot_scaffold.py --snapshot-update -q
- Verify runtime shell appearance with no API cost:
uv run python scripts/dump_timeline_from_events.py --tui-real massgen/tests/frontend/fixtures/synthetic_tui_events.jsonl agent_a
- Run full frontend suite before finalizing:
uv run pytest massgen/tests/frontend -q
3) Snapshot Workflow
If snapshot tests mismatch:
- Open
snapshot_report.html. - Check
Show differencetoggle interpretation:- ON = blend-diff overlay (can look purple/black).
- OFF = raw current vs historical snapshots.
- If change is intentional, regenerate with
--snapshot-update. - Re-run the frontend suite to confirm stability.
3.1) Mandatory Screenshot Review
For visual/UI tasks, do not rely on test pass/fail alone. You must read screenshots directly before finalizing:
- Review the snapshot images in
snapshot_report.html(current vs historical). - Keep
Show differenceOFF first to verify raw rendering; then optionally use ON for pixel-level drift. - If screenshots are provided in chat/task context, inspect those images directly and compare against expected runtime appearance.
- If your viewer cannot open
.svg, render via browser engine:npx playwright screenshot "file:///ABS/PATH/to/snapshot.svg" /tmp/snapshot.png- Batch all (or real-TUI-only):
uv run python scripts/render_snapshot_svgs.py [--real-tui-only] - Prefer this over ImageMagick conversion for Textual snapshots to avoid false artifacts.
- Call out any mismatch between rendered snapshots and expected real TUI look, even if tests pass.
- Only conclude "visual change verified" after explicit screenshot review.
4) Optional Live Visual Validation
Use live runs only after deterministic checks pass:
# Native terminal TUI
uv run massgen --display textual
# Browser-hosted Textual
uv run massgen --textual-serve
Key Files
scripts/dump_timeline_from_events.py: text replay,--tui, and--tui-realmodes.massgen/frontend/displays/textual_terminal_display.py:TextualApp, shell layout, runtime event routing.massgen/frontend/displays/tui_event_pipeline.py: timeline event adapter and filtering logic.massgen/frontend/displays/timeline_event_recorder.py: deterministic text transcript recorder.massgen/tests/frontend/test_timeline_snapshot_scaffold.py: snapshot scaffold (widget + real shell states).massgen/tests/frontend/test_timeline_transcript_golden.py: transcript golden regressions.docs/modules/testing.md: canonical testing commands and parity notes.
Done Criteria
A TUI change is complete when:
- Relevant deterministic tests were added or updated first.
uv run pytest massgen/tests/frontend -qpasses.- Snapshot/golden updates are intentional and reviewed.
--tui-realreplay confirms expected real-shell behavior for the target scenario.
More by massgen
View all skills by massgen →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversBoost Postgres performance with Postgres MCP Pro—AI-driven index tuning, health checks, and safe, intelligent SQL optimi
Arize Phoenix — unified interface for managing prompts, exploring datasets, and running LLM experiments across providers
Desktop Commander MCP unifies code management with advanced source control, git, and svn support—streamlining developmen
XcodeBuild streamlines iOS app development for Apple developers with tools for building, debugging, and deploying iOS an
pg-aiguide — Version-aware PostgreSQL docs and best practices tailored for AI coding assistants. Improve queries, migrat
Powerful MCP server for Slack with advanced API, message fetching, webhooks, and enterprise features. Robust Slack data
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.