公众号文章排版 Skill
Markdown 문서를 WeChat Official Account(公众号) 편집기에 바로 복사하여 붙여넣어도 스타일이 유지되는 HTML로 변환합니다.
핵심 자산은 references/ 디렉토리 아래의 테마 컴포넌트 라이브러리(각 테마: 디자인 변수 + 각 컴포넌트의 완전한 HTML + 템플릿 뼈대 + 매핑 규칙)와 1개의 공통 증분 라이브러리(코드 블록 / 이미지·GIF / 소형 레이블 제목, 모든 테마 공용)입니다. 테마 목록은 references/theme-index.md를 유일한 출처로 합니다. 본 SKILL.md는 프로세스와 결정만 담당하며, 구체적인 HTML 코드는 항상 컴포넌트 라이브러리에서 가져오고, 기억에 의존하여 직접 작성하지 않습니다.
워크플로
0. 입력 및 형식 정규화
사용자는 다음을 제공할 수 있습니다: Markdown 텍스트 또는 .md 경로(바로 1단계 진입), .docx, .pdf, .txt/마크업 없는 일반 텍스트, 웹 리치 텍스트. Markdown이 아닌 입력은 먼저 references/format-normalize.md를 읽고 해당 규칙에 따라 Markdown 초안으로 변환한 후 구조를 확인해야 합니다(docx는 scripts/extract_docx.py 사용, PDF는 Read 페이지별 읽기 + 노이즈 제거, 일반 텍스트는 제목 휴리스틱으로 구조 추론). 아무 것도 제공되지 않으면 사용자에게 요청합니다.
사용자가 "그냥 배치 / 자동 배치 / 원클릭 / 묻지 마"라고 말하면 완전 자동 모드로 진입합니다: 구조 확인 및 테마 선택 질문을 건너뛰고, 자동으로 구조를 추론하며, 주제에 따라 테마를 선택하고, 레이아웃을 검증한 후, 결정 설명(장 구조, 자체 작성 제목, 선택 이유)과 함께 전달합니다.
1. 테마 선택 (자동 추천제)
references/theme-index.md(테마 정보의 유일한 출처)를 읽습니다. 글의 주제에 따라 가장 적합한 테마를 적극 추천한 후, 사용자에게 한 번에 최종 확인을 받습니다. 추천하지만 임의로 확정하지 않습니다:
- 사용자가 요청에서 테마를 이미 지정 → 바로 사용, 질문 없음.
- 주제가 명확하게 적합 → 단일 확인 질문: "XX(이유)를 권장합니다. 확인하시겠습니까, 아니면 다른 세트로 변경하시겠습니까?" 옵션은 추천 항목 + 1~2개의 대안 + "전체 보기"를 제공합니다. 주제→테마 적합성은 theme-index의 "적용 시나리오" 열 참조:
- 튜토리얼 / 리뷰 / 체크리스트 / 도구 정리 / 지식 정리 / 방법론 분해(정보 밀도 높음) → 모여(Green, Moyo)
- 심층 분석 / 의견 / 힘이 있는 주제 → 빨간색-흰색 계열
- 디자인 / 기술 리뷰 / 전문가 의견 / 하이엔드 브랜드 → 흑연 미니멀 스타일
- 선 명상 / 미니멀 라이프 / 깊이 있는 에세이 → 여백 선 스타일
- 도구 비교 / 창의적 리뷰(영수증 시각적 은유) → 모여 영수증 스타일
- 사내 저널 노트 / 심층 리뷰 / 사례 회고 → 올리브 노트
- 뚜렷한 경향 없음 → 기본적으로 theme-index 첫 번째 행(모여(Green))을 권장 항목으로 첫 번째에 배치하고, AskUserQuestion을 사용하여 사용자가 여러 세트 중에서 선택하도록 합니다(테마가 4개보다 많으면 먼저 분위기별로 그룹화하여 질문한 후, 해당 그룹의 테마를 다시 질문).
- 완전 자동 모드(사용자가 명시적으로 "그냥 배치 / 원클릭 / 묻지 마"라고 말함) → 질문하지 않고, 주제에 가장 적합한 테마 또는 기본 첫 번째 행을 자동 선택하며, 전달 시 선택 이유를 설명합니다.
- 사용자가 기존 테마에 모두 만족하지 않거나 / 새로운 스타일을 원할 경우 → '커스텀 테마 생성' 프로세스(다음 절 참조)로 이동하여 생성 및 등록 후 다시 이 단계로 돌아와 선택합니다.
- theme-index가 비어 있음 → 레이아웃을 중단하고 사용자에게 먼저 테마 스타일을 추가해야 한다고 알립니다( '커스텀 테마 생성' 이용 가능).
사용자가 테마를 확정한 후에야 해당 테마 내부의 컴포넌트 매칭(3, 4단계: 글 유형 판정 → 해당 테마의 레시피 테이블에 따라 컴포넌트 조합 선택)으로 진입합니다.
2. 컴포넌트 라이브러리 읽기 (두 가지)
(1) theme-index에서 해당 테마의 "컴포넌트 라이브러리 파일" 열을 기반으로, 해당 테마 전용 컴포넌트 라이브러리 references/theme-{식별자}.md(소개 카드, 챕터 제목, 본문 마크, 서명 등 테마 전용 컴포넌트 포함)를 읽습니다.
(2) 동시에 공통 증분 라이브러리 references/common-components.md를 읽습니다. 코드 블록, 이미지/GIF, 소형 레이블 제목의 세 가지 유형은 모든 테마가 공유하며, 현재 테마의 메인 컬러를 적용하기만 하면 됩니다.
이후 생성은 전적으로 이 두 컴포넌트 라이브러리에 기반하며, HTML은 항상 여기서 가져오고 직접 작성하지 않습니다.
3. Markdown 구조 파싱
| 요소 | 식별 규칙 |
|---|---|
| 글 제목 | # 제목 또는 frontmatter title |
| 시작 인용문 | 글 맨 앞의 > 인용 블록 |
| 챕터 제목 | ## 제목 |
| 서브 챕터 | ### 제목 |
| 굵게 / 하이라이트 / 밑줄 | **텍스트** / ==텍스트== / <u>텍스트</u> 또는 ++텍스트++ |
| 인용 단락 | 첫 부분이 아닌 > 텍스트 |
| 이미지 / GIF | 、(GIF는 이미지와 동일하게 처리) |
| 코드 / 명령어 / 프롬프트 | ``` 펜스 코드 블록 ```、인라인 `code` |
| 구분선 / 목록 | ---、*** / - 항목 또는 1. 항목 |
| 테이블 | |로 구분된 Markdown 테이블(주로 docx 변환에서 발생) → 우선 테마 라이브러리의 테이블/카드 컴포넌트를 사용(테마 라이브러리 매핑 규칙 기준) |
구조 파싱을 완료한 후 글 유형을 판정합니다(지배적인 유형을 선택, 복합 가능): 튜토리얼/조작 가이드, 정리/도구 체크리스트, 의견/심층 분석, 인터뷰/인물 특집, 데이터 리뷰/보고서, 생활/감성 에세이, 사례 실전. 판정 기준: 단계와 명령어가 많음 → 튜토리얼; 나열형 항목이 많음 → 정리; 인용문과 인물 서사가 많음 → 인터뷰; 숫자와 비교가 많음 → 데이터; 논증과 추론이 많음 → 의견.
4. 레시피에 따른 컴포넌트 조합 선택 → HTML 조립
먼저 선택한 테마 라이브러리의 '글 유형 → 컴포넌트 조합 레시피' 테이블을 확인하고, 글 유형에 따라 본 편의 핵심 컴포넌트 조합과 장식 컴포넌트를 결정합니다. 컴포넌트 라이브러리를 가져왔다고 무작위로 컴포넌트를 선택하지 않도록 합니다. 레시피는 동일한 유형의 글에서 레이아웃 특성이 일관되도록 보장합니다. 레시피 외의 요소는 그런 다음 테마 라이브러리의 매핑 규칙 테이블에 따라 보충합니다.
그런 다음 테마 라이브러리의 "완전한 글 템플릿 뼈대" 챕터에 따라 조립하며, 각 Markdown 요소를 해당 컴포넌트로 교체합니다:
- 뼈대 순서는 테마 라이브러리 기준이며, 테마마다 뼈대가 다를 수 있으므로 다른 테마의 뼈대를 적용하지 마십시오.
- 인라인 마크는 의미에 따라 선택한 컴포넌트 라이브러리에서 해당 컴포넌트를 찾습니다(컴포넌트 번호는 각 라이브러리마다 통일되지 않으므로 항상 의미를 기준으로 하고 고정 번호를 적용하지 마십시오):
**굵게**→ 메인 컬러 굵게;==하이라이트==→ 단색 밝은 배경 하이라이트;<u>텍스트</u>또는++텍스트++→ 밑줄;~~텍스트~~→ 형광펜(단색 밝은 배경);>인용→ 인용 하이라이트 블록. - 공통 증분 라이브러리의 컴포넌트:
``` 코드 블록 ```→ 1a 어두운 색 / 1b 밝은 색 코드 블록, 인라인`code`→ 1c;→ 2a 이미지(설명이 있을 때만 설명 컴포넌트 추가),.gif→ 2b GIF; 강조해야 할 소제목/강조 → 3a 왼쪽 세로 막대 소제목 또는 3b 약 레이블, 명언 → 3d, 힌트 여백 → 3e. 우선 순위: 먼저 테마 라이브러리 매핑 규칙 테이블 확인 — 해당 테마에 동일한 의미의 컴포넌트(자체 명언 또는 힌트 블록 등)가 있으면 테마 라이브러리 버전을 사용하여 특성을 유지합니다. 테마 라이브러리에 해당 컴포넌트가 없을 때만 공통 라이브러리 3x를 사용하고 해당 색상 변경 규칙에 따라 테마 색상으로 변경합니다. - 한 편의 글에는 선택한 테마의 컴포넌트 세트만 사용하며, 테마를 혼용하지 않습니다.
- 강조와 소제목은 "소형 레이블/왼쪽 세로 막대"를 사용하고, 점선 테두리를 사용하지 않습니다: 소제목이나 내용을 강조해야 할 때는 왼쪽 세로 막대 소제목(3a), 약 레이블(3b), 왼쪽 세로 막대 명언/힌트 블록(3d/3e)을 사용합니다. 점선 테두리(
dashedborder)로 제목을 감싸지 마십시오. 무겁고 주의를 산만하게 합니다.
5. 유효성 검사 (필수)
생성된 HTML을 대상 파일에 쓴 후, 반드시 검증 스크립트를 실행하여 ERROR가 0이 되어야 완료됩니다:
# 스크립트가 있는 skill의 절대 경로를 사용하여 호출하고, HTML 매개변수도 실제 경로 사용 (두 디렉토리는 일반적으로 다름)
<SKILL_ROOT>/scripts/validate_gzh_html.py <생성된.html의 실제 경로>
이 스크립트는 결정론적으로 플랫폼 금지 항목과 <span leaf> 래핑을 확인합니다. ERROR가 보고되면 4단계로 돌아가 수정합니다. 반각 문장 부호 WARNING도 0이 될 때까지 수정하여 전달해야 합니다(이는 실제 사용에서 가장 빈번한 재작업 지점입니다).
그라데이션 배경 WARNING은 항목별로 처리해야 합니다: 텍스트 하이라이트, 인용문/데이터/안내 카드의 배경은 기본적으로 테마 내의 단색 또는 rgba 단색으로 변경합니다. 사용자가 명시적으로 유지를 요청한 경우 전달 시 darkmode-no-gradient 팝업이 트리거될 수 있음을 명시합니다. 순수 장식용 그라데이션도 알림이 표시되며, 아직 팝업이 트리거되지 않음이 확인되지 않았으므로 유지 시에도 위험을 설명합니다.
6. 출력
산출물 형식: 순수 <section>…</section> 본문 조각, 전역 컨테이너부터 시작하며, <!DOCTYPE>/<html>/<head>/<body>를 감싸지 마십시오 — 공식 계정 편집기는 본문 조각만 허용하며, 불필요한 문서 셸은 폐기되거나 붙여넣기를 방해합니다.
- 깨끗한 본문 파일: HTML을 현재 작업 디렉토리에 저장하며, 파일 이름은
{원본 파일명}_레이아웃_{테마 한글명}({영문 식별자}).html(영문 식별자 = theme-index 컴포넌트 라이브러리 파일명에서theme-접두사와.md접미사 제거)입니다. 이 파일은 검증 및 수동 붙여넣기 백업용입니다. - '복사' 버튼이 포함된 미리보기 페이지(사용자가 원클릭으로 복사할 수 있도록, 수동 전체 선택 불필요):
<SKILL_ROOT>/scripts/wrap_preview.py <위의 깨끗한 본문.html>{...}_미리보기.html이 생성됩니다. 브라우저에서 열면 오른쪽 상단에 '공식 계정에 복사' 버튼이 있으며, 클릭하면 렌더링된 리치 텍스트가 클립보드에 복사됩니다(Ctrl+A/Ctrl+C와 동일). 그런 다음 공식 계정 편집기에서 Ctrl/⌘+V로 붙여넣습니다. 버튼과 스크립트는 미리보기 셸에만 있으며, 복사되는 section 내부에는 없으므로 공식 계정에 붙여넣어도 여전히 깨끗하고 규정을 준수하는 본문입니다. - 사용자에게 안내:
{...}_미리보기.html연 후 → 오른쪽 상단의 '복사' 버튼 클릭 → 공식 계정 편집기에 붙여넣기; 또한 백업용으로 깨끗한 본문 파일 경로를 제공합니다. 검증 스크립트 결과(통과 / 남은 warning)도 첨부합니다.
생성 시 지능형 처리 (이 skill의 특징이며, 반드시 수행해야 함)
- 챕터 자동 번호 매기기:
##의 출현 순서대로01/02/03…할당; 마지막 장이 결론/요약 유형이면, 테마 라이브러리에서 지정한 결말 번호 변형(예:∞)을 사용하며, 테마 라이브러리가 지정되지 않은 경우 숫자 번호를 계속 사용합니다. - 영문 레이블: 중문 챕터 제목을 기반으로 영문 레이블 생성(실측 → TEST, 튜토리얼 → TUTORIAL, 요약 → SUMMARY, 생각 → THOUGHTS…), 테마 라이브러리에 해당 슬롯이 있을 때 사용합니다.
- 본문 키워드 밑줄 (핵심 특징): 각 본문 단락에서 적극적으로 1
3개의 가장 중요한 구문을 찾아, 해당 테마의 밑줄 CSS(theme-index 참조)로 표시합니다. 핵심 의견, 결론, 주요 데이터, 고유 명사를 우선 표시합니다. 구문은 415자입니다. 단락 전체에 요점이 없으면 표시하지 않아도 됩니다. 원문에 굵게 표시된 부분이 전혀 없어도 적극적으로 밑줄을 추가해야 합니다. 이는 가장 빈번하게 나타나는 기본 마크입니다. - 도입부 키워드 하이라이트: 시작 명언에서 핵심 단어를 식별하고, 하이라이트 컴포넌트로 표시합니다.
- 목차 추출: 모든
##에서 처음 3개의 항목을 가져와 소개/목차 요점으로 사용합니다(테마 라이브러리에 목차 컴포넌트가 있을 때). - 시작 인용 카드 서명: 글의 작성자 또는 주제에 따라 결정합니다. 글에 서명이 있으면 "—— 작가명"을 쓰고, 명확한 작가가 없으면 주제와 관련된 간단한 하단 문구를 사용하거나 생략합니다. "갑목(甲木)"을 고정으로 작성하지 마십시오(하단 서명 영역도
{{작가명}}자리 표시자를 사용하며, 7항 참조). - 하단 작성자 서명 영역 (작성자 직접 기입, 끝에 한 곳만): 기본적으로 어떤 사람 이름도 하드코딩하지 않으며, 자리 표시자 서명을 사용하여 사용자가 자신의 것으로 교체할 수 있도록 합니다.
- 첫 번째 문장(작성자 소개):
저는 {{작가명}}입니다. {{한 줄 소개, 예: AI 관찰과 꿀팁 공유에 열정적입니다}}— 사용자가 요청/선호도에 서명이나 소개를 제공했다면 바로 입력하고, 제공하지 않았다면{{작가명}}/{{소개}}자리 표시자를 유지하고, 전달 시 사용자가 자신의 서명으로 교체하도록 안내합니다. - 두 번째 문장(상호 작용 유도, 일반적인 경우 원본 유지 가능):
오늘 글이 도움이 되셨다면 **좋아요, '在看', 공유** 부탁드립니다. 다음에 또 만나요! - 원문 끝에 이미 작성자 서명 단락(예: "저는 XXX입니다…")이 있음 → 원문의 서명을 그대로 따르고 자리 표시자로 교체하지 않습니다.
- 첫 번째 문장(작성자 소개):
- 목록 변환: 테마 라이브러리 매핑 규칙에 따라 처리합니다. 전용 목록 컴포넌트가 없으면 들여쓰기된 본문 단락으로 변환합니다.
- 중국어 전각 문장 부호: 본문 문장 부호는 항상 전각(,。!?:;""''()—— …)을 사용하고, 반각
, . ! ? :및 영문 직선 따옴표" '를 사용하지 마십시오. HTML 생성 시 바로 굽은 따옴표""''를 직접 작성하고, 직선 따옴표를 먼저 작성한 후 나중에 교체하지 마십시오. 원문의 직선 따옴표는 재작성 시 그 자리에서 변환합니다. 예외: 코드 블록, 인라인 코드, 영문 고유명사/URL/코드 식별자 내부는 원본을 유지합니다.
시각적 계층 구조 (3단계 진행, 모든 테마 공통)
| 계층 | 역할 | 빈도 | 수단 |
|---|---|---|---|
| 앵커 계층 | 가장 강력한 앵커: 제품명/단계/CTA/핵심 명언 | 전체 글 ≤ 5곳 | 메인 컬러 굵게, 어두운 배경 흰색 글씨 인용 |
| 마크 계층 | 본문 키워드, 단락당 1~3곳 | 고빈도 | 밑줄 마크 |
| 컨테이너 계층 | 인용 블록, 개념 레이블, 긴 문장 강조 | 필요 시 | 밝은 배경 인용, 형광펜, 배지 |
플랫폼 금지 사항 (핵심, 전체 검사는 검증 스크립트에 위임)
- 금지:
<style>/<script>/<div>、class/id속성、position:fixed/absolute/sticky、float、@media/@keyframes、display:grid、CSS 변수、외부 폰트/CSS. - 필수: 모든 스타일은 인라인
style로 작성; 모든 텍스트 노드는<span leaf="">텍스트</span>로 감싸야 함(그렇지 않으면 붙여넣기 후 스타일 손실). - 사용 가능:
display:flex(제한적)、border-radius、box-shadow、<section>/<p>/<span>/<strong>/<img>/<h3>. - 그라데이션 배경 호환성: 그라데이션은 렌더링 가능하지만, 공식 계정
darkmode-no-gradient콘텐츠 구조 탐지가 트리거될 수 있음. 텍스트와 카드 배경은 기본적으로 단색을 사용하고, 그라데이션을 추가하지 않음. 기존 컴포넌트/커스텀 테마가 이를 접할 경우 5단계에 따라 처리.
Gotchas (실제 레이아웃에서 겪었던 함정)
<span leaf>래핑 누락은 가장 흔한 치명적인 오류입니다. 공식 계정에 붙여넣으면 스타일이 통째로 사라집니다. 5단계 검증 스크립트를 백업으로 사용하되, 건너뛰지 마십시오.- 밑줄: 단락별로 적용하고, 각 단락에 1~3개의 구문. 단락 전체에 밑줄을 긋지 마십시오(초점을 잃음). 또한 어떤 단락은 표시하고 어떤 단락은 누락하지 않도록 주의하십시오. 목록 항목의 주요 설명도 표시해야 합니다.
- 챕터 번호 혼란: 엄격히
##순서대로 하여 번호가 건너뛰지 않도록 하십시오. 결말 번호 변형은 마지막 장에만 사용하고, 중간 챕터에는 사용할 수 없습니다. - 서명 영역은 끝에 하나만 존재: 고정 문구를 사용하고, 중간이나 여러 곳에 나타나지 않도록 하십시오. 원문 끝에 이미 작가 서명/"좋아요, '在看', 공유 삼종" 유형의 단락이 있으면, 식별하여 이 유일한 서명 영역/CTA 카드에 통합하고, 원문 단락을 유지한 채 또 하나를 생성하지 마십시오.
- 이미지 설명 무조건 생성 금지:
에 실제로 설명 텍스트가 있을 때만 설명 컴포넌트를 생성합니다.빈 alt는 설명을 지어내지 마십시오. - 이미지 자동 크기 조정, 채우지 않음:
<img>는 항상max-width:100%;height:auto;display:block;margin:0 auto를 사용합니다. 이미지 자체 크기에 따라 표시되고 중앙 정렬되며, 큰 이미지는 컨테이너 너비에 맞춰 축소되고 작은 이미지는 원래 크기를 유지합니다.width:100%를 사용하지 마십시오(작은 이미지도 늘려서 흐려짐). 테이블, 표지 카드, 플로우차트 등의 레이아웃 요소에만width:100%를 사용합니다. - 테마 간 컴포넌트 혼용: 한 편의 글에는 선택한 테마 + 공통 라이브러리의 컴포넌트만 사용하고, 다른 테마에서 컴포넌트를 가져오지 않습니다.
- 앵커 계층 남용: 가장 강력한 강조는 전체 글에서 ≤ 5곳이며, 모든 곳에 굵게 표시하면 강조 효과가 없습니다.
- 원문 내용 누락: 각 단락, 각 이미지를 모두 변환하고 누락하지 마십시오. 원문의 실질적인 내용을 임의로 추가하거나 삭제하지 마십시오.
- 자리 표시자 이미지 잔류: 서명 영역/CTA 컴포넌트에 명함 이미지 자리 표시자(예:
<img src="...명함 또는 안내 이미지 URL">)가 포함된 경우, 실제 이미지 URL이 없으면 해당 행을 완전히 삭제하고, 자리 표시자를 산출물에 남겨두지 마십시오. - 목차는 선별된 것이지 전체가 아님: 머리말 소개/목차 컴포넌트는 선별된 3개의 핵심 포인트를 표시하며, 전체 챕터 목록이 아닙니다. 챕터가 3개를 초과하면 가장 중요한 3개를 선택하고, 억지로 채우거나 독자가 3장뿐이라고 오해하게 해서는 안 됩니다.
- 점선 테두리 사용 금지: 제목 강조에는 소형 레이블 또는 왼쪽 세로 막대(공통 라이브러리 3a–3e)를 사용하고,
border:…dashed점선 테두리로 제목을 감싸지 마십시오. 예외: 테마 라이브러리에 명확히 정의된 점선 컴포넌트(예: 모요식(摸鱼绿)의 quote-box 인용 상자, oneliner-card 하이라이트 카드)는 해당 테마의 스타일 특징이므로, 테마 라이브러리 사용법에 따라 정상적으로 사용합니다. - 문장 부호 반각 혼용 금지: 본문에 반각 쉼표, 마침표, 영문 직선 따옴표
"'가 나타나면 모두 전각으로 변경해야 합니다. 그러나 코드 블록/인라인 코드 내의 반각 기호는 원본을 유지하고, 코드를 "전각화"하지 마십시오. - 코드/프롬프트는 반드시 코드 블록 사용: 글의 코드, 명령어, 프롬프트는 공통 라이브러리 코드 블록 컴포넌트(1a/1b)를 사용하고, 일반 단락이나 인용 블록에 넣지 마십시오. 그렇지 않으면 들여쓰기와 고정폭이 손실됩니다.
- 코드 블록은 컴팩트하게, 큰 공백 금지: 공통 라이브러리 1a/1b의 "각 행 하나의
<p style="margin:0">" 작성법을 사용하고, 절대white-space:pre를 사용하지 마십시오. 이렇게 하면 HTML 소스 코드에서 span 앞의 들여쓰기와 행간 줄바꿈이 그대로 렌더링되어 큰 왼쪽 들여쓰기 + 빈 행이 발생합니다. 들여쓰기는 전각 공백만 사용하고, 행간은line-height:1.6에 의존합니다. - 보충 자료 가운데 정렬:
【삽입…】, 화면 녹화/GIF/비디오/결과 이미지 대기 등의 자리 표시자는 공통 라이브러리 2c 가운데 정렬 자료 자리 표시자 블록(밝은 배경 부드러운 점선 테두리 + 가운데 아이콘과 설명)을 사용하고, 왼쪽 정렬 힌트 블록을 사용하지 마십시오.
커스텀 테마 생성 (두 번째 워크플로)
사용자가 내장 테마 이외의 새로운 스타일을 원할 경우( "새 테마 생성 / 커스텀 스타일 / 이 참고 이미지로 컴포넌트 라이브러리 만들기"라고 말하거나, 기존 테마에 모두 만족하지 못하는 경우) ** references/theme-generator.md를 읽고 엄격히 해당 프로세스에 따라 실행**합니다:
- 선호도 수집: 테마 설명 필수(또는 참고 이미지), 이름/ID/5색/글꼴/3종 TAG/둥근 모서리/그림자는 비워도 되면 자동으로 보완합니다. 한 번에 모두 질문하고, 필드별로 계속 질문하지 않습니다.
- 블록 라이브러리 HTML 생성: theme-generator.md 끝의 [생성 프롬프트]를 그대로 실행하여 45~75개의 Block으로 구성된 완전한 블록 라이브러리를 생성하고,
assets/theme-previews/{theme-id}.html에 저장합니다. 모든 블록은 동일한 페이지에 연속적으로 배치되며, 사용자가 브라우저에서 한 페이지 전체를 한 번에 검토하여 스타일을 확인하고, 블록별로 확인하지 않습니다. - 변환 + 등록: 사용자가 스타일을 확인한 후, 표준
references/theme-{식별자}.md로 변환합니다(반드시<span leaf="">래핑 보충, 미리보기용 id 제거, 5개 챕터 보충, 규칙은 theme-generator.md 3단계 참조), theme-index.md에 등록하고,component_lint.py를 실행하여 ERROR 0이 될 때까지 합니다. - 전달 후 해당 테마는 영구 상주 선택 가능 테마가 되며, 이후 레이아웃에서 내장 테마와 완전히 동일한 권한을 가집니다.
생성 단계는 프롬프트 규칙을 따릅니다. 테마 라이브러리로 변환하는 단계는 본 파일의 '플랫폼 금지 사항'과 '신규 테마 추가 규칙'을 따릅니다(둘이 충돌할 경우 후자가 우선합니다. 테마 라이브러리가 레이아웃 산출물을 직접 결정하기 때문입니다).
신규 테마 추가 규칙
새 테마는 references/theme-{영문 식별자}.md로 이름을 지정하고, 내용에는 반드시 다음이 포함되어야 합니다:
- 디자인 변수 참고 테이블(메인 컬러/밝은 배경/어두운 글자/제목 색상/본문 색상/구분선 색상 등)
- 각 컴포넌트의 완전한 HTML(인라인 스타일 +
<span leaf="">래핑, 위의 '플랫폼 금지 사항' 준수) - 완전한 글 템플릿 뼈대(컴포넌트 조립 순서; 목차/내비게이션 컴포넌트가 있으면 표지/소개 대비 위치 명확히)
- 글 유형 → 컴포넌트 조합 레시피 테이블(각 글 유형별 핵심 컴포넌트 조합 + 장식 컴포넌트. 레시피는 레이아웃 특성의 안정성을 위한 핵심)
- Markdown → 컴포넌트 매핑 규칙 테이블
추가 후 references/theme-index.md에 한 행을 등록하고(테마명 / 메인 컬러 / 적용 시나리오 / 컴포넌트 라이브러리 파일 / 본문 밑줄 CSS), python3 scripts/component_lint.py .를 실행하여 컴포넌트 라이브러리에 안티 패턴이 없는지 확인합니다(ERROR 0).
트리거 및 테마 선택에 대한 회귀 테스트 케이스는
references/eval-cases.md참조(유지보수 시 회귀 확인용이며, 단일 생성에 영향을 미치지 않음).
