一键导入
ui-audit
Playwright로 admin/public 페이지의 overflow, 가독성, 반응성, 토큰 준수를 한번에 검증한다. 프론트엔드 CSS/컴포넌트 변경 후 사용.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Playwright로 admin/public 페이지의 overflow, 가독성, 반응성, 토큰 준수를 한번에 검증한다. 프론트엔드 CSS/컴포넌트 변경 후 사용.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
규모가 큰 작업을 플랜 → 페이즈별 병렬 실행 → 자기 리뷰 → 요약 설명까지 체계적으로 진행한다. 마일스톤이 3개 이상이거나 파일 변경이 10개 이상 예상될 때 사용.
Telegram 대화 히스토리를 Obsidian에서 조회·수동 공고화·히스토리 초기화하는 스킬.
프로젝트 독립적 문서 관리 프레임워크 — 정본 1곳 원칙, change-class 기반 자동 갱신, 상태 자동 정리를 다른 프로젝트에 이식할 때 사용
Run the full pipeline (fetch → ingest → sync) and verify data reaches the UI via Playwright tests.
세션 회고 — 성공 패턴·실패 우회·반복 수작업·사용자 교정을 스킬/피드백/자동화로 자동 추출
git diff 기반으로 VibeHub의 ref/status/automation 문서 drift를 change class 단위로 점검하고, 어떤 문서를 어느 섹션까지 봐야 하는지 좁혀준다.
| name | ui-audit |
| description | Playwright로 admin/public 페이지의 overflow, 가독성, 반응성, 토큰 준수를 한번에 검증한다. 프론트엔드 CSS/컴포넌트 변경 후 사용. |
| argument-hint | [admin|public|all] [--mobile] [--page=/admin/briefs] |
| user_invocable | true |
Playwright 기반 프론트엔드 품질 검증. overflow, 가독성, 반응성을 한번에 점검한다.
공용 레이아웃, 전역 CSS, shared component가 얽힌 반응형 문제면 먼저 code-review-graph로 범위를 줄인다.
code-review-graph status
code-review-graph update
rg -n "100vw|100dvw|overflow-x|grid-template-columns|white-space: nowrap|position: sticky" apps/web
모바일 좌우 스크롤 이슈는 보통 다음 순서로 좁힌다:
100vw, calc(100vw - ...))admin (기본값): admin 페이지만public: public 페이지만all: 전체--mobile: 390px viewport 추가 검증--page=/path: 특정 페이지만 검증인자에 따라 페이지 목록을 구성한다.
admin 페이지:
/admin, /admin/collection, /admin/briefs, /admin/pending, /admin/discover, /admin/sources, /admin/rules, /admin/publish, /admin/video-jobs, /admin/assets, /admin/showcase
public 페이지:
/, /brief, /radar, /sources, /newsletter
--page= 인자가 있으면 해당 페이지만 대상으로 한다.
/tmp/ui-audit.mjs에 검증 스크립트를 생성하고 node로 실행한다.
Playwright import 경로: node_modules/playwright/index.mjs (프로젝트 루트 기준)
viewport:
{ width: 1440, height: 900 }--mobile): { width: 390, height: 844 } 추가admin 페이지는 로그인 필요:
const loginInput = page.locator('input[aria-label="Operator key"]');
if (await loginInput.isVisible({ timeout: 3000 }).catch(() => false)) {
await loginInput.fill("operator");
await page.click('button[type="submit"]');
await page.waitForTimeout(2000);
}
각 페이지에서 다음을 검증한다:
모든 .admin-card, .panel, .summary-card 요소에 대해:
.admin-card-title: fontSize ≥ 14px, fontWeight ≥ 700.admin-card-subtitle: fontSize ≥ 13px.admin-card-meta-item dt: fontSize ≥ 11px.admin-card-meta-item dd: fontWeight ≥ 600.admin-card-meta: display === "grid" (가로 정렬).summary-count (대시보드): fontSize ≥ 18px, fontWeight ≥ 700--mobile 활성 시)document.documentElement.scrollWidth > window.innerWidtha, button)의 최소 높이/폭 ≥ 44px모바일 overflow가 발견되면 숫자로 먼저 확정한다:
({
innerWidth: window.innerWidth,
clientWidth: document.documentElement.clientWidth,
scrollWidth: document.documentElement.scrollWidth,
bodyScrollWidth: document.body.scrollWidth,
hasOverflow: document.documentElement.scrollWidth > document.documentElement.clientWidth,
})
그 다음 화면 밖으로 튀는 요소를 추출한다:
const vw = document.documentElement.clientWidth;
Array.from(document.querySelectorAll('*'))
.map((el) => {
const r = el.getBoundingClientRect();
return {
tag: el.tagName.toLowerCase(),
className: String(el.className || '').slice(0, 120),
left: Math.round(r.left),
right: Math.round(r.right),
width: Math.round(r.width),
text: (el.textContent || '').trim().replace(/\s+/g, ' ').slice(0, 80),
};
})
.filter((x) => x.right > vw + 1 || x.left < -1)
이번 레포에서 실제로 잘 먹힌 점검 포인트:
.shell이 100vw 기반이면 모바일에서 예상보다 넓어질 수 있다.footer-grid 같은 shared grid는 responsive.css override가 전역 rule보다 먼저 로드되면 mobile rule이 져서 overflow를 만든다390px viewport -> scrollWidth 390처럼 수치로 재검증한다각 페이지를 /tmp/ui-audit-{pagename}.png로 저장한다.
Read 도구로 열어 시각 확인한다.
변경된 CSS 파일이 있으면 token-lint도 실행:
bash tools/token-lint.sh
## UI Audit Report
**대상**: admin 11페이지, desktop viewport
**Overflow**: ✅ 0건 (카드 35개, 패널 12개 검사)
**가독성**: ✅ 전체 통과
**토큰 준수**: ✅ 0 violations
| 페이지 | 카드 수 | Overflow | 가독성 | 스크린샷 |
|--------|---------|----------|--------|----------|
| /admin | 8 | ✅ | ✅ | /tmp/ui-audit-admin.png |
| /admin/collection | 10 | ✅ | ✅ | /tmp/ui-audit-collection.png |
| ... | | | | |
### 발견 사항
(문제가 있으면 여기에 구체적으로 기술)
/tmp/에 저장하며 영구 보존하지 않는다