From ipzitalk-remote
아파트명 또는 소재 주소 하나로 단지 개요·매매/전세 시세·최근 거래·주변 입지(교통·생활·교육)· 입주 예정 단지·인근 비교 단지를 한 장에 모아 보여준다. "이 아파트에 대해 전반적으로 알려줘", "이 아파트 한눈에 보기", "종합해서 알려줘", "이 아파트 전반적으로 정리해줘" 등의 표현이 있으면 이 스킬을 사용한다. 단일 항목만 물으면(시세만/학군만) 해당 단일 스킬을 쓴다. 범위를 밝히지 않은 "OO아파트 어때" 는 이 스킬이 아니라 단지 개요 요약(ipzitalk-complex-overview)으로 보낸다. 23크레딧이라 개요 요약(3크레딧)의 8배다. 애매하면 싼 쪽을 쓰고, 부족하면 이 스킬을 권한다.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ipzitalk-remote:ipzitalk-complex-overview-allThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
아파트 하나를 입력받아 개요·시세·입지·입주예정·인근단지를 **23크레딧 · 1페이지**로 만든다.
아파트 하나를 입력받아 개요·시세·입지·입주예정·인근단지를 23크레딧 · 1페이지로 만든다. ※ 참고용 자료이며 시세 감정이 아니다. 실거래 신고 기준이라 계약일과 시차가 있고 층·향·수리 상태는 미반영.
하위 스킬을 호출하지 않는다. 교통·생활·교육·실거래 추이·전세가율 스킬을 그대로 부르면 60크레딧을 넘고, 각 스킬의 등급 판정·게이지·리포트 문구는 여기서 대부분 버려진다. 데이터 수집 스펙만 재사용하고 렌더는 독립한다.
탭·토글을 쓰지 않는다. 배치로 푼다.
| 파라미터 | 필수 | 기본 | 설명 |
|---|---|---|---|
target | ✅ | - | 아파트명 또는 소재 주소 |
months | ✕ | 12 | 최신 확정월로 끝나는 실거래 조회 개월. 최근 2개월은 조회 창에서 제외한다 |
poi_radius_m | ✕ | 2000 수집 / 1000 표시 | 아래 §반경 규칙 |
presale_radius_km | ✕ | 3 | 입주 예정 단지 반경 |
| 도구 | 용도 | 콜 |
|---|---|---|
get_complex_info(detail=true) | 개요·unit_mix·주차·주소 | 1 |
get_geocode | 좌표 (K-apt가 준 도로명 주소로) | 1 |
get_complex_trades(trade_type='all') | 매매+전월세+분양권 12개월 | 12 |
search_by_nearby_category | 초·중·고·지하철·마트 5종 일괄 | 1 |
search_by_nearby_keyword ×4 | 공원 · 도서관 · 백화점 · 종합병원 | 4 |
search_by_nearby_keyword + enrich_complex_info | 인근 단지 + 실거래 | 2 |
search_announcement_info | 입주 예정 | 1 |
get_map_embed_url | 지도 | 1 |
| 23 |
get_complex_info(complex_query=target, detail=true) → kapt_code · address_road · unit_mix
get_geocode(address = 위에서 받은 address_road) → lat · lng
get_geocode에 넣으면 실패한다. 실측: get_geocode("반포래미안아이파크") → ADDRESS_NOT_FOUND.get_complex_info 응답에는 좌표가 없다. resolved_location은 주소·법정동코드뿐이다.get_complex_trades(complex_query, year_month, trade_type='all', limit=100) × 12
trade_type='all'은 1콜 = 1크레딧. 내부에서 매매·전월세·분양권 3개 원천을 쳐도 과금은 1이다.2025.08~2026.07처럼 집계 중 2개월을 포함한 12개월 창으로 바꾸지 않는다.year_month 12개 집합을 확정해 audit.json에 기록한다. 각 월은 정확히 1회만 호출하며 year_month 중복은 0건인지 검증한다. 이미 호출한 월을 보정·감사 목적으로 재호출하지 않는다.(전용, 층, 계약일, 금액)은 1건으로.
실측: 반포 84.93㎡ 12층 2026-05-16 166,950이 2행(한 행만 계약구분 필드 존재).[PARTIAL] 시세 생성 금지가 붙는다. 중단하지 말고 결측월로 넘긴다.
조회한 모든 달이 0일 때만 해소 실패로 본다. (실측: 반포 매매 12개월 중 6개월이 PARTIAL인데 전월세는 정상)unit_mix가 정한다(대형 전용만·소형 전용만인 단지가 모두 존재).unit_mix의 면적 구간(밴드)을 정확한 단일 주택형으로 추론하지 않는다. 예를 들어 60~85㎡ 839세대는 해당 구간 재고일 뿐 84㎡ 839세대의 근거가 아니다. 60~85㎡ 구간 839세대와 실제 거래에서 확인한 84㎡ 표본은 별도 사실로 구분해 쓴다.Math.trunc) 단독 매칭 금지 → ±1.5㎡ 밴드. 밴드 폭 상한은 3㎡ 또는 중앙값의 3% 중 작은 쪽.| 요소 | 스타일 | 규칙 |
|---|---|---|
| 주계열 | --brand 실선 2.6px | 거래 없는 달에서 선을 끊는다. 보간 금지 |
| 대조선(모든 평형 섞은 값) | --x 점선 | 평형이 섞인 단지에서만. 단일 평형 단지면 생략 |
| 기간 평균선 | 계열색 stroke-dasharray:"2 3" 수평선 | 계열마다 1개. 우측 끝에 값 라벨 |
| 거래 없는 달 밴드 | --x opacity:.10 세로 밴드 + "거래없음" | 선만 끊으면 차트가 고장난 것처럼 보인다 |
| 확정/집계중 경계 | 표시하지 않음 | 최근 2개월은 조회 창 밖이며 캡션에 제외 사유만 명시 |
| N 라벨 | x축 아래 N3 | 표본 수를 항상 노출 |
ipzi-data로 받지 않고 렌더 JS가 main/mixed의 non-null 값만으로 직접 계산한다.
숫자를 손으로 넣지 말 것.null**이다. 직접 계산한다.ratio.band를 반드시 값에 맞춰 넣는다. 기본값 "g"(초록)를 그대로 두면
주의선을 넘긴 전세가율을 안전한 색으로 칠하게 된다.| 매매가 대비 전세가 | band | 라벨 |
|---|---|---|
| < 60% | g | 여유 있는 편 |
| 60 ~ 70% | y | 양호 |
| 70 ~ 80% | o | 주의 |
| ≥ 80% | r | 위험 |
실측 대비: 반포래미안아이파크 39.9%(g) vs 부산오션시티푸르지오 76.8%(o).
radius_m은 콜당 1개뿐인데 블록마다 자연 반경이 다르다. 반경을 넓혀도 크레딧은 그대로 1이다.
search_by_nearby_category(radius_m=2000,
categories=['school_elementary','school_middle','school_high','subway','mart_large'])
→ 수집 후 1km 이내로 필터
hospital)을 카테고리에 넣지 말 것. 동물병원·치과·피부과가 전부 같은 카테고리다.키워드 4콜(각 1키워드, 묶을 수 없다):
| 축 | 검색식 |
|---|---|
| 공원 | query="공원", grid=true, include=["공원"], exclude=["공원시설물","음식점","카페","화장실","학원","지하철"] |
| 도서관 | preset="library" |
| 백화점 | query="백화점", grid=true, include=["백화점"] |
| 종합병원 | query="병원", grid=true 1회 호출 후 장소명·카테고리에서 종합병원·대학병원·국립병원 중 하나와 일치하는 결과를 로컬 OR 필터 |
categories:['park']는 죽은 검색식이다. 카카오 카테고리 코드 18종에 공원이 없다.
실측 2곳 모두 0건. 반포엔 1.5km 내 공원이 32개 있는데도 0건이다.grid=true 없이 query="백화점"을 부르면 입점 매장이 45건 캡을 다 먹는다.
실측: 반포 4km → 45건 전부 입점 매장, 본체 0건. grid로 2km를 부르면 신세계백화점 강남점(888m)이 나온다.0건이라고 쓰기 전에 잘림 여부를 본다. 잘렸으면 "없음"이 아니라 "확인되지 않음".search_by_nearby_keyword(preset="apartment", radius_m=2000, grid=true)
enrich_complex_info(complexes, include_trades=true)
예정·(20NN년**이 든 항목을 뺀다.
실측: 오티에르반포아파트 (2026년07월예정) · 논현영동빌라주택재건축아파트 (예정).enrich의 실거래를 단지 간 비교에 쓰지 말 것. 아래 §알려진 결함 참조.out/ipzitalk-complex-overview-all/을 고정한다.out/ipzitalk-complex-overview-all/result.json**에 먼저 저장한다.out/ipzitalk-complex-overview-all/audit.json**에 skillBaseDirectory, baseToolName, 입력 요약, year_month(해당 시), resultCount, truncated, provenance, reason을 누적한다. 파일 도구·실행 환경은 shellUsed, webUsed, generatedFiles로 별도 기록한다.get_complex_trades는 12행·서로 다른 year_month 12개여야 하며 전체 행 수가 23이 아니면 완료 처리하지 않는다.name·type을 남겨 반경 눈금 가짜 마커가 0개인지 검증한다.audit.json에서 도구별 호출 횟수, Remote provenance, Skill base directory, shell/web 사용 여부, 생성 파일을 계산해 보고하며 수기로 재구성하지 않는다. 감사 누락을 채우기 위한 MCP 재호출은 금지한다.1. 달이 서로 다르다. 단지마다 "최근 거래가 있는 달"을 각자 고른다. 반포 실측: 라클라스 26.06 · 리체 26.04 · 삼호가든5차 26.05 · 반포자이 26.05 — 같은 시점 비교가 아니다.
2. 다른 단지 거래가 섞인다. 지번 본번 매칭이라 30-1 · 30-20 · 30-26이 한 덩어리가 된다.
반포써밋 (반포동 30-20, 2018년, 764세대) → 202605 · 2건 · 432,000 · 평당 9,639
반포삼호가든맨션5차(반포동 30-1, 1986년, 168세대) → 202605 · 2건 · 432,000 · 평당 9,639 ← 완전히 동일
2018년 신축의 평당가가 1986년 단지와 같을 수 없다. 응답만 보고는 구분이 불가능하다.
→ 인근 단지 표에는 세대수·준공·주차만 싣고, 실거래는 확인되지 않음 배지로 비운다.
반포 실측: 후보 9곳 중 2곳 미매칭. 인근 단지 표는 전부가 아니다. 그 사실을 화면에 한 줄로 남긴다.
K-apt 기본·상세 어디에도 필드가 없다. 연면적은 있으나 대지면적이 없어 계산 불가.
→ 확인되지 않음으로 둔다. 값 추정 금지.
지번 매칭 기준이라 단일 지번 단지에선 결과가 맞지만, 다지번 단지에서 옆 단지가 섞이는 것을 스킬이 감지할 수 없다.
| 표본 N | 처리 |
|---|---|
| ≥ 8~10 | 정상 적용 |
| 4 ~ 7 | 참고용 표기 |
| < 4 | ⬜ 등급·추세 단정 금지. 값은 나열하되 "거래가 적어 참고용"으로 |
독자는 부동산 전문가가 아니다. 내부 용어를 화면에 그대로 쓰지 않는다. 수치·임계값은 그대로 두고 라벨만 바꾼다.
| 쓰지 않는 말 | 대신 |
|---|---|
| 판정 유보 · 표본 부족 | 거래가 적어 흐름은 참고용 |
| 신고지연 · 확정 아님 | 아직 집계 중인 기간 |
| 전용타입 혼합 · 주계열 | 모든 평형 섞은 값 · 전용 99㎡ 기준 |
| 최근접 | 제일 가까운 |
| 이격 · 다소 이격 | 먼 편 · 조금 먼 편 |
| 정보없음 · 미확인 · 데이터 오염 | 확인되지 않음 |
| 1km 내 | 1km 안 |
| 도보 환산 = 직선거리 ÷ 4.5km/h | 직선거리로 어림잡은 값이라 실제 걷는 길과 다를 수 있습니다 |
| hedge | 꼭 읽어주세요 |
530,000 → 53.0억). 거리는 1,984m → 2.0km.829세대 · 4층 · 1.62대).| 종류 | 예 | 처리 |
|---|---|---|
| 오독 방지 | "거래 시점이 단지마다 다릅니다. 옆에 적힌 달을 함께 봐주세요" | ✅ 한 줄로 남긴다 |
| 불완전 고지 | "1km 안 아파트 전부는 아닙니다" | ✅ 한 줄로 남긴다 |
| 내부 사정 | "K-apt에 필드가 없어서", "지번 앞번호가 겹쳐서", "이름이 맞지 않아서" | ❌ 쓰지 않는다 |
확인되지 않음으로 끝낸다. 왜 비었는지 문단으로 설명하지 않는다.데이터 블록 하단에 .src 한 줄. 도구·API 이름은 쓰지 않는다. 사용자가 아는 기관명만.
| 블록 | 출처 표기 |
|---|---|
| 개요 | 공동주택관리정보시스템(K-apt) |
| 지도 | 네이버 지도 · 카카오맵 |
| 매매 · 전세 · 최근거래 | 국토교통부 실거래가 |
| 학교 · 교통 · 생활 | 카카오맵 |
| 입주 예정 | 청약홈 |
| 함께 볼만한 아파트 | 세대수·준공·주차 — 공동주택관리정보시스템(K-apt) · 최근 거래 — 국토교통부 실거래가 · 위치 — 카카오맵 |
https://schoolzone.emac.kr/gis/gis.do
링크 없이 "학구도로 확인하세요"만 쓰면 사용자가 못 찾는다.먼저 out/ipzitalk-complex-overview-all/result.json과 audit.json을 저장한 뒤, templates/result.html의 비실행 ipzi-data JSON 블록을 채운다(스킬 폴더 내부, self-contained).
마크업·CSS·렌더 JS는 고정이다. 실행마다 바뀌는 것은 ipzi-data 블록 하나뿐.
result.json·audit.json은 내부 계약용 고정 이름으로 유지하고, 사용자 전달 HTML만 대상 기반 이름을 쓴다.get_complex_info로 확정한 공식 단지명에서 공백만 정리해 <단지명>_한눈에보기를 만들고, 최종 HTML은 out/ipzitalk-complex-overview-all/<단지명>_한눈에보기.html에 저장한다. 공식 단지명을 확보하지 못하면 이름을 지어내지 말고 --file-name을 생략해 ipzitalk-complex-overview-all.html로 폴백한다.../../scripts/html_artifact_contract.mjs 검증기를 --file-name "<단지명>_한눈에보기"와 함께 사용한다. --skill-dir에는 이 스킬의 base directory, --data에는 완성한 JSON 파일, --output-root에는 작업공간의 out 디렉터리를 전달한다. 스크립트가 경로·예약문자·길이를 안전화한다.shell-free 또는 셸 금지 환경에서는 File Read/Write로 templates/result.html을 직접 읽고 ipzi-data JSON 블록만 교체한다. 교체 전후의 fixed template region(고정 영역: 데이터 블록 앞 prefix와 뒤 suffix)이 원본과 같은지 비교한다.audit.json.generatedFiles에는 예시 이름이 아니라 실제 최종 파일명과 경로를 기록한다.섹션 순서(고정): 개요 KPI 4칸 → 지도 → 매매 차트 → 전세/전세가율 2분할 → 최근 매매 5행 → 학교 3분할 게이지 + 리스트 → 교통·생활 카드 → 주변 입주 예정 → 함께 볼만한 아파트 → 출처·안내 푸터.
확인되지 않음.| 상황 | 처리 |
|---|---|
단지 해소 실패 / NOT_FOUND | 재입력 요청. 리포트 생성 금지 |
후보 다수 / AMBIGUOUS | 후보 나열 후 선택 |
| 단일 월 거래 0건 | 결측월로 넘어간다. 중단 금지 |
| 전 기간 거래 0건 | 해소 실패로 보고 중단 |
unit_mix에 84타입 없음 | 84 재조회 금지 → 우세 타입군 자동 선택 |
| POI 결과가 잘림 | "없음" 금지 → "확인되지 않음" |
장소명에 휴교·폐교·예정·(20NN년 | 게이지·개수에서 제외, 목록에만 꼬리표 |
| 입주예정 좌표 없음 | 반경 판정 불가 → 별도 회색 블록 |
| 인근 단지 미매칭 다수 | "전부는 아닙니다" 한 줄. 사유는 쓰지 않는다 |
grid 필수) · 공원 미도공원 235m서울반포초등학교 (휴교) 2.0km스킬 폴더 밖 문서에 의존하지 않도록 규칙을 여기 인라인으로 둔다.
<symbol> 인라인 + <use> 참조로 self-contained.
(인라인 렌더 JS는 허용된다. 외부 스크립트만 금지.)prefers-color-scheme + :root[data-theme] 모두 대응.--g/--y/--o/--r/--x/--brand/--up/--down/--zebra (+ -s 배경 변형).null은 확인되지 않음(0 아님) · 표본 부족은 등급 단정 금지 · 결과가 잘리면 "목록 불완전" 표기.★·☆는 활자 기호이며 이모지가 아니다. 등급 표기에 사용 가능.--up(빨강) · 하락은 --down(파랑) — 국내 관행..map{overflow-x:auto; overflow-y:hidden} + .map iframe{display:block; min-width:720px}.
overflow:hidden만 주면 iframe이 카드 폭에 짓눌려 지도가 최소 줌으로 떨어진다.th.n·td.n 양쪽에 우측 정렬을 준다. th.n을 빠뜨리면 헤더만 좌측에 남는다.svg 규칙(.mini svg{width:100%} 등)은 직계 자식으로 한정한다(.mini > svg).
자손 선택자로 두면 .ic 아이콘까지 카드 폭으로 부풀어 제목이 접힌다.기존 ipzitalk-complex-overview(K-apt 단일 단지 요약)와 다른 스킬이다.
ipzitalk-complex-overview = 세대수·연차·주차 정도의 한 장 요약. 실거래·POI 없음.ipzitalk-complex-overview-all = 실거래 + 입지 + 입주예정 + 인근단지까지. 23크레딧.ipzitalk-complex-overview / "전반적으로"·"한눈에" → 이 스킬.goal.purpose에 그대로 보존한다.4인가족 실거주 검토투자 심의 회의 자료분양 제안서용 자료건너뛰기기타(직접 입력)으로 자유 입력도 허용한다.건너뛰기를 기타(직접 입력)에 입력해도 된다고 알린다.원하는 분석 목적을 한 문장으로 알려주세요. (예: "4인가족 실거주 검토", "투자 심의 회의 자료", "분양 제안서용 자료") 건너뛰셔도 됩니다.
goal.purpose에 그대로 저장하고, 직접 입력을 고르면 사용자가 입력한 원문을 그대로 저장한다.건너뛰기를 고르거나 사용자가 건너뛰겠다고 답한 경우에만 goal:null로 두고 목적 섹션 없이 진행한다. 목적을 지어내지 않는다.purpose에는 사용자 문장을 그대로 보존한다.conclusions(결론)·evidence(근거)·cautions(주의사항)·nextActions(다음 행동 제안)를 작성한다. 조회 전에 문구나 결론을 미리 만들지 않는다.goal은 사용자 표현을 그대로 보존한 purpose, conclusions(3evidence(1cautions(0nextActions(1conclusions는 실제 조회·판정 결과만 목적에 맞춰 요약하고, 각 결론에 실제 evidence를 최소 1개 연결한다.evidence에는 이번 실행에서 확보한 필드·수치·비교 결과만 쓴다. 예시·검증값·모델 지식으로 빈 값을 채우지 않는다.cautions는 실제로 확인된 데이터 누락·표본 한계·시점 차이·방법상 제약만 쓴다. 본문 경고를 약화하거나 새 위험을 지어내지 않는다.nextActions는 실제 발견사항·누락·사용자 목적에서 이어지는 검토 행동만 제안한다. URL이나 원시 Skill ID 대신 한글 Skill 이름과 자연어 질의 예시를 쓰며, 거래 후속 분석은 실거래 추이 또는 최근 실거래가 추이로 표현한다.goal:null이면 goal-box 전체를 숨긴다.ipzitalk MCP 도구의 네임스페이스는 실행 환경(Codex, Claude Code, Hermes, claude.ai 커넥터 등)에 따라 다르다.
이 문서에 적힌 도구 이름(search_announcement_info, get_geocode, get_map_embed_url 등)은 접두사 없는 기본 도구명(base tool name) 이다.
ipzitalk-remote 플러그인의 ipzitalk 서버 provenance가 확인되는 도구만 우선 사용한다. Codex에서는 실제 도구 호출 이벤트의 server: ipzitalk과 기본 도구명을 기준으로 확인한다.presale-mcp 또는 다른 로컬 MCP provenance의 동명 도구는 Remote Skill의 대체 수단으로 사용하지 않는다.클라이언트가 연결 도구 목록에 plugin/server provenance를 구조적으로 제공하지 않을 때만 다음 명시적 fallback을 사용한다.
mcp__plugin_ipzitalk-remote_ipzitalk__<도구명>mcp__ipzitalk_mcp__<도구명>mcp__ipzitalk__<도구명>mcp__claude_ai_ipzitalk__<도구명>fallback으로도 Remote 출처를 유일하게 확인할 수 없으면 값을 추정하지 말고, 사용자에게 ipzitalk Remote MCP 연결 상태를 확인하도록 안내한 뒤 중단한다.
npx claudepluginhub chatdaeri/ipzitalk --plugin ipzitalk-remote지역 또는 단지 주변의 청약홈 분양공고를 한 장으로 정리한다. 최근 6개월 신규 공고를 먼저 보여주고, 이어서 등록된 전량을 KPI·지도·입주 타임라인·공급유형/전용면적 도넛·연도별 물량·공고 목록으로 종합한다. "OO시 분양 어때", "분양 현황", "요즘 분양 뭐 있어", "이번달 신규 청약", "분양 리포트", "이 지역 분양물량", "분양 브리핑", "분양 대시보드" 등의 표현이 있으면 이 스킬을 사용한다.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Creates platform-native content for X, LinkedIn, TikTok, YouTube, and newsletters from source material. Adapts voice and format per platform while avoiding engagement bait and filler.