
Catchtable Sniper
Watch Catchtable (Korea) for canceled reservation slots on a logged-in Chrome session and book or notify you when a target restaurant opens.
Overview
catchtable-sniper is an agent skill for the Build phase that monitors Catchtable reservation slots via Chrome MCP and books or alerts on your logged-in browser session.
Install
npx skills add https://github.com/nomadamas/k-skill --skill catchtable-sniperWhat is this skill?
- Polls Catchtable every 30 seconds for open slots on logged-in app.catchtable.co.kr
- Multi-target monitoring, reservation open-run timing, flexible party size matching, and dry-run notify-only mode
- Parses natural Korean requests (restaurant name, date, party size, shop URLs)
- Uses existing Chrome login session—no credential handoff to the skill
- Stops with a clear message if Catchtable is not logged in (no login automation)
- Default polling interval of 30 seconds (not faster, to limit server load)
- Supports multi-target, open-run, flexible party size, and dry-run modes
Adoption & trust: 1.3k installs on skills.sh; 5.4k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
High-demand Seoul restaurants release Catchtable slots unpredictably and you cannot manually refresh every few seconds.
Who is it for?
Korea-based builders comfortable pre-logging into Catchtable in Chrome who want agent-driven sniping for named restaurants and dates.
Skip if: Users who need login automation, automatic payment on prepaid venues, sub-30-second polling, or bookings outside Catchtable.
When should I use this skill?
When you ask the agent to watch Catchtable for specific restaurants, dates, or shop URLs with auto-book or notify-only behavior.
What do I get? / Deliverables
The agent watches configured targets on a 30-second cadence and completes or signals a reservation when a matching slot appears, stopping cleanly if login or payment needs a human.
- Reservation attempt or user notification when a matching slot opens
- Explicit stop message if Catchtable session is not authenticated
Recommended Skills
Journey fit
Browser-session automation against a live booking site is an integration pattern builders reuse for other MCP-driven workflows. Integrations is the shelf for agent skills that orchestrate external apps via Chrome MCP rather than your product codebase.
How it compares
A session-based browser integration skill, not a public Catchtable API or headless credential bot.
Common Questions / FAQ
Who is catchtable-sniper for?
Agents users in Korea (ko-KR) who already use Chrome MCP and want automated Catchtable slot watching for specific restaurants or multi-target weekend plans.
When should I use catchtable-sniper?
During build integrations experiments when prototyping browser MCP automations, or personally when you have a logged-in Catchtable session and a concrete date, party size, and restaurant list.
Is catchtable-sniper safe to install?
It drives your browser against a third-party site and never receives passwords, but you should review the Security Audits panel on this Prism page and avoid sharing payment flows with the agent.
SKILL.md
READMESKILL.md - Catchtable Sniper
# catchtable-sniper ## 📋 기본 정보 - **스킬명**: catchtable-sniper - **라이선스**: MIT - **단계**: v1 - **카테고리**: lifestyle / food - **로케일**: ko-KR - **요구사항**: Chrome MCP, 캐치테이블 로그인된 Chrome 세션 --- ## 🎯 주요 기능 캐치테이블에서 원하는 식당의 빈자리(취소 슬롯)를 30초 간격으로 감시하다가 발견하는 즉시 자동 예약합니다. 멀티 타겟 동시 감시, 예약 오픈런 모드, 인원 유연 매칭, Dry-run 알림 전용 모드를 지원합니다. --- ## ✅ 적합한 사용 사례 - `"온지음 5월 토요일 저녁 2인 빈자리 나오면 예약해줘"` - `"온지음, 밍글스, 라연 중 5월 주말 2인 아무데나 먼저 뜨는 거 잡아줘"` ← 멀티 타겟 - `"라연 5월 예약 오픈이 4월 30일 오전 10시야, 그때 맞춰서 잡아줘"` ← 오픈런 모드 - `"스시야마 이번달 안에 2인 — 못 잡으면 4인 있으면 알려줘"` ← 인원 유연 - `"밍글스 빈자리 뜨면 예약은 내가 할게 알림만 줘"` ← Dry-run 모드 - `"https://app.catchtable.co.kr/ct/shop/mingles 토요일 4명 자동예약"` --- ## ❌ 부적합한 사용 사례 - 로그인 자동화 (카카오/네이버 로그인은 직접 해야 함) - 선결제 식당의 결제 정보 자동 입력 (결제 단계는 사람이 직접) - 캐치테이블 외 플랫폼 예약 (네이버 예약, 식신 등) - 30초 미만 폴링 간격 (서버 부하 방지) --- ## 🔧 기술 요구사항 - **Chrome MCP** 연결 필수 - 캐치테이블(`app.catchtable.co.kr`)에 **로그인된 Chrome 세션** 필요 - 별도 API 키, 패키지 설치 불필요 --- ## 🔐 인증 처리 이 스킬은 이미 Chrome에 로그인된 세션을 그대로 사용합니다. 로그인 정보를 스킬에 전달하지 않습니다. 로그인 안 된 경우: ``` "캐치테이블에 로그인되어 있지 않습니다. Chrome에서 캐치테이블에 카카오/네이버 로그인 후 다시 실행해주세요." ``` → 스킬 중단. 로그인 자동화 없음. --- ## 🗂️ 입력 파싱 사용자 입력에서 다음을 추출한다: | 항목 | 예시 | 필수 여부 | |------|------|----------| | 식당명 또는 URL | `"온지음"` / `app.catchtable.co.kr/ct/shop/onjium` | 필수 (복수 가능) | | 날짜 | `"5월 3일"`, `"이번 주 토요일"`, `"5월 주말 전체"` | 필수 | | 인원 | `"2명"`, `"4인"` | 필수 | | 시간대 | `"저녁"`, `"19시 이후"` | 선택 (없으면 전체) | | 모드 | `"알림만"`, `"dry-run"` | 선택 (없으면 자동예약) | | 인원 유연 | `"2인 없으면 4인도 괜찮아"` | 선택 | | 오픈 시간 | `"4월 30일 오전 10시 오픈"` | 선택 (오픈런 모드) | | 폴링 간격 | `"30초마다"` | 선택 (기본: 30초) | **멀티 타겟 감지**: 식당명이 쉼표/슬래시로 구분되거나 "중 아무데나", "먼저 뜨는 거" 표현이 있으면 멀티 타겟 모드로 전환. --- ## 📊 실행 플로우 ### STEP 1 — 브라우저 준비 및 로그인 확인 Chrome MCP로 캐치테이블 접속: ``` navigate: https://app.catchtable.co.kr ``` MY 탭에서 로그인 상태 확인. 미로그인 시 중단. --- ### STEP 2 — 모드 분기 ``` 입력 파싱 완료 ├─ 오픈 시간 명시됨 → STEP 2-A (오픈런 모드) └─ 오픈 시간 없음 → STEP 2-B (취소 스나이핑 모드) ``` #### STEP 2-A: 오픈런 모드 예약 오픈 시간까지 대기: ``` [10:00:00 오픈 예정] 현재 09:58:42 — 77초 후 오픈 [10:00:00] ✅ 오픈 시각 도달 — 즉시 예약 시도 ``` 오픈 시각 정각에 날짜 선택 → 슬롯 클릭 → 예약 폼 진입. 슬롯이 이미 마감이면 → 취소 스나이핑 모드(STEP 2-B)로 자동 전환. #### STEP 2-B: 취소 스나이핑 모드 (폴링 루프) ``` while 빈자리 없음: {폴링 간격}초 대기 페이지 새로고침 또는 날짜 재클릭 슬롯 파싱 빈자리 발견 → STEP 3 ``` --- ### STEP 3 — 멀티 타겟 처리 **단일 타겟**: 해당 식당 슬롯 확인. **멀티 타겟**: 지정된 식당들을 순차 순회하며 슬롯 확인. ``` [14:23:15] 온지음 5/3 확인 중... 없음 [14:23:17] 밍글스 5/3 확인 중... 없음 [14:23:19] 라연 5/3 확인 중... 없음 (30초 후 재시도) [14:23:49] ✅ 밍글스 5/3 19:30 빈자리 발견! — 예약 시작 ``` 한 곳에서 슬롯 발견 시 나머지 감시 즉시 중단 → 발견된 식당 예약 진행. --- ### STEP 4 — 인원 유연 매칭 지정 인원(예: 2인) 슬롯이 없을 경우: ``` if 인원_유연 == True: 대안_인원(예: 4인) 슬롯 확인 발견 시: "2인 슬롯은 없지만 4인 슬롯(19:00)이 있습니다. 4인으로 예약할까요? (예/아니오)" → 사용자 확인 후 진행 ``` --- ### STEP 5 — 예약 진행 (모드 분기) **Dry-run 모드** (`"알림만"` / `"dry-run"` 입력 시): ``` ✅ 빈자리 발견! 예약은 진행하지 않습니다. 식당: 밍글스 날짜: 5월 3일(토) 시간: 19:30 인원: 2명 → 지금 바로 예약하시겠습니까? (예/아니오) ``` → 예약 여부는 사람이 결정. **자동예약 모드** (기본): 빈 슬롯 버튼 즉시 클릭 → 예약 폼 진입. 폼 자동 입력: - 인원수: 지정한 인원 선택 - 방문 목적: "식사" (기본값) - 주의사항 동의: 전체 동의 체크 - 예약자 정보: 앱 저장 정보 자동 사용 **선결제 식당인 경우**: ``` "빈자리를 발견했습니다! 결제가 필요합니다. 결제 금액: {금액}원 지금 결제를 진행할까요? (예/아니오)" ``` → 결제 정보 자동 입력 없음. 사용자 확인 후 결제 진행. **무료 예약**: "예약하기" 최종 확인 버튼 클릭. --- ### STEP 6 — 완료 확인 ``` 🎉 예약 완료! 식당: {식당명} 날짜: {날짜} 시간: {시간} 인원: {인원}명 모드: {자동예약 / Dry-run} 예약번호: {예약번호} 캐치테이블 앱 > MY > 예약내역에서 확인 가능합니다. ``` --- ## 💡 중간 상태 출력 형식 ``` [14:23:15] 밍글스 5/3 저녁 슬롯 확인 중... 빈자리 없음 (30초 후 재시도) [14:23:45] 온지음 5/3 저녁 슬롯 확인 중... 빈자리 없음 [14:24:15] ✅ 밍글스 5/3 19:30 (2인) 빈자리 발견! — 예약 시작 ``` --- ## ⚙️ 설정값 | 항목 | 기본값 | 범위 | |------|--------|------| | 폴링 간격 | 30초 | 30초 이상 | | 최대 감시 시간 | 2시간 | — | | 멀티 타겟 최대 수 | 5개 | — | 2시간 초과 시: ``` "2시간 동안 빈자리가 없었습니다