Qwen Code E2E Testing
QwenLM/qwen-code
Guides end-to-end testing of the Qwen Code CLI in headless mode with real model calls, MCP test servers and inspection of raw API traffic.
End-to-end smoke check of the moraine MCP server. An agent skill from eric-tramel/moraine.
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install eric-tramel/moraine agent-smoke-e2e --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .claude/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.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/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .claude/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2eType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install eric-tramel/moraine agent-smoke-e2e --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .agents/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .agents/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install eric-tramel/moraine agent-smoke-e2e --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .cursor/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .cursor/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/eric-tramel/moraine.git --path .claude/skills/agent-smoke-e2e--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install eric-tramel/moraine agent-smoke-e2e --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .gemini/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .gemini/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install eric-tramel/moraine agent-smoke-e2eInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .github/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .github/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install eric-tramel/moraine agent-smoke-e2e --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eric-tramel/moraine.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/agent-smoke-e2e .opencode/skills/agent-smoke-e2e && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agent-smoke-e2e" agent skill from https://github.com/eric-tramel/moraine/tree/main/.claude/skills/agent-smoke-e2e into .opencode/skills/agent-smoke-e2e/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-smoke-e2e", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agent-smoke-e2eEnd-to-end smoke check of the moraine MCP server. An agent skill from eric-tramel/moraine.
Agent Smoke E2E is an agent skill from eric-tramel/moraine. End-to-end smoke check of the moraine MCP server. Exercises the public retrieval workflow against a live moraine stack and prints a PASS/FAIL matrix.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering End-to-end testing and MCP servers. It works with Model Context Protocol. The repository describes itself as: Unified realtime agent trace database & search MCP. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2fb4aec. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agent Smoke E2E loads about 1.7k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 659 words of instructions outside code blocks.
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.
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.
The full file from eric-tramel/moraine at commit 2fb4aec, republished under its Apache-2.0 licence (© eric-tramel). 659 words, ~1,733 tokens.
.claude/skills/agent-smoke-e2e/SKILL.md (or your agent's skills folder).You are running an end-to-end smoke test of the moraine MCP server.
Your sole job is to call the public MCP retrieval workflow, validate that responses are shaped as expected, and emit a final pass/fail matrix. Do not do anything else: no exploration, no reading files, no code changes. Treat this like a test runner with terse output and clear pass/fail signals.
moraine MCP server is registered and exposes mcp__moraine__search_sessions, mcp__moraine__open, mcp__moraine__list_sessions, and mcp__moraine__file_attention.mcp__moraine__* namespace.Run each check below in order. For each check, call the tool with the arguments listed, inspect the response, then record PASS or FAIL with a one-line reason on FAIL.
search_sessionsCall mcp__moraine__search_sessions with:
{ "query": "moraine", "n_hits": 5 }PASS if the response is an object with:
tool: "search_sessions"schema_version: "moraine.mcp.search_sessions.v1"data.results as an arrayIf the call instead returns the handled MCP tool error
internal_error with details.reason: "read_model_refresh" and
details.retryable: true, retry once. If the retry returns the same handled
error, record PASS active ingest is publishing; this is the documented
freshness contract, not an MCP/RPC failure.
If data.results[0] exists, capture:
sample_event_id = data.results[0].open.event_idsample_turn_id = data.results[0].open.turn_idsample_session_id = data.results[0].open.session_idIf there are no results, leave the three sample IDs as null.
list_sessionsCall mcp__moraine__list_sessions with:
{
"start_datetime": "1970-01-01T00:00:00Z",
"end_datetime": "2100-01-01T00:00:00Z",
"limit": 5
}PASS if the response is an object with:
tool: "list_sessions"schema_version: "moraine.mcp.list_sessions.v1"data.sessions as an arrayIf data.sessions[0] exists, capture:
listed_session_id = data.sessions[0].open.session_idIf there are no listed sessions, leave listed_session_id as null.
file_attentionCall mcp__moraine__file_attention with:
{ "path": "Cargo.toml", "scope": "all", "granularity": "events", "limit": 5 }PASS if the response is an object with:
tool: "file_attention"schema_version: "moraine.mcp.file_attention.v1"data.events as an arraydata.summary.total_touches as a numberIf data.events[0] exists, capture:
file_attention_event_id = data.events[0].open.event_idfile_attention_turn_id = data.events[0].open.turn_id if presentfile_attention_session_id = data.events[0].open.session_idIf there are no events, leave the three file-attention IDs as null.
open(event_id)If sample_event_id is set, call mcp__moraine__open with:
{ "id": "<sample_event_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "event".
If sample_event_id is null, record SKIP no search result.
open(turn_id)If sample_turn_id is set, call mcp__moraine__open with:
{ "id": "<sample_turn_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "turn".
If sample_turn_id is null, record SKIP no search result.
open(session_id)If sample_session_id is set, call mcp__moraine__open with:
{ "id": "<sample_session_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "session".
If sample_session_id is null, call mcp__moraine__open with this valid but
nonexistent typed session ID:
{ "id": "session:c21va2Utbm9uZXhpc3RlbnQtc2Vzc2lvbg" }PASS if the tool returns the handled MCP tool error (isError: true) with
error.code: "not_found". Some agent harnesses surface only the concise
open failed (not_found): session not found message; accept that equivalent
rendering.
open(listed_session_id)If listed_session_id is set, call mcp__moraine__open with:
{ "id": "<listed_session_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "session".
If listed_session_id is null, record SKIP no listed session.
open(file_attention IDs)If file_attention_event_id is set, call mcp__moraine__open with:
{ "id": "<file_attention_event_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "event".
If file_attention_turn_id is set, call mcp__moraine__open with:
{ "id": "<file_attention_turn_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "turn".
If file_attention_session_id is set, call mcp__moraine__open with:
{ "id": "<file_attention_session_id>" }PASS if the response is an object with tool: "open", the same request.id,
and data.kind: "session".
If there are no file-attention IDs, record SKIP no file_attention event.
isError: true, JSON-RPC
error response, or tool not found). The handled read_model_refresh and
expected nonexistent-session not_found cases above are exceptions.tool, schema_version, or the expected data/error object.open does not echo the requested id in request.id.open returns a successful data.kind different from the ID kind being opened.After all checks, emit exactly this block and stop:
=== agent-smoke-e2e ===
search_sessions: PASS|FAIL [reason]
list_sessions: PASS|FAIL [reason]
file_attention: PASS|FAIL [reason]
open_event_id: PASS|FAIL|SKIP [reason]
open_turn_id: PASS|FAIL|SKIP [reason]
open_session_id: PASS|FAIL [reason]
open_listed_session_id: PASS|FAIL|SKIP [reason]
open_file_attention_ids: PASS|FAIL|SKIP [reason]
---
search_results: <N from search_sessions>
listed_sessions: <N from list_sessions>
file_attention_events: <N from file_attention>
sample_event_id: <id or null>
sample_turn_id: <id or null>
sample_session_id: <id or null>
listed_session_id: <id or null>
file_attention_event_id: <id or null>
file_attention_turn_id: <id or null>
file_attention_session_id: <id or null>
overall: PASS|FAIL
=======================overall: PASS only if every non-SKIP line is PASS. A single FAIL flips
overall to FAIL.
© eric-tramel, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/agent-smoke-e2e of eric-tramel/moraine.
Open the folder on GitHubat commit 2fb4aec
Agent Smoke E2E 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agent Smoke E2E this skilleric-tramel/moraine | 117 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Qwen Code E2E TestingQwenLM/qwen-code | 28k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Glance TestDebugBase/glance | 156 | — | ~827 | Automated safety check: Pass | MIT | |
| Edt MCP Build TestDitriXNew/EDT-MCP | 295 | — | ~1.4k | Automated safety check: Pass | AGPL-3.0 | |
| Tauri Dev MCP Bridgejerrywu001/cc-sessions-viewer | 394 | — | ~1.4k | Automated safety check: Warn | MIT | |
| Edt MCP E2E TestingDitriXNew/EDT-MCP | 295 | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 |
QwenLM/qwen-code
Guides end-to-end testing of the Qwen Code CLI in headless mode with real model calls, MCP test servers and inspection of raw API traffic.
DebugBase/glance
Run E2E browser tests on any web application using Glance MCP.
DitriXNew/EDT-MCP
How to build the EDT-MCP Eclipse plugin (Tycho/Maven) and run its unit and e2e tests, plus the test conventions for this repo.
jerrywu001/cc-sessions-viewer
Launches a Tauri app's dev build with the MCP bridge compiled in, so an agent can take screenshots, read the live DOM, click real buttons and call real backend commands.
DitriXNew/EDT-MCP
How to write/run the AUTOMATED black-box e2e suite (tests/e2e/) that covers every EDT-MCP tool (62 today) against a live server with git-fixture isolation, happy + negative + error-quality coverage…
PostHog/wizard
Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI.
eric-tramel/moraine
Cuts and publishes a Moraine release end to end: version bump PR, tag, GitHub release notes, workflow check and PyPI package verification.
eric-tramel/moraine
Rewrites a moraine GitHub release body into a usage-focused format with install block, what's new, platform table, upgrade notes and one deduplicated changelog.
eric-tramel/moraine
Coordinates a delegated review of a Moraine PR or local change by seven focused reviewer subagents, merges their findings and follows up on the fixes.
eric-tramel/moraine
Looks at a pull request for the smallest good design, hunting for simplifications and architectural moves that remove whole classes of problems.
eric-tramel/moraine
Reviews a pull request for idiomatic implementation: use of the language, standard library, ecosystem conventions and the repository's own patterns.
eric-tramel/moraine
Review a PR through the CodeReviewSecurityReview persona. An agent skill from eric-tramel/moraine.
Works with
Categories
End-to-end smoke check of the moraine MCP server. An agent skill from eric-tramel/moraine. Agent Smoke E2E is an agent skill from eric-tramel/moraine. End-to-end smoke check of the moraine MCP server.
Agent Smoke E2E fits situations like: tasks that involve End-to-end testing; tasks that involve MCP servers.
Run `npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a claude-code`. Or copy the skill folder (.claude/skills/agent-smoke-e2e in eric-tramel/moraine) into .claude/skills/agent-smoke-e2e in your project. Claude Code loads it when a task matches its description.
Run `npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a codex`. Or copy the skill folder (.claude/skills/agent-smoke-e2e in eric-tramel/moraine) into .agents/skills/agent-smoke-e2e in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add eric-tramel/moraine --skill agent-smoke-e2e -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-smoke-e2e, .gemini/skills/agent-smoke-e2e, .github/skills/agent-smoke-e2e and .opencode/skills/agent-smoke-e2e in your project.
SKILL.md names no scripts, command-line tools or credentials: Agent Smoke E2E is instructions for the agent only.
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.
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.
Agent Smoke E2E is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agent Smoke E2E: Qwen Code E2E Testing (QwenLM/qwen-code, 28k stars), Glance Test (DebugBase/glance, 156 stars), Edt MCP Build Test (DitriXNew/EDT-MCP, 295 stars) and Tauri Dev MCP Bridge (jerrywu001/cc-sessions-viewer, 394 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
eric-tramel (a GitHub user) maintains it in eric-tramel/moraine, which has 117 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 5, 2026.
Source: eric-tramel/moraine on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.