Skip to content
Agentmart
Submit a tool

e2e

Resolve this project's browser end-to-end stack before /e2e or e2e-runner writes tests.

Skill by fmflurry

IndexedMIT★ 171
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/fmflurry-e2e

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Resolve this project's browser end-to-end stack before /e2e or e2e-runner writes tests. Reads the project e2e.json override, or discovers the start command, ports, and test runner. Use when running end-to-end tests, Playwright, or Cypress. A project sets enabled to false to opt out.

Use cases: testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/e2e

What's inside

Skill name
e2e
Description
Resolve this project's browser end-to-end stack before /e2e or e2e-runner writes tests. Reads the project e2e.json override, or discovers the start command, ports, and test runner. Use when running end-to-end tests, Playwright, or Cypress. A project sets enabled to false to opt out.
License
MIT
Instructions
62 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (3)

  • SKILL.md
  • lib.mjs · scripts/
  • resolve.mjs · scripts/

SKILL.md (first lines)

# E2E stack

why-not-tooled: choosing which journey to cover is a judgment. The start command, ports, and runner are read from the project file or the manifests.

`/e2e` and `e2e-runner` load this skill first. Run `scripts/resolve.mjs` from this skill's directory:

```bash
node scripts/resolve.mjs --root <repository-root> --harness <cursor|opencode|claude>
```

`--harness` is `cursor` in Cursor, `opencode` in OpenCode, and `claude` in Claude Code. Omit it and the script uses the same environment detection as `verify-this` (`VERIFY_HARNESS`, then Cursor, then Claude, then OpenCode). The script prints JSON. It does not start servers or run tests.

## Project override

The file is `e2e.json`, version 1. The loader checks the current harness first, then `.cursor/skills/e2e/e2e.json`, `.opencode/skills/e2e/e2e.json`, and `.claude/skills/e2e/e2e.json`. The first file that exists wins. A missing file is skipped. An unreadable file or a version other than 1 is an error and is not replaced by discovery.

```json
{
  "version": 1,
  "start": ["npm run dev"],
  "ports": [3000],
  "baseUrl": "http://127.0.0.1:3000",
  "test": "npm run test:e2e",
  "cwd": "e2e",
  "runner": "playwright",
  "skills": []
}
```

`start` may be one string. `startOwnedByRunner: true` means the test runner starts the app. `skills` names playbook skills to load. Load a playbook only when the override names them. Shipping `playwright-e2e-authoring` or `playwright-e2e-review` with the harness does not turn them on.

A project that does not want browser end-to-end tests opts out:

```json
{ "version": 1, "enabled": false }
```

`excluded: true` means stop. Do not create tests and do not start a stack. Consumers that do not want the optional Playwright playbooks omit `playwright-e2e-authoring` and `playwright-e2e-review` when they vendor the harness.

## Discovery

With no override, the script reads, in order:

- `package.json` scripts `test:e2e`, `e2e`, `e2e:ci` (package manager from the lockfile: bun, pnpm, yarn, then npm; the command is `<pm> run <script>`)
- a Playwright config at the repository root or `tests/playwright/playwright.config.*` (`baseURL`, `webServer.command`, `webServer.url`)
- `@playwright/test` or `playwright`, then `npx playwright test`
- Cypress, then `npx cypress run`
- a root `Makefile` target `e2e`, then `make e2e`
- `dev` or `start` as the start command when the Playwright config has no `webServer.command`

`source: "none"` means nothing runnable was found. Report that and stop. Do not invent a framework, a port, or a process manager.

Headed, UI, and report commands are set only when the package has `test:e2e:headed`, `test:e2e:ui`, or `test:e2e:report` (or the `e2e:*` names).

## What the agent does with the JSON

- `ok: false`: report `error` and stop.
- `excluded: true`: stop.
- `source: "none"`: stop.
- Otherwise run `start` unless `startOwnedByRunner` is true, write tests in `cwd` following the project's existing layout and any `CLAUDE.md` or `AGENTS.md` next to those tests, then run `test`.

From fmflurry/settings-opencode, MIT.

More from fmflurry/settings-opencode

Signals

Stars
171
Forks
9
Open issues
0
Last commit (this folder)
Oct 18, 2026 (9 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from fmflurry

Cite this page

e2e skill. Agent Mart. https://agentmart.dev/skills/fmflurry-e2e (last updated 2026-10-24)