Skip to content
Development
Skill

/test

Agentic end-to-end test orchestrator — drive web/macOS flows, evaluate UX rubric, reconcile issues

From plugin
session-orchestrator
5252 skills14 agents2 commands10 hooks
+1

Claude Code

$ npx -y skills add Kanevry/session-orchestrator --skill test --agent claude-code

SKILL.md

test.SKILL.md
name: test
description: Agentic end-to-end test orchestrator — drive web/macOS flows, evaluate UX rubric, reconcile issues
user-invocable: true
argument-hint: "[scope|profile-name] [--target-kind live|production-build|dev-server] [--target-url <url>] [--since <git-ref>] [--full]"
model: inherit

Test

Run agentic end-to-end tests against the current project or a named target. The user invoked `/test` with arguments: **$ARGUMENTS**

This skill resolves a test target and profile, dispatches the appropriate driver (Playwright for web, Peekaboo for macOS), invokes the `ux-evaluator` agent against the captured artifacts, and reconciles findings with the open issue tracker. All logic lives in `skills/test-runner/SKILL.md` — this file is the user-facing entry point only.

Invocation

`$ARGUMENTS` carries the recognised flags (`--target`, `--target-kind`, `--target-url`, `--profile`, `--dry-run`, `--since`, `--full`) and an optional bare scope token. Parse it per § Argument Validation, resolve per § Argument Precedence Resolution, and only then hand the eight-argument § Handoff Contract to `skills/test-runner/SKILL.md`, which owns all further resolution, driver dispatch, evaluation, and issue reconciliation.

Example: `/test --profile smoke --target-kind live --target-url https://example.com` requests a live run at that URL; `LIVE RUN` is granted only when per-page visited-URL evidence confirms it was driven. Missing evidence or a different visited origin yields the dev-server header and a report explaining the mismatch.

Argument Validation

Parse `$ARGUMENTS` before doing anything else.

Recognized flags and positional arguments:

  • `--target <name>` — explicit target name (e.g. `your-target-app`, `your-mobile-app`). Sets `explicit_target = true`.
  • `--target-kind live|production-build|dev-server` — requested run kind; pass as `target_kind`. Capture evidence grants the final kind and header. Only these three values are recognized. An unrecognized value (or a missing value) resolves to `dev-server unknown`; do not consume a following flag as its value. With no flag, preserve an explicit operator statement for this run; otherwise use `dev-server`.
  • `--target-url <url>` — requested navigation URL; pass as `target_url`. Takes precedence over a URL in the request or Playwright config. A missing value is `unknown`; do not consume a following flag as its value. The test-runner applies its localhost/preview and unknown safety rules before dispatch, then verifies actual visited URLs before granting the report label; the flag alone does not configure Playwright's base URL.
  • `--profile <name>` — explicit profile name (e.g. `smoke`, `full`, `a11y`, `onboarding`). Sets `explicit_profile = true`.
  • `--dry-run` — resolve target and profile, print the dispatch plan, but do NOT invoke any driver or create any issues. Sets `dry_run = true`.
  • `--since <git-ref>` — restrict test execution to files changed since the given git ref. Sets `since_ref = <git-ref>`.
  • `--full` — explicit full-repo scan. Sets `full_scan = true`.
  • `[scope]` — any unrecognized positional token is treated as a profile name (same as `--profile <scope>`).

**Conflict check:** If BOTH `--since` and `--full` are present, stop immediately and report:

Error: Cannot use --since with --full. Provide one, not both.

Do NOT proceed with test execution when this conflict is present.

If `$ARGUMENTS` contains an unrecognized flag (i.e. starts with `--` but is not one of the above), inform the user:

Unknown flag '<flag>'. Recognized flags: --target <name>, --target-kind live|production-build|dev-server, --target-url <url>, --profile <name>, --dry-run, --since <git-ref>, --full.

Then continue with the remaining valid arguments.

Argument Precedence Resolution

Resolve `target` and `profile` using the following precedence (highest → lowest). Stop at the first rule that produces a value for each variable.

1. **Explicit flags** — `--target <name>` sets `target`; `--profile <name>` sets `profile`. Highest priority. Both may be provided together. 2. **Profile from policy, target explicit** — if only `--target <name>` is provided (no `--profile`), pass `target` to the test-runner skill; the skill resolves the profile from `.orchestrator/policy/test-profiles.json` or its default. 3. **Target from policy, profile explicit** — if only `--profile <name>` is provided (no `--target`), pass `profile` to the test-runner skill; the skill resolves the target via convention-based detection. 4. **Positional token as profile** — if a bare positional argument (no `--` prefix) is present in `$ARGUMENTS`, treat it as `profile`. The test-runner skill resolves the target via convention. 5. **Session Config default** — if the Session Config block contains `test-runner.default-profile`, use that value for `profile`. Target is still resolved by the skill via convention. 6. **Interactive AUQ** — if no target or profile could be resolved from steps 1–5, proceed to the Profile Selection section below before invoking the skill.

Profile Selection

**Only execute this section when steps 1–5 above produced neither `target` nor `profile`.**

Present the user with a structured choice via `AskUserQuestion`:

AskUserQuestion({
  questions: [{
    question: "Which test profile should be run?",
    header: "Profil",
    options: [
      { label: "smoke (Recommended)", description: "Quick sanity pass — key flows, axe critical/serious, console errors. The fastest of the four; run it first." },
      { label: "full", description: "All checks at full depth — slower, used before release." },
      { label: "a11y", description: "Accessibility-focused pass — axe-core exhaustive scan." },
      { label: "onboarding", description: "Onboarding step-count + Liquid Glass conformance checks." }
    ],
    multiSelect: false
  }]
})

Set the user's selection as `profile`. The test-runner skill will resolve the target from convention.

Invoke Test-Runn

Read more
@kanevry
Ships withsession-orchestrator

Your coding agents get an agreed plan, a check after each round of changes and a handover to the next session. A free, MIT-licensed workflow plugin for people running Claude Code, Codex CLI, Cursor IDE or Pi on a git repository.

5252 skills14 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of Kanevry/session-orchestrator on GitHub, a chart by star-history.com

Other skills on session-orchestrator.

autopilot

autopilot

Use this skill when running an autonomous session-orchestration loop. Chains session-start → session-plan → wave-executor →…

bootstrap

bootstrap

Use this skill when scaffolding the minimum repository structure required by session-orchestrator. Invoked automatically by the…

brainstorm

brainstorm

Use when you have a feature idea but the scope or UX is still ambiguous — runs a lightweight Socratic design dialogue (3-5 AUQ…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about test.

Which coding agents can use test?
test installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.