ワンクリックで
axm-testing-e2e
E2E test patterns for built CLI artifacts, plus when a reference spike may keep a local subprocess smoke test.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
E2E test patterns for built CLI artifacts, plus when a reference spike may keep a local subprocess smoke test.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Effect service definition, interface design, error types, retries. Use when creating new services or defining error hierarchies.
AXM - Agent Extension Manager: Use for any operation (install/create/new/edit/update/add/remove/delete/publish/find/discover) on agent skills, subagents, slash commands/stored prompts, MCP servers, context packages, rule extensions, hook extensions, or packs — e.g. "create a skill", "make a /command", "add a subagent", "build an MCP server", "publish an extension". Use this BEFORE hand-authoring or editing any SKILL.md, slash-command, subagent, MCP, rule, hook, or extension manifest file: route extension authoring through AXM instead of writing these files directly.
Native skill manifest with two unknown top-level keys.
Effect CLI + Effect architecture. Use when adding commands, defining flags, or wiring handlers. Covers file organization, argument/flag patterns, and testing.
"unterminated
Native skill with an invalid extension name in manifest.
| name | axm-testing-e2e |
| description | E2E test patterns for built CLI artifacts, plus when a reference spike may keep a local subprocess smoke test. |
| user-invocable | false |
Default to distribution E2E tests for shipped CLIs. The only local subprocess
exception is the reference spike, which keeps packages/cli-spike/src/main.test.ts
as a teaching/smoke test.
| Level | Location | Tests what | Runs when |
|---|---|---|---|
| Spike smoke | packages/cli-spike/src/main.test.ts | Source via bun run src/main.ts | Reference-app regression checks |
| Distribution | packages/<cli>-e2e/ | Built artifact via dist/ | CI / release validation |
Use this only for the reference spike. Keep it focused on CLI behavior the spike is explicitly teaching: help output, non-interactive paths, JSON support, and telemetry/error routing.
Do not copy this pattern into shipped CLI packages. Those belong in
packages/<cli>-e2e/.
Separate Nx project that tests the built artifact — no source imports.
packages/
cli-spike-e2e/ # type:e2e — depends on cli-spike:compile
project.json # e2e target with dependsOn: [cli-spike:compile]
vitest.config.ts # 30s timeout, *.e2e.test.ts pattern
src/
utils.ts # Spawns dist/src/main.js, not source
smoke.e2e.test.ts # --help, --version, exit codes
pnpm nx run cli-spike-e2e:e2e
Import from ./utils.js:
import { createTempDir, runCli } from "./utils.js";
| Helper | Purpose |
|---|---|
runCli(args, opts) | Run built CLI, returns { exitCode, stdout, stderr } |
createTempDir(prefix?) | Create temp dir, returns { path, cleanup } |
Key difference: runCli spawns cli-spike/dist/src/main.js (the build output), not source. Fails fast if the artifact doesn't exist.
import { describe, expect, it } from "vitest";
import { createTempDir, runCli } from "./utils.js";
describe("cli-spike skills", () => {
it("lists skills", async () => {
const temp = createTempDir();
try {
const result = await runCli(["skills", "list"], { cwd: temp.path });
expect(result.exitCode).toBe(0);
} finally {
temp.cleanup();
}
});
});
bin entry or files field misconfigured in package.jsoncreateTempDir() — Fresh directory per test, call cleanup() in finallyexitCode is 0 for success, non-zero for errorse2e target uses dependsOn: ["<cli>:compile"] or the package's real build prerequisite