Communitygithub.com

WonJeong0913/paper-figure

리서치 페이퍼의 방법론, 파이프라인 및 아키텍처 다이어그램을 Claude Design 보드로 그리고 수정합니다. 이미지 생성 모델을 사용하지 않으며, 저자의 구조를 보존하고 대상 학회(ICML, NeurIPS, ICLR, ACL, AAAI, CVPR, IEEE, ACM, Nature)에 맞게 텍스트 크기를 조정하며, 참조 그림과 비교하고 인쇄 크기로 측정한 후 벡터 PDF와 300dpi PNG로 내보냅니다.

paper-figure란 무엇인가요?

이 스킬은 연구 논문의 방법론, 파이프라인 및 아키텍처 그림을 전문적으로 제작하고 수정합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, 이미지 생성 모델 없이 저자가 직접 모든 요소를 배치하고 편집할 수 있는 Claude Design 보드 형태로 그림을 제공합니다. ICML, NeurIPS, ICLR, ACL, AAAI, CVPR, IEEE, ACM, Nature 등 주요 학회의 포맷 규칙(텍스트 크기, 폭 등)을 지원하며, `scripts/figure_audit.py`로 인쇄 크기에서의 가독성을 측정하고 `scripts/dc_export.py`로 벡터 PDF와 300dpi PNG를 내보냅니다. 구조 원장(ledger)을 통해 저자의 의도한 시스템 구조(모듈, 연결, 경계)를 보존하면서 레이아웃을 개선하고, 여러 후보 그림을 생성하여 비교 시트로 보여준 후 저자가 선택하도록 합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/WonJeong0913/paper-figure/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

paper-figure은(는) 무엇을 하나요?

별도로 배치된 편집 가능한 요소로 논문 그림을 그리고, 인쇄될 크기로 측정합니다.

원칙

  • 이미지 생성 모델을 사용하지 않습니다. 사용자 또는 저자가 모든 요소를 직접 그립니다.
  • 해당 도구를 사용할 수 있을 때는 항상 Claude Design 캔버스의 보드로 그림을 제공합니다. 이는 필수입니다. 먼저 보드를 생성하거나 업데이트하여 저자가 모든 요소를 이동, 스타일 변경 및 주석을 달 수 있게 합니다. PNG, PDF 또는 로컬 HTML 파일로만 마무리하지 마십시오. 세션에 캔버스 도구가 없을 때만 디스크에 일반 HTML 보드를 그리고 보고서(references/drawing-boards.md)에 그 사실을 명시합니다.
  • PDF와 PNG는 내보내기입니다. 저자가 요청하거나 그림이 최종 확정되었을 때 생성합니다: LaTeX용 라이브 텍스트가 포함된 벡터 PDF와, Word 및 슬라이드용으로 PDF에서 생성된 300dpi PNG입니다.
  • 그림 텍스트는 논문 본문에 사용된 정확한 이름을 사용하며, 논문의 언어로 작성합니다.
  • 구조는 보존됩니다. 모양과 레이아웃은 변경할 수 있습니다. 묻지 않고 모듈, 연결 또는 경계를 변경할 수 없습니다("구조 원장" 참조).
  • 그리기 전에 대상 학회를 선택하십시오. 학회마다 규칙이 다릅니다: Nature는 그림 텍스트를 7pt로 제한하고, AAAI는 최소 9pt를 요구합니다. 저자가 선택하지 않은 경우, 해당 분야의 일반적인 학회를 선택하고 보고서에 그 내용을 명시합니다.
  • 품질 기준은 최상위 학회 그림 수준입니다. 먼저 참조 그림을 살펴보고, 후보를 만든 후 저자가 선택하게 합니다. 박스와 화살표만으로 그치지 마십시오.
  • "통과" 또는 "겹침 없음"은 scripts/figure_audit.py로 측정하고 직접 렌더링을 확인한 후에만 말합니다. 이는 드로잉 표면의 기본 "확인하지 않음" 설정을 무효화합니다.
  • 시각적 비평은 참고용입니다. 요소 수를 잘못 세거나 연결을 놓칠 수 있습니다. 구조는 원장과 --compare 플래그로만 판단합니다.

워크플로우

  1. 소스를 읽습니다: 논문 초안, 코드, 저자의 원본 그림. 저자가 "다시 해주세요"라고 말할 때마다 다시 읽습니다.
  2. 구조 원장을 작성합니다.
  3. 브리프를 작성하고 학회를 선택합니다(references/venues.md).
  4. 2–3개의 참조 그림을 열고 스타일 시트를 작성합니다.
  5. 캔버스에 2–3개의 후보를 그립니다. 작은 조정이 아닌 레이아웃이나 모양 표현 방식이 서로 달라야 합니다.
  6. 감사, 확인, 비교, 비평합니다. 오류가 0이 될 때까지 수정합니다.
  7. 비교 시트를 보여줍니다. 저자가 선택합니다.
  8. 저자가 선택하면 내보내고, 원고에 그림을 배치한 후 해당 페이지를 확인합니다.

구조 원장 (편집 전)

그림은 저자가 설계한 시스템을 보여줍니다. 아래의 모든 항목을 저자의 그림, 논문 및 코드에서 추출하여 표로 만듭니다.

종류항목출처
모듈 (박스)정확한 이름원본 그림 / 코드 경로 / 논문 섹션
연결 (화살표)송신자 → 수신자 : 데이터 이름해당 데이터를 생성하는 코드
경계각 시스템, 스킬 또는 도구가 포함하는 것원본 그림 / 코드
상태 및 자원공유 상태, 예산, 공유 모델, 말뭉치, 학습된 파라미터원본 그림 / 코드
결정과 루프결정 결과, 피드백 및 재귀 경로정책 함수 / 알고리즘
입력과 출력사용자 입력, 최종 출력, 입력 및 출력 텐서원본 그림 / 코드

다른 사람의 방법을 그릴 때는 원본 논문의 알고리즘과 공식 코드를 기반으로 원장을 작성하고 인용합니다.

  • 원장의 어떤 항목도 사라지거나, 이름이 바뀌거나, 경계를 넘어 이동할 수 없습니다. 변경이 필요한 경우(예: 그림이 코드와 일치하지 않는 경우), 편집 전에 저자에게 문의하십시오.
  • 모듈이나 화살표를 임의로 만들거나, 단순화를 위해 연결을 삭제하지 마십시오. 의도적인 생략 사항은 캡션이나 보고서에 기록합니다.
  • 레이아웃은 변경될 수 있습니다. 흐름 방향과 포함 관계는 변경될 수 없습니다.
  • 세부 그림은 개요 그림을 분할합니다. 이름, 색상 및 경계는 개요 그림과 일치해야 합니다.
  • 모든 화살표를 코드와 대조하십시오: 화살표는 해당 데이터를 실제로 생성하는 모듈에서 나가야 합니다.
  • 편집 후 원장을 한 줄씩 확인하고 python3 scripts/figure_audit.py NEW --venue icml --compare ORIGINAL을 실행합니다. 스크립트는 레이블이 없는 화살표를 볼 수 없습니다. 수동으로 원장과 대조하십시오.
  • 보고서를 "구조 변경: 없음" 또는 변경 목록과 저자의 승인 여부로 시작합니다.

저자와 협업하기

  • 저자의 원본 그림이 기준선입니다. 제거하고 그 위에 정렬합니다. 구조나 스타일을 완전히 대체하지 마십시오.
  • 원본을 덮어쓰지 마십시오. 각 새 버전을 옆에 배치합니다(Fig2_v2). 저자가 확인합니다.
  • 저자가 보드를 수동으로 편집한 경우, 최신 파일을 다시 읽고 그 파일을 작업합니다.
  • 한 번에 한 종류의 요소씩 추가합니다. 스테이지 패널, 알약 및 출력 박스를 한 번에 추가하면 그림이 너무 복잡해집니다.
  • 인접한 스테이지는 실제 이름이 있는 점선 박스로 유지합니다. 삭제하거나 하나의 화살표 또는 회색 텍스트로 축소하지 마십시오.
  • 그림별로 변경된 사항만 보고합니다. 논문이나 코드와 불일치를 발견하면 그림을 편집하기 전에 알립니다.

브리프, 참조 그림, 스타일 시트

브리프 (그림당 하나)

역할:           개요(구조 + 절차) / 스테이지 세부 / 아키텍처 블록
그림 유형:     A 시스템 또는 에이전트 파이프라인 / B 모델 또는 아키텍처
학회:          배치 폭과 텍스트 px 설정(references/venues.md)
독자 핵심:     한 줄
유지할 사실:   구조 원장
제외할 내용:   결과 숫자, 본문에 속하는 문장, 모델 이름 같은 설정

참조 그림 (2–3개)

  • 선호 순서: 해당 방법의 원본 논문 또는 공식 저장소; 동일 학회의 동일 그림 유형을 가진 최근 논문; 저자의 이전 그림.
  • 각각을 열고 다음을 기록: 모양 표현, 각 색상의 의미, 글꼴 및 변수 표기법, 레이아웃 골격, 텍스트 양, 그리고 모방하지 말아야 할 것.
  • 관례만 차용합니다. 참조 그림을 다시 그리거나 팔레트와 구성을 재현하지 마십시오.

스타일 시트 (논문당 하나)

  • 논문의 모든 그림은 하나의 시각적 어휘를 사용합니다: 글꼴, 텍스트 px, 색상 및 그 의미, 모양, 선 및 테두리 너비, 모서리 반경, 화살촉.
  • scripts/dc_board.py의 STYLE 딕셔너리가 스타일 시트입니다. 거기서만 변경하고, 요소별로 변경하지 마십시오.

구성 규칙

  • 박스는 함수 이름만 담습니다. 설명 문장은 본문 텍스트에 넣습니다.
  • 화살표는 데이터 이름 레이블을 전달합니다. 데이터에 번호를 매기지 마십시오.
  • A/B/C 또는 "To B / From A" 같은 자리 표시자 이름을 사용하지 마십시오. 실제 모듈 이름을 사용합니다.
  • 경계는 실제로 그 작업을 수행하는 부분만 둘러쌉니다.
  • 박스 텍스트는 키워드입니다: 문장 금지, 15단어 초과 금지, 본문 텍스트 붙여넣기 금지, 방정식 목록 금지. 짧은 데이터 예제는 예외입니다.
  • 스테이지에 단계 번호 배지를 사용하지 마십시오. 그림 내부에 제목을 넣지 마십시오. 제목은 캡션입니다.
  • 개요는 구조와 절차를 함께 보여줍니다: 입력 → 과정 → 출력이 왼쪽에서 오른쪽으로 몇 초 안에 읽히고, 피드백 루프는 점선이며, 출력이 명확하게 보입니다.
  • 모든 세부 그림을 통해 하나의 작업 예제를 실행하고, 박스 내부에 작은 칩으로 표시합니다.
  • 개요와 세부를 하나의 그림(패널 a와 b, 세로로 쌓거나 매크로-마이크로 확대 선 사용)으로 병합하는 것을 고려합니다. 둘 다 후보로 만듭니다.
  • 규칙이 충돌할 경우 다음 순서로 결정합니다: 관계와 방향이 코드 및 논문과 일치 → 흐름이 몇 초 안에 읽힘 → 인쇄 크기에서 읽기 쉬움 → 정렬 → 외관.

모양 표현, 글꼴, 색상 및 선: references/style.md. 표현 A(시스템 파이프라인: 아이콘 카드, 칩, 패널) 또는 B(아키텍처: 모양이 유형을 나타냄)를 선택하고 한 논문에서 혼합하지 마십시오.

크기

인쇄 텍스트(pt) = 텍스트 px × 배치 폭(pt) ÷ 보드 폭(px). 동일한 보드가 다른 학회에서 다른 크기로 인쇄되므로 학회가 변경될 때마다 다시 측정합니다. 사전 설정 및 px 크기: references/venues.md.

  • 그림 내에서 텍스트 크기는 거의 균일하게 유지합니다. 일부 텍스트를 맞추기 위해 줄이지 마십시오: 텍스트를 캡션으로 옮기고, 박스나 보드를 확대하며, 줄을 끊거나 그림을 분할합니다.
  • 텍스트는 자신의 박스를 벗어나거나 테두리에서 6px 이내에 위치해서는 안 됩니다.
  • 한 행에 5개 이상의 박스가 있으면 폭이 부족합니다: 제목을 2-3줄로 나누고, 그 다음 두 행으로 이동합니다.
  • 넓은 그림은 전체 텍스트 폭(figure*)에 배치합니다. 한 단에서는 텍스트 크기가 반으로 줄어듭니다.
  • 여러 패널이 있는 경우, 행을 정확하게 정렬하거나 7px 이상 간격을 둡니다.

감사 루프

설치: pip install playwright numpy pillow && python3 -m playwright install chromium (poppler-utils는 PDF 검사를 활성화합니다).

python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --png fig2.png     # 측정 + 렌더링
python3 scripts/figure_audit.py project/Fig2.dc.html --venue nature --column         # 한 단 그림
python3 scripts/figure_audit.py project/Fig2.dc.html --placed-mm 165 --min-pt 8      # 사전 설정이 없는 학회
python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --cvd fig2         # 회색 + 색맹
python3 scripts/figure_audit.py project/Fig2_v2.dc.html --venue icml --compare project/Fig2.dc.html   # 레이블 유지?
  1. ERROR가 0이 될 때까지 수정: 텍스트가 한도 미만 또는 초과, 박스 외부의 텍스트, 겹치는 텍스트, 캔버스 밖의 텍스트, 원본에서 누락된 레이블. 각 WARN(테두리에 닿은 텍스트, 선을 가로지르는 텍스트, 대체 글리프, 회색 위의 텍스트, 최소 미만의 선, 근접 정렬)에 대해 렌더링을 확대하여 결정합니다.
  2. 배치된 크기의 렌더링과 세 개의 --cvd 이미지를 확인합니다.
  3. 원장, 코드 및 논문과 화살표 및 레이블을 다시 확인합니다.
  4. 비평 테이블로 점수를 매기고 참조 그림과 비교합니다.
  5. 각 라운드마다 이전 파일을 유지하고 변경된 사항만 기록합니다.

수정 순서(재작업 방지): 캔버스 및 여백 → 큰 영역 및 쌓기 순서 → 모양 크기 → 채우기 및 테두리 → 커넥터 끝점 → 텍스트 → 장식.

완료는 다음 세 가지를 모두 의미합니다: 감사 통과, 배치된 크기 확인, 비평이 통과 기준을 충족. 감사 통과만으로는 충분하지 않습니다. 5라운드 후에도 문제가 남아 있으면 레이아웃 자체가 잘못된 것입니다: 저자에게 알리고 함께 결정합니다.

후보 및 비평

동일한 구조와 다른 레이아웃 또는 표현 방식(패널 a/b 대 확대 선, 왼쪽에서 오른쪽 대 아래에서 위, 표현 A 대 B)으로 2-3개의 보드를 만듭니다. 후보와 참조 그림을 하나의 이미지로 쌓아서 보여줍니다:

from PIL import Image
ims = [Image.open(p).convert("RGB") for p in ["vA.png", "vB.png", "ref.png"]]
W = 1584; ims = [im.resize((W, round(im.size[1] * W / im.size[0]))) for im in ims]
sheet = Image.new("RGB", (W, sum(im.size[1] + 30 for im in ims)), "white"); y = 0
for im in ims: sheet.paste(im, (0, y)); y += im.size[1] + 30
sheet.save("compare_sheet.png")

각 차원에 0–2.5점을 부여합니다(총 10점). 거부권이 행사되면 해당 차원은 0점이 됩니다.

차원의미거부권
충실성캡션 범위 내에서 방법을 보여줌; 합리적인 단순화는 괜찮음발명된 모듈 또는 연결, 역방향 흐름, 필수 연결 누락, 범위 외, 깨진 텍스트 또는 가짜 수식
간결성신호 대 잡음비가 높은 시각적 요약박스 내 문장(15단어 초과), 본문 텍스트 붙여넣기, 방정식 목록
가독성한눈에 보이는 흐름, 읽기 쉬운 텍스트그림 내부의 제목 또는 캡션, 중복 레이블, 겹침, 매우 작거나 고르지 않은 텍스트, 엉킨 흐름
미학최상위 학회 수준의 마감그리드 아티팩트, 깨진 모양, 네온 또는 충돌하는 색상, 클립 아트, 혼합 글꼴, 잘못된 정렬, 검은 배경

통과 점수: 저널 8.5, 학회 8.0, 학위 논문 8.0, 포스터 7.0, 슬라이드 6.5. 각 차원에 대해 "참조보다 나음 / 동등 / 나쁨"을 한 줄의 근거와 함께 작성합니다.

내보내기

python3 scripts/dc_export.py <root> Fig2.dc.html --out paperfigs --venue icml
  • Fig2.pdf(벡터, 보드 크기)와 Fig2.png(배치 폭에서 300dpi)를 작성합니다.
  • PDF 검사는 통과해야 합니다: 모든 글꼴이 포함되고, Type 3 글꼴이 없으며, 래스터 이미지가 없어야 합니다. 실패할 경우, 먼저 글꼴 목록을 수정합니다(references/style.md).
  • LaTeX: \includegraphics[width=\textwidth]{figures/fig2.pdf}를 figure* 내부에 사용합니다. \resizebox나 scale=로 줄이지 마십시오. 한 단 그림은 figure와 \columnwidth를 사용합니다.
  • Word 및 슬라이드: 그림 폭으로 PNG를 삽입한 후, 해당 페이지에서 겹침 및 페이지 나누기를 확인합니다.
  • 원고에서 교체하기 전에 이전 그림을 백업하고, 저자가 결정한 후에만 교체합니다.
  • 캡션은 학회 템플릿을 따릅니다. 캡션에 예제 기호가 의미하는 바, 의도적으로 생략된 내용, 예제가 예시용임을 명시합니다.

절대 금지

  • 저자의 확인 없이 모듈, 연결 또는 경계를 추가, 제거 또는 이름을 변경합니다.
  • 이미지 생성 모델을 사용하거나, 비트맵만 있는 최종 그림을 제공하거나, 참조 그림을 복사합니다.
  • 캔버스 도구를 사용할 수 있을 때 PNG, PDF 또는 로컬 파일로만 마무리합니다.
  • 방법 그림에 결과 숫자를 넣거나, 한 논문의 그림 간에 색상 규칙, 텍스트 크기 또는 표현 방식을 변경합니다.
  • 회색 위에 텍스트를 배치하거나, 분수 px CSS 테두리를 사용하거나, Type 3 글꼴이 있는 PDF를 제공합니다.
  • 저자의 원본을 덮어쓰거나, 허락 없이 원고의 그림을 교체하거나, 저자를 대신하여 후보를 선택합니다.
  • 측정하지 않고 "읽을 수 있음" 또는 "겹침 없음"을 주장합니다.

파일

파일용도
scripts/dc_board.py짧은 Python 코드로 보드 구축: 카드, 아이콘 카드, 사다리꼴, 연산 원, 텐서, 패널, 화살표
scripts/figure_audit.py인쇄 크기에서 그림 측정; --venue, --compare, --cvd
scripts/dc_export.py보드 → 벡터 PDF + 300dpi PNG, PDF 글꼴 및 래스터 검사 포함
references/venues.md학회 사전 설정: 폭, 명시된 규칙, 가장 작은 텍스트 px
references/style.md모양 표현 A와 B, 글꼴, 색상, 선, 밀도
references/drawing-boards.mdClaude Design 캔버스 또는 일반 HTML 보드로 그리기; dc_board.py 호출; TikZ 참고 사항
references/credits.md차용한 절차의 출처 및 라이선스
examples/감사를 통과하는 실행 가능한 그림: react-agent(표현 A), transformer-block(표현 B), rag-pipeline(최소)

관련 스킬