# 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 (fil…

- **Type:** Skill
- **Install:** `agentstack add skill-metalaihq-trip-event-curator-report-builder`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [metalaihq](https://agentstack.voostack.com/s/metalaihq)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [metalaihq](https://github.com/metalaihq)
- **Source:** https://github.com/metalaihq/trip-event-curator/tree/main/skills/report-builder
- **Website:** https://metalai.co.kr

## Install

```sh
agentstack add skill-metalaihq-trip-event-curator-report-builder
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Report Builder (단일 HTML 리포트 빌더 — 재발 방지 규칙 내장)

**이 스킬의 존재 이유는 "안 열리는 대시보드"의 재발 방지다.** 이전 세대의 실패 원인: 외부 CDN 의존(오프라인·기내에서 빈 화면 — 여행자는 비행기에서 연다), 파일 분산, 생성 검증 없음. v2.0은 아래 재발 방지 규칙(메디테라피 report-builder 전문 이식)을 위반하는 산출을 금지한다.

## 재발 방지 규칙 (위반 시 산출 금지)

1. **파이썬 표준 라이브러리만** 사용해 생성한다 — pip 설치 패키지(jinja2, plotly, pandas 등) 금지. 문자열 조립 + `html.escape` + `json`이면 충분하다.
2. **외부 의존 전면 금지** — CDN 스크립트·외부 CSS·웹폰트·외부 이미지·`` 금지. 차트·지도풍 표현이 필요하면 인라인 SVG 또는 CSS로 그린다. ``가 하나라도 있으면 실패다.
3. **CSS/JS 전부 인라인** — ``·`` 안에 직접 포함. 상대 경로 참조 파일도 금지 (한 파일이 통째로 이동해도 열려야 한다).
4. **한 파일 원칙** — 산출물은 `report.html` 단일 파일. 보조 파일(css/js/이미지 폴더) 생성 금지.
5. **생성 후 검증 의무** — 파이썬으로 파일 존재+크기를 검증하고, 실패 시 성공 보고 금지:
   ```python
   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)")
   ```
6. **여는 방법 출력 의무** — 검증 통과 후 정확한 명령 출력: `open report.html` (macOS) / `start report.html` (Windows) + 절대 경로 병기.
7. **비기술자 30초 독해 구조** — 스크롤 순서: **① 결론 카드 → ② 근거(여정·이벤트 표) → ③ 각주 통계**. 여행 리포트의 결론 카드 기본형은 trip-brief의 판단 3개(놓치면 아까운 것/예매 데드라인/지금 할 일)다.

## Workflow

1. **컨텍스트·원고 확보 (0단계)** — `context/curator-context.md` 확인. 리포트 원고(다른 스킬 산출물)가 세션에 있는지 확인 — 없으면 해당 스킬 먼저 (예: 여정 없이 "여정 리포트" 요청이면 `$trip-weaver` 먼저). **원고 없이 리포트부터 만들지 않는다.**
2. **원고 게이트** — 원고에 ① 결론으로 승격할 판단 ② 근거 신호 ID·출처 태그(캡처 기준일) ③ 각주로 내릴 통계·한계가 있는지 검사. 없으면 원고 스킬로 되돌린다. 출력 직전 `$source-audit` 통과를 권장 기본값으로.
3. **구조 설계** — [references/html-rules.md](references/html-rules.md) 골격에 배치: 결론 카드(3~5장: 판단+수치+신뢰 단서) → 근거(날짜별 여정 표·이벤트 카드 표 — 이중 시간축 두 칸 유지, 예매 타임라인) → 각주(산식·가정·한계·drop 로그·소스 판정).
4. **생성 스크립트 작성·실행** — 표준 라이브러리 스크립트, 외부 유입 문자열 `html.escape`, 차트는 인라인 SVG. 산출 경로는 지정 없으면 현재 작업 디렉터리의 `report.html`.
5. **검증·안내 (의무)** — 규칙 5·6 실행 + 자가 검사: `<script src`·`<link href`·`<img src="http`·`@import`·`url(http` 0건 (SVG `xmlns`·출처 표기용 텍스트/앵커 URL은 로드가 아니므로 허용) — 발견 시 실패 처리 후 재생성.
6. **보고** — 절대 경로·크기·검증 결과·여는 방법·구성 요약.

## 산출물

- `report.html` 1개 (자기완결) + 검증 로그(존재·크기·외부 참조 0건) + 여는 방법 안내.

## 하한

- **원고에 결론 카드·근거 신호 ID·각주 통계 존재 + 파일 존재·크기 검증 통과 + 외부 참조 0건.** 하나라도 실패하면 성공을 보고하지 말고 실패 항목을 보고한다.

## 증거 규칙

상세 기준·하한표: [evidence-rules.md](../traveler-profile/references/evidence-rules.md)

1. 모든 신호·주장에 `[출처명 | 날짜 | 수치 또는 원문 인용]` 태그 — 리포트에 옮길 때도 태그·신호 ID를 유지한다.
2. 웹서치가 1차, `assets/snapshot/`은 2차 — 모든 상태는 "캡처 시점 기준" 명시.
3. 여행 윈도우 교집합·이중 시간축·종료 회기 오인 금지 — 리포트의 이벤트 표는 게이트 통과분만.
4. 여행가치 게이트·가격 null 정직 — 리포트에서 갭·라벨을 지우지 않는다.
5. 소스 ToS/robots 준수 — 원고 하한 미달 시 리포트 생성 금지, 부족 항목 보고가 유일한 대안.

## 원칙

- 열리지 않는 리포트는 리포트가 아니다 — 검증 없는 성공 보고는 이 스킬의 존재 이유를 부정한다.
- 결론 먼저 — 읽는 사람은 출국 전날의 여행자다. 30초 안에 "뭘 예매해야 하는지" 못 얻으면 구조 실패다.
- 통계는 각주로 — 본문의 신뢰를 만드는 것은 수식이 아니라 "근거가 저기 있다"는 참조다.
- 원고의 출처 태그·estimate 라벨·캡처 기준일·정직 갭을 리포트에서 지우지 마라 — 예쁘게 만들다 정직함을 잃는 것이 최악의 회귀다.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [metalaihq](https://github.com/metalaihq)
- **Source:** [metalaihq/trip-event-curator](https://github.com/metalaihq/trip-event-curator)
- **License:** MIT
- **Homepage:** https://metalai.co.kr

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-metalaihq-trip-event-curator-report-builder
- Seller: https://agentstack.voostack.com/s/metalaihq
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
