From 1407893c265a388d0615e5bcd29b1cefd75d0904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 11 Mar 2026 09:35:39 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[guides]=20Claude=20Code=20=E2=86=92=20?= =?UTF-8?q?=EC=8A=AC=EB=9E=99=20=EB=B6=99=EC=97=AC=EB=84=A3=EA=B8=B0=20?= =?UTF-8?q?=EA=B0=80=EC=9D=B4=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 터미널 줄바꿈 혼재, Markdown vs mrkdwn 차이, 슬랙 공백 처리 원인 분석 - 클코 to 슬랙 변환기 사용법 안내 - 리치 텍스트 복사 작동 원리 설명 --- INDEX.md | 1 + dev/guides/claude-code-to-slack.md | 116 +++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 dev/guides/claude-code-to-slack.md diff --git a/INDEX.md b/INDEX.md index 4eff9f6..f9141fc 100644 --- a/INDEX.md +++ b/INDEX.md @@ -158,6 +158,7 @@ DB 도메인별: | [erp-api-list.md](dev/guides/erp-api-list.md) | ERP API 목록 | | [erp-api-detail.md](dev/guides/erp-api-detail.md) | ERP API 상세 | | [item-master-guide.md](dev/guides/item-master-guide.md) | 품목기준관리 구조 | +| [claude-code-to-slack.md](dev/guides/claude-code-to-slack.md) | Claude Code → 슬랙 붙여넣기 가이드 | --- diff --git a/dev/guides/claude-code-to-slack.md b/dev/guides/claude-code-to-slack.md new file mode 100644 index 0000000..d274b13 --- /dev/null +++ b/dev/guides/claude-code-to-slack.md @@ -0,0 +1,116 @@ +# Claude Code CLI 출력을 슬랙에 전달하는 방법 + +> **작성일**: 2026-03-11 +> **대상**: 슬랙으로 협업하는 모든 팀원 + +--- + +## 1. 문제 + +Claude Code CLI에서 복사한 텍스트를 슬랙 채팅창에 붙여넣으면 줄바꿈이 깨지고, 마크다운 문법이 원본 그대로 노출된다. + +--- + +## 2. 원인 분석 + +텍스트가 깨지는 원인은 3가지가 복합적으로 작용한다. + +### 2.1 터미널 줄바꿈 혼재 + +터미널에는 2종류의 줄바꿈이 존재한다. + +| 종류 | 설명 | 복사 시 동작 | +|------|------|-------------| +| Hard wrap | 원본 텍스트의 실제 `\n` | 보통 유지됨 | +| Soft wrap | 터미널 창 너비에 의한 시각적 줄바꿈 | 유실되거나 불필요하게 추가됨 | + +Claude Code CLI는 터미널에서 실행되므로, 드래그 복사 시 실제 줄바꿈과 시각적 줄바꿈이 뒤섞여 클립보드에 들어간다. 그 결과 어떤 줄은 합쳐지고, 어떤 줄은 엉뚱한 곳에서 끊어진다. + +### 2.2 Markdown vs Slack mrkdwn 문법 차이 + +Claude Code는 표준 Markdown을 출력하지만, 슬랙은 자체 마크업 문법(mrkdwn)을 사용한다. + +| 요소 | Markdown (Claude Code) | Slack mrkdwn | 직접 붙여넣기 시 | +|------|----------------------|-------------|----------------| +| 볼드 | `**텍스트**` | `*텍스트*` | `**텍스트**` 그대로 표시 | +| 이탤릭 | `*텍스트*` | `_텍스트_` | 슬랙에서 볼드로 오인식 | +| 제목 | `## 제목` | 지원 안 함 | `## 제목` 그대로 표시 | +| 취소선 | `~~텍스트~~` | `~텍스트~` | `~~텍스트~~` 그대로 표시 | +| 링크 | `[텍스트](URL)` | `` | 원본 문법 그대로 표시 | +| 구분선 | `---` | 지원 안 함 | `---` 대시 3개로 표시 | +| 코드블록 | ` ```lang ``` ` | ` ``` ``` ` | 언어 지정자가 텍스트로 노출될 수 있음 | + +### 2.3 슬랙 입력창의 공백 처리 + +슬랙의 메시지 입력창은 붙여넣기 시 다음 처리를 수행한다: + +- 연속 빈 줄을 1개로 축소 +- 앞뒤 공백 제거 +- 일부 특수문자 이스케이프 + +이 3가지가 합쳐지면 **줄 합침, 문법 노출, 공백 손실**이 동시에 발생한다. + +--- + +## 3. 해결 방법: 클코 → 슬랙 변환기 + +### 3.1 접속 경로 + +MNG 관리자 패널에 변환 도구가 있다. + +| 환경 | URL | +|------|-----| +| 로컬 | `http://mng.sam.kr/rd/cc-to-slack` | +| 개발 서버 | `https://admin.codebridge-x.com/rd/cc-to-slack` | +| 운영 서버 | `https://mng.codebridge-x.com/rd/cc-to-slack` | + +**메뉴 위치**: 연구개발 > 클코 to 슬랙형태 + +### 3.2 사용법 + +1. Claude Code CLI에서 메시지를 드래그하여 복사 (`Ctrl+C`) +2. 변환기의 왼쪽 입력란에 붙여넣기 (`Ctrl+V`) +3. 오른쪽 슬랙 미리보기에 변환 결과가 자동 표시됨 +4. **복사** 버튼 클릭 (또는 `Ctrl+Enter`) +5. 슬랙 채팅창에 붙여넣기 (`Ctrl+V`) + +### 3.3 변환 규칙 + +| 변환 전 (Markdown) | 변환 후 (Slack) | 설명 | +|-------------------|----------------|------| +| `**볼드**` | `*볼드*` | 슬랙 볼드 문법 | +| `## 제목` | `*제목*` | 볼드 처리로 대체 | +| `~~취소~~` | `~취소~` | 슬랙 취소선 문법 | +| `[텍스트](URL)` | `` | 슬랙 링크 문법 | +| `---` | `———` | em dash로 구분선 대체 | +| 테이블 구분선 `\|---\|` | 제거 | 불필요한 구분선 삭제 | +| 연속 빈 줄 | 1개로 정리 | 공백 정리 | +| 코드블록 | 유지 | 슬랙도 ` ``` ` 지원 | + +--- + +## 4. 작동 원리 + +변환기가 정상 작동하는 핵심 이유는 **리치 텍스트(HTML) 복사** 방식을 사용하기 때문이다. + +``` +일반 텍스트 복사 (plain text) + → 슬랙이 자체적으로 재해석 → 줄바꿈 깨짐, 문법 노출 + +리치 텍스트 복사 (HTML) + → 슬랙이 HTML 서식을 그대로 수용 → 볼드, 코드블록, 줄바꿈 보존 +``` + +브라우저의 Selection API로 DOM 요소를 선택하면 클립보드에 `text/html`과 `text/plain` 두 가지 형식이 동시에 저장된다. 슬랙은 `text/html` 버전을 읽어서 ``, ``, `
` 등의 서식을 그대로 적용한다. + +--- + +## 관련 문서 + +- MNG 소스: `mng/resources/views/rd/cc-to-slack/index.blade.php` +- 컨트롤러: `mng/app/Http/Controllers/RdController.php` — `ccToSlack()` +- 라우트: `GET /rd/cc-to-slack` + +--- + +**최종 업데이트**: 2026-03-11