anthropics/html-effectiveness · 라이선스 MIT · 구성 번호가 매겨진 예제 20개 + 갤러리 index.html · 기술 순수 HTML·CSS·바닐라 JS, 빌드·의존성 0 · 최신 커밋 2026-05-15 · 공개 갤러리 thariqs.github.io/html-effectiveness · 모든 예시 데이터는 가상("Acme") · shallow clone 소스 직접 분석)
이건 라이브러리도 프레임워크도 아니다. 읽고 베껴 쓰라고 만든 참조 갤러리다 — "이런 상황에는 글 대신 이런 HTML을 뽑아라"를 20개의 완성된 실물로 보여준다.
각 예제는 대체하는 일의 종류로 묶여 있다: 탐색·계획, 코드 리뷰, 디자인, 프로토타이핑, 다이어그램, 슬라이드, 리서치, 보고서, 그리고 맞춤 편집 UI.
핵심은 "예쁜 웹페이지 만들기"가 아니다. 출력 형식의 선택이다. 같은 내용을 마크다운으로 주면 스크롤해야 할 텍스트가 되지만, HTML로 주면 한눈에 들어오는 공간 배치가 된다. 이 저장소는 그 차이가 실제로 얼마나 큰지를, 말로 설명하는 대신 열어서 보게 만든다.
이 저장소가 흥미로운 이유는 규모나 별점이 아니라 관점이다. LLM/에이전트가 보편화되면서 "모델이 무엇을 어떻게 내놓아야 하는가"가 실무 문제가 됐는데, 대부분의 도구는 관성적으로 마크다운을 뱉는다. 이 갤러리는 그 기본값에 정면으로 반문한다.
diff·호출 그래프·타임라인·상태 대시보드는 본래 2차원(공간) 정보다. 마크다운은 이것을 위에서 아래로 흐르는 한 줄짜리 텍스트로 눌러 버린다. 저장소의 표현을 빌리면, "diff와 콜그래프는 공간적 정보인데 마크다운이 그걸 평탄화한다." HTML은 반대로 주석 달린 diff·박스와 화살표·색칠된 타임라인으로 그 형태를 한눈에 되살린다.
이징(easing) 곡선이나 클릭 흐름은 문단으로 아무리 써도 전달되지 않는다. 진짜 이징이 걸린 버릴 셈 치고 만든 페이지 하나가 5초 만에 알려준다. 프로토타이핑·애니메이션 예제가 바로 이 지점을 노린다 — "프로토타입은 프로덕션이 아니다"라는 태도로, 판단에 필요한 최소 충실도만 만든다.
편집 UI 예제(트리아지 보드·기능 플래그·프롬프트 튜너)의 공통 규칙은 "UI에서 한 일을 다시 붙여넣을 수 있는 것으로 바꿔 주는 export 버튼으로 끝내라"이다. 드래그로 티켓을 정렬한 뒤 그 순서를 마크다운으로, 플래그를 토글한 뒤 바뀐 키만 diff로 복사한다. 그래서 사람이 루프 안에 남고, 루프는 더 촘촘해진다. 이 왕복 설계가 이 저장소가 주는 가장 값진 실무 교훈이다.
여기엔 설치할 패키지도, import할 라이브러리도 없다. 별점도 낮고(공식 저장소이지만 신생), 코드 재사용을 노린 프로젝트가 아니다. 잘못된 기대는 "이걸 npm으로 깔아 쓴다"는 것 — 올바른 사용법은 열어 보고, 구조를 뜯고, 다음에 에이전트에게 비슷한 HTML을 요청할 때 참조하는 것이다. (실제로 지금 이 문서가 속한 유행레포정리 컬렉션도 바로 이 "글 대신 디자인된 HTML" 철학 위에 서 있다.)
대부분의 프론트엔드 프로젝트가 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들은 봉투에서 꺼내 펼치면 스스로 서는 입체 카드다. 종이(브라우저)만 있으면 어디서든 똑같이 펼쳐진다. 이 "이식성과 수명"이 곧 자기완결의 값이다.
모든 예제가 공유하는 아키텍처는 두 문장으로 요약된다: ① 구조·스타일·행동·데이터를 한 파일에 인라인해 자기완결로 만든다. ② 편집형 예제는 반드시 export로 끝나 산출물을 다음 프롬프트로 왕복시킨다.
이식성(어느 기기·브라우저에서나 동일), 수명(의존성이 썩지 않으니 오래 열림), 왕복 가능성(파일 하나라 통째로 다음 프롬프트에 붙여넣기 쉬움). 번들러를 버린 대가로 이 셋을 얻는다. 에이전트 산출물에서 이 셋은 특히 값지다 — 산출물이 대화 밖으로 나가도 혼자 살아남기 때문이다.
리서치·설명 예제는 <details> 접이식 섹션, 탭 전환 코드 샘플, 여백의 용어집으로 정보를 층으로 감춘다. 같은 단어를 선형으로 쏟아붓는 것과, "TL;DR 먼저 → 펼치면 단계별 상세 → 옆에 hover 용어집"으로 주는 것은 읽는 경험이 전혀 다르다. HTML만이 이 탐색 가능한 골격을 만든다.
다이어그램 예제는 이미지 파일을 부르지 않고 <svg>를 소스에 직접 그린다. 그래서 산출물이 손으로 좌표 몇 개만 고쳐도 되는 벡터가 되고, 최종 문서에 그대로 복사돼 들어간다. "AI가 그림을 그린다"가 픽셀 생성이 아니라 편집 가능한 벡터 소스 생성일 수 있음을 보여준다.
편집 UI 3종(트리아지 보드·기능 플래그·프롬프트 튜너)의 진짜 주인공은 UI가 아니라 마지막의 export다. 드래그로 만든 상태를 텍스트로 뱉지 못하면 그 UI는 막다른 길이다. export가 있어야 "에이전트가 UI를 만들고 → 사람이 UI에서 결정하고 → 결정이 텍스트로 돌아가 에이전트가 이어받는" 순환이 닫힌다.
index.html구조가 말하는 것: 계층이 없다는 게 의도다. 빌드 폴더도, src/도, 설정 파일도 없다. 각 .html은 이웃과 무관하게 혼자 완결돼 있고, index.html은 그저 이들을 일의 종류로 묶어 보여주는 안내판일 뿐이다 — 그 index 자신도 물론 자기완결 HTML 한 장이다.
가장 큰 교훈은 코드가 아니라 판단 기준이다: 결과가 선형이면 마크다운, 공간·상호작용·시각이 핵심이면 HTML. 에이전트에게 "이건 표 말고 클릭되는 플로차트로", "타임라인으로", "슬라이더 붙은 프로토타입으로"라고 형식을 지정하는 습관이 산출물의 질을 바꾼다.
구조·스타일·행동·데이터를 인라인해 빌드 없이 서는 파일을 만드는 법. :root CSS 변수로 팔레트를 잡고, <details>로 점진 공개를 주고, 수십 줄 바닐라 JS로 상호작용을 넣는다. 프레임워크 없이도 놀랄 만큼 멀리 간다는 감각을 얻는다.
플로차트·모듈 지도를 <svg> 좌표로 직접 그리면, 그림이 버전 관리되고 손으로 고쳐지는 소스가 된다. 캡처 이미지와 달리 재편집·재사용이 공짜다.
맞춤 편집기를 만들 땐 반드시 "다시 텍스트로 뱉는" 출구를 둔다. 이 한 가지가 "구경만 하는 데모"와 "에이전트 루프에 실제로 물리는 도구"를 가른다. 사람이 결정하고, 그 결정이 기계로 돌아간다.
이징·클릭 흐름처럼 말로 안 되는 것을 버릴 셈 친 페이지로 5초 만에 전달하는 법. 충실도는 판단에 필요한 만큼만. "프로토타입 ≠ 프로덕션"의 절제를 배운다.
예제 하나(15-research-concept-explainer.html 추천)를 브라우저로 열어 보고, 곧바로 소스를 열어 같은 파일 안에 구조·스타일·상호작용이 어떻게 다 들어 있는지 눈으로 확인하라. "라이브 링을 돌리는 JS가 고작 몇십 줄"이라는 사실이 자기완결의 힘을 각인시킨다.
| 항목 | 요구사항 |
|---|---|
| 실행 | 최신 웹 브라우저. 설치·빌드·서버 전부 불필요 — 파일을 더블클릭하면 열린다. |
| 받기 | git clone 또는 개별 .html 내려받기. 또는 갤러리 thariqs.github.io/html-effectiveness 방문. |
| 의존성 | 없음. node_modules·CDN·패키지 매니저 불요. |
| 수정 | 텍스트 에디터만 있으면 됨. 각 파일이 자기완결이라 부분만 고쳐도 안전. |
| 라이선스 | MIT — 자유롭게 참조·개작·재사용. 모든 예시 데이터는 가상("Acme"). |
| 상태 | 블로그 동반 예제 모음(교육·참조용). 프로덕션 라이브러리 아님. |
18-editor-triage-board.html을 브라우저로 열어 티켓을 드래그해 보고 export를 눌러라. 그다음 소스를 열어 드래그 로직·상태 저장·마크다운 export가 각각 몇 줄인지 표시하라. 목표: "상호작용 UI + 출구"가 순수 JS 수십 줄로 된다는 걸 체감.
당신이 최근 받은 마크다운 상태 보고 하나를 11-status-report.html을 참고해 작은 차트 + 색칠된 타임라인이 있는 자기완결 HTML로 바꿔라. 목표: 같은 내용이 "훑는 것"에서 "읽는 것"으로 바뀌는 순간을 직접 만들기.
13-flowchart-diagram.html을 뜯어, 당신 프로젝트의 배포/요청 흐름을 <svg>로 직접 그린 클릭 가능한 플로차트로 만들어라. 각 단계 클릭 시 상세가 펼쳐지게. 목표: 다이어그램을 이미지가 아니라 편집 가능한 소스로 다루기.
19-editor-feature-flags.html의 패턴으로, 당신 도메인에 맞는 작은 편집기(예: 체크리스트·우선순위 보드)를 만들되 "바뀐 것만 diff/JSON으로 복사" 버튼으로 끝내라. 목표: 왕복 루프를 스스로 닫아 보기.
Claude에게 당신 저장소를 주고 04-code-understanding.html처럼 "박스와 화살표 모듈 지도 + 핫패스 강조"를 자기완결 HTML로 달라고 요청하라. 마크다운 요약과 결과를 비교하라. 목표: 출력 형식 지정이 산출물 질을 어떻게 바꾸는지 실측.
| 주차 | 주제 | 무엇을 · 왜 |
|---|---|---|
| 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로 마무리. |