mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-06-24 02:04:11 +00:00
* feat: add catchtable-sniper skill * Make the Catchtable skill loadable and discoverable The submitted skill landed under skills/ without YAML frontmatter, which broke the repo's auto-discovery contract and Codex skill loading. Move it to the root-level skill layout, add the required metadata block, and document the feature in the main README plus a dedicated guide so the PR ships in a usable state. Constraint: This repository auto-discovers skills from root-level directories only Constraint: Skill manifests must start with YAML frontmatter for Codex to load them Rejected: Keep the nested skills/catchtable-sniper layout | validate-skills and the repo's documented convention reject it Rejected: Add only README links without a feature guide | would create a broken documentation target Confidence: high Scope-risk: narrow Reversibility: clean Directive: Future skill PRs should follow docs/adding-a-skill.md and place each skill in its own root directory Tested: node --test scripts/skill-docs.test.js Tested: ./scripts/validate-skills.sh Tested: git diff --check Not-tested: End-to-end Catchtable reservation completion on a logged-in account --------- Co-authored-by: Jeffrey (Dongkyu) Kim <vkehfdl1@gmail.com>
90 lines
3.7 KiB
Markdown
90 lines
3.7 KiB
Markdown
# 캐치테이블 예약 스나이핑 가이드
|
|
|
|
## 이 기능으로 할 수 있는 일
|
|
|
|
- 로그인된 Chrome 세션을 재사용해 캐치테이블 예약 페이지 진입
|
|
- 원하는 식당의 취소 슬롯/빈자리 폴링
|
|
- 여러 식당을 순차 감시하다가 먼저 열린 슬롯에 예약 시도
|
|
- 예약 오픈 시간에 맞춘 오픈런 시도
|
|
- dry-run 모드로 빈자리 발견까지만 알리고 최종 예약은 사용자에게 넘기기
|
|
|
|
## 먼저 알아둘 점
|
|
|
|
- 이 기능은 **Chrome MCP + 로그인된 캐치테이블 세션**이 있어야만 동작한다.
|
|
- 카카오/네이버 로그인 자동화는 하지 않는다.
|
|
- 결제 정보 자동 입력은 하지 않는다.
|
|
- 선결제 매장은 결제 단계에서 반드시 사용자가 직접 확인해야 한다.
|
|
- 서버 부하를 줄이기 위해 폴링 간격은 **30초 이상**으로 유지한다.
|
|
|
|
## 입력 형태
|
|
|
|
다음 정보를 자연어에서 추출해 사용한다.
|
|
|
|
- 식당명 또는 캐치테이블 URL
|
|
- 날짜 또는 날짜 범위
|
|
- 인원 수
|
|
- 시간대(선택)
|
|
- dry-run 여부
|
|
- 인원 유연 매칭 여부
|
|
- 예약 오픈 시각(오픈런 모드일 때)
|
|
|
|
예시:
|
|
|
|
- `온지음 5월 토요일 저녁 2인 빈자리 나오면 예약해줘`
|
|
- `온지음, 밍글스, 라연 중 5월 주말 2인 아무데나 먼저 뜨는 거 잡아줘`
|
|
- `라연 5월 예약 오픈이 4월 30일 오전 10시야, 그때 맞춰 2인 잡아줘`
|
|
- `밍글스 빈자리 뜨면 예약은 내가 할게, dry-run으로`
|
|
- `https://app.catchtable.co.kr/ct/shop/mingles 토요일 4명 자동예약`
|
|
|
|
## 동작 흐름
|
|
|
|
1. 캐치테이블 홈 또는 식당 페이지에 접속한다.
|
|
2. 로그인 상태를 확인한다.
|
|
3. 오픈런 모드면 지정 시각까지 대기 후 즉시 예약을 시도한다.
|
|
4. 일반 스나이핑 모드면 30초 간격으로 새로고침/재조회하며 슬롯을 감시한다.
|
|
5. 슬롯이 열리면 날짜/인원/시간을 선택하고 예약 흐름으로 진입한다.
|
|
6. 무료 예약이면 최종 예약 버튼까지 진행하고, 선결제 매장이면 결제 직전 단계에서 사용자 확인을 요구한다.
|
|
|
|
## 멀티 타겟 / 인원 유연 모드
|
|
|
|
### 멀티 타겟
|
|
|
|
- 여러 식당을 순차적으로 감시한다.
|
|
- 한 곳에서 예약 가능한 슬롯을 발견하면 나머지 감시는 즉시 중단한다.
|
|
|
|
### 인원 유연 매칭
|
|
|
|
- 예를 들어 2인 자리가 없을 때 4인 자리를 대안으로 확인할 수 있다.
|
|
- 대안 인원 슬롯을 발견하면 사용자에게 확인을 받고 다음 단계로 진행한다.
|
|
|
|
## dry-run 모드
|
|
|
|
`알림만`, `dry-run` 같은 표현이 있으면 예약 완료 대신 다음까지만 수행한다.
|
|
|
|
- 빈자리 발견
|
|
- 식당/날짜/시간/인원 요약
|
|
- 사용자가 직접 예약할 수 있도록 알림
|
|
|
|
## 제한사항
|
|
|
|
- 로그인 자동화 없음
|
|
- 카드/간편결제 정보 자동 입력 없음
|
|
- 캐치테이블 외 예약 플랫폼 미지원
|
|
- UI 변경 시 selector/흐름이 깨질 수 있음
|
|
|
|
## 검증 메모
|
|
|
|
2026-04-22 기준 로컬 검증에서 다음을 확인했다.
|
|
|
|
- 캐치테이블 식당 페이지 진입
|
|
- 예약 가능한 식당에서 날짜/인원/시간 선택
|
|
- 방문 확인 단계 진입
|
|
- 결제 방식 선택 단계 진입
|
|
|
|
다만 최종 예약 완료는 **로그인된 캐치테이블 세션이 없는 Chrome 프로필**에서는 검증할 수 없었다. 이 기능의 최종 성공 여부는 로그인된 사용자 세션과 실시간 좌석 상황에 직접 의존한다.
|
|
|
|
## 원칙
|
|
|
|
- 사용자의 로그인 자격 증명을 새 env var나 repo 문서에 추가하지 않는다.
|
|
- 사용자가 이미 로그인해 둔 브라우저 세션만 재사용한다.
|
|
- 결제나 취소 수수료가 얽힌 단계에서는 사용자 확인을 우선한다.
|