Agent skill

Effect HTTP Testing

by UsefulSoftwareCo in UsefulSoftwareCo/executor

Testing Effect HttpApi services end-to-end. An agent skill from UsefulSoftwareCo/executor.

MITAuto-check passedBackend & APIs

Install Effect HTTP Testing

skills CLI
$ npx skills add UsefulSoftwareCo/executor --skill effect-http-testing -a claude-code

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

GitHub CLI
$ gh skill install UsefulSoftwareCo/executor effect-http-testing --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/UsefulSoftwareCo/executor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skills/effect-http-testing .claude/skills/effect-http-testing && 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
effect-http-testing
GitHub stars
4.1k
Token cost
~1.6k tokens
SKILL.md length
308 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Testing Effect HttpApi services end-to-end. An agent skill from UsefulSoftwareCo/executor.

  • Writing tests that involve Effects HttpApi
  • SKILL.md covers Core Pattern and Critical Rules
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Testing any HTTP service/plugin built with @effect/platform

What it does

Effect HTTP Testing is an agent skill from UsefulSoftwareCo/executor. Testing Effect HttpApi services end-to-end. Use when writing tests that involve Effect's HttpApi, HttpApiBuilder, HttpClient, HttpServer, or when testing any HTTP service/plugin built with @effect/platform. Covers proper layer composition, test server setup, HttpClient injection, and common pitfalls.

Its SKILL.md is about 1.6k 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 Backend & APIs, covering Linux administration and OpenAPI specifications. It works with OpenAPI. The repository describes itself as: The missing integration layer for AI agents. Let them call any OpenAPI / MCP / GraphQL / custom js functions in secure environment. The licence is MIT.

When your agent uses it

  • Writing tests that involve Effects HttpApi
  • Testing any HTTP service/plugin built with @effect/platform

Example prompts

  • “/effect-http-testing”

What it can do on your machine

Read from SKILL.md and the folder at commit 27dccb8. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

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

  • Network

    No URLs in SKILL.md.

    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

Effect HTTP Testing loads about 1.6k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 308 words of instructions outside code blocks.

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

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 UsefulSoftwareCo/executor at commit 27dccb8, republished under its MIT licence (© UsefulSoftwareCo). 308 words, ~1,650 tokens.

Download SKILL.mdSave it as .claude/skills/effect-http-testing/SKILL.md (or your agent's skills folder).
name
effect-http-testing
description
Testing Effect HttpApi services end-to-end. Use when writing tests that involve Effect's HttpApi, HttpApiBuilder, HttpClient, HttpServer, or when testing any HTTP service/plugin built with @effect/platform. Covers proper layer composition, test server setup, HttpClient injection, and common pitfalls.

Effect HTTP Testing

Core Pattern

Define an API with HttpApi, implement handlers with HttpApiBuilder.group, serve it with HttpApiBuilder.serve(), and use NodeHttpServer.layerTest to get an in-process test server + HttpClient pointed at it.

ts
import { expect, layer } from "@effect/vitest";
import { Effect, Layer, Schema } from "effect";
import {
  HttpApi,
  HttpApiBuilder,
  HttpApiEndpoint,
  HttpApiGroup,
  HttpClient,
  OpenApi,
} from "@effect/platform";
import { NodeHttpServer } from "@effect/platform-node";

// 1. Define the API
class Item extends Schema.Class<Item>("Item")({
  id: Schema.Number,
  name: Schema.String,
}) {}

const ItemsGroup = HttpApiGroup.make("items")
  .add(HttpApiEndpoint.get("listItems", "/items").addSuccess(Schema.Array(Item)))
  .add(
    HttpApiEndpoint.get("getItem", "/items/:itemId")
      .setPath(Schema.Struct({ itemId: Schema.NumberFromString }))
      .addSuccess(Item),
  );

const MyApi = HttpApi.make("myApi").add(ItemsGroup);

// 2. Implement handlers
const ItemsLive = HttpApiBuilder.group(MyApi, "items", (handlers) =>
  handlers
    .handle("listItems", () => Effect.succeed([{ id: 1, name: "Widget" }]))
    .handle("getItem", (req) => Effect.succeed({ id: req.path.itemId, name: "Widget" })),
);

// 3. Build test layer
const ApiLive = HttpApiBuilder.api(MyApi).pipe(Layer.provide(ItemsLive));

const TestLayer = HttpApiBuilder.serve().pipe(
  Layer.provide(ApiLive),
  Layer.provideMerge(NodeHttpServer.layerTest),
);

// 4. Use layer() to share across tests
layer(TestLayer)("My API", (it) => {
  it.effect("works", () =>
    Effect.gen(function* () {
      const client = yield* HttpClient.HttpClient;
      // client is already pointed at the test server
      const response = yield* client.get("/items");
      // ...
    }),
  );
});

Critical Rules

Layer composition order matters

HttpApiBuilder.serve() consumes HttpApi.Api. The API layer must be provided to it, not the other way around:

ts
// CORRECT
HttpApiBuilder.serve().pipe(Layer.provide(ApiLive), Layer.provideMerge(NodeHttpServer.layerTest));

// WRONG — "Service not found: HttpApi.Api"
ApiLive.pipe(Layer.provide(HttpApiBuilder.serve()), Layer.provideMerge(NodeHttpServer.layerTest));
layerTestClient prepends the server URL

NodeHttpServer.layerTest (and HttpServer.layerTestClient) produce an HttpClient that automatically prepends the test server's http://127.0.0.1:<port> to every request URL.

  • Use paths only (/items, /items/2) in requests — not full URLs
  • If your code builds full URLs (e.g. http://localhost/items), the client will produce http://127.0.0.1:PORThttp://localhost/items — an invalid URL
  • When injecting the test client into code that normally uses a baseUrl, pass baseUrl: "" or skip the base URL entirely
Path parameters need setPath()

Effect's HttpApiEndpoint with :param syntax does NOT automatically populate req.path. You must call .setPath() with a schema:

ts
// WRONG — req.path is undefined
HttpApiEndpoint.get("getItem", "/items/:itemId").addSuccess(Item);

// CORRECT — req.path.itemId is typed and populated
HttpApiEndpoint.get("getItem", "/items/:itemId")
  .setPath(Schema.Struct({ itemId: Schema.NumberFromString }))
  .addSuccess(Item);
OpenApi.fromApi generates the spec

Use OpenApi.fromApi(api) to generate an OpenAPI spec from an HttpApi definition. The generated spec:

  • Uses "Api" as the default title (not the api id)
  • Converts :param to {param} in paths
  • Does NOT list path parameters in the parameters array — they're implicit in the path template
  • Uses group.endpoint format for operationIds (e.g. items.listItems)
Grab the test HttpClient from context

Inside layer() tests, the HttpClient is available in the Effect context:

ts
layer(TestLayer)("tests", (it) => {
  it.effect("test", () =>
    Effect.gen(function* () {
      const httpClient = yield* HttpClient.HttpClient;
      // Use it directly or wrap in a Layer for injection
      const clientLayer = Layer.succeed(HttpClient.HttpClient, httpClient);
    }),
  );
});
Use HttpClient for HTTP calls, not fetch

Production code should use HttpClient from @effect/platform, not raw fetch:

ts
import { HttpClient, HttpClientRequest } from "@effect/platform";

// Build request
let request = HttpClientRequest.get("/items");
request = HttpClientRequest.setHeader(request, "accept", "application/json");
request = HttpClientRequest.setUrlParam(request, "limit", "10");

// Execute — requires HttpClient in context
const response = yield * client.execute(request);

// Read body
const data = yield * response.json; // Effect<unknown>
const text = yield * response.text; // Effect<string>

This makes testing clean — swap in a test client layer, no monkey-patching needed.

Response headers are Record<string, string>

Effect's HttpClientResponse.headers is a plain Record<string, string>, not a Web Headers object. Don't call .forEach() or .get() on it:

ts
// WRONG
response.headers.forEach((v, k) => ...)
response.headers.get("content-type")

// CORRECT
const ct = response.headers["content-type"]
const copy = { ...response.headers }
HttpClientRequest.make takes uppercase methods
ts
// The method parameter to make() must be uppercase
HttpClientRequest.make("GET")("/items");

// Or use the convenience methods
HttpClientRequest.get("/items");
HttpClientRequest.post("/items");
Prepending base URLs to a client

Use HttpClient.mapRequest with HttpClientRequest.prependUrl:

ts
const clientWithBase = Layer.effect(
  HttpClient.HttpClient,
  Effect.map(
    HttpClient.HttpClient,
    HttpClient.mapRequest(HttpClientRequest.prependUrl("https://api.example.com")),
  ),
).pipe(Layer.provide(baseClientLayer));
Error assertions

Use Effect.flip to turn errors into values for assertion:

ts
const error = yield * Effect.flip(someFailingEffect);
expect(error._tag).toBe("MyError");
Dependencies
  • @effect/platform — HttpApi, HttpClient, HttpServer, OpenApi
  • @effect/platform-node — NodeHttpServer.layerTest (for Node/vitest)
  • @effect/vitest — layer(), it.effect(), expect

© UsefulSoftwareCo, 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 .skills/effect-http-testing of UsefulSoftwareCo/executor.

Open the folder on GitHubat commit 27dccb8

Compare with similar skills

Effect HTTP Testing 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.

Effect HTTP Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Effect HTTP Testing this skillUsefulSoftwareCo/executor4.1k—~1.6kAutomated safety check: PassMIT
Aliyun Swas Managecinience/alicloud-skills3971 repos~1.9kAutomated safety check: PassMIT
Inngest API CLIAsymmetric-al/core381—~2.6kAutomated safety check: PassAGPL-3.0
Use Yaakmountain-loop/yaak19k—~1.9kAutomated safety check: PassMIT
C4 Containeraiskillstore/marketplace4307 repos~1.4kAutomated safety check: PassNone
Aliyun Cdn Managecinience/alicloud-skills397—~875Automated safety check: PassMIT

Similar skills

  • Aliyun Swas Manage

    cinience/alicloud-skills

    A skill your agent uses when managing Alibaba Cloud Simple Application Server (SWAS OpenAPI 2020-06-01) resources end-to-end, including querying instances, starting/stopping/rebooting, executing…

    397 GitHub starsUsed in 1 repo~1.9k tokens
    DevOps & CloudAuto-check passed
  • Inngest API CLI

    Asymmetric-al/core

    A skill your agent uses when operating Inngest API resources from the terminal with npx inngest-cli@latest api: Cloud/local run debugging, event-run lookup, function traces, function invocation, app…

    381 GitHub stars~2.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • Use Yaak

    mountain-loop/yaak

    A skill your agent uses when the user mentions Yaak, a Yaak workspace, or the yaak command, or asks to call, hit, or smoke test HTTP/REST endpoints, save or organize API requests for reuse or manual…

    19k GitHub stars~1.9k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • C4 Container

    aiskillstore/marketplace

    Expert C4 Container-level documentation specialist. An agent skill from aiskillstore/marketplace.

    430 GitHub starsUsed in 7 repos~1.4k tokens
    Backend & APIsAuto-check passed
  • Aliyun Cdn Manage

    cinience/alicloud-skills

    A skill your agent uses when managing Alibaba Cloud CDN via OpenAPI/SDK, including CDN domain onboarding and lifecycle operations, cache refresh/preload, HTTPS certificate updates, and…

    397 GitHub stars~875 tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Aliyun Pts Manage

    cinience/alicloud-skills

    A skill your agent uses when managing Alibaba Cloud Performance Testing Service (PTS) via OpenAPI/SDK, including scene lifecycle operations, test start/stop control, report retrieval, and…

    397 GitHub stars~1.2k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed

More from UsefulSoftwareCo/executor

All 21 skills in this repo
  • Effect Client Wrapper

    UsefulSoftwareCo/executor

    Pattern for wrapping third-party SDK clients (Stripe, Resend, AWS, etc.) with Effect.

    4.1k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • CLI Release

    UsefulSoftwareCo/executor

    Runbook for releasing the executor CLI package (stable and beta).

    4.1k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Effect Atom Optimistic Updates

    UsefulSoftwareCo/executor

    Pattern for implementing optimistic UI updates with effect-atom in this codebase.

    4.1k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Emulate

    UsefulSoftwareCo/executor

    Use the @executor-js/emulate service emulators (GitHub, Google, Stripe, Resend, WorkOS, …) to test integrations for real — full OpenAPI specs, working OAuth flows, mintable credentials, and a…

    4.1k GitHub stars~2.2k tokensUpdated today
    Auto-check: notes
  • Prod Telemetry

    UsefulSoftwareCo/executor

    Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.

    4.1k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Self Contained Modals

    UsefulSoftwareCo/executor

    Build modals/dialogs self-contained: form and in-flight state lives inside, closing unmounts it.

    4.1k GitHub stars~878 tokensUpdated today
    Auto-check passed

Works with

Questions about Effect HTTP Testing

What does Effect HTTP Testing do?

Testing Effect HttpApi services end-to-end. An agent skill from UsefulSoftwareCo/executor. Effect HTTP Testing is an agent skill from UsefulSoftwareCo/executor. Testing Effect HttpApi services end-to-end.

When should I use Effect HTTP Testing?

Effect HTTP Testing fits situations like: writing tests that involve Effects HttpApi; testing any HTTP service/plugin built with @effect/platform.

How do I install Effect HTTP Testing in Claude Code?

Run `npx skills add UsefulSoftwareCo/executor --skill effect-http-testing -a claude-code`. Or copy the skill folder (.skills/effect-http-testing in UsefulSoftwareCo/executor) into .claude/skills/effect-http-testing in your project. Claude Code loads it when a task matches its description.

How do I install Effect HTTP Testing in Codex?

Run `npx skills add UsefulSoftwareCo/executor --skill effect-http-testing -a codex`. Or copy the skill folder (.skills/effect-http-testing in UsefulSoftwareCo/executor) into .agents/skills/effect-http-testing in your project. Codex loads it when a task matches its description.

Can I use Effect HTTP Testing 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 UsefulSoftwareCo/executor --skill effect-http-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/effect-http-testing, .gemini/skills/effect-http-testing, .github/skills/effect-http-testing and .opencode/skills/effect-http-testing in your project.

What does Effect HTTP Testing need to run?

SKILL.md names no scripts, command-line tools or credentials: Effect HTTP Testing is instructions for the agent only.

Does Effect HTTP Testing 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 Effect HTTP Testing 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 Effect HTTP Testing use?

Effect HTTP Testing 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 Effect HTTP Testing use?

About 1.6k tokens (SKILL.md is roughly 6.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 Effect HTTP Testing?

Skills that share tags, products or a category with Effect HTTP Testing: Aliyun Swas Manage (cinience/alicloud-skills, 397 stars), Inngest API CLI (Asymmetric-al/core, 381 stars), Use Yaak (mountain-loop/yaak, 19k stars) and C4 Container (aiskillstore/marketplace, 430 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Effect HTTP Testing?

UsefulSoftwareCo (a GitHub organization) maintains it in UsefulSoftwareCo/executor, which has 4,094 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 2026.

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