Great Clips — Printing Press CLI
사전 요구 사항: CLI 설치
이 스킬은 greatclips-pp-cli 바이너리를 구동합니다. 이 스킬의 명령어를 호출하기 전에 반드시 CLI가 설치되어 있는지 확인해야 합니다. 설치되어 있지 않다면 먼저 설치하세요:
- Printing Press 설치 프로그램을 통해 설치합니다. macOS/Linux에서는 기본적으로
$HOME/.local/bin에, Windows에서는%LOCALAPPDATA%\Programs\PrintingPress\bin에 바이너리가 설치됩니다:npx -y @mvanhorn/printing-press-library install greatclips --cli-only - 확인:
greatclips-pp-cli --version - 보고된 설치 디렉토리가 이 스킬을 호출할 에이전트/런타임의
$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 | 인증 필요 |
| 5 | API 오류 (업스트림 문제) |
| 7 | 속도 제한 (대기 후 재시도) |
| 10 | 설정 오류 |
인수 파싱
$ARGUMENTS 파싱:
- 비어 있음,
help, 또는--help→greatclips-pp-cli --help출력 표시 install로 시작 →mcp로 끝나면 MCP 설치; 그렇지 않으면 → 위의 사전 요구 사항 참조- 그 외 → 직접 사용 (
--agent와 함께 CLI 명령어로 실행)
MCP 서버 설치
이 CLI의 게시된 공개 라이브러리 항목 또는 사전 빌드된 릴리스에서 MCP 바이너리를 설치한 후 등록하세요:
claude mcp add greatclips-pp-mcp -- greatclips-pp-mcp
확인: claude mcp list
직접 사용
- 설치 확인:
which greatclips-pp-cli찾을 수 없으면 설치를 제안합니다 (이 스킬 상단의 사전 요구 사항 참조). - 사용자 쿼리를 위의 고유 기능 및 명령어 참조에서 가장 적합한 명령어에 매핑합니다.
--agent플래그와 함께 실행합니다:greatclips-pp-cli <command> [subcommand] [args] --agent- 모호한 경우 하위 명령어 도움말로 드릴다운:
greatclips-pp-cli <command> --help.