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.
Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI.
$ npx skills add PostHog/wizard --skill exploring-the-wizard -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install PostHog/wizard exploring-the-wizard --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/PostHog/wizard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .claude/skills/exploring-the-wizard && 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 "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .claude/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizardType 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 PostHog/wizard --skill exploring-the-wizard -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install PostHog/wizard exploring-the-wizard --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .agents/skills/exploring-the-wizard && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .agents/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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 PostHog/wizard --skill exploring-the-wizard -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install PostHog/wizard exploring-the-wizard --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .cursor/skills/exploring-the-wizard && 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 "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .cursor/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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/PostHog/wizard.git --path .claude/skills/exploring-the-wizard--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 PostHog/wizard --skill exploring-the-wizard -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install PostHog/wizard exploring-the-wizard --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .gemini/skills/exploring-the-wizard && 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 "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .gemini/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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 PostHog/wizard exploring-the-wizardInstalls 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 PostHog/wizard --skill exploring-the-wizard -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .github/skills/exploring-the-wizard && 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 "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .github/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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 PostHog/wizard --skill exploring-the-wizard -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install PostHog/wizard exploring-the-wizard --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/wizard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/exploring-the-wizard .opencode/skills/exploring-the-wizard && 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 "exploring-the-wizard" agent skill from https://github.com/PostHog/wizard/tree/main/.claude/skills/exploring-the-wizard into .opencode/skills/exploring-the-wizard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exploring-the-wizard", 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.
exploring-the-wizardDrive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI.
Exploring The Wizard is an agent skill from PostHog/wizard, published by the product's own GitHub organization. Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI. Use for detection checks and end-to-end exploration.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for coding agents working on the PostHog wizard codebase with the wizard-ci MCP server.
It sits in Testing & QA, covering MCP servers and End-to-end testing. It works with PostHog and Model Context Protocol. The repository describes itself as: Quickly add PostHog to your project using the setup wizard ✨. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 77055d2. 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.
Shell commands in SKILL.md call:
rsyncFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use rsync, which can reach the network depending on how they are called.
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.
Designed for coding agents working on the PostHog wizard codebase with the wizard-ci MCP server.
From compatibility in the SKILL.md frontmatter.
Exploring The Wizard loads about 2.2k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 868 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 PostHog/wizard at commit 77055d2, republished under its MIT licence (© PostHog). 868 words, ~2,182 tokens.
.claude/skills/exploring-the-wizard/SKILL.md (or your agent's skills folder).Drive the real TUI from this checkout using the wizard-ci MCP server in
.mcp.json. If its tools are unavailable, check registration and startup
errors; request approval only if the client reports that approval is missing.
Follow the runner policy for harness,
sequence, and gateway policy. For new exploration, launch the server with
SNAP_HARNESS=pi; prefer SNAP_SEQUENCE=orchestrator for the integration flow.
These are server environment variables, not MCP arguments. Restart an existing
server to change its environment. See the
host architecture for other programs,
overrides, and current limitations.
Copy the target app to a throwaway directory under /tmp: a full run edits
files and can create real PostHog resources. open_app replaces the active
wizard, so finish recording one app before opening another.
appDir and projectId (both required strings),
with no key. Stop at auth without calling run_agent.keyFile so the key stays out of tool
arguments. Set WIZARD_CI_GATEWAY_TOKEN_FILE in the MCP server environment
before launch (restart an existing server); it is not an open_app argument.
The file must contain an already-issued gateway bearer, not the phx key.
CI does not mint or refresh it. Never print or commit either secret. See
local credential setup. Read the
credential and region limitations
before starting: an inherited key can shadow keyFile, and the host currently
hardcodes the US region.E2E_ASK=true to keep
wizard_ask available in this CI session. Handle questions yourself through
the actions below; fixed-route answer profiles do not drive the MCP route.The schema lives in
scripts/wizard-ci-mcp.no-jest.ts.
It exposes exactly these tools:
| Tool | Arguments | Result |
|---|---|---|
open_app | appDir, projectId; optional keyFile, apiKey, region (us or eu) | First state, possibly before detection finishes |
read_state | None | Current state, legal actions, and background run status |
perform_action | action; optional params object | State after committing a legal action |
render_screen | None | Current rendered screen as plain text, with ANSI removed |
run_agent | None | Starts the real program in the background and returns immediately |
Use read_state.actions for action ids and parameters; there is no
list_actions MCP tool. Framework identity is session.integration, with
session.detectedFrameworkLabel and session.detectionComplete. The separate
top-level integration field is the background status: idle, running,
done, or failed; integrationError holds a caught failure. Those two fields
are added by read_state and are absent from perform_action replies.
This walk targets the default integration program; other programs expose their own decisions through the same state and action contract.
read_state until session.detectionComplete before
judging detection. Inspect session.integration and setupQuestions.render_screen before each decision and during task or phase
changes. Save numbered frames such as /tmp/wz-explore-snaps/01-intro.txt.run_agent at auth. Continue
reading state and handling overlays while it runs; polling alone cannot
answer them.runPhase (idle, running, completed, error), background
status, and the rendered outro. On error, capture the frame and reason before
dismissing it. integration says failed once the run's phase is error;
a host exit can instead surface as a socket error.session.skillsComplete marks the tail's
completion. Other programs can have a terminal outro or exit screen.| Decision | Action and params |
|---|---|
| Confirm intro / dismiss blocking outage | confirm_setup / dismiss_outage |
| Answer setup question | choose, { key, value } from setupQuestions |
| Answer every question in a pending batch | answer_question, { answers: { questionId: value } }; values are strings or string arrays |
| Cancel a question batch | cancel_question |
| Accept or decline an optional task | resolve_notice, { keep: true } or { keep: false } |
| Finish outro | dismiss_outro |
| Record MCP outcome | set_mcp_outcome, { outcome: "skipped" } or { outcome: "installed", clients: [...] } |
| Dismiss suggested prompts / Slack step | dismiss / dismiss_slack |
| Record keep-skills choice | keep_skills, { kept: true } or { kept: false } |
MCP and keep-skills actions commit store state; recording an outcome does not perform the corresponding installation or cleanup. Report which outcomes were simulated. A completed run also needs a review of the app diff and expected integration behavior before calling the integration valid.
MCP snapshots are plain .txt; the CI snapshot route writes colored .ans
frames. Keep the screen path and failure evidence with the snapshots. Do not
stop a progressing run at an invented turn count: the MCP exposes no turn limit;
Pi's continuation and tool-call guards are described in its
harness README.
Fixtures live in the sibling repo at
wizard-workbench/apps/basic-integration/<framework>/<app>. Copy each app with
rsync -a, excluding .git, node_modules, and ecosystem build/dependency
directories such as vendor, venv, Pods, build, and dist. Verify a
failed copy before treating null detection as a regression; remove throwaway
copies after recording their results.
The shared log is /tmp/posthog-wizard.log unless the server's environment sets
POSTHOG_WIZARD_LOG_FILE. Record its byte count before a run
and read from that count plus one afterward. Run sweeps serially so their logs
remain attributable. read_state omits frameworkContext; an empty
setupQuestions list alone does not prove a router mode. When necessary,
inspect the detector under src/programs/frameworks/ against
the same fixture.
© PostHog, MIT. 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/exploring-the-wizard of PostHog/wizard.
Open the folder on GitHubat commit 77055d2
Exploring The Wizard 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 |
|---|---|---|---|---|---|---|
| Exploring The Wizard this skillPostHog/wizard | 197 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Qwen Code E2E TestingQwenLM/qwen-code | 28k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Edt MCP TestingDitriXNew/EDT-MCP | 295 | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Edt MCP Ready To DeployDitriXNew/EDT-MCP | 295 | — | ~1.6k | Automated safety check: Pass | AGPL-3.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 |
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.
DitriXNew/EDT-MCP
How to manually e2e-test each EDT-MCP server tool against a live EDT workbench + TestConfiguration.
DitriXNew/EDT-MCP
The final "definition of done" / ready-to-deploy checklist for EDT-MCP — the ordered gate to run when a piece of work is finished, before declaring it done or merging.
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.
PostHog/wizard
Build or modify the PostHog wizard's Ink screens, primitives, keyboard interactions, and session-driven screen flow.
PostHog/wizard
Add or extend language and framework support in the PostHog wizard, including detection, framework configuration, registration, and matching context-mill content.
PostHog/wizard
Architectural guidance for changes to the PostHog Wizard: program and framework boundaries, agent routing, gateway admission, security, and TUI state.
PostHog/wizard
Add a PostHog wizard capability backed by context-mill content.
Works with
Categories
Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI. Exploring The Wizard is an agent skill from PostHog/wizard, published by the product's own GitHub organization. Drive the PostHog wizard headlessly against a throwaway app through wizard-ci MCP tools, inspect decisions, and capture the real TUI.
Exploring The Wizard fits situations like: detection checks and end-to-end exploration; tasks that involve MCP servers; tasks that involve End-to-end testing.
Run `npx skills add PostHog/wizard --skill exploring-the-wizard -a claude-code`. Or copy the skill folder (.claude/skills/exploring-the-wizard in PostHog/wizard) into .claude/skills/exploring-the-wizard in your project. Claude Code loads it when a task matches its description.
Run `npx skills add PostHog/wizard --skill exploring-the-wizard -a codex`. Or copy the skill folder (.claude/skills/exploring-the-wizard in PostHog/wizard) into .agents/skills/exploring-the-wizard 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 PostHog/wizard --skill exploring-the-wizard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/exploring-the-wizard, .gemini/skills/exploring-the-wizard, .github/skills/exploring-the-wizard and .opencode/skills/exploring-the-wizard in your project.
Going by SKILL.md and its folder, Exploring The Wizard needs the command-line tools its instructions call (rsync). Compatibility (from SKILL.md): Designed for coding agents working on the PostHog wizard codebase with the wizard-ci MCP server..
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.
Exploring The Wizard is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k 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 Exploring The Wizard: Qwen Code E2E Testing (QwenLM/qwen-code, 28k stars), Edt MCP Testing (DitriXNew/EDT-MCP, 295 stars), Edt MCP Ready To Deploy (DitriXNew/EDT-MCP, 295 stars) and Glance Test (DebugBase/glance, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
PostHog (a GitHub organization, an official publisher) maintains it in PostHog/wizard, which has 197 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: PostHog/wizard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.