From f3857e1a2c5ece6f61b799e1773d5b32c57df68c Mon Sep 17 00:00:00 2001 From: DESKTOP-TKLFCPRython Date: Sun, 31 May 2026 18:15:13 +0900 Subject: [PATCH] feat(design-harness): UI overhaul harness + /design bot command Agents: - ui-scout: Playwright MCP + Variant(variant.com/community) visual capture - design-system-architect: unified design tokens (CSS vars / RN StyleSheet) - component-refactor-engineer: per-system component refactoring - visual-qa-tester: before/after screenshot comparison Skills: - ui-overhaul-orchestrator: E2E pipeline (capture->tokens->refactor->QA) - playwright-visual-capture: Playwright MCP + Variant workflow - design-token-system: tokens.css with Pretendard, 4px grid, brand colors - component-refactor: Button/Card/Badge patterns for 4 systems Bot: /design capture|variant|tokens|homepage|itsm|manager|app|qa|ab Co-Authored-By: Claude Sonnet 4.6 --- routers/messenger.py | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/routers/messenger.py b/routers/messenger.py index aa718ea..170f11b 100644 --- a/routers/messenger.py +++ b/routers/messenger.py @@ -600,6 +600,46 @@ async def handle_bot_command( reply = await _cmd_gitea_status(repo, action) return BotReply(room=cmd.room, text=reply) + # ── /design ─── 디자인 리뉴얼 봇 ──────────────────────────────────────── + elif keyword in ("/design", "!design"): + sub = parts[1].lower() if len(parts) >= 2 else "help" + design_cmds = { + "capture": "Playwright MCP로 현재 UI Before 스크린샷 캡처", + "tokens": "통합 디자인 토큰(tokens.css) 생성 → 4개 시스템 적용", + "qa": "Before/After 시각적 QA + 반응형 검증", + "homepage": "홈페이지 컴포넌트 리팩토링 시작", + "itsm": "ITSM UI 현대화 시작", + "manager": "Manager 디자인 개편 시작", + "app": "Messenger 앱 디자인 개편 시작", + } + if sub == "variant": + query = " ".join(parts[2:]) if len(parts) >= 3 else "enterprise dashboard" + return BotReply(room=cmd.room, + text=f"[디자인 봇] Variant 탐색: '{query}'\n" + f"→ playwright-visual-capture 스킬로 variant.com/community 탐색") + elif sub == "ab": + comp = parts[2] if len(parts) >= 3 else "button" + return BotReply(room=cmd.room, + text=f"[디자인 봇] {comp} A/B 테스트 컴포넌트 → component-refactor 스킬 실행") + elif sub in design_cmds: + return BotReply(room=cmd.room, + text=f"[디자인 봇] {design_cmds[sub]}\n" + f"→ ui-overhaul-orchestrator 스킬 Phase: {sub}") + else: + return BotReply(room=cmd.room, text=( + "[디자인 리뉴얼 봇] 명령어 목록\n" + "━━━━━━━━━━━━━━━━━━━━━\n" + "/design capture → 현재 UI Before 스크린샷\n" + "/design variant <검색어> → Variant 디자인 탐색\n" + "/design tokens → 통합 디자인 토큰 생성\n" + "/design homepage → 홈페이지 컴포넌트 개편\n" + "/design itsm → ITSM UI 현대화\n" + "/design manager → Manager 디자인 개편\n" + "/design app → Messenger 앱 개편\n" + "/design qa → Before/After 시각적 QA\n" + "/design ab <컴포넌트> → A/B 테스트 버전 생성" + )) + # ── /release [version] ─── 릴리즈 배포 트리거 ───────────────── elif keyword in ("/release", "!release"): if len(parts) < 2: @@ -1944,6 +1984,17 @@ SM 스크립트 키: system, tomcat, jboss, jeus, weblogic, postgresql, oracle, mysql, tibero, esb, elasticsearch, solr, pinpoint, scouter +[디자인 리뉴얼 봇] +/design capture → 현재 UI Before 스크린샷 (Playwright MCP) +/design variant <검색어> → Variant 디자인 레퍼런스 탐색 +/design tokens → 통합 디자인 토큰 생성 +/design homepage → 홈페이지 컴포넌트 개편 +/design itsm → ITSM UI 현대화 +/design manager → Manager 디자인 개편 +/design app → Messenger 앱 개편 +/design qa → Before/After 시각적 QA +/design ab <컴포넌트> → A/B 테스트 버전 생성 + [스크랩핑 봇] !scrap → URL 즉시 스크랩 !scrap list [n] → 최근 n개 결과 목록