Communitygithub.com

mvanhorn/printing-press-library

Great Clips 온라인 체크인을 위한 첫 번째 CLI: 모든 엔드포인트 형태와 호스트 라우트 제공, 쿠키 설정 후 실제 호출 가능. 트리거 구문: `great clips wait time`, `check me into great clips`, `how long is the wait at great clips`, `add me and my kids to the great clips wait list`, `great clips request shape`, `use greatclips`, `run greatclips`.

printing-press-library란 무엇인가요?

이 스킬은 Great Clips 온라인 체크인 SPA(SPA)가 사용하는 정확한 HTTP 요청을 명령줄에서 보낼 수 있도록 하는 `greatclips-pp-cli` CLI 바이너리를 구동합니다. v0.1 버전은 모든 엔드포인트의 요청 형태와 호스트 라우팅 정보를 제공하여 에이전트가 그 위에 워크플로우를 구축할 수 있게 해주며, 실제 API 호출을 위해서는 로그인된 Chrome 세션에서 수동으로 쿠키를 캡처해야 합니다. 이 CLI는 `--dry-run`, `--json` 출력을 지원하며, 발견적 신호는 브라우저 관찰 트래픽 컨텍스트를 기반으로 생성되어 9개의 API 항목을 커버합니다. 주요 기능으로는 체크인 제출, 취소, 대기 시간 확인, 고객 프로필 조회, 미용실 검색 및 영업 시간 확인 등이 있으며, 자연어 기반 명령 탐색을 위한 `which` 명령어와 피드백 기록을 위한 `feedback` 명령어도 포함되어 있습니다. Cursor, Claude Code 등 다양한 플랫폼에서 사용될 수 있도록 설계되었습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mvanhorn/printing-press-library/tree/HEAD/cli-skills/pp-greatclips

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Great Clips — Printing Press CLI

사전 요구 사항: CLI 설치

이 스킬은 greatclips-pp-cli 바이너리를 구동합니다. 이 스킬의 명령어를 호출하기 전에 반드시 CLI가 설치되어 있는지 확인해야 합니다. 설치되어 있지 않다면 먼저 설치하세요:

  1. Printing Press 설치 프로그램을 통해 설치합니다. macOS/Linux에서는 기본적으로 $HOME/.local/bin에, Windows에서는 %LOCALAPPDATA%\Programs\PrintingPress\bin에 바이너리가 설치됩니다:
    npx -y @mvanhorn/printing-press-library install greatclips --cli-only
    
  2. 확인: greatclips-pp-cli --version
  3. 보고된 설치 디렉토리가 이 스킬을 호출할 에이전트/런타임의 $PATH에 있는지 확인하세요.

npx 설치가 실패하면(Node 미설치, 오프라인 등), 직접 Go 설치로 대체하세요(Go 1.26.6 이상 필요):

go install github.com/mvanhorn/printing-press-library/library/other/greatclips/cmd/greatclips-pp-cli@latest

설치 후 --version이 "command not found"를 보고하면 런타임이 $PATH에서 바이너리 디렉토리를 찾을 수 없는 것입니다. 확인이 성공할 때까지 스킬 명령어를 진행하지 마세요.

이 CLI를 사용해야 하는 경우

이 CLI를 사용하여 Great Clips 온라인 체크인 SPA가 보내는 정확한 HTTP 요청을 명령줄에서 보내고, dry-run 및 --json 출력을 지원합니다. v0.1은 모든 엔드포인트의 요청 형태를 제공하여 에이전트가 그 위에 워크플로우를 구축할 수 있게 합니다. 실제 호출을 위해서는 로그인된 Chrome 세션에서 수동으로 쿠키를 캡처해야 합니다.

HTTP 전송

이 CLI는 브라우저 대상 엔드포인트에 대해 Chrome 호환 HTTP 전송을 사용합니다. 일반 API 호출을 위해 상주 브라우저 프로세스가 필요하지 않습니다.

발견 신호

이 CLI는 브라우저에서 관찰된 트래픽 컨텍스트로 생성되었습니다.

  • 캡처 범위: 총 22개의 네트워크 항목 중 9개의 API 항목
  • 프로토콜: (0% 신뢰도), (0% 신뢰도), (0% 신뢰도)
  • 생성 힌트: 두 호스트 단일 인증: webservices.greatclips.com과 www.stylewaretouch.net을 모두 처리하는 bearer-token 클라이언트 하나를 생성합니다. POST /api/store/waitTime은 단일 객체가 아닌 {storeNumber} 객체의 JSON 배열 본문을 사용합니다. 단일 미용실 호출은 길이가 1인 배열을 보냅니다. 인증은 로그인된 Chrome 세션에서 Claude-in-Chrome MCP를 통해 실시간으로 캡처되었습니다. 인쇄된 CLI에는 동등한 흐름을 위한 auth login --chrome 도우미 명령어가 포함되어야 합니다.

명령어 참조

cancel — 활성 체크인 취소

  • greatclips-pp-cli cancel — 이 계정의 활성 체크인 취소

checkin — 본인 및 일행(1-5명)의 체크인 제출

  • greatclips-pp-cli checkin — 본인 및 선택적으로 다른 일행을 미용실 대기자 명단에 추가

customer — Great Clips 고객 프로필 조회(이름, 전화번호, 즐겨찾기, 최근 방문)

  • greatclips-pp-cli customer — 인증된 고객의 프로필 가져오기

geo — 우편번호 또는 도시명을 위도/경도로 변환

  • greatclips-pp-cli geo — 우편번호를 위도/경도/도시/주로 변환

hours — 미용실 영업 시간 조회(오늘 + 특별 시간 포함 14일 예측)

  • greatclips-pp-cli hours — 한 미용실의 14일 영업 시간 예측 가져오기

salons — Great Clips 미용실 검색 및 조회

  • greatclips-pp-cli salons get — 미용실 번호로 단일 미용실 조회
  • greatclips-pp-cli salons search — 우편번호, 도시 또는 좌표를 기준으로 반경 내 미용실 검색

status — 활성 체크인의 현재 대기 순서 확인

  • greatclips-pp-cli status — 활성 체크인 상태 확인 (대기 순서, 예상 대기 시간)

wait — ICS Net Check-In 서비스의 예상 대기 시간 조회

  • greatclips-pp-cli wait — 한 미용실의 대기 시간 가져오기 (본문은 {storeNumber}의 단일 요소 배열)

올바른 명령어 찾기

원하는 작업은 알지만 어떤 명령어가 수행하는지 모를 때는 CLI에 직접 물어보세요:

greatclips-pp-cli which "<자신의 말로 설명할 기능>"

which는 자연어 기능 쿼리를 이 CLI의 선별된 기능 인덱스에서 가장 일치하는 명령어로 변환합니다. 종료 코드 0은 최소 하나 이상 일치함을 의미하고, 종료 코드 2는 자신 있는 일치 항목이 없음을 의미합니다. --help로 대체하거나 더 좁은 쿼리를 사용하세요.

레시피

4인 체크인 요청 본문

greatclips-pp-cli checkin --first-name Matt --last-name VanHorn --phone-number '(206) 555-0100' --salon-number 8991 --guests 4 --dry-run --json

Island Square 지점에 4인 일행으로 POST되는 www.stylewaretouch.net/api/customer/checkIn의 정확한 JSON 본문을 출력합니다.

미용실 대기 시간 요청

greatclips-pp-cli wait --store-number 8991 --dry-run --json

ICS Net Check-In waitTime 엔드포인트의 요청 형태입니다.

우편번호 주변 미용실 검색

greatclips-pp-cli salons search --term 98040 --radius 5 --dry-run --json

반경 5마일 내 미용실 검색/term 엔드포인트의 요청 형태입니다.

14일 영업 시간 예측

greatclips-pp-cli hours --salon 8991 --dry-run

한 미용실의 salon-hours/upcoming을 호출합니다. 응답에는 특별 시간 및 공휴일 휴무가 포함됩니다.

우편번호 지오코딩

greatclips-pp-cli geo --query 98040 --dry-run --json --select results.city,results.state,results.lat,results.lng

geo-names 엔드포인트를 통해 우편번호를 위도/경도/도시/주로 변환합니다.

인증 설정

Great Clips는 cid.greatclips.com의 Auth0 테넌트에서 HttpOnly 세션 쿠키를 사용합니다. 브라우저 스니핑을 통해 모든 호출이 Authorization 헤더가 아닌 브라우저가 첨부한 쿠키를 통해 성공함을 확인했습니다. v0.1의 이 CLI는 요청 형태와 호스트 라우팅을 제공합니다. 실제 호출을 하려면 로그인된 Chrome 세션의 쿠키를 ~/.config/greatclips-pp-cli/config.toml에 붙여넣으세요. doctor가 통과할 수 있도록 GREATCLIPS_TOKEN을 임의의 값으로 설정하세요(이 환경 변수는 v0.2에서 bearer 지원이 도입될 경우를 대비해 유지됩니다).

greatclips-pp-cli doctor를 실행하여 설정을 확인하세요.

에이전트 모드

모든 명령어에 --agent를 추가하세요. 다음으로 확장됩니다: --json --compact --no-input --no-color --yes.

  • 파이프 가능 — JSON은 stdout으로, 오류는 stderr로 출력

  • 필터 가능 — --select는 필드 서브셋을 유지합니다. 점으로 구분된 경로는 중첩 구조로 내려가고, 배열은 요소별로 순회합니다. 상세한 API에서 컨텍스트를 작게 유지하는 데 필수적입니다:

    greatclips-pp-cli salons get --num example-value --agent --select id,name,status
    
  • 미리보기 가능 — --dry-run은 요청을 보내지 않고 표시

  • 비대화형 — 프롬프트 없음, 모든 입력은 플래그

  • 명시적 재시도 — 이미 존재하는 생성을 성공으로 간주해야 하는 경우에만 --idempotent 사용

에이전트 피드백

사용자(또는 에이전트)가 이 CLI에서 문제점을 발견하면 기록하세요:

greatclips-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
greatclips-pp-cli feedback --stdin < notes.txt
greatclips-pp-cli feedback list --json --limit 10

항목은 ~/.greatclips-pp-cli/feedback.jsonl에 로컬로 저장됩니다. GREATCLIPS_FEEDBACK_ENDPOINT가 설정되어 있고 --send가 전달되거나 GREATCLIPS_FEEDBACK_AUTO_SEND=true인 경우가 아니면 POST되지 않습니다. 기본 동작은 로컬 전용입니다.

놀랐던 점을 작성하세요, 버그 리포트가 아닙니다. 짧고, 구체적이며, 한 줄로 작성하세요: 그것이 누적되는 부분입니다.

출력 전달

모든 명령어는 --deliver <sink>를 허용합니다. 출력은 stdout에 추가로(또는 대신하여) 지정된 싱크로 전달되므로, 에이전트가 수동 파이프 없이 명령어 결과를 라우팅할 수 있습니다. 세 가지 싱크가 지원됩니다:

싱크효과
stdout기본값; stdout에만 쓰기
file:<path>출력을 <path>에 원자적으로 쓰기 (임시 파일 + 이름 변경)
webhook:<url>출력 본문을 URL에 POST (application/json 또는 --compact일 경우 application/x-ndjson)

알 수 없는 스키마는 지원되는 세트를 명명하는 구조화된 오류와 함께 거부됩니다. 웹훅 실패는 0이 아닌 값을 반환하고 stderr에 URL + HTTP 상태를 기록합니다.

명명된 프로필

프로필은 저장된 플래그 값 세트로, 여러 호출에 걸쳐 재사용됩니다. 예약된 에이전트가 동일한 구성으로 매번 같은 명령어를 호출할 때 사용하세요 - HeyGen의 "Beacon" 패턴입니다.

greatclips-pp-cli profile save briefing --json
greatclips-pp-cli --profile briefing salons get --num example-value
greatclips-pp-cli profile list --json
greatclips-pp-cli profile show briefing
greatclips-pp-cli profile delete briefing --yes

명시적 플래그는 항상 프로필 값보다 우선하며, 프로필 값은 기본값보다 우선합니다. agent-context는 available_profiles 아래에 모든 사용 가능한 프로필을 나열하므로, 내부를 들여다보는 에이전트가 런타임에 이를 발견할 수 있습니다.

종료 코드

코드의미
0성공
2사용 오류 (잘못된 인수)
3리소스를 찾을 수 없음
4인증 필요
5API 오류 (업스트림 문제)
7속도 제한 (대기 후 재시도)
10설정 오류

인수 파싱

$ARGUMENTS 파싱:

  1. 비어 있음, help, 또는 --help → greatclips-pp-cli --help 출력 표시
  2. install로 시작 → mcp로 끝나면 MCP 설치; 그렇지 않으면 → 위의 사전 요구 사항 참조
  3. 그 외 → 직접 사용 (--agent와 함께 CLI 명령어로 실행)

MCP 서버 설치

이 CLI의 게시된 공개 라이브러리 항목 또는 사전 빌드된 릴리스에서 MCP 바이너리를 설치한 후 등록하세요:

claude mcp add greatclips-pp-mcp -- greatclips-pp-mcp

확인: claude mcp list

직접 사용

  1. 설치 확인: which greatclips-pp-cli 찾을 수 없으면 설치를 제안합니다 (이 스킬 상단의 사전 요구 사항 참조).
  2. 사용자 쿼리를 위의 고유 기능 및 명령어 참조에서 가장 적합한 명령어에 매핑합니다.
  3. --agent 플래그와 함께 실행합니다:
    greatclips-pp-cli <command> [subcommand] [args] --agent
    
  4. 모호한 경우 하위 명령어 도움말로 드릴다운: greatclips-pp-cli <command> --help.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

mvanhorn/pp-espn

Use this skill whenever the user asks about live sports scores, standings, team stats, game summaries (with box score, leaders, scoring plays, odds, and win probability), NFL / NBA / MLB / NHL / NCAA / MLS / EPL / WNBA games, team schedules, polls, or rankings. ESPN sports CLI with live scores across 10 leagues, offline search, head-to-head comparisons, and rich per-game summary payloads. No API key required. Triggers on natural phrasings like 'what's the score of the Lakers game', 'Patriots schedule this week', 'NFL standings', 'box score for tonight's Mavs game', 'Chiefs vs Eagles head to head', 'who's on top of the AP poll'.

mvanhorn/pp-flight-goat

Search Google Flights, scan Kayak long-haul routes, and join FlightAware AeroAPI reliability, alerts, and tracking from one CLI.

mvanhorn/pp-movie-goat

The movie CLI that combines TMDb's discovery engine with OMDb's multi-source ratings — and ships a SQLite watchlist that flags what's streaming on your services right now. Trigger phrases: `what should I watch tonight`, `where can I stream <title>`, `rate <title>`, `compare <title> and <title>`, `what's <person>'s filmography`, `plan a <franchise> marathon`, `use movie-goat`, `run movie-goat`.

mvanhorn/pp-recipe-goat

Find the best version of any recipe across 37 trusted sites — with offline cookbook, pantry match, substitution lookup, meal planning, and USDA-backed nutrition. Trigger phrases: `find the best recipe for`, `what can I make with`, `substitute for <ingredient>`, `nutrition for <recipe>`, `use recipe-goat`.

관련 스킬