npx skills add ...
npx skills add mastra-ai/mastra --skill testing-mastracode-tui
npx skills add mastra-ai/mastra --skill testing-mastracode-tui
Testing mastracode TUI features interactively in Konsole. Covers model configuration, thread lifecycle, task state isolation, and common blockers.
Guide for interactive testing of mastracode's terminal UI in Konsole.
OPENROUTER_API_KEY — for using OpenRouter as a custom provider when Anthropic/OpenAI keys are unavailableBuild mastracode and its dependencies:
This may take a few minutes. If pnpm has corepack issues, install directly: npm install -g pnpm@10.11.0
If the build fails due to pre-existing DTS errors in @mastra/core or @mastra/memory, use --continue to let downstream packages (including mastracode) still build:
If unit tests fail with missing @mastra/core/workspace, run pnpm build:core first.
If you don't have a direct Anthropic/OpenAI API key, configure OpenRouter as a custom provider:
Edit ~/.local/share/mastracode/settings.json:
After launching mastracode, you may also need to activate the custom pack via /models → select "Custom" → "Activate".
Verify the status bar at the bottom shows the correct model (e.g., build openrouter/minimax/minimax-m2.7).
On first launch, mastracode may show a setup wizard. Select "Skip" to proceed to the main TUI without configuring models interactively.
| Command | Action |
|---|---|
/new | Create a new empty thread |
/threads | Open thread selector (↑↓ navigate, Enter select) |
/clone | Clone current thread |
/models | Switch model pack |
/help | Show all available commands |
For visual/rendering bugs (e.g., border alignment, padding, wrapping), writing a quick tsx script that directly renders the component is more reliable than visual inspection alone:
Key approach:
UserMessageComponent from ./src/tui/components/user-message.js)Spacer components when measuringThis approach catches bugs that are hard to see visually and provides concrete pass/fail evidence.
The key scenario for thread state testing:
Generate tasks: Ask the model to use the task_write tool explicitly. Some models (e.g., minimax) may not call it automatically — you may need to say something like: "Please use the task_write tool to create a task list with 3 items: Fix login bug, Add unit tests, Update docs"
Verify tasks visible: Look for the "Tasks [0/N completed]" section with ○/▶/✓ icons between the status line and the editor input.
Test /new: The task progress component should completely disappear. The screen should show only "Ready for new conversation" and an empty input.
Test /threads switch: Switch back to the original thread — messages and tasks should restore correctly.
Test /clone: Cloned threads should start with empty tasks (tasks are ephemeral, not persisted to clones).
GOOGLE_GENERATIVE_AI_API_KEY for the OM model. Fix this by setting the OM model to an OpenRouter model via /om or in settings.json (models.omModelOverride). Configure the OM model if you expect observation to trigger during testing./models in the TUI to activate the custom pack.pnpm cli fails with module resolution errors, run pnpm build:mastracode (or with --continue) from the repo root to build all transitive dependencies.Some pre-existing test failures may exist in the broader test suite — focus on tests relevant to the feature being verified.