사용자 추가 딥다이브 · 2026-07-24 · Anthropic 공식 · HTML EFFECTIVENESS

anthropics/html-effectiveness 딥다이브
— 마크다운 대신 자기완결 HTML 한 장으로 답하는 에이전트 출력 형식론

html-effectiveness는 Anthropic이 블로그 글 "The unreasonable effectiveness of HTML"(HTML의 터무니없는 효과)에 딸려 공개한 20개의 자기완결 HTML 예제 갤러리다. 주장은 단순하고 도발적이다: 에이전트(Claude 같은)가 무언가를 내놓을 때 기본값은 마크다운이지만, 수많은 작업에서 더 나은 출력 형식은 "빌드도 의존성도 없는 HTML 파일 한 장"이라는 것.

왜냐하면 diff·모듈 지도·타임라인·차트·클릭되는 프로토타입·맞춤 편집기처럼 공간적·시각적·상호작용적 정보는 마크다운이 한 줄짜리 글의 벽으로 납작하게 눌러 버리지만, HTML은 그것을 그대로 렌더링하기 때문이다. 게다가 그 HTML 산출물은 다시 다음 프롬프트에 먹여 왕복(round-trip)시킬 수 있다.

(저장소 anthropics/html-effectiveness · 라이선스 MIT · 구성 번호가 매겨진 예제 20개 + 갤러리 index.html · 기술 순수 HTML·CSS·바닐라 JS, 빌드·의존성 0 · 최신 커밋 2026-05-15 · 공개 갤러리 thariqs.github.io/html-effectiveness · 모든 예시 데이터는 가상("Acme") · shallow clone 소스 직접 분석)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 주목받는가 — 마크다운이 못 하는 것
  3. 기술 스택 — "스택이 없다"가 핵심
  4. 아키텍처 심화 — 한 파일 안의 4겹 + 왕복 루프
  5. 디렉토리 구조 해부 — 20개 예제 지도
  6. 학습 포인트 — 여기서 훔쳐올 사고법
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

"에이전트의 기본 출력은 왜 항상 글의 벽인가" — 그 질문에 대한 20장짜리 반례 모음
한 문장으로

html-effectiveness = 에이전트가 마크다운 대신 내놓은 HTML 20장. 각 파일은 "훑어보고 마는 문서"를 "실제로 읽고 만지게 되는 것"으로 바꾼 단일 .html이며, 브라우저로 바로 열린다.

이건 라이브러리도 프레임워크도 아니다. 읽고 베껴 쓰라고 만든 참조 갤러리다 — "이런 상황에는 글 대신 이런 HTML을 뽑아라"를 20개의 완성된 실물로 보여준다.

각 예제는 대체하는 일의 종류로 묶여 있다: 탐색·계획, 코드 리뷰, 디자인, 프로토타이핑, 다이어그램, 슬라이드, 리서치, 보고서, 그리고 맞춤 편집 UI.

핵심은 "예쁜 웹페이지 만들기"가 아니다. 출력 형식의 선택이다. 같은 내용을 마크다운으로 주면 스크롤해야 할 텍스트가 되지만, HTML로 주면 한눈에 들어오는 공간 배치가 된다. 이 저장소는 그 차이가 실제로 얼마나 큰지를, 말로 설명하는 대신 열어서 보게 만든다.

용어
자기완결(self-contained) HTML · 아티팩트(artifact) · 왕복(round-trip)
자기완결 HTML은 구조(HTML)·스타일(CSS)·행동(JS)·데이터를 한 파일 안에 전부 인라인한 것이다 — 빌드 단계도, 외부 파일도, 설치도 없이 더블클릭하면 브라우저에서 그대로 뜬다. 아티팩트는 에이전트가 대화 중에 내놓는 이런 산출물을 부르는 말. 왕복은 그 산출물을 사람이 만진 뒤(토글·드래그) 다시 텍스트로 뱉어 다음 프롬프트로 되돌려 넣는 흐름을 뜻한다.

2왜 주목받는가

별점이 아니라 "사고방식"이 화제 — 에이전트 시대의 출력 형식 논쟁에 Anthropic이 던진 실물

이 저장소가 흥미로운 이유는 규모나 별점이 아니라 관점이다. LLM/에이전트가 보편화되면서 "모델이 무엇을 어떻게 내놓아야 하는가"가 실무 문제가 됐는데, 대부분의 도구는 관성적으로 마크다운을 뱉는다. 이 갤러리는 그 기본값에 정면으로 반문한다.

핵심 주장 ①

마크다운은 공간 정보를 납작하게 만든다

diff·호출 그래프·타임라인·상태 대시보드는 본래 2차원(공간) 정보다. 마크다운은 이것을 위에서 아래로 흐르는 한 줄짜리 텍스트로 눌러 버린다. 저장소의 표현을 빌리면, "diff와 콜그래프는 공간적 정보인데 마크다운이 그걸 평탄화한다." HTML은 반대로 주석 달린 diff·박스와 화살표·색칠된 타임라인으로 그 형태를 한눈에 되살린다.

핵심 주장 ②

움직임과 상호작용은 설명할 수 없다 — 느껴야 한다

이징(easing) 곡선이나 클릭 흐름은 문단으로 아무리 써도 전달되지 않는다. 진짜 이징이 걸린 버릴 셈 치고 만든 페이지 하나가 5초 만에 알려준다. 프로토타이핑·애니메이션 예제가 바로 이 지점을 노린다 — "프로토타입은 프로덕션이 아니다"라는 태도로, 판단에 필요한 최소 충실도만 만든다.

눈여겨볼 것 — 가장 실용적인 통찰
모든 맞춤 편집기는 "Export 버튼"으로 끝난다

편집 UI 예제(트리아지 보드·기능 플래그·프롬프트 튜너)의 공통 규칙은 "UI에서 한 일을 다시 붙여넣을 수 있는 것으로 바꿔 주는 export 버튼으로 끝내라"이다. 드래그로 티켓을 정렬한 뒤 그 순서를 마크다운으로, 플래그를 토글한 뒤 바뀐 키만 diff로 복사한다. 그래서 사람이 루프 안에 남고, 루프는 더 촘촘해진다. 이 왕복 설계가 이 저장소가 주는 가장 값진 실무 교훈이다.

주의 — 오해하기 쉬운 것
프레임워크가 아니라 "관점의 실물 카탈로그"

여기엔 설치할 패키지도, import할 라이브러리도 없다. 별점도 낮고(공식 저장소이지만 신생), 코드 재사용을 노린 프로젝트가 아니다. 잘못된 기대는 "이걸 npm으로 깔아 쓴다"는 것 — 올바른 사용법은 열어 보고, 구조를 뜯고, 다음에 에이전트에게 비슷한 HTML을 요청할 때 참조하는 것이다. (실제로 지금 이 문서가 속한 유행레포정리 컬렉션도 바로 이 "글 대신 디자인된 HTML" 철학 위에 서 있다.)

3기술 스택 전체 지도

역설적이게도, 이 프로젝트의 기술적 정체성은 "아무 스택도 쓰지 않는다"는 것

대부분의 프론트엔드 프로젝트가 React·번들러·수십 개 의존성으로 시작하는 것과 정반대다. 여기엔 그런 게 하나도 없다. 그리고 그 "없음"이 곧 메시지다.

무엇을 쓰나왜 이게 핵심인가
구조순수 HTML (시맨틱 태그)<section>·<details>·<table>만으로 접이식 설명·표·슬라이드 골격을 만든다.
스타일인라인 <style> (CSS Grid·Flex·변수)외부 CSS 파일 없음. 팔레트·타입스케일을 :root 변수로 선언해 파일 안에서 자족.
행동바닐라 JavaScript (프레임워크 0)슬라이드 방향키, 드래그 정렬, 슬라이더, 라이브 재렌더 — 전부 수십 줄의 순수 JS. jQuery조차 없다.
그래픽인라인 <svg>다이어그램·플로차트·아이콘을 벡터로 직접 그린다. 이미지 파일 대신 소스에 박혀 손으로 고칠 수 있다.
빌드없음트랜스파일·번들·설치 단계가 0. git clone 후 파일을 브라우저로 열면 끝.
의존성없음CDN·npm·폰트 서버 의존조차 최소. 오프라인에서도, 10년 뒤에도 그대로 열린다.
비유로 이해하기

이 저장소의 각 파일은 "한 장으로 완결된 팝업 카드" 같다. 요즘 웹앱이 부품 창고(node_modules)·조립 라인(번들러)·전기 배선(서버)이 다 갖춰져야 겨우 돌아가는 공장이라면, 이 HTML들은 봉투에서 꺼내 펼치면 스스로 서는 입체 카드다. 종이(브라우저)만 있으면 어디서든 똑같이 펼쳐진다. 이 "이식성과 수명"이 곧 자기완결의 값이다.

4아키텍처 심화 분석

"한 파일 안에 4겹을 인라인"하는 패턴과, 사람을 루프에 남기는 왕복 설계

모든 예제가 공유하는 아키텍처는 두 문장으로 요약된다: ① 구조·스타일·행동·데이터를 한 파일에 인라인해 자기완결로 만든다. ② 편집형 예제는 반드시 export로 끝나 산출물을 다음 프롬프트로 왕복시킨다.

사용자 요청 │ ▼ 에이전트가 "출력 형식"을 고른다 ┌──────────────┴───────────────┐ 선형 텍스트면 충분? 공간·상호작용·시각이 핵심? │ │ ▼ ▼ 마크다운 자기완결 HTML 한 장 │ ┌───────────────────────────────────┴───────────────────────┐ │ [ 구조 HTML ] + [ 스타일 CSS ] + [ 행동 JS ] + [ 데이터 ] │ │ 전부 한 파일에 인라인 · 빌드 없음 · 의존성 없음 │ └───────────────────────────────────┬───────────────────────┘ ▼ 사람이 브라우저에서 본다 / 만진다 (방향키 · 드래그 · 토글 · 슬라이더) │ ▼ [ Export 버튼 ] ──► 마크다운 · JSON · diff │ ▼ 다음 프롬프트로 왕복 (루프가 촘촘해진다)

핵심 설계 ① — 자기완결이 주는 세 가지 공짜 이득

이식성(어느 기기·브라우저에서나 동일), 수명(의존성이 썩지 않으니 오래 열림), 왕복 가능성(파일 하나라 통째로 다음 프롬프트에 붙여넣기 쉬움). 번들러를 버린 대가로 이 셋을 얻는다. 에이전트 산출물에서 이 셋은 특히 값지다 — 산출물이 대화 밖으로 나가도 혼자 살아남기 때문이다.

핵심 설계 ② — 점진적 공개(progressive disclosure)

리서치·설명 예제는 <details> 접이식 섹션, 탭 전환 코드 샘플, 여백의 용어집으로 정보를 층으로 감춘다. 같은 단어를 선형으로 쏟아붓는 것과, "TL;DR 먼저 → 펼치면 단계별 상세 → 옆에 hover 용어집"으로 주는 것은 읽는 경험이 전혀 다르다. HTML만이 이 탐색 가능한 골격을 만든다.

핵심 설계 ③ — 인라인 SVG = 에이전트의 진짜 펜

다이어그램 예제는 이미지 파일을 부르지 않고 <svg>를 소스에 직접 그린다. 그래서 산출물이 손으로 좌표 몇 개만 고쳐도 되는 벡터가 되고, 최종 문서에 그대로 복사돼 들어간다. "AI가 그림을 그린다"가 픽셀 생성이 아니라 편집 가능한 벡터 소스 생성일 수 있음을 보여준다.

핵심 설계 ④ — 사람을 루프에 남기는 export

편집 UI 3종(트리아지 보드·기능 플래그·프롬프트 튜너)의 진짜 주인공은 UI가 아니라 마지막의 export다. 드래그로 만든 상태를 텍스트로 뱉지 못하면 그 UI는 막다른 길이다. export가 있어야 "에이전트가 UI를 만들고 → 사람이 UI에서 결정하고 → 결정이 텍스트로 돌아가 에이전트가 이어받는" 순환이 닫힌다.

5디렉토리 구조 해부

평평한 폴더 하나에 번호 매긴 예제 20개 + 이들을 묶는 갤러리 index.html
html-effectiveness/ ├── index.html ★ 9개 묶음으로 분류한 갤러리(스위스 그리드 + SVG 썸네일) │ ├── 01-exploration-code-approaches.html 탐색·계획 ┐ ├── 02-exploration-visual-designs.html │ 여러 방향을 나란히 놓고 고르게 ├── 16-implementation-plan.html ┘ 고른 것을 넘길 계획서로 │ ├── 03-code-review-pr.html 코드 리뷰 ┐ 주석 달린 diff ├── 17-pr-writeup.html │ 리뷰어용 PR 설명 ├── 04-code-understanding.html ┘ 낯선 패키지를 박스·화살표 지도로 │ ├── 05-design-system.html 디자인 ┐ 토큰을 스와치로 ├── 06-component-variants.html ┘ 한 컴포넌트의 모든 변형 한 장 │ ├── 07-prototype-animation.html 프로토타입 ┐ 이징 슬라이더 샌드박스 ├── 08-prototype-interaction.html ┘ 화면 4개를 이은 클릭 흐름 │ ├── 10-svg-illustrations.html 다이어그램 ┐ 블로그용 인라인 SVG 도판 ├── 13-flowchart-diagram.html ┘ 클릭되는 배포 파이프라인 플로차트 │ ├── 09-slide-deck.html 슬라이드 방향키로 넘기는 발표(빌드 없음) │ ├── 14-research-feature-explainer.html 리서치 ┐ TL;DR + 접이식 요청 경로 + 탭 코드 + FAQ ├── 15-research-concept-explainer.html ┘ 살아있는 링으로 배우는 일관 해싱 + 용어집 │ ├── 11-status-report.html 보고서 ┐ 주간 상태 + 작은 차트 ├── 12-incident-report.html ┘ 분 단위 타임라인 사후 분석 │ ├── 18-editor-triage-board.html 맞춤 편집 UI ┐ 드래그 정렬 → 마크다운 export ├── 19-editor-feature-flags.html │ 의존성 경고 + "바뀐 키만" diff ├── 20-editor-prompt-tuner.html ┘ 좌: 편집 템플릿 / 우: 라이브 재렌더 │ └── README · LICENSE(MIT) · CONTRIBUTING · CODE_OF_CONDUCT · SECURITY

구조가 말하는 것: 계층이 없다는 게 의도다. 빌드 폴더도, src/도, 설정 파일도 없다. 각 .html은 이웃과 무관하게 혼자 완결돼 있고, index.html은 그저 이들을 일의 종류로 묶어 보여주는 안내판일 뿐이다 — 그 index 자신도 물론 자기완결 HTML 한 장이다.

6학습 포인트

웹 개발이 목표가 아니어도, 에이전트를 쓰는 누구나 훔쳐올 것들
배울 것 ①

"출력 형식"을 하나의 선택지로 의식하기

가장 큰 교훈은 코드가 아니라 판단 기준이다: 결과가 선형이면 마크다운, 공간·상호작용·시각이 핵심이면 HTML. 에이전트에게 "이건 표 말고 클릭되는 플로차트로", "타임라인으로", "슬라이더 붙은 프로토타입으로"라고 형식을 지정하는 습관이 산출물의 질을 바꾼다.

배울 것 ②

자기완결 HTML 작성법 — 4겹을 한 파일에

구조·스타일·행동·데이터를 인라인해 빌드 없이 서는 파일을 만드는 법. :root CSS 변수로 팔레트를 잡고, <details>로 점진 공개를 주고, 수십 줄 바닐라 JS로 상호작용을 넣는다. 프레임워크 없이도 놀랄 만큼 멀리 간다는 감각을 얻는다.

배울 것 ③

인라인 SVG로 다이어그램을 "데이터처럼" 다루기

플로차트·모듈 지도를 <svg> 좌표로 직접 그리면, 그림이 버전 관리되고 손으로 고쳐지는 소스가 된다. 캡처 이미지와 달리 재편집·재사용이 공짜다.

배울 것 ④

Export/왕복 패턴 — UI를 막다른 길로 끝내지 않기

맞춤 편집기를 만들 땐 반드시 "다시 텍스트로 뱉는" 출구를 둔다. 이 한 가지가 "구경만 하는 데모"와 "에이전트 루프에 실제로 물리는 도구"를 가른다. 사람이 결정하고, 그 결정이 기계로 돌아간다.

배울 것 ⑤

상호작용으로 프로토타이핑 — "느끼게" 하기

이징·클릭 흐름처럼 말로 안 되는 것을 버릴 셈 친 페이지로 5초 만에 전달하는 법. 충실도는 판단에 필요한 만큼만. "프로토타입 ≠ 프로덕션"의 절제를 배운다.

실습 아이디어 (짧게)

예제 하나(15-research-concept-explainer.html 추천)를 브라우저로 열어 보고, 곧바로 소스를 열어 같은 파일 안에 구조·스타일·상호작용이 어떻게 다 들어 있는지 눈으로 확인하라. "라이브 링을 돌리는 JS가 고작 몇십 줄"이라는 사실이 자기완결의 힘을 각인시킨다.

7시스템 요구사항

사실상 "브라우저 하나" — 이보다 요구사항이 적기 어렵다
항목요구사항
실행최신 웹 브라우저. 설치·빌드·서버 전부 불필요 — 파일을 더블클릭하면 열린다.
받기git clone 또는 개별 .html 내려받기. 또는 갤러리 thariqs.github.io/html-effectiveness 방문.
의존성없음. node_modules·CDN·패키지 매니저 불요.
수정텍스트 에디터만 있으면 됨. 각 파일이 자기완결이라 부분만 고쳐도 안전.
라이선스MIT — 자유롭게 참조·개작·재사용. 모든 예시 데이터는 가상("Acme").
상태블로그 동반 예제 모음(교육·참조용). 프로덕션 라이브러리 아님.

8직접 해볼 수 있는 실습 과제

읽기에서 시작해, 직접 자기완결 HTML을 뽑아 보는 데까지

과제 1. 예제 한 장 완전 해부 난이도 ★☆☆

18-editor-triage-board.html을 브라우저로 열어 티켓을 드래그해 보고 export를 눌러라. 그다음 소스를 열어 드래그 로직·상태 저장·마크다운 export가 각각 몇 줄인지 표시하라. 목표: "상호작용 UI + 출구"가 순수 JS 수십 줄로 된다는 걸 체감.

과제 2. 마크다운 보고서를 HTML로 승격 난이도 ★☆☆

당신이 최근 받은 마크다운 상태 보고 하나를 11-status-report.html을 참고해 작은 차트 + 색칠된 타임라인이 있는 자기완결 HTML로 바꿔라. 목표: 같은 내용이 "훑는 것"에서 "읽는 것"으로 바뀌는 순간을 직접 만들기.

과제 3. 인라인 SVG 플로차트 그리기 난이도 ★★☆

13-flowchart-diagram.html을 뜯어, 당신 프로젝트의 배포/요청 흐름을 <svg>로 직접 그린 클릭 가능한 플로차트로 만들어라. 각 단계 클릭 시 상세가 펼쳐지게. 목표: 다이어그램을 이미지가 아니라 편집 가능한 소스로 다루기.

과제 4. export 있는 미니 편집기 만들기 난이도 ★★★

19-editor-feature-flags.html의 패턴으로, 당신 도메인에 맞는 작은 편집기(예: 체크리스트·우선순위 보드)를 만들되 "바뀐 것만 diff/JSON으로 복사" 버튼으로 끝내라. 목표: 왕복 루프를 스스로 닫아 보기.

과제 5. 에이전트에게 "형식"을 주문하기 난이도 ★★☆

Claude에게 당신 저장소를 주고 04-code-understanding.html처럼 "박스와 화살표 모듈 지도 + 핫패스 강조"를 자기완결 HTML로 달라고 요청하라. 마크다운 요약과 결과를 비교하라. 목표: 출력 형식 지정이 산출물 질을 어떻게 바꾸는지 실측.

9관련 기술 심화 학습 로드맵

"프레임워크 없이 멀리 가기"를 제대로 익히는 4주 코스
주차주제무엇을 · 왜
1주차현대 HTML·CSS의 힘시맨틱 태그·<details>·CSS Grid/Flex·:root 변수·clamp(). "프레임워크 없이도 되는 것"의 범위를 넓힌다. 과제 2로 실습.
2주차인라인 SVG & 벡터 사고viewBox·좌표계·path·기본 도형. 다이어그램을 데이터처럼 다루는 법. 과제 3으로 플로차트 제작.
3주차바닐라 JS 상호작용이벤트·드래그&드롭·<input> 슬라이더·라이브 재렌더. 의존성 없이 UI를 살아 움직이게. 과제 1·4로 편집기 제작.
4주차에이전트 출력 형식 & 왕복언제 마크다운, 언제 HTML인지의 판단틀. 프롬프트로 형식을 지정하고, export로 루프를 닫는 설계. 과제 5로 마무리.

10핵심 키워드 사전

이 문서에 나온 개념들을 한 줄로
자기완결(self-contained) HTML
구조·스타일·행동·데이터를 한 파일에 인라인해, 빌드·의존성 없이 브라우저에서 바로 열리는 문서.
아티팩트(artifact)
에이전트가 대화 중 내놓는 산출물. 여기선 특히 "글의 벽" 대신 내놓는 HTML 한 장을 가리킨다.
왕복(round-trip)
HTML 산출물을 사람이 만진 뒤 다시 텍스트(마크다운·JSON·diff)로 뱉어 다음 프롬프트로 되먹이는 순환.
출력 형식(output format) 선택
에이전트가 "무엇을 어떤 모양으로 내놓을지"를 의식적으로 고르는 것. 선형이면 마크다운, 공간·상호작용이면 HTML.
점진적 공개(progressive disclosure)
TL;DR → 접이식 상세 → 옆 용어집처럼 정보를 층으로 감춰, 훑기와 정독을 동시에 지원하는 설계.
인라인 SVG
이미지 파일 대신 소스에 직접 그린 벡터 그래픽. 버전 관리·손편집·재사용이 공짜.
Export 버튼 패턴
편집 UI를 "다시 붙여넣을 수 있는 텍스트"로 끝내는 규칙. 사람을 루프 안에 남기는 장치.
no-build / no-deps
트랜스파일·번들·설치 단계와 외부 의존성이 0. 이식성·수명·왕복 가능성을 얻는 대가.
프로토타입 ≠ 프로덕션
판단에 필요한 최소 충실도만 만든 버릴 셈의 산출물. 움직임·상호작용을 "느끼게" 하는 용도.

11참고 링크

원문으로 더 파고들기