Agent skill

Add E2E Test

by restatedev in restatedev/sdk-typescript

When the user asks to add a new e2e test to the restate-e2e-services package

MITAuto-check passedTesting & QA

Install Add E2E Test

skills CLI
$ npx skills add restatedev/sdk-typescript --skill add-e2e-test -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install restatedev/sdk-typescript add-e2e-test --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/restatedev/sdk-typescript.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-e2e-test .claude/skills/add-e2e-test && rm -rf skills-src

Use ~/.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/

Facts

Skill name
add-e2e-test
GitHub stars
125
Token cost
~910 tokens
SKILL.md length
230 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

When the user asks to add a new e2e test to the restate-e2e-services package

  • Works in 4 steps: Create the service under test in src/ → Import the service in src/app.ts → Create the test file in test/ → …
  • Asks to add a new e2e test to the restate-e2e-services package
  • SKILL.md covers Architecture, Steps to add a new e2e test and Available client patterns in…
  • Calls pnpm

What it does

Add E2E Test is an agent skill from restatedev/sdk-typescript. When the user asks to add a new e2e test to the restate-e2e-services package

Its SKILL.md is about 910 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. The repository describes itself as: Restate SDK for JavaScript/Typescript. The licence is MIT.

When your agent uses it

  • Asks to add a new e2e test to the restate-e2e-services package
  • Tasks that involve End-to-end testing

Example prompts

  • “/add-e2e-test”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Create the service under test in src/
  2. Import the service in src/app.ts
  3. Create the test file in test/
  4. Type-check

What it can do on your machine

Read from SKILL.md and the folder at commit 79b8358. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Add E2E Test loads about 910 tokens when it runs. Until then it costs about 22 tokens; SKILL.md has 230 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~22
When it runs · the whole SKILL.md, loaded when a task matches
~910

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from restatedev/sdk-typescript at commit 79b8358, republished under its MIT licence (© restatedev). 230 words, ~910 tokens.

Download SKILL.mdSave it as .claude/skills/add-e2e-test/SKILL.md (or your agent's skills folder).
name
add-e2e-test
description
When the user asks to add a new e2e test to the restate-e2e-services package
user-invocable
true

Adding an e2e test to restate-e2e-services

All e2e test infrastructure lives under packages/tests/restate-e2e-services/. These tests are NOT run directly — they are executed by the Java e2e test runner which spins up Restate, deploys services, and injects RESTATE_INGRESS_URL and RESTATE_ADMIN_URL environment variables.

Architecture

  • Services (src/): Restate service definitions (the SUT). Registered via REGISTRY and imported in app.ts.
  • Tests (test/): Vitest test files that call services through the ingress client.
  • Test config (custom_tests.yaml): YAML config read by the Java e2e test runner to know which commands to execute.
  • Shared utils (test/utils.ts): Provides ingressClient(), getIngressUrl(), getAdminUrl() — reads from env vars injected by the test runner.

Steps to add a new e2e test

1. Create the service under test in src/

Create src/<service_name>.ts following this pattern:

typescript
import * as restate from "@restatedev/restate-sdk";
import { REGISTRY } from "./services.js";

const myService = restate.service({
  name: "MyService",
  handlers: {
    myHandler: async (ctx: restate.Context, input: string): Promise<string> => {
      // handler logic
      return `result: ${input}`;
    },
  },
});

REGISTRY.addService(myService);
// Use REGISTRY.addObject() for virtual objects, REGISTRY.addWorkflow() for workflows

export type MyService = typeof myService;

Key points:

  • Always register with REGISTRY so the service is discoverable
  • Always export the type (export type MyService = typeof myService) so tests can import it for typed client calls
2. Import the service in src/app.ts

Add an import line alongside the other service imports:

typescript
import "./my_service.js";
3. Create the test file in test/

Create test/<service_name>.test.ts:

typescript
import { describe, it, expect } from "vitest";
import { ingressClient } from "./utils.js";
import type { MyService } from "../src/my_service.js";

const MyService: MyService = { name: "MyService" };

describe("MyService", () => {
  it("should do something", async () => {
    const ingress = ingressClient();
    const client = ingress.serviceClient(MyService);

    const result = await client.myHandler("input");

    expect(result).toBe("result: input");
  });
});

Key points:

  • Import the service TYPE from ../src/ for typed ingress client calls
  • Create a const with { name: "ServiceName" } matching the service's registered name
  • Use ingressClient() from ./utils.js — never hardcode URLs
  • For virtual objects use ingress.objectClient(MyObject, "key")
  • For workflows use ingress.workflowClient(MyWorkflow, "workflowId")
4. Type-check

Run from repo root:

bash
pnpm --filter @restatedev/restate-e2e-services run _check:types

Available client patterns in tests

From @restatedev/restate-sdk-clients:

typescript
const ingress = ingressClient();

// Service call
const svc = ingress.serviceClient(MyService);
await svc.handler(input);

// Virtual object call
const obj = ingress.objectClient(MyObject, "key");
await obj.handler(input);

// Workflow
const wf = ingress.workflowClient(MyWorkflow, "wfId");
await wf.workflowSubmit(input);
await wf.workflowAttach();

// Send (fire and forget)
const send = ingress.serviceSendClient(MyService);
await send.handler(input);

// Idempotent call
await svc.handler(input, restate.rpc.opts({ idempotencyKey: "key" }));

© restatedev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/add-e2e-test of restatedev/sdk-typescript.

Open the folder on GitHubat commit 79b8358

Compare with similar skills

Add E2E Test 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.

Add E2E Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add E2E Test this skillrestatedev/sdk-typescript125—~910Automated safety check: PassMIT
Web Application Testinganthropics/skills180k51 repos~966Automated safety check: PassApache-2.0
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
Uloop Replay Inputkurotu/VRCQuestTools3733 repos~615Automated safety check: PassMIT
Ui4 Convert Testspayloadcms/payload45k—~3.5kAutomated safety check: PassMIT
E2Estackia/rtp2httpd2.2k—~517Automated safety check: PassGPL-2.0

Similar skills

  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • Uloop Replay Input

    kurotu/VRCQuestTools

    Replay recorded PlayMode keyboard and mouse input. An agent skill from kurotu/VRCQuestTools.

    373 GitHub starsUsed in 3 repos~615 tokens
    Testing & QAAuto-check passed
  • Ui4 Convert Tests

    payloadcms/payload

    A skill your agent uses when UI changes are complete and e2e tests need updating.

    45k GitHub stars~3.5k tokensUpdated today
    Testing & QAAuto-check passed
  • E2E

    stackia/rtp2httpd

    Write, run, review, or debug rtp2httpd E2E tests and their harness in e2e/ and scripts/run-e2e.sh.

    2.2k GitHub stars~517 tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • Moav E2E

    MotherofallVPNs/MoaV

    Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.

    448 GitHub stars~1.9k tokensUpdated today
    Testing & QAAuto-check: notes

More from restatedev/sdk-typescript

  • Run SDK Tests

    restatedev/sdk-typescript

    Run the Restate SDK conformance test suite locally against this SDK's Docker image.

    125 GitHub stars~745 tokensUpdated yesterday
    Auto-check passed
  • Update SDK Test Contracts

    restatedev/sdk-typescript

    Update the SDK test service implementations to match a new version of the e2e conformance contracts.

    125 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Add Config Option

    restatedev/sdk-typescript

    When the user asks to add a new option/field/config to service, handler, endpoint, ServiceOptions, HandlerOpts, ObjectOptions, WorkflowOptions, or the discovery schema

    125 GitHub stars~623 tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Add E2E Test

What does Add E2E Test do?

When the user asks to add a new e2e test to the restate-e2e-services package. Add E2E Test is an agent skill from restatedev/sdk-typescript.

When should I use Add E2E Test?

Add E2E Test fits situations like: asks to add a new e2e test to the restate-e2e-services package; tasks that involve End-to-end testing.

How do I install Add E2E Test in Claude Code?

Run `npx skills add restatedev/sdk-typescript --skill add-e2e-test -a claude-code`. Or copy the skill folder (.claude/skills/add-e2e-test in restatedev/sdk-typescript) into .claude/skills/add-e2e-test in your project. Claude Code loads it when a task matches its description.

How do I install Add E2E Test in Codex?

Run `npx skills add restatedev/sdk-typescript --skill add-e2e-test -a codex`. Or copy the skill folder (.claude/skills/add-e2e-test in restatedev/sdk-typescript) into .agents/skills/add-e2e-test in your project. Codex loads it when a task matches its description.

Can I use Add E2E Test in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add restatedev/sdk-typescript --skill add-e2e-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-e2e-test, .gemini/skills/add-e2e-test, .github/skills/add-e2e-test and .opencode/skills/add-e2e-test in your project.

What does Add E2E Test need to run?

Going by SKILL.md and its folder, Add E2E Test needs the command-line tools its instructions call (pnpm).

Does Add E2E Test access the network?

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.

Is Add E2E Test safe to install?

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.

What licence does Add E2E Test use?

Add E2E Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add E2E Test use?

About 910 tokens (SKILL.md is roughly 3.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add E2E Test?

Skills that share tags, products or a category with Add E2E Test: Web Application Testing (anthropics/skills, 180k stars), TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), Uloop Replay Input (kurotu/VRCQuestTools, 373 stars) and Ui4 Convert Tests (payloadcms/payload, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add E2E Test?

restatedev (a GitHub organization) maintains it in restatedev/sdk-typescript, which has 125 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 6, 2026.

Source: restatedev/sdk-typescript on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.