一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
14 KiB
Slack에서 영감받은 디자인 시스템
Category: 생산성 및 SaaS 직장 커뮤니케이션 플랫폼. 오베르진을 주색으로, 다중 액센트 로고 팔레트, 다크 사이드바와 결합된 밝은 서피스. 따뜻하고 친근한 느낌.
1. 비주얼 테마와 분위기
Slack의 정체성은 '업무는 인간적이고 약간 재미있어야 한다'는 아이디어를 중심으로 구축되어 있습니다. 기본 서피스는 밝은 형태입니다——흰색 콘텐츠 영역과 깊은 오베르진(#4A154B) 사이드바——어두운 색 우선 도구와 정반대입니다. 이 대비는 의도적입니다: 사이드바는 차분하고 항상 존재하는 내비게이션 앵커이며, 콘텐츠 영역은 밝고 열려 있습니다.
로고 팔레트——파란색, 초록색, 노란색, 빨간색——는 주로 해시태그 아이콘과 마케팅 맥락에서 사용되며, UI 전체에 흩어져 있지 않습니다. 제품 자체에서 Slack은 오베르진을 유일한 브랜드 앵커로 사용하는 절제되고 전문적인 색상 시스템을 사용합니다.
주요 특징:
- 밝은 콘텐츠 서피스 우선: 흰색
#FFFFFF와 거의 흰색#F8F8F8 - 깊은 오베르진
#4A154B사이드바——브랜드에서 가장 인식하기 쉬운 UI 요소 - 4가지 로고 액센트 컬러(파란색, 초록색, 노란색, 빨간색)는 하이라이트로만 아껴 사용
- 제목에 Larsseit(마케팅), UI에는 시스템 산세리프
- 둥글지만 만화 같지 않음: 대부분의 컴포넌트에 4–8px 반경
- 촘촘하지만 숨 쉬는 느낌: 컴팩트한 메시지 행과 명확한 스레드 계층 구조
- 따뜻하고 대화적인 톤——이모지, 반응, 일러스트가 일급 시민
2. 색상 팔레트와 역할
브랜드 프라이머리
| 토큰 | Hex | 역할 |
|---|---|---|
--color-aubergine |
#4A154B |
사이드바 배경, 브랜드 주색 |
--color-aubergine-dark |
#350d36 |
오베르진 서피스의 호버 상태 |
--color-aubergine-light |
#611f69 |
사이드바 활성 항목 하이라이트 |
로고 액센트 컬러(아껴 사용——하이라이트, 아이콘, 마케팅에만)
| 토큰 | Hex | 이름 | 역할 |
|---|---|---|---|
--color-blue |
#36C5F0 |
스카이 블루 | 채널 아이콘, 링크, 정보 상태 |
--color-green |
#2EB67D |
틸 그린 | 온라인 상태, 성공 상태 |
--color-yellow |
#ECB22E |
골드 | 자리 비움 상태, 경고, 하이라이트 |
--color-red |
#E01E5A |
루비 | 알림, 오류, 멘션 뱃지 |
서피스 및 배경
| 토큰 | Hex | 역할 |
|---|---|---|
--bg-primary |
#FFFFFF |
메인 메시지 영역, 모달 |
--bg-secondary |
#F8F8F8 |
스레드 패널, 보조 서피스 |
--bg-tertiary |
#F1F1F1 |
입력 배경, 호버 상태 |
--bg-sidebar |
#4A154B |
왼쪽 사이드바(오베르진) |
--bg-sidebar-hover |
rgba(255,255,255,0.1) |
사이드바 항목 호버 |
--bg-sidebar-active |
rgba(255,255,255,0.2) |
활성 사이드바 항목 |
--bg-message-hover |
#F8F8F8 |
메시지 행 호버 |
텍스트 컬러
| 토큰 | Hex | 역할 |
|---|---|---|
--text-primary |
#1D1C1D |
주요 본문 텍스트(거의 검정) |
--text-secondary |
#616061 |
타임스탬프, 음소거 레이블 |
--text-sidebar |
rgba(255,255,255,0.9) |
사이드바 채널 이름 |
--text-sidebar-muted |
rgba(255,255,255,0.6) |
사이드바 비활성 항목 |
--text-link |
#1264A3 |
메시지 내 인라인 링크 |
--text-mention |
#1264A3 |
@멘션 텍스트 컬러 |
시맨틱 컬러
| 토큰 | Hex | 역할 |
|---|---|---|
--color-success |
#2EB67D |
성공 토스트, 긍정적 상태 |
--color-warning |
#ECB22E |
경고 상태 |
--color-danger |
#E01E5A |
오류 상태, 파괴적 동작 |
--color-info |
#36C5F0 |
정보 하이라이트 |
테두리 및 구분선
| 토큰 | Hex | 역할 |
|---|---|---|
--border-default |
#DDDDDD |
표준 구분선, 카드 테두리 |
--border-subtle |
#F1F1F1 |
행 사이의 미묘한 구분선 |
--border-focus |
#1264A3 |
포커스 링 컬러 |
3. 타이포그래피 규칙
서체
| 역할 | 공식 | 웹 폴백 |
|---|---|---|
| 디스플레이 / 마케팅 제목 | Larsseit | 'Larsseit', 'Helvetica Neue', Arial, sans-serif |
| UI / 본문 / 크롬 | Slack Lato(커스텀) | system-ui, -apple-system, BlinkMacSystemFont, sans-serif |
| 코드 / 모노스페이스 | — | 'Monaco', 'Menlo', 'Courier New', monospace |
Slack은 마케팅 헤드라인에 Larsseit를, 제품 내 UI에는 커스텀 Lato 변형을 사용합니다. 웹 사용에는
system-ui가 가장 안전한 폴백입니다.
타입 스케일
| 레벨 | 크기 | 두께 | 행간 | 자간 | 용도 |
|---|---|---|---|---|---|
| Display XL | 48px | 800 | 1.1 | -1px | 마케팅 히어로 헤드라인 |
| Display L | 36px | 700 | 1.15 | -0.5px | 섹션 히어로 |
| Heading 1 | 28px | 700 | 1.25 | normal | 모달 제목, 페이지 헤더 |
| Heading 2 | 22px | 700 | 1.3 | normal | 카드 제목, 설정 섹션 |
| Heading 3 | 18px | 700 | 1.35 | normal | 서브섹션 헤더 |
| Body L | 16px | 400 | 1.5 | normal | 메시지 텍스트, 설명 |
| Body | 15px | 400 | 1.46667 | normal | 기본 UI 텍스트(Slack의 기본 크기) |
| Body SM | 13px | 400 | 1.38462 | normal | 보조 메타데이터 |
| Caption | 12px | 400 | 1.33 | normal | 타임스탬프, 힌트 |
| Code | 12px | 400 | 1.5 | normal | 인라인 코드, 코드 블록 |
타이포그래피 규칙
- Slack의 기본 본문 크기는 15px——밀도를 위해 16px보다 약간 작음
- 읽지 않은 채널: 두께 700——볼드체가 주요 읽지 않음 표시기
- 타임스탬프: 12px
--text-secondary, 호버 시에만 표시 - 코드 블록: 배경
#F8F8F8, 테두리1px solid #DDDDDD, 반경 4px - 폰트 크기 12px 미만 사용 금지
- 마케팅 제목: 큰 디스플레이 크기에 자간
-1px
4. 컴포넌트 스타일
버튼
/* Primary */
.btn-primary {
background: #4A154B;
color: #FFFFFF;
border-radius: 4px;
padding: 0 16px;
height: 36px;
font-size: 15px;
font-weight: 700;
border: none;
}
.btn-primary:hover { background: #611f69; }
/* Secondary */
.btn-secondary {
background: #FFFFFF;
color: #1D1C1D;
border: 1px solid #DDDDDD;
border-radius: 4px;
padding: 0 16px;
height: 36px;
font-size: 15px;
font-weight: 700;
}
.btn-secondary:hover { background: #F8F8F8; }
/* Danger */
.btn-danger {
background: #E01E5A;
color: #FFFFFF;
border-radius: 4px;
}
.btn-danger:hover { background: #B3114A; }
입력 필드
.input {
background: #FFFFFF;
border: 1px solid #DDDDDD;
border-radius: 4px;
color: #1D1C1D;
font-size: 15px;
padding: 8px 12px;
height: 36px;
}
.input:focus {
border-color: #1264A3;
box-shadow: 0 0 0 2px rgba(18,100,163,0.25);
outline: none;
}
사이드바 채널 항목
.channel-item {
height: 28px;
padding: 0 16px;
border-radius: 6px;
color: rgba(255,255,255,0.7);
font-size: 15px;
font-weight: 400;
}
.channel-item:hover {
background: rgba(255,255,255,0.1);
color: #FFFFFF;
}
.channel-item.active {
background: rgba(255,255,255,0.2);
color: #FFFFFF;
}
.channel-item.unread {
color: #FFFFFF;
font-weight: 700;
}
읽지 않음 뱃지
.badge {
background: #E01E5A;
color: #FFFFFF;
border-radius: 8px;
font-size: 11px;
font-weight: 700;
padding: 1px 6px;
min-width: 18px;
}
메시지 첨부 파일 / 카드
.attachment {
border-left: 4px solid #DDDDDD;
background: #F8F8F8;
border-radius: 0 4px 4px 0;
padding: 8px 12px;
margin: 4px 0;
}
반응
.reaction {
border: 1px solid #DDDDDD;
border-radius: 24px;
background: #F8F8F8;
padding: 2px 8px;
font-size: 13px;
cursor: pointer;
}
.reaction:hover { background: #F1F1F1; }
.reaction.active {
background: rgba(18,100,163,0.1);
border-color: #1264A3;
}
5. 레이아웃 원칙
3단 레이아웃
┌──────────────┬──────────────────────────────┬─────────────┐
│ Sidebar │ Message Area │ Thread │
│ (240px) │ (flex: 1) │ (400px) │
│ #4A154B │ #FFFFFF │ optional │
└──────────────┴──────────────────────────────┴─────────────┘
간격 시스템(4px 기준)
| 토큰 | 값 | 용도 |
|---|---|---|
--space-1 |
4px | 좁은 간격 |
--space-2 |
8px | 컴포넌트 패딩 |
--space-3 |
12px | 입력 패딩 |
--space-4 |
16px | 표준 패딩 |
--space-6 |
24px | 카드 패딩 |
--space-8 |
32px | 섹션 간격 |
사이드바 구조
[워크스페이스 이름 ▼]
────────────────────
Threads
All DMs
Drafts & Sent
────────────────────
▼ Channels
# general
# random
# design ● (unread)
────────────────────
▼ Direct Messages
John Doe
Jane Smith
메시지 컴포저
- 메시지 영역 하단에 고정
border: 1px solid #DDDDDD,border-radius: 8px,margin: 0 16px 16px- 툴바: 이모지, 첨부, 서식, 전송 버튼
6. 깊이와 엘리베이션
Slack은 밝은 서피스에 가벼운 그림자를 사용합니다:
| 레벨 | 용도 | 그림자 |
|---|---|---|
| 플랫 | 메시지 행, 사이드바 항목 | none |
| 낮음 | 카드, 입력 | 0 1px 3px rgba(0,0,0,0.08) |
| 중간 | 드롭다운, 팝오버 | 0 4px 12px rgba(0,0,0,0.12) |
| 높음 | 모달, 다이얼로그 | 0 8px 24px rgba(0,0,0,0.15) |
| 오버레이 | 모달 백드롭 | rgba(0,0,0,0.5) |
7. 해야 할 것과 하지 말아야 할 것
✅ 해야 할 것
- 사이드바에 오베르진
#4A154B사용——Slack의 가장 상징적인 UI 요소 - 메인 콘텐츠 영역을 흰색으로 밝게 유지
- 모든 본문 텍스트에
#1D1C1D(거의 검정) 사용, 순수 검정 사용 금지 - 채널 이름을 볼드체로 표시하여 읽지 않음 상태 표시——두께가 표시기
- 4가지 액센트 컬러는 시맨틱 역할(성공, 경고, 위험, 정보)에만 사용
- 메시지 첨부 파일과 임베드에
border-left: 4px적용 - 타임스탬프는 호버 시에만 표시
- 링크와 포커스 상태에
#1264A3사용 - 사이드바 항목을 컴팩트하게 유지: 높이 28px, 반경 6px
❌ 하지 말아야 할 것
- 메인 콘텐츠 영역을 어둡게 하지 않기——Slack은 밝은 색 우선
- 파란색/초록색/노란색/빨간색을 장식적 액센트로 흩뿌리지 않기
- 텍스트에 순수 검정
#000000사용 금지 - 말풍선 사용 금지——메시지는 플랫한 행
- 버튼에 큰 반경 사용 금지——4px가 표준
- 타임스탬프를 영구적으로 표시하지 않기
- 채널 이름을 전부 대문자로 쓰지 않기
- 폰트 크기 12px 미만 사용 금지
8. 반응형 동작
브레이크포인트
| 브레이크포인트 | 너비 | 레이아웃 |
|---|---|---|
| 모바일 | < 768px | 단일 패널, 사이드바는 왼쪽 드로어 |
| 태블릿 | 768–1024px | 사이드바 + 메시지 영역만 |
| 데스크톱 | > 1024px | 전체 3단 레이아웃 |
모바일 적응
- 사이드바: 왼쪽 드로어, 오른쪽으로 스와이프하여 열기
- 하단 탭 바: 홈, DM, 활동, 나
- 스레드 패널: 전체 화면 오버레이
- 컴포저: 키보드 위에 고정
- 채널 목록 항목: 44px 터치 타겟 높이
- 모바일에서도 오베르진 상단 헤더 바 유지
9. Agent 프롬프트 가이드
Slack 스타일 디자인을 생성할 때 다음 접근 방식을 따르세요:
색상 적용:
메인 캔버스로
background: #FFFFFF를 설정합니다. 사이드바에는#4A154B(오베르진)를 사용합니다. 모든 주요 텍스트는#1D1C1D입니다. 링크와 포커스 링은#1264A3을 사용합니다. 4가지 로고 컬러——#36C5F0,#2EB67D,#ECB22E,#E01E5A——는 시맨틱 전용: 정보, 성공, 경고, 위험.
타이포그래피:
모든 UI에
system-ui, -apple-system, sans-serif를 사용합니다. 기본 크기는 15px입니다. 읽지 않은 채널: 두께 700. 본문 텍스트: 두께 400. 타임스탬프: 12px#616061, 호버 시에만. 코드:Monaco, Menlo, monospace, 12px, 배경#F8F8F8.
레이아웃:
3단: 240px 오베르진 사이드바 + 플렉시블 흰색 메시지 영역 + 선택적 400px 스레드 패널. 사이드바 항목: 높이 28px, 반경 6px, 읽지 않았을 때 볼드. 컴포저: 하단 고정,
border: 1px solid #DDDDDD,border-radius: 8px.
컴포넌트:
버튼: 반경 4px, 높이 36px, 오베르진 프라이머리. 입력:
1px solid #DDDDDD테두리,#1264A3포커스 링. 메시지 행: 플랫, 말풍선 없음, 36px 원형 아바타. 반응: 필 형태border: 1px solid #DDDDDD,border-radius: 24px.
톤:
Slack은 따뜻하고 전문적이며 인간적입니다. 빈 상태에는 친근한 일러스트를 사용합니다. CTA는 직접적입니다: "Send message", "Get started". 오류 메시지는 명확하고 도움이 됩니다. 절대 불안을 조성하지 않습니다.
피해야 할 안티패턴:
어두운 콘텐츠 영역 금지. 말풍선 금지. 순수 검정 텍스트 금지. 여러 색상 액센트 흩뿌리기 금지. 채널 이름 전부 대문자 금지. 12px 미만 폰트 금지. 큰 버튼 반경 금지.