👥 이런 분께 추천
콘텐츠가 많아지면서 분류 체계가 필요한 분
프로젝트 내 규칙을 만들고 그 규칙 변경 과정을 기록하고 싶으신 분
UI 컴포넌트에 새로운 기능을 추가해본 적 없으신 분
스타일 시스템(CSS 변수)을 활용해본 적이 없으신 분
📝 한줄 요약
사례글들이 개인작업에 쌓이면서 “강의·설치·보안·규칙·데이터” 같은 태그로 분류해보았습니다.
규칙 문서화부터 UI 구현, 기존 글 정리까지의 전 과정을 기록했습니다.
Before: 사례글이 시간순으로만 쌓임 (분류 체계 없음)
After: 각 글이 명확한 태그와 색상으로 분류됨 (한눈에 구분 가능)
결과물
23기 AI온보딩 스터디에서 제공되는 학습위키에 카테고리 [태그] 추가
한국사이트 스크린샷
🙋 내 스펙 & 환경
항목
내용
직업
인사관리 기능 개발중. 코딩은 배우는 중
경험
Astro 컴포넌트 수정 경험 있음
도구
Claude, VS Code, Git
환경
Windows 11, Node.js 포함
진행 방법
1. 왜 하게 되었나
사례글이 점점 쌓이면서 문제가 생겼다.
상황:
개인작업 섹션에 이제 6개의 사례글이 있음
각 글의 주제가 다름 (강의, 설치, 보안, 규칙, 데이터)
하지만 좌측 목록에는 “제목”만 있고 주제 구분이 없음
독자가 “어떤 주제의 글들이 있나” 한눈에 파악하기 어려움
필요한 것:
각 글의 주제를 시각적으로 표현하는 방법
“1주차 개념”, “사례”, “회고” 같은 종류 태그처럼 색상 있는 칩 형태
2. 첫 번째 단계: 규칙 정의
먼저 AGENTS.md에 새로운 규칙을 문서화했다.
## ★ 사례글 카테고리와 태그
사례글은 카테고리와 태그로 분류됩니다.
**카테고리:** n주차 작업 vs 개인작업
- `카테고리: w1`, `w2`, `w3`, `w4` — 해당 주차의 학습 작업
- `카테고리: 개인작업` — 주차와 무관한 개인 프로젝트나 일반 학습
**태그:** 카테고리 내 세부 분류
- 1주차, 2주차 등에선: 「개념」「사례」「회고」「규칙」 등
- 개인작업에선: 「보안」「규칙」「자동화」「학습」 등
복사배운 점: 규칙을 먼저 정의하면, 이후 구현이 명확해진다. “뭘 만들지”보다 “뭐가 필요한지”를 먼저 정하는 게 중요했다.
3. 두 번째 단계: 설정 파일 수정
config.ts에 새로운 필드 추가:
// 카테고리: 글이 속한 카테고리 (n주차 또는 개인작업)
카테고리: z.enum(['w1', 'w2', 'w3', 'w4', '개인작업']).optional(),
// 태그: 카테고리 내 세부 분류
태그: z.string().optional(),
복사이제 frontmatter에서 이 필드들을 사용할 수 있게 되었다.
---
title: "글쓰기 규칙을 자동화하기"
카테고리: 개인작업
태그: 규칙
---
복사4. 세 번째 단계: UI 렌더링 로직 추가
WikiSidebar.astro에서 태그 색상 맵 정의:
const 태그색상: Record<string, { bg: string; fg: string }> = {
규칙: { bg: 'var(--blue-bg)', fg: 'var(--blue-fg)' },
보안: { bg: 'var(--red-bg)', fg: 'var(--red-fg)' },
자동화: { bg: 'var(--purple-bg)', fg: 'var(--purple-fg)' },
강의: { bg: 'var(--orange-bg)', fg: 'var(--orange-fg)' },
설치: { bg: 'var(--slate-bg)', fg: 'var(--slate-fg)' },
데이터: { bg: 'var(--pink-bg)', fg: 'var(--pink-fg)' },
};
복사그리고 개인작업 섹션과 주차별 섹션 모두에 태그를 렌더링하는 코드 추가:
{e.data.태그 && (
<span
class="tag"
style={`background: ${태그색상[e.data.태그]?.bg || 'var(--surface)'};
color: ${태그색상[e.data.태그]?.fg || 'var(--fg)'};`}
>
{e.data.태그}
</span>
)}
복사배운 점: Astro 컴포넌트에서 동적 스타일을 적용할 때는 인라인 style 속성보다 CSS 변수를 활용하면, 나중에 다크모드를 지원할 때 편하다.
5. 네 번째 단계: 색상 시스템 구축
Base.astro에 CSS 변수 추가:
:root {
--blue-bg: #dbeafe;
--blue-fg: #1e40af;
--red-bg: #fee2e2;
--red-fg: #991b1b;
--purple-bg: #f3e8ff;
--purple-fg: #6b21a8;
--sky-bg: #e0f2fe;
--sky-fg: #0c4a6e;
--orange-bg: #fed7aa;
--orange-fg: #9a3412;
--slate-bg: #e2e8f0;
--slate-fg: #334155;
--pink-bg: #fbcfe8;
--pink-fg: #be185d;
}
복사각 색상을 배경(-bg)과 글자색(-fg)으로 쌍으로 정의했다. 이러면 나중에 다크모드를 추가할 때 CSS 변수만 바꾸면 된다.
6. 다섯 번째 단계: CSS 스타일 추가
WikiSidebar.astro에 .tag 클래스 추가:
.tag {
font-size: 0.65rem;
padding: 0.08rem 0.4rem;
border-radius: 4px;
white-space: nowrap;
font-weight: 500;
/* 테두리 없음 — 1주차 개념, 사례 UI와 동일 */
}
복사테두리를 의도적으로 빼서, 기존의 종류 태그(“1주차 개념”, “사례” 등)와 같은 스타일로 통일했다.
7. 여섯 번째 단계: 기존 글 정리
이제 기존 개인작업 글들의 제목을 정규화했다.
변경 전:
“(강의) 기술부채의 정체 - 개인 성장과 산업의 악순환”
“(설치) 윈도우에서 구글 CLI 설치하기 - PATH 설정 방법”
“(보안) 학습일지를 비밀번호로 보호하기”
변경 후:
“기술부채의 정체 - 개인 성장과 산업의 악순환” + 🟠 강의
“윈도우에서 구글 CLI 설치하기 - PATH 설정 방법” + ⚪ 설치
“학습일지를 비밀번호로 보호하기” + 🔴 보안
모든 파일의 frontmatter에 카테고리: 개인작업과 태그: 해당태그