Guide for creating optimized Claude Code agents. Use to design a new specialized agent, a swarm sub-agent, or a multi-agent workflow. Follows the Skill → Agent (preloaded skills) → Skill orchestration pattern.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Guide for Playwright end-to-end tests. Use to create a new e2e test, debug a flaky test, or test API endpoints. Covers patterns, workarounds, and project conventions.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Read .claude/roles/code-reviewer.md — adopt this profile and follow all its rules.
This skill activates for:
src/tests/e2e/
├── fixtures/
│ └── test-data.ts # Test data (webhooks, payloads, etc.)
├── specs/
│ ├── setup.ts # Server setup (run once)
│ └── <context>/
│ └── <feature>.spec.ts # Tests per feature
└── utils/
└── test-helpers.ts # Helpers (API calls, server setup)
| Command | Usage |
|---|---|
yarn e2e | Run all tests |
yarn e2e:debug | Debug mode with inspector |
yarn test:e2e:report | View HTML report |
specs/
├── setup.ts # Setup (do not touch)
├── webhook/ # Webhook endpoint tests
├── review/ # Review workflow tests
└── health/ # Health check tests
// specs/webhook/github-webhook.spec.ts
import { test, expect } from "@playwright/test";
test.describe("GitHub Webhook", () => {
test("should accept a valid pull request event", async ({ request }) => {
const response = await request.post("/webhooks/github", {
headers: {
"content-type": "application/json",
"x-github-event": "pull_request",
"x-hub-signature-256": "sha256=valid-signature",
},
data: {
action: "opened",
pull_request: {
number: 42,
title: "feat: add new feature",
head: { ref: "feat/new-feature" },
base: { ref: "main" },
},
repository: { full_name: "org/repo" },
sender: { login: "developer" },
},
});
expect(response.status()).toBe(200);
});
test("should reject an invalid payload", async ({ request }) => {
const response = await request.post("/webhooks/github", {
data: {},
});
expect(response.status()).toBe(400);
});
});
# Debug mode
yarn e2e:debug
# Run a single file
yarn e2e specs/webhook/github-webhook.spec.ts
| Priority | Type | Example |
|---|---|---|
| 1 | data-testid | [data-testid="submit-btn"] |
| 2 | Role (accessibility) | getByRole("button", { name: "Submit" }) |
| 3 | Text | getByText("Submit") |
| 4 | CSS (last resort) | table tbody tr |
test.describe("Authenticated API", () => {
test("should return review status with valid token", async ({ request }) => {
const response = await request.get("/api/reviews/123", {
headers: {
Authorization: `Bearer ${process.env.TEST_API_TOKEN}`,
},
});
expect(response.status()).toBe(200);
const body = await response.json();
expect(body).toHaveProperty("status");
});
});
import { TEST_WEBHOOKS, TEST_PAYLOADS } from "../fixtures/test-data";
test("should process a GitLab merge request event", async ({ request }) => {
const response = await request.post("/webhooks/gitlab", {
data: TEST_PAYLOADS.gitlabMergeRequest,
});
expect(response.status()).toBe(200);
});
// fixtures/test-data.ts
export const TEST_PAYLOADS = {
gitlabMergeRequest: {
object_kind: "merge_request",
object_attributes: {
iid: 1,
title: "feat: add review automation",
action: "open",
},
},
githubPullRequest: {
action: "opened",
pull_request: {
number: 42,
title: "fix: resolve webhook validation",
},
},
};
yarn e2e:debug specs/webhook/my-test.spec.ts
Traces are enabled on the first retry. After a failure:
yarn test:e2e:report
// Add checkpoints
console.log("Step: Sending webhook payload");
// Flaky: not waiting for server readiness
await request.post("/webhooks/github", { data: payload });
// Stable: verify server is ready first
const health = await request.get("/health");
expect(health.status()).toBe(200);
await request.post("/webhooks/github", { data: payload });
expect() from Playwright| Avoid | Prefer |
|---|---|
| Hardcoded test data | Fixtures from test-data.ts |
| Tests dependent on each other | Isolated tests |
| Missing error case coverage | Test both success and failure paths |
| Ignoring response body | Validate status AND body structure |
Arbitrary waitForTimeout | Proper readiness checks |
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Guide for creating optimized Claude Code agents. Use to design a new specialized agent, a swarm sub-agent, or a multi-agent workflow. Follows the Skill → Agent (preloaded skills) → Skill orchestration pattern.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Anti-overengineering guide based on YAGNI. Use before adding an architectural pattern, during code review, or to challenge an overly complex implementation.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Clean Architecture (Uncle Bob) guide for this project. Use when creating modules, entities, use cases, presenters, controllers, gateways, guards, services. Contains tactical patterns and structure conventions.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Audit documentation for duplication, staleness, language issues, and verbosity. Read-only — produces an actionable report.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Local auto-review of modified code (no GitLab/GitHub). Runs 5 sequential audits and generates a local report. Ideal for validating code before creating a MR/PR.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Clean Code (Robert C. Martin) guide to produce and challenge code that is readable, durable, simple, and consistent. Covers naming, functions, comments, smells, and refactor heuristics. Complements `/solid` (SOLID principles) and `/anti-overengineering` (YAGNI/KISS). Activate during the REFACTOR phase of the TDD cycle and during implementation self-review.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.