Report builder
Build a single self-contained HTML report (report.html) from any skill's output in this plugin — conclusion cards first (miss-it-and-regret picks / booking deadlines / do-this-now), the day-by-day woven itinerary and evidence tables second, statistics and limits as footnotes — generated with Python standard library only, all CSS/JS inline, zero external CDN/fonts/images, and verified on disk (file exists + size > 0 + zero external load references) with an 'open report.html' instruction printed. Use when the user says 'report.html로 만들어줘', 'HTML로 뽑아줘', '파일로 정리해줘', '동행한테 공유할 수 있게', '보고서로 만들어', or complains '지난번 파일은 열리지도 않았어', 'HTML이 깨져'. The final output stage after trip-weaver, trip-brief, event-finder, or any other skill. Anti-regression rules ported verbatim from the meditherapy report-builder.From its SKILL.md
npx -y skills add metalaihq/trip-event-curator --skill report-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.1 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it
Report Builder (단일 HTML 리포트 빌더 — 재발 방지 규칙 내장)
이 스킬의 존재 이유는 "안 열리는 대시보드"의 재발 방지다. 이전 세대의 실패 원인: 외부 CDN 의존(오프라인·기내에서 빈 화면 — 여행자는 비행기에서 연다), 파일 분산, 생성 검증 없음. v2.0은 아래 재발 방지 규칙(메디테라피 report-builder 전문 이식)을 위반하는 산출을 금지한다.
재발 방지 규칙 (위반 시 산출 금지)
- 파이썬 표준 라이브러리만 사용해 생성한다 — pip 설치 패키지(jinja2, plotly, pandas 등) 금지. 문자열 조립 +
html.escape+json이면 충분하다. - 외부 의존 전면 금지 — CDN 스크립트·외부 CSS·웹폰트·외부 이미지·
<img src="http...">금지. 차트·지도풍 표현이 필요하면 인라인 SVG 또는 CSS로 그린다.<script src=...>가 하나라도 있으면 실패다. - CSS/JS 전부 인라인 —
<style>·<script>안에 직접 포함. 상대 경로 참조 파일도 금지 (한 파일이 통째로 이동해도 열려야 한다). - 한 파일 원칙 — 산출물은
report.html단일 파일. 보조 파일(css/js/이미지 폴더) 생성 금지. - 생성 후 검증 의무 — 파이썬으로 파일 존재+크기를 검증하고, 실패 시 성공 보고 금지:
import os p = "report.html" assert os.path.exists(p) and os.path.getsize(p) > 1000, f"생성 실패: {p}" print(f"OK: {p} ({os.path.getsize(p):,} bytes)") - 여는 방법 출력 의무 — 검증 통과 후 정확한 명령 출력:
open report.html(macOS) /start report.html(Windows) + 절대 경로 병기. - 비기술자 30초 독해 구조 — 스크롤 순서: ① 결론 카드 → ② 근거(여정·이벤트 표) → ③ 각주 통계. 여행 리포트의 결론 카드 기본형은 trip-brief의 판단 3개(놓치면 아까운 것/예매 데드라인/지금 할 일)다.
Workflow
- 컨텍스트·원고 확보 (0단계) —
context/curator-context.md확인. 리포트 원고(다른 스킬 산출물)가 세션에 있는지 확인 — 없으면 해당 스킬 먼저 (예: 여정 없이 "여정 리포트" 요청이면$trip-weaver먼저). 원고 없이 리포트부터 만들지 않는다. - 원고 게이트 — 원고에 ① 결론으로 승격할 판단 ② 근거 신호 ID·출처 태그(캡처 기준일) ③ 각주로 내릴 통계·한계가 있는지 검사. 없으면 원고 스킬로 되돌린다. 출력 직전
$source-audit통과를 권장 기본값으로. - 구조 설계 — references/html-rules.md 골격에 배치: 결론 카드(3~5장: 판단+수치+신뢰 단서) → 근거(날짜별 여정 표·이벤트 카드 표 — 이중 시간축 두 칸 유지, 예매 타임라인) → 각주(산식·가정·한계·drop 로그·소스 판정).
- 생성 스크립트 작성·실행 — 표준 라이브러리 스크립트, 외부 유입 문자열
html.escape, 차트는 인라인 SVG. 산출 경로는 지정 없으면 현재 작업 디렉터리의report.html. - 검증·안내 (의무) — 규칙 5·6 실행 + 자가 검사:
<script src·<link href·<img src="http·@import·url(http0건 (SVGxmlns·출처 표기용 텍스트/앵커 URL은 로드가 아니므로 허용) — 발견 시 실패 처리 후 재생성. - 보고 — 절대 경로·크기·검증 결과·여는 방법·구성 요약.
산출물
report.html1개 (자기완결) + 검증 로그(존재·크기·외부 참조 0건) + 여는 방법 안내.
하한
- 원고에 결론 카드·근거 신호 ID·각주 통계 존재 + 파일 존재·크기 검증 통과 + 외부 참조 0건. 하나라도 실패하면 성공을 보고하지 말고 실패 항목을 보고한다.
증거 규칙
상세 기준·하한표: evidence-rules.md
- 모든 신호·주장에
[출처명 | 날짜 | 수치 또는 원문 인용]태그 — 리포트에 옮길 때도 태그·신호 ID를 유지한다. - 웹서치가 1차,
assets/snapshot/은 2차 — 모든 상태는 "캡처 시점 기준" 명시. - 여행 윈도우 교집합·이중 시간축·종료 회기 오인 금지 — 리포트의 이벤트 표는 게이트 통과분만.
- 여행가치 게이트·가격 null 정직 — 리포트에서 갭·라벨을 지우지 않는다.
- 소스 ToS/robots 준수 — 원고 하한 미달 시 리포트 생성 금지, 부족 항목 보고가 유일한 대안.
원칙
- 열리지 않는 리포트는 리포트가 아니다 — 검증 없는 성공 보고는 이 스킬의 존재 이유를 부정한다.
- 결론 먼저 — 읽는 사람은 출국 전날의 여행자다. 30초 안에 "뭘 예매해야 하는지" 못 얻으면 구조 실패다.
- 통계는 각주로 — 본문의 신뢰를 만드는 것은 수식이 아니라 "근거가 저기 있다"는 참조다.
- 원고의 출처 태그·estimate 라벨·캡처 기준일·정직 갭을 리포트에서 지우지 마라 — 예쁘게 만들다 정직함을 잃는 것이 최악의 회귀다.
What ships with it: 2 files
8.4 KB alongside SKILL.md
evals/
- evals.json3.0 KB
references/
- html-rules.md5.3 KB