원클릭으로
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