diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 61bafa3..8a64b02 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,7 +1,7 @@ { "name": "kit", "description": "Community plugin & skills marketplace for Claude Code", - "version": "1.9.0", + "version": "1.9.1", "owner": { "name": "hamsurang", "email": "zlemzlem5656@naver.com" diff --git a/docs/assets/hamsurang-slide/html/sample-dark.html b/docs/assets/hamsurang-slide/html/sample-dark.html new file mode 100644 index 0000000..97e11b6 --- /dev/null +++ b/docs/assets/hamsurang-slide/html/sample-dark.html @@ -0,0 +1,837 @@ + + + + + + 함수랑 슬라이드 — Hamsurang + + + + + + + + +
+
+
+ + +
+
+ 함수랑산악회 로고 + 함수랑산악회 로고 + 함수랑산악회 +
+

함수랑 슬라이드

+
+ 함수랑산악회
+ Hamsurang Brand HTML Presentation Generator +
+ +
+ + +
+

슬라이드 유형 목차

+
+
1Title오프닝
+
2Closing클로징
+
3Agenda목차 (지금 이 슬라이드)
+
4Section Divider섹션 구분
+
5Key Point핵심 메시지
+
6Quote인용문
+
7Comparison비교 분석
+
8Flow단계별 흐름
+
9Card Grid카드 그리드
+
10Content본문 내용
+
11Code코드 블록
+
12Architecture시스템 구조
+
13Timetable타임테이블
+
14Timeline타임라인
+
+
+ + +
+

Core 4 슬라이드

+

모든 발표의 뼈대를 구성하는 4가지 기본 슬라이드 유형

+
+ + +
+
14가지 슬라이드 유형
+

Light & Dark 테마 · 발표자 노트 · 풀스크린 지원
단일 HTML 파일로 완성되는 함수랑 브랜드 발표

+
+ + +
+

인용문 슬라이드

+
+
+

"산을 오르는 것처럼,
좋은 발표는 한 걸음씩 쌓인다."

+

— 함수랑산악회

+
+
+
+ + +
+

Flexible 10 슬라이드

+

내용과 목적에 따라 선택하는 10가지 유연한 슬라이드 유형

+
+ + +
+

비교 슬라이드 — 일반 도구 vs 함수랑 슬라이드

+
+
+
일반 발표 도구
+
    +
  • PowerPoint / Keynote 의존
  • +
  • 수동 디자인 작업 필요
  • +
  • 브랜드 색상 매번 설정
  • +
  • 파일 전송 및 버전 관리 번거로움
  • +
+
+
+
함수랑 슬라이드
+
    +
  • 단일 HTML 파일 브라우저 실행
  • +
  • AI 자동 콘텐츠 생성
  • +
  • 함수랑 브랜드 자동 적용
  • +
  • 링크 공유 또는 PDF 인쇄
  • +
+
+
+
+ + +
+

발표 제작 흐름

+
+
+ STEP 1 +

주제 입력

+

주제 & 시간 전달

+
+
+
+ STEP 2 +

아웃라인 확인

+

슬라이드 구성 검토

+
+
+
+ STEP 3 +

테마 선택

+

Light / Dark

+
+
+
+ STEP 4 +

HTML 생성

+

브라우저에서 실행

+
+
+
+ + +
+

핵심 기능

+
+
+ 🎨 +

Soft Modern 디자인

+

함수랑산악회 브랜드 아이덴티티가 담긴 그린 팔레트 디자인 시스템

+
+
+ 🌓 +

Light & Dark 테마

+

밝고 개방적인 라이트, 몰입감 있는 다크 — 상황에 맞게 선택

+
+
+ 💻 +

코드 하이라이팅

+

highlight.js 기반 4색 구문 강조 — 개발 발표에 최적화

+
+
+ 🏔️ +

산 일러스트

+

함수랑산악회 상징, Title & Closing 슬라이드에 자동 삽입

+
+
+
+ + +
+

키보드 단축키

+
    +
  • → / Space — 다음 슬라이드
  • +
  • — 이전 슬라이드
  • +
  • F — 풀스크린 토글
  • +
  • S — 발표자 노트 팝업 열기
  • +
  • Escape — 풀스크린 종료
  • +
  • Ctrl+P — PDF로 인쇄 / 저장
  • +
+
+ + +
+

슬라이드 HTML 구조

+
<!-- 슬라이드 기본 구조 -->
+<div class="slide slide--content"
+     data-notes="발표자 노트 내용 [2 min]">
+
+  <h2>슬라이드 제목</h2>
+
+  <ul>
+    <li class="a">핵심 내용 1</li>
+    <li class="a">핵심 내용 2</li>
+    <li class="a">핵심 내용 3</li>
+  </ul>
+
+</div>
+

+ 모든 슬라이드는 단일 HTML 파일 · 브라우저에서 즉시 실행 +

+
+ + +
+

참조 아키텍처

+
+flowchart LR + A[사용자 요청] -->|주제·시간| B[Claude AI] + B -->|슬라이드 아웃라인| C{확인·수정} + C -->|승인| D[테마 선택] + D --> E[HTML 생성기] + E -->|단일 파일| F[🌐 브라우저] + subgraph refs[참조 파일] + R1[generation-rules.md
CSS SSOT] + R2[slide-catalog.md
14종 구조] + R3[html-spec.md
JS · CDN] + end + E --> refs +
+
+ + +
+

발표 타임테이블 예시 (10분)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
시간섹션슬라이드 유형비고
00:00 – 01:00오프닝Title · Agenda간단 자기소개
01:00 – 04:00Core 4 소개Section Divider · Key Point · Quote핵심 유형 시연
04:00 – 08:00Flexible 10 소개Comparison · Flow · Card Grid · Code · Architecture실사용 예시 포함
08:00 – 09:30실시간 데모Timetable · Timeline라이브 생성 시연
09:30 – 10:00마무리Closing함바! ⛰️
+
+ + +
+

함수랑 슬라이드 발전사

+
+
+ 2024.01 +
+

프로젝트 시작

+

Core 4종 슬라이드 구현 (Title, Closing, Agenda, Section Divider)

+
+
+
+ 2024.04 +
+

Flexible 10종 추가

+

Key Point, Quote, Comparison, Flow, Card Grid 등 10종 확장

+
+
+
+ 2024.07 +
+

highlight.js & mermaid.js 연동

+

코드 하이라이팅 4색 테마 및 다이어그램 지원 완성

+
+
+
+ 2024.10 +
+

Light / Dark 이중 테마 완성

+

CSS 변수 기반 완전한 테마 시스템 및 인쇄 지원

+
+
+
+ 2025.01 +
+

함수랑 플러그인 Kit 정식 출시

+

Claude Code 플러그인으로 통합, hamsurang-slide 스킬 공개

+
+
+
+
+ + +
+
+ 함수랑산악회 로고 + 함수랑산악회 로고 +

함수랑과 함께

+
+
+

함수랑 슬라이드로 브랜드 일관성 있는 발표를 만들어보세요.

+

14가지 슬라이드 유형 · Light & Dark 테마 · 단일 HTML 파일

+

함바! ⛰️

+
+ +
+ +
+
1 / 15
+
+ + + + diff --git a/docs/assets/hamsurang-slide/html/sample-light.html b/docs/assets/hamsurang-slide/html/sample-light.html new file mode 100644 index 0000000..8dcaed7 --- /dev/null +++ b/docs/assets/hamsurang-slide/html/sample-light.html @@ -0,0 +1,837 @@ + + + + + + 함수랑 슬라이드 — Hamsurang + + + + + + + + +
+
+
+ + +
+
+ 함수랑산악회 로고 + 함수랑산악회 로고 + 함수랑산악회 +
+

함수랑 슬라이드

+
+ 함수랑산악회
+ Hamsurang Brand HTML Presentation Generator +
+ +
+ + +
+

슬라이드 유형 목차

+
+
1Title오프닝
+
2Closing클로징
+
3Agenda목차 (지금 이 슬라이드)
+
4Section Divider섹션 구분
+
5Key Point핵심 메시지
+
6Quote인용문
+
7Comparison비교 분석
+
8Flow단계별 흐름
+
9Card Grid카드 그리드
+
10Content본문 내용
+
11Code코드 블록
+
12Architecture시스템 구조
+
13Timetable타임테이블
+
14Timeline타임라인
+
+
+ + +
+

Core 4 슬라이드

+

모든 발표의 뼈대를 구성하는 4가지 기본 슬라이드 유형

+
+ + +
+
14가지 슬라이드 유형
+

Light & Dark 테마 · 발표자 노트 · 풀스크린 지원
단일 HTML 파일로 완성되는 함수랑 브랜드 발표

+
+ + +
+

인용문 슬라이드

+
+
+

"산을 오르는 것처럼,
좋은 발표는 한 걸음씩 쌓인다."

+

— 함수랑산악회

+
+
+
+ + +
+

Flexible 10 슬라이드

+

내용과 목적에 따라 선택하는 10가지 유연한 슬라이드 유형

+
+ + +
+

비교 슬라이드 — 일반 도구 vs 함수랑 슬라이드

+
+
+
일반 발표 도구
+
    +
  • PowerPoint / Keynote 의존
  • +
  • 수동 디자인 작업 필요
  • +
  • 브랜드 색상 매번 설정
  • +
  • 파일 전송 및 버전 관리 번거로움
  • +
+
+
+
함수랑 슬라이드
+
    +
  • 단일 HTML 파일 브라우저 실행
  • +
  • AI 자동 콘텐츠 생성
  • +
  • 함수랑 브랜드 자동 적용
  • +
  • 링크 공유 또는 PDF 인쇄
  • +
+
+
+
+ + +
+

발표 제작 흐름

+
+
+ STEP 1 +

주제 입력

+

주제 & 시간 전달

+
+
+
+ STEP 2 +

아웃라인 확인

+

슬라이드 구성 검토

+
+
+
+ STEP 3 +

테마 선택

+

Light / Dark

+
+
+
+ STEP 4 +

HTML 생성

+

브라우저에서 실행

+
+
+
+ + +
+

핵심 기능

+
+
+ 🎨 +

Soft Modern 디자인

+

함수랑산악회 브랜드 아이덴티티가 담긴 그린 팔레트 디자인 시스템

+
+
+ 🌓 +

Light & Dark 테마

+

밝고 개방적인 라이트, 몰입감 있는 다크 — 상황에 맞게 선택

+
+
+ 💻 +

코드 하이라이팅

+

highlight.js 기반 4색 구문 강조 — 개발 발표에 최적화

+
+
+ 🏔️ +

산 일러스트

+

함수랑산악회 상징, Title & Closing 슬라이드에 자동 삽입

+
+
+
+ + +
+

키보드 단축키

+
    +
  • → / Space — 다음 슬라이드
  • +
  • — 이전 슬라이드
  • +
  • F — 풀스크린 토글
  • +
  • S — 발표자 노트 팝업 열기
  • +
  • Escape — 풀스크린 종료
  • +
  • Ctrl+P — PDF로 인쇄 / 저장
  • +
+
+ + +
+

슬라이드 HTML 구조

+
<!-- 슬라이드 기본 구조 -->
+<div class="slide slide--content"
+     data-notes="발표자 노트 내용 [2 min]">
+
+  <h2>슬라이드 제목</h2>
+
+  <ul>
+    <li class="a">핵심 내용 1</li>
+    <li class="a">핵심 내용 2</li>
+    <li class="a">핵심 내용 3</li>
+  </ul>
+
+</div>
+

+ 모든 슬라이드는 단일 HTML 파일 · 브라우저에서 즉시 실행 +

+
+ + +
+

참조 아키텍처

+
+flowchart LR + A[사용자 요청] -->|주제·시간| B[Claude AI] + B -->|슬라이드 아웃라인| C{확인·수정} + C -->|승인| D[테마 선택] + D --> E[HTML 생성기] + E -->|단일 파일| F[🌐 브라우저] + subgraph refs[참조 파일] + R1[generation-rules.md
CSS SSOT] + R2[slide-catalog.md
14종 구조] + R3[html-spec.md
JS · CDN] + end + E --> refs +
+
+ + +
+

발표 타임테이블 예시 (10분)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
시간섹션슬라이드 유형비고
00:00 – 01:00오프닝Title · Agenda간단 자기소개
01:00 – 04:00Core 4 소개Section Divider · Key Point · Quote핵심 유형 시연
04:00 – 08:00Flexible 10 소개Comparison · Flow · Card Grid · Code · Architecture실사용 예시 포함
08:00 – 09:30실시간 데모Timetable · Timeline라이브 생성 시연
09:30 – 10:00마무리Closing함바! ⛰️
+
+ + +
+

함수랑 슬라이드 발전사

+
+
+ 2024.01 +
+

프로젝트 시작

+

Core 4종 슬라이드 구현 (Title, Closing, Agenda, Section Divider)

+
+
+
+ 2024.04 +
+

Flexible 10종 추가

+

Key Point, Quote, Comparison, Flow, Card Grid 등 10종 확장

+
+
+
+ 2024.07 +
+

highlight.js & mermaid.js 연동

+

코드 하이라이팅 4색 테마 및 다이어그램 지원 완성

+
+
+
+ 2024.10 +
+

Light / Dark 이중 테마 완성

+

CSS 변수 기반 완전한 테마 시스템 및 인쇄 지원

+
+
+
+ 2025.01 +
+

함수랑 플러그인 Kit 정식 출시

+

Claude Code 플러그인으로 통합, hamsurang-slide 스킬 공개

+
+
+
+
+ + +
+
+ 함수랑산악회 로고 + 함수랑산악회 로고 +

함수랑과 함께

+
+
+

함수랑 슬라이드로 브랜드 일관성 있는 발표를 만들어보세요.

+

14가지 슬라이드 유형 · Light & Dark 테마 · 단일 HTML 파일

+

함바! ⛰️

+
+ +
+ +
+
1 / 15
+
+ + + + diff --git a/docs/assets/hamsurang-slide/images/dark.png b/docs/assets/hamsurang-slide/images/dark.png new file mode 100644 index 0000000..da382a3 Binary files /dev/null and b/docs/assets/hamsurang-slide/images/dark.png differ diff --git a/docs/assets/hamsurang-slide/images/light.png b/docs/assets/hamsurang-slide/images/light.png new file mode 100644 index 0000000..f97f89f Binary files /dev/null and b/docs/assets/hamsurang-slide/images/light.png differ diff --git a/plugins/hamsurang-slide/.claude-plugin/plugin.json b/plugins/hamsurang-slide/.claude-plugin/plugin.json index f86d26b..fda44de 100644 --- a/plugins/hamsurang-slide/.claude-plugin/plugin.json +++ b/plugins/hamsurang-slide/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "hamsurang-slide", - "version": "1.0.0", + "version": "1.1.0", "description": "Hamsurang brand HTML presentation generator. Soft Modern design with light/dark themes, 14 slide types, 4-color code highlighting.", "author": { "name": "Sonny", diff --git a/plugins/hamsurang-slide/README.md b/plugins/hamsurang-slide/README.md index f0e94cd..7c31ed5 100644 --- a/plugins/hamsurang-slide/README.md +++ b/plugins/hamsurang-slide/README.md @@ -2,6 +2,23 @@ > Brand presentation generator for Hamsurang (함수랑산악회) with Soft Modern design. +## Themes + +**Light theme** +![light theme](../../docs/assets/hamsurang-slide/images/light.png) + + +[Go to sample-light.html](https://hamsurang.github.io/kit/assets/hamsurang-slide/html/sample-light.html) + + + +**Dark theme** + +![dark theme](../../docs/assets/hamsurang-slide/images/dark.png) + +[Go to sample-dark.html](https://hamsurang.github.io/kit/assets/hamsurang-slide/html/sample-dark.html) + + ## Features - **Soft Modern** design — glassmorphism cards, green-tinted gradients, soft shadows diff --git a/plugins/hamsurang-slide/skills/hamsurang-slide/references/generation-rules.md b/plugins/hamsurang-slide/skills/hamsurang-slide/references/generation-rules.md index 4881bb7..9eb19a9 100644 --- a/plugins/hamsurang-slide/skills/hamsurang-slide/references/generation-rules.md +++ b/plugins/hamsurang-slide/skills/hamsurang-slide/references/generation-rules.md @@ -82,14 +82,14 @@ No other file contains implementable style values. body { font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; - background: #000; + background: var(--background); overflow: hidden; } .presentation { width: 100vw; height: 100vh; display: flex; align-items: center; justify-content: center; - background: #000; overflow: hidden; + background: var(--background); overflow: hidden; } .slides-container { @@ -327,6 +327,7 @@ ul li::before { content: ''; width: 8px; height: 8px; border-radius: 50%; backgr ```css @media print { + html, body { overflow: visible !important; height: auto !important; background: #fff !important; } .controls, .progress-bar, .slide-counter { display: none !important; } .presentation { background: none; width: auto; height: auto; overflow: visible; display: block; } .slides-container { width: auto; height: auto; overflow: visible; transform: none !important; display: block; } @@ -337,9 +338,30 @@ ul li::before { content: ''; width: 8px; height: 8px; border-radius: 50%; backgr pointer-events: auto !important; page-break-after: always; break-after: page; animation: none !important; + -webkit-print-color-adjust: exact; print-color-adjust: exact; } .slide:last-child { page-break-after: auto; break-after: auto; } - @page { size: 1280px 720px landscape; margin: 0; } + /* Reset animation opacity — .a elements start at opacity:0 and animate in; + in print mode animations don't run, so force them visible */ + .slide .a { opacity: 1 !important; animation: none !important; transform: none !important; } + /* Glassmorphism cards: backdrop-filter not supported in print. + Without it, dark-theme cards (rgba background at 6% opacity) become invisible */ + /* Explicit print-color-adjust on cards (not just inherited from .slide) ensures backgrounds print. + Light theme: #f7faf9 instead of white to differentiate from the #ffffff slide background. + Dark theme: #1a2d25 (visibly lighter than slide #0c1410) for clear card distinction. */ + .card, .flow .step, .versus .panel { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; } + .card, .flow .step { background: #f7faf9 !important; border-color: rgba(0,153,114,0.25) !important; } + .versus .panel.good { background: #f0faf7 !important; border-color: rgba(0,153,114,0.35) !important; } + .versus .panel.bad { background: #fff5f5 !important; border-color: rgba(239,68,68,0.35) !important; } + [data-theme="dark"] .card, + [data-theme="dark"] .flow .step { background: #1a2d25 !important; border-color: rgba(0,153,114,0.40) !important; } + /* Versus panels need separate rules — bad panel must stay red, not green */ + [data-theme="dark"] .versus .panel.good { background: #0e1f1a !important; border-color: rgba(0,153,114,0.45) !important; } + [data-theme="dark"] .versus .panel.bad { background: #1f0e0e !important; border-color: rgba(248,113,113,0.45) !important; } + /* Section Divider underline bar: print strips opacity-based stacking contexts, pushing + z-index:-1 behind the slide background. Reset z-index and force background to print */ + .slide--section-divider h2::after { z-index: 0 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; background: rgba(0,153,114,0.45) !important; } + @page { size: 1280px 720px; margin: 0; } } ``` diff --git a/plugins/hamsurang-slide/skills/hamsurang-slide/references/html-spec.md b/plugins/hamsurang-slide/skills/hamsurang-slide/references/html-spec.md index 6a9f7c8..7e5487c 100644 --- a/plugins/hamsurang-slide/skills/hamsurang-slide/references/html-spec.md +++ b/plugins/hamsurang-slide/skills/hamsurang-slide/references/html-spec.md @@ -47,6 +47,14 @@ Do not include highlight.js stylesheet — the custom theme override in generati +
@@ -164,7 +172,7 @@ if (typeof mermaid !== 'undefined') { const theme = document.documentElement.getAttribute('data-theme'); mermaid.initialize({ startOnLoad: false, - theme: theme === 'dark' ? 'dark' : 'default', + theme: 'base', securityLevel: 'loose', themeVariables: theme === 'dark' ? { primaryColor: '#1a3a2e', @@ -177,7 +185,18 @@ if (typeof mermaid !== 'undefined') { mainBkg: '#1a3a2e', nodeTextColor: '#e0e0e0', edgeLabelBackground: '#0c1410' - } : {} + } : { + primaryColor: '#f7faf9', + primaryTextColor: '#111111', + primaryBorderColor: '#009972', + lineColor: '#009972', + secondaryColor: '#f7faf9', + tertiaryColor: '#f7faf9', + nodeBorder: '#009972', + mainBkg: '#f7faf9', + nodeTextColor: '#111111', + edgeLabelBackground: '#ffffff' + } }); async function renderMermaid() { @@ -203,10 +222,11 @@ if (typeof mermaid !== 'undefined') { Print rules are defined in generation-rules.md §11. Browser print (`Ctrl+P`) for PDF export: +- Overrides `body` background to white and `overflow` to visible - Hides controls, progress bar, counter -- Reflows all slides to visible +- Reflows all slides to visible with `print-color-adjust: exact` - Page-break per slide -- 1280×720 landscape page size +- 1280×720 page size (`@page { size: 1280px 720px }` — do not add `landscape`; combining custom lengths with an orientation keyword makes browsers ignore the entire `size` declaration) ## 8. Accessibility