From flywheel
Runs 4-layer code review pipeline (cleanup, peer review, cross-model, E2E) on changes before merge. Framework-agnostic with profiles, tool slots, and zero-dependency fallback.
npx claudepluginhub romanticamaj/flywheel --plugin flywheelThis skill uses the workspace's default tool permissions.
A 4-layer review pipeline where each layer catches what the previous one misses. Layer 1 (cleanup) handles hygiene, Layer 2 (peer review) catches logic bugs, Layer 3 (cross-model) eliminates model-specific blind spots, Layer 4 (E2E) proves it actually works. Layers are framework-agnostic — slot in whatever tools are available.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides MCP server integration in Claude Code plugins via .mcp.json or plugin.json configs for stdio, SSE, HTTP types, enabling external services as tools.
A 4-layer review pipeline where each layer catches what the previous one misses. Layer 1 (cleanup) handles hygiene, Layer 2 (peer review) catches logic bugs, Layer 3 (cross-model) eliminates model-specific blind spots, Layer 4 (E2E) proves it actually works. Layers are framework-agnostic — slot in whatever tools are available.
| Layer | Purpose | Catches | Example Tools |
|---|---|---|---|
| 1. Cleanup | Code hygiene, reuse, simplification | Dead code, duplication, unnecessary complexity | superpowers /simplify, manual review prompt |
| 2. Peer review | Logic, bugs, security, conventions | Off-by-one, injection, race conditions, pattern violations | gstack /review, superpowers peer-reviewer |
| 3. Cross-model | Blind spots of the authoring model | Systematic biases, assumptions the first model made | codex:review (plugin), gstack /codex, Gemini CLI |
| 4. E2E verification | Does it actually work? | Integration failures, UI broken, API contract violations | gstack /qa, Playwright, manual browser test |
Which layers run depends on the active profile selected at relay time:
| Profile | Layers that run | Typical use |
|---|---|---|
| full | All 4 (cleanup + peer review + cross-model + E2E) | High-priority or security-sensitive features |
| standard | Peer review (top 5) + E2E | Default for most features |
| light | Peer review (verdict only) | Low-priority features |
| draft | None — planning only | Rapid prototyping |
What you lose by skipping:
| Field | Value |
|---|---|
| Input | Code diff or branch |
| Output | List of issues with severity: critical / warning / info |
| Gate | Critical issues block merge |
| Scenario | Confidence | Action |
|---|---|---|
| Both models flag the same issue | High | Fix it |
| Only one model flags it | Low | Needs human judgment |
Layer 4 (review E2E) answers "does the change break anything?" using the project's test suite and smoke tests. Platform-specific acceptance verification (e.g., "does the feature work on iOS simulator?") is handled separately in Step 9 of the coding agent template, using verification.platforms in flywheel-config.json.
review.tools.e2e, run those tooNote: For platform acceptance verification (simulator testing, browser flow testing), see
verification.platformsin the config and Step 9 ofcoding-agent-template.md.
| Platform | Tool Options | What It Tests |
|---|---|---|
| web | Playwright MCP/CLI, gstack /qa | Browser rendering, navigation, forms, API calls |
| ios | mobile-mcp, ios-simulator-mcp, Maestro | Simulator UI, tap/swipe, screen assertions |
| android | mobile-mcp, Maestro | Emulator UI, tap/swipe, screen assertions |
| electron | electron-playwright-mcp, Playwright _electron | Desktop app window, webview content |
| tauri | tauri-plugin-mcp | Desktop app via IPC, screenshots, DOM |
| flutter-desktop | flutter test integration_test/, Patrol | Widget integration, platform-specific behavior |
| audio-plugin | pluginval, Playwright (webview UI on Windows) | Plugin format compliance, DSP, webview UI |
| api | built-in (test suite + curl health endpoint) | HTTP status, response schema, error handling |
| cli | built-in (invoke with --help, check exit code) | Exit codes, stdout, basic invocation |
Always runs regardless of platform tools:
init.sh / init.ps1 — confirm exit code 0npm test, pytest, cargo test, etc.)curl the health/root endpoint — confirm HTTP 200--help or basic invocation — confirm exit code 0Any step failure → report as critical issue.
A project can have multiple platforms (e.g., a monorepo with web + ios + android). Each platform runs its own E2E tool independently. Results are merged into a single report.
| Layer | Tool Options |
|---|---|
| Cleanup | superpowers /simplify, built-in prompt |
| Peer review | gstack /review, superpowers peer-reviewer, built-in prompt |
| Cross-model | codex:review (plugin), codex:adversarial-review (plugin), gstack /codex, Gemini CLI |
| E2E — web | gstack /qa, Playwright MCP/CLI, built-in smoke test |
| E2E — ios | mobile-mcp, ios-simulator-mcp, Maestro MCP, built-in smoke test |
| E2E — android | mobile-mcp, Maestro MCP, built-in smoke test |
| E2E — electron | electron-playwright-mcp, Playwright _electron, built-in smoke test |
| E2E — tauri | tauri-plugin-mcp, built-in smoke test |
| E2E — flutter-desktop | flutter test integration_test/, Patrol, built-in smoke test |
| E2E — audio-plugin | pluginval (format + DSP), Playwright CDP (webview UI, Windows only), built-in smoke test |
| E2E — api/cli | built-in smoke test (always available) |
How to detect each tool at runtime:
| Tool | Detection Method |
|---|---|
| superpowers /simplify | code-simplifier in skills list |
| gstack /review | gstack review in skills list |
| codex:review (plugin) | codex:review in skills/commands list |
| codex:adversarial-review (plugin) | codex:adversarial-review in skills/commands list |
| gstack /codex | gstack codex in skills list |
| codex CLI (direct) | codex command in PATH |
| Playwright | mcp__plugin_playwright_playwright__* MCP tools or playwright plugin in skills list |
| Gemini CLI | gemini command in PATH |
| mobile-mcp | npx @mobilenext/mobile-mcp@latest --help exits 0, or MCP tools with mobile prefix |
| ios-simulator-mcp | npx ios-simulator-mcp --help exits 0, or MCP tools with ios_simulator prefix |
| Maestro | which maestro or maestro --version exits 0 |
| Maestro MCP | MCP tools with maestro prefix after maestro mcp |
| electron-playwright-mcp | MCP tools with electron prefix |
| tauri-plugin-mcp | MCP tools with tauri prefix |
| pluginval | which pluginval or pluginval --version exits 0 |
| Patrol | patrol_cli in dev dependencies (pubspec.yaml) |