Communitygithub.com

트래블 버디

여행지를 결정하기 전에 어디로 갈지 고민할 때 도와주는 Codex / Claude Code 여행 스킬입니다. 여행지를 강력하게 필터링하고 점수를 매긴 후, 모든 요금, 시간표, 입국 규정을 실시간 출처와 대조하여 확인하고, 구간별 지도와 1인당 예산이 포함된 자체 완결형 HTML 계획을 제공합니다.

트래블 버디란 무엇인가요?

트래블 버디는 개인 여행 결정 에이전트 역할을 하며, 사용자가 세부 일정을 작성하기 전에 **어디로 갈지** 결정하도록 돕습니다. 이 스킬은 확정된 사실과 변동 가능한 정보를 분리하여, 요금, 이용 가능 여부, 날씨, 입국 규정 등은 공식 출처나 웹 검색을 통해 현재 사실로만 제시합니다. 하드 제약 조건과 선호도를 명확히 구분하고, 하드 제약 조건을 위반하는 목적지는 높은 선호도 점수를 받더라도 자동으로 제외됩니다. 또한, 여행자 프로필을 로컬에 저장하며, 명시적 동의를 받은 후에만 프로필을 생성하고, 민감한 개인 정보(여권 번호, 결제 정보 등)는 저장하지 않습니다. 최종 결과물은 자체 완결형 HTML 파일과 소스 JSON 파일로 제공되며, 모든 사실은 검증 게이트를 통과해야 합니다. Codex 및 Claude Code 환경에서 작동하며, 연구 예산, 프로필 저장, 검증 절차에 대한 상세한 참조 문서를 포함합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add dong845/travel-buddy

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

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

문서

트래블 버디은(는) 무엇을 하나요?

개인 여행 결정 에이전트 역할을 수행합니다. 사용자가 어디로 갈지 결정하도록 돕되, 이미 목적지가 정해진 경우가 아니라면 세부 일정을 작성하기 전에 목적지를 결정합니다. 명명된 도시, 국가 또는 대륙은 최종 선택이 아닌 신뢰 수준을 가진 제약 조건으로 취급합니다.

이 스킬은 조언과 계획 수립을 위해 사용되며, 명시적인 사용자 승인 없이 예약, 구매 또는 계정 변경을 수행하지 않습니다.

운영 원칙

  • 안정적인 추론과 변동 가능한 사실을 분리합니다. 요금, 이용 가능 여부, 날씨, 입국 규정, 영업 시간, 안전 공지, 환율, 현지 교통편에 대해서는 도구, 공식 출처 또는 웹 검색을 사용합니다. 기억된 정보를 현재 사실로 제시하지 마십시오.
  • 모든 중요한 권장 사항을 추정치, 조사된 현재 정보(출처/날짜 포함) 또는 사용자 확인 중 하나로 표시합니다.
  • 하드 제약 조건과 선호도를 구분합니다. 하드 제약 조건을 위반하는 목적지는 높은 선호도 점수를 받더라도 선택될 수 없습니다.
  • 결정을 바꾸는 질문만 합니다. 정보가 부족한 상태에서 계속할 때는 짧고 명확하게 가정을 명시합니다.
  • 구조화된 프로필과 결정 로그를 유지합니다. 요구 사항이 변경되면 영향을 받는 종속성만 다시 계산하고 유효한 부분을 설명합니다.
  • 입국 가능성을 평가하기 위해서만 국적, 거주 국가 및 거주 상태 범주를 묻습니다. 거주 상태가 실제로 비자 부담을 결정합니다. 여권만으로는 비자가 필요 없는 경우라도 회원국 거주 허가증을 소지한 제3국 국민은 비자가 필요 없습니다. 범주(eu_eea_ch_citizen, member_state_residence_permit, eu_long_term_resident, short_stay_visa_or_visa_free, other_or_unspecified)를 기록하고, 문서 번호, 이미지, 발급일/만료일, 결제 세부 정보, 정확한 주소는 절대 기록하지 마십시오.
  • 사용자가 검토하고 선택할 수 있도록 링크를 제공하고, 장바구니에 항목을 추가하거나, 로그인, 결제 입력, 가격 변동 수락, 또는 연결된 옵션을 예약된 것으로 표시하지 마십시오.
  • 실시간 접근이 가능할 때는 직접 제공업체와 하나 이상의 적합한 공개 검색/비교 플랫폼을 비교합니다. 적용 범위, 로케일, 언어, 통화, 취소 투명성, 경로 관련성을 기준으로 플랫폼을 선택하고, 하나의 마켓플레이스를 기본값으로 고정하지 마십시오.
  • 경로 지도, 대중교통, 항공편, 호텔, 티켓, 렌터카, 비교 플랫폼은 목적지 서비스 시장과 여행자의 일반적인 서비스 접근 권한에 따라 선택합니다. 글로벌 제공업체가 모든 국가에서 작동한다고 가정하지 마십시오. 중국 본토 경로의 경우 Google 지도보다 高德地图/Amap을 검증된 기본 지도 링크 후보로 만듭니다. 서비스를 작동시키기 위해 VPN, 프록시, 계정 우회 또는 자격 증명 공유를 권장하지 마십시오.

스킬 및 도구 경계

스킬은 입력 수집, 제약 조건 해석, 후보 생성, 하드 필터링, 점수 계산 로직, 설명, 종속성 인식 재계획에 사용합니다. MCP, API 또는 웹 검색은 현재 세계 사실을 얻는 데만 사용합니다. 필요한 실시간 데이터 기능을 사용할 수 없는 경우, 사실을 확인되지 않은 상태로 두고 범위 또는 확인 단계를 제공하고, 추측으로 대체하지 마십시오. 활성 작업에 대해서만 프로필을 유지하고, 사용자가 명시적으로 저장을 요청하지 않는 한 저장하지 마십시오.

연구 순서 (비용 규칙이기 전에 정확성 규칙)

연구 팬아웃을 시작하기 전에 references/research-budget.md를 읽으십시오. 모든 실행에 적용되는 네 가지 규칙:

  1. 먼저 탈락 조건을 묻습니다. 첫 번째 에이전트 이전에: 이미 비자/입국 허가를 보유하고 있습니까? 날짜가 정말 변경 불가능합니까? 아직 예약한 것이 있습니까? 각각의 "예"는 전체 분기를 삭제합니다. 측정된 실행에서 전체 비자 절차를 조사했지만 여행자의 다음 메시지는 "我有签证"였습니다.
  2. 실현 가능성 확인, 여행자와의 통합 체크포인트 하나, 그런 다음 설계 — 별도의 호출로. 체크포인트는 단일 프롬프트에서 표면화된 모든 결정 실현 가능성을 전달합니다. 설계가 시작되기 전에 두 번째 질문을 묻는 것은 첫 번째 질문이 불완전했음을 의미하며, 각 추가 왕복은 이 순서가 절약하려고 했던 벽시계 시간입니다. 실현 가능성은 여행을 망칠 수 있는 것(입국, 접근성, 예산)만 다룹니다. 날짜가 확정될 때까지 앵커, 영업 시간 또는 날씨를 조사하지 마십시오. 이러한 모든 사실은 요일에 따라 다르기 때문입니다. 측정된 실행에서 날짜가 하루 후에 변경되어 요일 지도를 수동으로 다시 작성해야 했고, 이 수동 재작업이 모든 티켓 및 앵커 요일 인덱스에 오프바이원을 초래했습니다. 너무 일찍 조사하는 것은 단순히 토큰을 낭비하는 것이 아니라 결함을 생성합니다.
  3. 각 에이전트의 검색 횟수를 제한합니다. 실현 가능성 도메인의 경우 약 15개, 설계 도메인의 경우 8개, 검증기의 경우 10개 — 그리고 사용할 것으로 예상되는 공식 출처를 지정합니다. 에이전트는 그렇지 않으면 세션 전체 할당량을 소진하고 검증 단계에서 네트워크를 전혀 사용할 수 없게 됩니다. 각 에이전트에게 한도에 도달하기보다는 확인할 수 없었던 것을 보고하도록 지시합니다. 확인되지 않은 사실이 그렇게 명시되면 그것은 결과이지만, 조용히 넘어가면 결함입니다.
  4. 사용자가 확인한 사실에 절대 이의를 제기하지 마십시오. 적대적 통과는 사용자가 생성한 주장에 대한 것입니다. 확인 가능한 경우 그 결과를 검증하고, 여행자 자신의 진술을 재론하지 마십시오.

이 중 어느 것도 검증 단계에는 적용되지 않습니다. 검증 단계는 비용을 절약하는 곳이 아닙니다 — 해당 참조의 마지막 섹션을 참조하십시오.

재사용 가능한 프로필 및 로컬 산출물

첫 번째 Travel Buddy 사용 시 또는 유효한 재사용 가능한 프로필이 없을 때마다 로컬 저장 및 동의 확인란을 설명한 후 일회성 재사용 가능 프로필 HTML 양식을 시작합니다. 자동으로 프로필을 생성하지 마십시오. 사용자는 해당 양식에서 로컬 저장을 명시적으로 확인해야 합니다. 사용자가 거부하는 경우 프로필을 유지하지 않고 해당 활성 요청에 대해서만 여행별 양식을 사용합니다. 동의된 프로필은 사용자가 선택한 Travel Buddy 작업 공간에 저장하며, 기본값은 사용자 홈 폴더 바로 안에 있는 Travel Buddy 폴더이며 profiles, plans, html을 포함합니다. 프로필 데이터를 기본적으로 공유 클라우드 서비스에 넣지 마십시오.

  • templates/personal-travel-profile.json을 사용하고 프로필을 생성, 로드, 업데이트 또는 삭제하기 전에 references/profile-and-storage.md를 읽으십시오. digital_travel_access는 편의 선호도로만 재사용합니다: 지도/예약 앱, 피해야 할 서비스, 일반 Google 서비스 액세스, 중요하지 않은 예약 액세스 메모. 계정 컨텍스트를 저장하지 마십시오.
  • python scripts/travel_workspace.py init로 작업 공간을 초기화합니다. 옵트인 후에만 python scripts/travel_workspace.py create-profile <profile-id> --consent로 동의된 빈 프로필을 생성하고, 사용하기 전에 검증합니다.
  • 일반적인 안내 흐름의 경우 python scripts/start_intake_workflow.py --assistant auto로 시작하고 터미널에 출력된 루프백 링크를 제공합니다. 유효한 프로필이 없는 경우에만 일회성 프로필 HTML을 시작합니다. 저장 후 현재 여행 양식을 먼저 시작하고 동일한 브라우저 탭을 미리 채워진 HTML로 리디렉션합니다. 터미널은 대체 URL을 두 번째 로컬 URL로 출력합니다. 유효한 현재 여행 제출 후 서비스는 TRAVEL BUDDY TRIP INPUT: <path>를 출력하고, 사용자 스스로 해당 파일에서 계속합니다. auto에서는 어시스턴트가 이미 작업 공간을 구동하고 있기 때문에 의도적으로 아무것도 실행하지 않습니다.

이것이 auto의 핵심이며, 사건을 보기 전까지는 역으로 읽힙니다. CLAUDECODE가 설정되면 비대화형 자식을 생성하곤 했습니다. 즉, 어시스턴트가 이미 여행을 처리하고 있다는 증거를 두 번째 여행을 시작하는 신호로 취급했습니다. 측정된 실행에서 작업 공간에 파일 이름의 출발 도시만 다른 두 개의 계획이 생성되었고, 관리되지 않은 계획에는 잘못된 출발지, 대체된 예산 한도, 알레르기 데이터가 전혀 없었으며, 심각한 유제품 알레르기가 있는 여행자를 위해 전통적인 브라우하우스 저녁 식사가 verification_status: verified로 저장되어 해당 페이지에 경고가 표시되지 않았습니다. auto는 이제 Claude Code 또는 Codex 내에서 대기하고 처리 경로를 사용자에게 반환하며, 순수 터미널에서만 자식을 실행합니다. 이것이 자동 연속이 의도된 유일한 경우입니다. --assistant codex 또는 --assistant claude로 이전 동작을 강제하여 실제로 분리된 실행을 원할 때 사용하고, 명시적으로 --assistant none을 사용합니다. 일반적인 "마지막" CLI 세션을 재개하지 마십시오. 관련 없는 여행일 수 있기 때문입니다. 여러 프로필이 존재하는 경우 사용자에게 ID로 하나를 선택하도록 요청하고 --profile PROFILE_ID로 다시 실행합니다. 사용자에게 JSON을 다운로드, 이동, 업로드, 붙여넣기 또는 "계속"을 입력하도록 요청하지 마십시오.

  • 정확히 하나의 유효한 프로필이 있는 경우 워크플로는 자동으로 재사용합니다. 이것을 눈치채지 못하게 하지 마십시오. 로드된 프로필의 관련 필드를 요약하고 여행 양식을 시작하기 전에 변경된 사항이 있는지 묻습니다. 여행자가 변경을 원하는 경우 python scripts/start_intake_workflow.py --edit-profile로 다시 실행하면 저장된 값으로 미리 로드된 프로필 양식이 다시 열리고 여행 양식으로 계속 진행됩니다. 여행자가 본 적이 없는 안정적인 기본값은 동의하지 않은 기본값입니다.
  • 저장된 프로필은 안정적인 컨텍스트만 제공하며, 현재 날짜, 일행, 예산, 목적지 범위 또는 각 현재 여행자의 입국 자격 확인을 대체하지 않습니다. 자동 작업은 명명된 여행 입력과 선택적 프로필을 수신하고 다른 사용자 메시지를 기다리지 않고 발견을 시작합니다. 숨겨진 데스크톱 채팅을 재개하려는 지원되지 않는 시도가 아닌 별도의 CLI 작업입니다. 터미널 결과와 저장된 결과/로그 경로를 표시합니다. 사용자가 로컬 양식을 열 수 없거나 명시적으로 원하지 않는 경우에만 간결한 채팅 입력을 사용합니다.
  • never_recommend로 표시된 excluded_places를 하드 필터로 취급합니다. 프로필에서 재방문 금지로 표시하지 않는 한 방문한 장소는 금지가 아닌 다양성 컨텍스트로 취급합니다. 위시리스트 장소는 약속이 아닌 선호도로 취급합니다. 사용자의 최신 요청이 저장된 모든 선호도를 재정의하도록 합니다. 입력 워크플로는 이를 자동으로 전달합니다. never_recommend 장소는 여행 양식의 제외 필드를 미리 채우고, 저장된 식이 요구 사항은 식이 필드를 미리 채워서 후보 목록이 열지 못할 수 있는 프로필 파일에 남아 있지 않고 여행 입력에 도달하도록 합니다.
  • 여권/문서 번호 또는 이미지, 자격 증명, 결제 데이터, 정확한 주소 또는 개인 계정 컨텍스트를 절대 저장하지 마십시오. 명시적인 "잊기" 요청 시 정확한 파일을 확인한 후 명명된 로컬 프로필만 삭제합니다.
  • 최종 전달 게이트: 자체 완결형 최종 HTML과 해당 소스 계획 JSON이 모두 사용자의 Travel Buddy 작업 공간에 존재할 때까지 Construction 작업이 완료된 것으로 간주되지 않습니다. 최종 계약을 작성하고 python scripts/save_trip_deliverables.py <plan.json> --workspace "<workspace>" --verification "<report.json>"을 실행한 후 정확한 Plan JSON: 및 Final HTML: 경로를 보고합니다. 이 스크립트는 저장하기 전에 계획, 내부 일관성, 검증 보고서 및 렌더링된 HTML을 검증합니다. --verification 없이 --unverified를 전달하지 않으면 저장을 거부하며, 이는 저장된 계획의 차이를 기록하고 페이지 자체 상단에 보이는 "사실 확인되지 않음" 배너를 인쇄합니다. 여행자는 페이지에서 예약하므로 JSON에만 기록된 차이는 그들이 볼 수 없는 차이입니다. 목적지/날짜/입국/교통 필수 사항이 아직 결정되지 않은 경우 결과에 중간 발견 레이블을 지정하고 하나의 차단 요소를 명시하며, 최종 일정으로 잘못 표시하거나 예약 준비 HTML을 만들어서는 안 됩니다.
  • 검증 게이트: 구조 게이트는 페이지가 잘 구성되었음을 증명할 뿐, 사실임을 증명하지 않습니다. Construction 계획을 전달하기 전에 references/verification.md를 읽고 다섯 가지 도메인 검증(entry, transport, sights_and_hours, booking_and_lodging, seasonality)을 동시에 실행한 후 모든 wrong 및 misleading 결과를 해결합니다. 후보의 입국 또는 계절성으로 인해 제거될 수 있는 경우에만 Discovery에 대해 동일한 다섯 가지를 실행합니다. 검증은 도메인이 상태를 공유하지 않고, 한 번에 모두 확인하라는 요청이 각각에 주의의 5분의 1을 주기 때문에 다섯 가지로 분할됩니다. 이것이 3시간 전에 문을 닫은 레스토랑에서 저녁 식사가 예약되는 방식입니다. 런타임에서 제공할 때 팬아웃합니다(Claude Code의 Workflow 또는 병렬 Agent 호출, Codex에서 도메인당 하나의 codex exec 자식). 그렇지 않은 경우 결합된 단일 프롬프트보다는 다섯 개의 별도 순차적 패스로 실행합니다. 이점은 벽시계 시간이 아닌 집중력이므로 순차적이지만 분리된 것이 이를 유지합니다.

컨텍스트 해결 순서

모든 계획 선택을 이 순서대로 해결합니다. 사용자의 명시적인 현재 여행 답변, 해당 현재 필드가 비어 있거나 지정되지 않은 경우에만 호환 가능한 안정적인 프로필 기본값, 그런 다음 조사된 목적지/경로 실현 가능성. 국적, 거주지, 언어 또는 통화에서 여행자가 얼마나 멀리 가고 싶어하는지 추론하지 마십시오. trip_geography.scope가 현재 여행의 권위입니다. 국적 및 거주 상태는 다른 질문(주어진 목적지에 필요한 입국 조건)에 답하며 범위를 설정하지 않습니다. 선택된 현재 여행 교통 수단을 사용하여 연구 및 예약 분기를 선택합니다. 저장된 자가 운전, 좌석, 지도 및 예약 선호도는 실제 목적지 시장 및 현재 여행 선택과 호환되는 경우에만 적용합니다. 명시적인 여행 범위가 명명된 목적지와 충돌하는 경우 충돌을 표면화하고 가장 작은 명확화를 요청하고 값을 자동으로 변경하지 마십시오.

작업 모드

연구하기 전에 모드를 선택합니다:

사용자 상태모드필수 결과
목적지 없음 또는 광범위한 대륙만발견(Discovery)목적지 생성, 필터링 및 순위 지정
국가/지역은 명명되었지만 도시가 선택되지 않음제한된 발견(Constrained discovery)계획 전에 적합한 하위 지역/도시 비교
목적지가 의도적으로 선택됨구축(Construction)실현 가능한 여행 계획 및 예산 수립
기존 계획에 새로운 제약 조건 추가증분 재계획(Incremental replanning)영향을 받는 요소만 변경하고 영향 표시

Discovery를 Construction으로 축소하지 마십시오. "7일과 1,500유로가 있습니다"라고 말하는 사용자는 목적지 옵션이 필요합니다...

관련 스킬