Automation Skills
브라우저 자동화, 스크린샷 기반 상호작용, 요청 라우팅 기능을 제공하는 스킬입니다. 이 스킬들은 CLI-JAW가 CDP를 통해 Chrome을 제어하고, 스크린샷에서 UI 요소를 클릭하며, 웹 요청을 프로그래밍 방식으로 라우팅할 수 있게 합니다.
browser
Chrome DevTools Protocol(CDP)을 통한 Chrome 브라우저 제어 스킬입니다. 페이지 열기, 탐색, 참조 스냅샷 촬영, 요소 클릭, 텍스트 입력, 콘텐츠 추출, 스크린샷 캡처 기능을 제공합니다. cli-jaw 브라우저 서버가 실행 중이어야 합니다.
| 속성 | 값 |
|---|---|
| Skill ID | browser |
| 카테고리 | Automation |
| 프로토콜 | CDP (Chrome DevTools Protocol) |
| 사전 요구사항 | cli-jaw 브라우저 서버 실행 중 |
| 트리거 | 페이지 열기, 스크린샷, 클릭, 입력, 스크래핑, 탐색 |
기능
| 동작 | 설명 |
|---|---|
| Open page | 제어되는 Chrome 인스턴스에서 URL로 이동 |
| Screenshot | 전체 페이지 또는 뷰포트 스크린샷을 PNG로 캡처 |
| Click | CSS 선택자 또는 XPath로 DOM 요소 클릭 |
| Type | 입력 필드 및 텍스트 영역에 텍스트 입력 |
| Extract | 요소에서 텍스트 콘텐츠, 속성 또는 innerHTML 읽기 |
| Evaluate | 페이지 컨텍스트에서 임의의 JavaScript 실행 |
| Wait | 선택자, 내비게이션 또는 네트워크 유휴 상태 대기 |
| Ref snapshot | 비교를 위해 현재 DOM 상태의 참조 스냅샷 촬영 |
사용 예시
# Open a page and take a screenshot
/browser open https://example.com
/browser screenshot
# Click a button by selector
/browser click "#submit-btn"
# Type into an input field
/browser type "#search-input" "CLI-JAW documentation"
# Extract text content from an element
/browser extract ".main-content" text
# Execute JavaScript in the page
/browser eval "document.title"
"https://example.com 열어줘" -- 브라우저에서 URL을 열기
"이 페이지 스크래핑해줘" -- 현재 페이지의 콘텐츠를 스크래핑하여 추출
"스크린샷 찍어줘" -- 현재 뷰포트의 스크린샷 캡처
"로그인 페이지에서 이메일 입력해줘" -- 로그인 페이지의 이메일 필드에 입력
CDP 연결
browser 스킬은 CDP WebSocket 연결을 관리하는 cli-jaw 브라우저 서버를 통해 Chrome에 연결됩니다. 브라우저 명령을 사용하기 전에 서버를 먼저 시작해야 합니다.
# Start the browser server (runs on a dedicated port)
jaw browser serve
# The skill auto-connects when invoked
# Connection is reused across commands in the same session
vision-click
비전 모델을 사용한 스크린샷 기반 UI 상호작용 스킬입니다. DOM 선택자에 의존하는 대신, 스크린샷을 촬영하고 UI 요소를 시각적으로 식별한 후 정확한 좌표를 클릭합니다. 브라우저에 한정되지 않고 화면에 보이는 모든 애플리케이션에서 작동합니다.
| 속성 | 값 |
|---|---|
| Skill ID | vision-click |
| 카테고리 | Automation |
| 방식 | 스크린샷 분석 + 좌표 매핑 |
| 모델 | 비전 지원 LLM (Claude, GPT-4V) |
| 범위 | 화면에 보이는 모든 UI (브라우저, 데스크톱 앱, 터미널) |
작동 방식
- 캡처 -- 현재 화면 또는 지정된 영역의 스크린샷 촬영
- 분석 -- 비전 모델에 스크린샷을 전송하여 대상 요소 식별
- 위치 파악 -- 모델이 클릭할 요소의 픽셀 좌표를 반환
- 실행 -- 식별된 좌표에서 클릭(또는 기타 동작) 수행
| 동작 | 설명 |
|---|---|
| Click | 시각적으로 식별된 UI 요소 클릭 |
| Double-click | 대상 요소 더블 클릭 |
| Right-click | 대상 요소 우클릭(컨텍스트 클릭) |
| Hover | 클릭 없이 커서를 대상 요소로 이동 |
| Describe | 현재 화면에 보이는 내용의 설명 반환 |
사용 예시
# Click a button described by its visual label
/vision-click "the blue Submit button"
# Click on a specific icon
/vision-click "the gear icon in the top-right corner"
# Right-click on a file in Finder
/vision-click --right "the README.md file"
# Describe what is currently visible
/vision-click --describe
"이 버튼 클릭해줘" -- 비전을 사용하여 설명된 버튼 클릭
"화면에서 저장 버튼 찾아서 눌러줘" -- 화면에서 저장 버튼을 찾아 클릭
"지금 화면에 뭐가 보여?" -- 현재 화면 내용 설명
"오른쪽 위에 있는 설정 아이콘 클릭해줘" -- 오른쪽 상단의 설정 아이콘 클릭
vision-click과 browser 선택 기준
| 시나리오 | 권장 스킬 | 이유 |
|---|---|---|
| 알려진 DOM 요소 클릭 | browser | CSS 선택자를 사용하면 더 빠르고 안정적 |
| canvas 또는 iframe 내부 클릭 | vision-click | DOM 선택자로는 canvas 렌더링 콘텐츠에 접근 불가 |
| 데스크톱 앱 상호작용 | vision-click | 브라우저 외부에서는 DOM을 사용할 수 없으므로 유일한 방법 |
| 선택자가 불안정한 동적 UI | vision-click | 시각적 식별이 취약한 선택자보다 더 견고함 |
| 빠른 반복 작업 | browser | CDP 명령이 스크린샷 왕복보다 더 빠름 |
browser 스킬을 사용하세요.
web-routing
프로그래밍 방식의 HTTP 요청 라우팅 및 인터셉션 스킬입니다. 웹 트래픽을 리디렉션, 재작성, 차단 또는 변환할 수 있는 요청 핸들러를 구성합니다. 로컬 개발 프록시, API 모킹, 트래픽 셰이핑에 유용합니다.
| 속성 | 값 |
|---|---|
| Skill ID | web-routing |
| 카테고리 | Automation |
| 계층 | HTTP 요청/응답 인터셉션 |
| 범위 | URL 패턴 매칭, 헤더 조작, 본문 변환 |
라우팅 규칙
| 규칙 유형 | 설명 | 예시 |
|---|---|---|
| Redirect | 매칭되는 요청을 다른 URL로 전송 | /api/* -> http://localhost:8080/api/* |
| Rewrite | 리디렉션 없이 요청 경로를 수정 | /v2/* -> /v1/* |
| Block | 매칭되는 요청에 오류 반환 | 모든 *.tracking.com 요청 차단 |
| Mock | 정적 또는 동적 응답 반환 | GET /api/users에 JSON 픽스처 반환 |
| Transform | 요청 또는 응답의 헤더/본문 수정 | 모든 API 호출에 Authorization 헤더 추가 |
사용 예시
# Redirect API calls to local dev server
/web-routing add /api/* -> http://localhost:8080/api/*
# Mock a specific endpoint with a JSON response
/web-routing mock GET /api/users '[{"id":1,"name":"Test"}]'
# Block tracking requests
/web-routing block *.analytics.com
# Add auth header to all outgoing API requests
/web-routing transform /api/* --header "Authorization: Bearer $TOKEN"
# List active routing rules
/web-routing list
# Remove a routing rule
/web-routing remove /api/*
"API 요청을 로컬 서버로 돌려줘" -- API 요청을 localhost로 리디렉션
"이 엔드포인트 목업 데이터로 응답해줘" -- 엔드포인트를 픽스처 데이터로 모킹
"트래킹 스크립트 차단해줘" -- 트래킹 도메인 요청 차단
"모든 API 요청에 인증 헤더 추가해줘" -- API 트래픽에 인증 헤더 추가
패턴 매칭
라우트 패턴은 글로브 구문을 지원하며 경로, 호스트, 메서드, 헤더를 기준으로 매칭할 수 있습니다.
# Glob patterns
/api/* # matches /api/users, /api/posts/1, etc.
/api/users/:id # named parameter capture
*.example.com # subdomain wildcard
# Method-specific routes
GET /api/users # only match GET requests
POST /api/users # only match POST requests
# Header-based matching
/api/* [Content-Type: application/json] # match by header
스킬 비교
작업에 적합한 자동화 스킬을 선택하세요.
| 기능 | browser | vision-click | web-routing |
|---|---|---|---|
| 대상 | Chrome DOM | 화면에 보이는 모든 UI | HTTP 트래픽 |
| 프로토콜 | CDP | 스크린샷 + 비전 | HTTP 인터셉션 |
| 속도 | 빠름 | 느림 (모델 추론) | 빠름 |
| 선택자 유형 | CSS / XPath | 시각적 설명 | URL 패턴 |
| 범위 | 브라우저 전용 | 브라우저 + 데스크톱 앱 | 네트워크 계층 |
| 사전 요구사항 | 브라우저 서버 실행 중 | 비전 모델 접근 가능 | 없음 |
일반적인 패턴
스크래핑 및 추출
browser 스킬과 콘텐츠 추출을 결합하여 웹 페이지에서 구조화된 데이터를 가져옵니다.
# Open the target page
/browser open https://news.example.com
# Extract all article titles
/browser eval "Array.from(document.querySelectorAll('h2.title')).map(el => el.textContent)"
# Take a screenshot for reference
/browser screenshot
폼 자동화
입력 및 클릭 명령을 연결하여 폼을 작성하고 제출합니다.
# Navigate to login page
/browser open https://app.example.com/login
# Fill in credentials
/browser type "#email" "user@example.com"
/browser type "#password" "secretpassword"
# Submit the form
/browser click "#login-btn"
# Wait for navigation and verify
/browser wait "nav.dashboard"
/browser screenshot
데스크톱 앱 + 브라우저 조합
하이브리드 워크플로우에서 데스크톱 앱 요소에는 vision-click을, 웹 콘텐츠에는 browser를 사용합니다.
# Click "Open in Browser" in a desktop app
/vision-click "the Open in Browser button"
# Switch to browser skill for DOM-level control
/browser wait ".main-content"
/browser extract ".main-content" text