
result-design
by window-ook
๐คผโโ๏ธ ์ง์์์ ์ฑ์ฉ ๊ณต๊ณ ์ ์ ํฉ๋๋ฅผ ์๋ ค์ฃผ๋ ํ์ฒด์ปค์ ๋๋ค
SKILL.md
name: result-design description: ์ง์์-ํ์ฌ ์ ํฉ์ฑ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ฏธ๋ คํ HTML ํ๋ ์ ํ ์ด์ ์ผ๋ก ์ ์ํ๋ ์คํฌ. ๋งค์น์จ, ์ ํฉ/๋ถ์ ํฉ ์์, ๋ณด์ ํฌ์ธํธ๋ฅผ lucide ์์ด์ฝ๊ณผ Glassmorphism ์คํ์ผ ํ๋ฅผ ํ์ฉํ์ฌ ์ง๊ด์ ์ผ๋ก ํํ. allowed-tools: Read, Write, Edit, Glob user-invocable: true
์ ํฉ์ฑ ๋ถ์ ๊ฒฐ๊ณผ ํ๋ ์ ํ ์ด์ ์คํฌ
์ง์์์ ํ์ฌ ๊ฐ์ ์ ํฉ์ฑ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ธ์์ ์ธ ํ๋ ์ ํ ์ด์ ์ผ๋ก ์ ์ํฉ๋๋ค.
ํธ๋ฆฌ๊ฑฐ ๋ฐ ๋ ๋ฆฝ ์คํ
์๋ ํ์ฑํ ์กฐ๊ฑด
๋ค์ ํจํด ์ค ํ๋๋ผ๋ ๊ฐ์ง๋๋ฉด ์ด ์คํฌ์ ์๋ ํ์ฑํํฉ๋๋ค:
์ฑ์ฉ ๊ณต๊ณ URL ๊ฐ์ง:
๊ณต๊ณ :,์ฑ์ฉ ๊ณต๊ณ :,์ฑ์ฉ:,job:,JD:+ URL- ์ฒซ ๋ฒ์งธ URL (์์์ ์ฒซ ๋ฒ์งธ๋ก ์ ๊ณต๋ URL)
ํ์ฌ ์๊ฐ URL/PDF ๊ฐ์ง:
ํ์ฌ ์๊ฐ:,์๊ฐ:,ํ์ฌ:,about:,๊ธฐ์ :+ URL/PDF- ๋ ๋ฒ์งธ URL (์์์ ๋ ๋ฒ์งธ๋ก ์ ๊ณต๋ URL)
์ต์ ์กฐ๊ฑด:
- URL 2๊ฐ๋ง ์์๋๋ก ์ ๊ณต๋์ด๋ ํ์ฑํ
- ์:
https://recruit.example.com/123 https://example.com/about - ์ฒซ ๋ฒ์งธ URL โ ์ฑ์ฉ ๊ณต๊ณ ๋ก ์ธ์
- ๋ ๋ฒ์งธ URL โ ํ์ฌ ์๊ฐ๋ก ์ธ์
- ์:
์ ์ฐํ ์ ๋ ฅ ์์:
โ
๊ณต๊ณ : https://... ํ์ฌ ์๊ฐ: https://...
โ
์ฑ์ฉ ๊ณต๊ณ : https://... ์๊ฐ: https://...
โ
https://recruit.com/job https://company.com/about
โ
JD: https://... about: https://...
โ
(URL1) (URL2) โ ์์๋ง ๋ง์ผ๋ฉด OK
๋ ๋ฆฝ ์คํ ์ํฌํ๋ก์ฐ
์๋ ์์๋ก ๋ถ์์ ์ํํฉ๋๋ค:
- URL ํ์ฑ - ์ ๋ ฅ์์ ์ฑ์ฉ ๊ณต๊ณ URL๊ณผ ํ์ฌ ์๊ฐ URL ์ถ์ถ
- ์ฑ์ฉ ๊ณต๊ณ ๋ถ์ -
job-posting-analyzer์์ด์ ํธ ํธ์ถ - ํ์ฌ ์๊ฐ ๋ถ์ -
about-analyzer์์ด์ ํธ ํธ์ถ - ์ง์์ ์ ๋ณด ๋ก๋ -
.claude/skills/fit-check/references/applicant.md์ฝ๊ธฐ - ์ ํธ ์กฐ๊ฑด ๋ก๋ -
.claude/skills/fit-check/references/preference.md์ฝ๊ธฐ - ์ ํฉ์ฑ ๋ถ์ - ๋งค์น์จ ๊ณ์ฐ ๋ก์ง ์ ์ฉ
- ๊ฒฐ๊ณผ๋ฌผ ์์ฑ - HTML ํ๋ ์ ํ ์ด์ ์ ์ฅ
๋์์ธ ์ฒ ํ
ํต์ฌ ์์น
- ๋ช ํํ ์ ๋ณด ๊ณ์ธต: ๊ฐ์ฅ ์ค์ํ ์ ๋ณด(๋งค์น์จ)๊ฐ ๊ฐ์ฅ ๋์ ๋๊ฒ
- ๋ฐ์ดํฐ ์๊ฐํ: ์ซ์์ ํ ์คํธ๋ฅผ ์ง๊ด์ ์ธ ๊ทธ๋ํฝ์ผ๋ก ํํ
- ์ผ๊ด๋ ์ปฌ๋ฌ ์์คํ : ๊ธ์ /๋ถ์ /์ค๋ฆฝ ์๋ฏธ๋ฅผ ์์์ผ๋ก ์ ๋ฌ
- lucide ์์ด์ฝ ํ์ฉ: ์ ๋ณด์ ๋น ๋ฅธ ์ธ์ง๋ฅผ ๋๋ ์๊ฐ์ ์ต์ปค
- Light Mode Glassmorphism: ๊น๋ํ๊ณ ํ๋์ ์ธ ๋ฐํฌ๋ช ์นด๋ ์คํ์ผ
ํผํด์ผ ํ ๊ฒ
- ์ ๋ค๋ฆญํ AI ์์ฑ ์คํ์ผ
- ๊ณผ๋ํ ๊ทธ๋ผ๋ฐ์ด์ ์ด๋ ์ฅ์
- ์ฝ๊ธฐ ์ด๋ ค์ด ํฐํธ ์กฐํฉ
- ์ ๋ณด ๊ณผ๋ถํ
- ์ด๋ชจ์ง ์ฌ์ฉ (lucide ์์ด์ฝ์ผ๋ก ๋์ฒด)
์คํ์ผ ๊ฐ์ด๋
ํ์ CDN
<link
rel="stylesheet"
as="style"
crossorigin
href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css"
/>
<script src="https://unpkg.com/lucide@latest"></script>
ํฐํธ
font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, sans-serif;
- ์ ๋ชฉ: Pretendard Black (900), 32-48px
- ๋ณธ๋ฌธ: Pretendard Regular, 14-16px
- ๊ฐ์กฐ: Pretendard SemiBold (600)
์ปฌ๋ฌ ํ๋ ํธ
:root {
/* Theme Colors - Teal Based */
--primary: #198175;
--primary-light: oklch(72.3% 0.219 149.579);
--primary-dark: #136b62;
--primary-glow: rgba(45, 212, 140, 0.3);
/* Status Colors - 5๋จ๊ณ ์ ํฉ๋ */
--grade-5: oklch(72.3% 0.219 149.579); /* ์๋ฒฝ ์ผ์น */
--grade-4: oklch(75% 0.2 149.579); /* ๋งค์ฐ ์ ํฉ */
--grade-3: #fbbf24; /* ์ ํฉ */
--grade-2: #f97316; /* ๋ถ๋ถ ์ผ์น */
--grade-1: #ef4444; /* ๋ฏธํก */
/* Semantic */
--success: oklch(72.3% 0.219 149.579);
--warning: #f59e0b;
--danger: #ef4444;
--neutral: #6b7280;
/* Glassmorphism - Light Gradient Mode */
--glass-bg: rgba(255, 255, 255, 0.7);
--glass-bg-light: rgba(255, 255, 255, 0.6);
--glass-border: rgba(255, 255, 255, 0.8);
--glass-border-light: rgba(255, 255, 255, 0.9);
--glass-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 10px 15px -3px rgba(0, 0, 0, 0.05),
0 20px 25px -5px rgba(0, 0, 0, 0.03);
--glass-blur: blur(20px);
/* Text - Light Mode */
--text-primary: #1f2937;
--text-secondary: #374151;
--text-muted: #6b7280;
/* Background */
--bg-gradient: linear-gradient(135deg, #f0fdfa 0%, #e0f2fe 50%, #f0fdf4 100%);
--bg-card: rgba(255, 255, 255, 0.6);
}
lucide ์์ด์ฝ ๊ฐ์ด๋
| ์ฉ๋ | ์์ด์ฝ | ์ฌ์ฉ ์์ |
|---|---|---|
| ์น์ 2 ํ์ดํ (์ ๋ง๋ ์ ) | check-circle | <i data-lucide="check-circle"></i> |
| ์น์ 3 ํ์ดํ (๋ง์ง ์๋ ์ ) | alert-triangle | <i data-lucide="alert-triangle"></i> |
| ์น์ 4 ํ์ดํ (๋ณด์ ํฌ์ธํธ) | lightbulb | <i data-lucide="lightbulb"></i> |
| ์น์ 5 ํ์ดํ (์ข ํฉ ์์ฝ) | clipboard-list | <i data-lucide="clipboard-list"></i> |
| ๋งค์น์จ ๊ทผ๊ฑฐ | bar-chart-2 | <i data-lucide="bar-chart-2"></i> |
| ๊ฐ์ ์นด๋ | thumbs-up | <i data-lucide="thumbs-up"></i> |
| ์ฃผ์ ์นด๋ | alert-circle | <i data-lucide="alert-circle"></i> |
| ์ก์ ์นด๋ | zap | <i data-lucide="zap"></i> |
| ๋ฆฌ์คํธ ํ์ดํ | chevron-right | <i data-lucide="chevron-right"></i> |
| ๊ทผ๊ฑฐ | bookmark | <i data-lucide="bookmark"></i> |
| ์ ์ | lightbulb | <i data-lucide="lightbulb"></i> |
| ํ์ ์๊ฑด ๋ถ์ถฉ์กฑ | x-circle | <i data-lucide="x-circle"></i> |
| ์ ํธ ์กฐ๊ฑด | star | <i data-lucide="star"></i> |
| ์ฐ๋ ์ฌํญ | briefcase | <i data-lucide="briefcase"></i> |
| ํ์ธ ํ์ | help-circle | <i data-lucide="help-circle"></i> |
| ์ ํฉ๋ ์ฒดํฌ | check | <i data-lucide="check"></i> |
| ์ค์๋ | flame | <i data-lucide="flame"></i> |
| ์ถฉ์กฑ๋ | pie-chart | <i data-lucide="pie-chart"></i> |
| ์ ๋ณด | info | <i data-lucide="info"></i> |
์นดํ ๊ณ ๋ฆฌ ์์ด์ฝ
| ์นดํ ๊ณ ๋ฆฌ | ์์ด์ฝ | ํด๋์ค | ์ปฌ๋ฌ |
|---|---|---|---|
| ๊ธฐ์ | code-2 | .category-icon.tech | #60a5fa |
| AI | bot | .category-icon.ai | #a78bfa |
| UI | palette | .category-icon.ui | #f472b6 |
| ๋๋ฉ์ธ | building-2 | .category-icon.domain | oklch(72.3% 0.219 149.579) |
| ์ถํด๊ทผ | train | .category-icon.commute | #fbbf24 |
5๋จ๊ณ ์ ํฉ๋ ๋ฐฐ์ง ์์คํ
| ๋ฑ๊ธ | ๋ผ๋ฒจ | CSS ํด๋์ค | ์ฌ์ฉ ์์ |
|---|---|---|---|
| 5 | ์๋ฒฝ ์ผ์น | .grade-badge.grade-5 | ์๊ตฌ์ฌํญ 100% ์ถฉ์กฑ |
| 4 | ๋งค์ฐ ์ ํฉ | .grade-badge.grade-4 | ์๊ตฌ์ฌํญ ๋๋ถ๋ถ ์ถฉ์กฑ |
| 3 | ์ ํฉ | .grade-badge.grade-3 | ๊ธฐ๋ณธ ์ถฉ์กฑ |
| 2 | ๋ถ๋ถ ์ผ์น | .grade-badge.grade-2 | ์ผ๋ถ๋ง ์ถฉ์กฑ |
| 1 | ๋ฏธํก | .grade-badge.grade-1 | ์๊ตฌ์ฌํญ ๋ฏธ์ถฉ์กฑ |
ํ๋ ์ ํ ์ด์ ๊ตฌ์กฐ
์ฌ๋ผ์ด๋ 1: ํ์ดํ & ๋งค์น์จ
<div class="glass-card header">
<div class="company-badge">
<i data-lucide="building-2" style="width: 16px; height: 16px;"></i>
์ ํฉ์ฑ ๋ถ์ ๊ฒฐ๊ณผ
</div>
<h1>[ํ์ฌ๋ช
]</h1>
<p class="position">[์ง๋ฌด] | [๋๋ฉ์ธ]</p>
<div class="score-section">
<div class="donut-chart">
<svg width="200" height="200" viewBox="0 0 200 200">
<defs>
<linearGradient id="tealGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#14b8a6" />
<stop offset="100%" style="stop-color:#0d9488" />
</linearGradient>
</defs>
<circle class="donut-bg" cx="100" cy="100" r="80" />
<circle
class="donut-progress"
cx="100"
cy="100"
r="80"
stroke-dasharray="[๊ณ์ฐ๊ฐ] 503"
/>
<!-- stroke-dasharray ๊ณ์ฐ: [๋งค์น์จ] * 5.03 -->
</svg>
<div class="donut-center">
<div class="score">[๋งค์น์จ]%</div>
</div>
</div>
<div class="score-reasons">
<div class="reason-item">
<div class="reason-icon green">
<i data-lucide="[์์ด์ฝ]" style="width: 20px; height: 20px;"></i>
</div>
<div class="reason-text">
<strong>[์ฒซ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ ๋ชฉ]</strong><br />
[์ฒซ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ค๋ช
]
</div>
</div>
<div class="reason-item">
<div class="reason-icon blue">
<i data-lucide="[์์ด์ฝ]" style="width: 20px; height: 20px;"></i>
</div>
<div class="reason-text">
<strong>[๋ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ ๋ชฉ]</strong><br />
[๋ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ค๋ช
]
</div>
</div>
<div class="reason-item">
<div class="reason-icon yellow">
<i data-lucide="[์์ด์ฝ]" style="width: 20px; height: 20px;"></i>
</div>
<div class="reason-text">
<strong>[์ธ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ ๋ชฉ]</strong><br />
[์ธ ๋ฒ์งธ ๊ทผ๊ฑฐ ์ค๋ช
]
</div>
</div>
</div>
</div>
</div>
์ฌ๋ผ์ด๋ 2: ์ ๋ง๋ ์ (Strengths)
<div class="section">
<div class="section-header">
<div class="section-icon green">
<i data-lucide="check-circle" style="width: 24px; height: 24px;"></i>
</div>
<h2 class="section-title">์ ๋ง๋ ์ </h2>
</div>
<div class="glass-card" style="overflow: hidden;">
<table class="strengths-table">
<thead>
<tr>
<th style="width: 25%;">์๊ตฌ์ฌํญ</th>
<th style="width: 55%;">์ง์์ ์ญ๋</th>
<th style="width: 20%;">์ ํฉ๋</th>
</tr>
</thead>
<tbody>
<tr>
<td class="requirement-cell">[์๊ตฌ์ฌํญ]</td>
<td class="match-cell">
<strong>[ํต์ฌ ์ญ๋]</strong><br />
[์์ธ ์ค๋ช
]
</td>
<td class="badge-cell">
<span class="fit-badge level-5">
<i data-lucide="star" style="width: 14px; height: 14px;"></i>
์๋ฒฝ ์ผ์น
</span>
</td>
</tr>
<!-- ์ถ๊ฐ ํ๋ค -->
</tbody>
</table>
</div>
</div>
์ฌ๋ผ์ด๋ 3: ๋ง์ง ์๋ ์ (Gaps)
<div class="section">
<div class="section-header">
<div class="section-icon red">
<i data-lucide="alert-triangle" style="width: 24px; height: 24px;"></i>
</div>
<h2 class="section-title">๋ง์ง ์๋ ์ </h2>
</div>
<div class="gap-grid">
<!-- ์ ํธ ์กฐ๊ฑด -->
<div class="gap-card prefer">
<div class="gap-card-header">
<span class="gap-card-title">[ํญ๋ชฉ๋ช
]</span>
<span class="gap-type-badge prefer">์ ํธ์กฐ๊ฑด</span>
</div>
<div class="gap-card-content">[์ค๋ช
๋ด์ฉ]</div>
</div>
<!-- ํ์ธ ํ์ -->
<div class="gap-card info">
<div class="gap-card-header">
<span class="gap-card-title">[ํญ๋ชฉ๋ช
]</span>
<span class="gap-type-badge info">ํ์ธํ์</span>
</div>
<div class="gap-card-content">[์ค๋ช
๋ด์ฉ]</div>
</div>
<!-- ํ์ ์๊ฑด (critical) -->
<div class="gap-card critical">
<div class="gap-card-header">
<span class="gap-card-title">[ํญ๋ชฉ๋ช
]</span>
<span class="gap-type-badge critical">ํ์์๊ฑด</span>
</div>
<div class="gap-card-content">[์ค๋ช
๋ด์ฉ]</div>
</div>
</div>
</div>
์ฌ๋ผ์ด๋ 4: ๋ณด์ํด์ผ ํ ์์ธ
<div class="section">
<div class="section-header">
<div class="section-icon yellow">
<i data-lucide="lightbulb" style="width: 24px; height: 24px;"></i>
</div>
<h2 class="section-title">๋ณด์ ํฌ์ธํธ</h2>
</div>
<section class="slide improvements-slide">
<div class="improvement-list">
<div class="improvement-item">
<div class="improvement-badges">
<span class="importance-badge high">
<i data-lucide="flame"></i>
<span class="label">์ค์๋</span>
๋์
</span>
<span class="fulfillment-badge low">
<i data-lucide="pie-chart"></i>
<span class="label">์ถฉ์กฑ๋</span>
0%
</span>
</div>
<h3>[๋ณด์ ํญ๋ชฉ๋ช
]</h3>
<p class="description">[๋ณด์์ด ํ์ํ ์ด์ ์ค๋ช
]</p>
<div class="evidence">
<strong><i data-lucide="bookmark"></i> ๊ทผ๊ฑฐ</strong>
<p>[์ฑ์ฉ ๊ณต๊ณ ๋ ํ์ฌ ์ ๋ณด์์ ๋ฐ์ทํ ๊ทผ๊ฑฐ]</p>
</div>
<div class="suggestion">
<strong><i data-lucide="lightbulb"></i> ์ ์</strong>
<p>[๊ฐ์ ๋ฐฉ๋ฒ ๋๋ ์ดํ ํฌ์ธํธ]</p>
</div>
</div>
<div class="improvement-item">
<div class="improvement-badges">
<span class="importance-badge medium">
<i data-lucide="flame"></i>
<span class="label">์ค์๋</span>
์ค๊ฐ
</span>
<span class="fulfillment-badge medium">
<i data-lucide="pie-chart"></i>
<span class="label">์ถฉ์กฑ๋</span>
50%
</span>
</div>
<h3>[๋ณด์ ํญ๋ชฉ๋ช
]</h3>
<p class="description">[์ค๋ช
]</p>
<div class="evidence">
<strong><i data-lucide="bookmark"></i> ๊ทผ๊ฑฐ</strong>
<p>[๊ทผ๊ฑฐ]</p>
</div>
<div class="suggestion">
<strong><i data-lucide="lightbulb"></i> ์ ์</strong>
<p>[์ ์]</p>
</div>
</div>
<div class="improvement-item">
<div class="improvement-badges">
<span class="importance-badge low">
<i data-lucide="flame"></i>
<span class="label">์ค์๋</span>
๋ฎ์
</span>
<span class="fulfillment-badge medium">
<i data-lucide="pie-chart"></i>
<span class="label">์ถฉ์กฑ๋</span>
ํ์ธ ํ์
</span>
</div>
<h3>[๋ณด์ ํญ๋ชฉ๋ช
]</h3>
<p class="description">[์ค๋ช
]</p>
<div class="evidence">
<strong><i data-lucide="bookmark"></i> ๊ทผ๊ฑฐ</strong>
<p>[๊ทผ๊ฑฐ]</p>
</div>
<div class="suggestion">
<strong><i data-lucide="lightbulb"></i> ์ ์</strong>
<p>[์ ์]</p>
</div>
</div>
</div>
</section>
</div>
์ฌ๋ผ์ด๋ 5: ์์ฝ ๋ฐ ๊ฒฐ๋ก
<div class="section">
<div class="section-header">
<div class="section-icon teal">
<i data-lucide="file-text" style="width: 24px; height: 24px;"></i>
</div>
<h2 class="section-title">์ข
ํฉ ์์ฝ</h2>
</div>
<div class="glass-card" style="padding: 24px;">
<div class="summary-grid">
<div class="summary-card">
<div class="summary-card-header">
<div class="summary-card-icon green">
<i data-lucide="trophy" style="width: 20px; height: 20px;"></i>
</div>
<span class="summary-card-title">ํต์ฌ ๊ฐ์ </span>
</div>
<div class="summary-card-content">
<div class="summary-item">
<i data-lucide="check" style="width: 16px; height: 16px;"></i>
[๊ฐ์ 1]
</div>
<div class="summary-item">
<i data-lucide="check" style="width: 16px; height: 16px;"></i>
[๊ฐ์ 2]
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-card-header">
<div class="summary-card-icon yellow">
<i
data-lucide="alert-circle"
style="width: 20px; height: 20px;"
></i>
</div>
<span class="summary-card-title">์ฃผ์ ์ฌํญ</span>
</div>
<div class="summary-card-content">
<div class="summary-item">
<i data-lucide="minus" style="width: 16px; height: 16px;"></i>
[์ฃผ์ 1]
</div>
<div class="summary-item">
<i data-lucide="minus" style="width: 16px; height: 16px;"></i>
[์ฃผ์ 2]
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-card-header">
<div class="summary-card-icon blue">
<i data-lucide="rocket" style="width: 20px; height: 20px;"></i>
</div>
<span class="summary-card-title">์ถ์ฒ ์ก์
</span>
</div>
<div class="summary-card-content">
<div class="summary-item">
<i data-lucide="arrow-right" style="width: 16px; height: 16px;"></i>
[์ก์
1]
</div>
<div class="summary-item">
<i data-lucide="arrow-right" style="width: 16px; height: 16px;"></i>
[์ก์
2]
</div>
</div>
</div>
</div>
</div>
</div>
Footer
<div class="footer">
<a
href="https://github.com/window-ook/fit-checker"
target="_blank"
rel="noopener noreferrer"
class="footer-badge"
onclick="handleBadgeClick(event)"
>
<i data-lucide="github"></i>
<span class="brand-name">Fit Checker</span>
<span class="divider"></span>
<span class="author">window-ook</span>
<i data-lucide="external-link"></i>
</a>
</div>
๋งค์น์จ ๊ณ์ฐ ๋ก์ง
๋งค์น์จ = (์ถฉ์กฑ ํญ๋ชฉ ๊ฐ์ค์น ํฉ / ์ ์ฒด ํญ๋ชฉ ๊ฐ์ค์น ํฉ) ร 100
๊ฐ์ค์น ๋ฐฐ๋ถ:
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ํญ๋ชฉ โ ๊ฐ์ค์น โ ์ค๋ช
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ํ์ ์๊ฒฉ์๊ฑด โ 30์ โ ๊ฒฝ๋ ฅ, ํ๋ ฅ, ํ์ ๊ธฐ์ โ
โ ๊ธฐ์ ์คํ ์ผ์น โ 25์ โ ๊ธฐ์ ์คํ ๋งค์นญ ๋น์จ โ
โ ์ฐ๋ ์ฌํญ ์ถฉ์กฑ โ 20์ โ ์ฐ๋ ์กฐ๊ฑด ์ถฉ์กฑ ๋น์จ โ
โ ๋ฌธํ ์ ํฉ์ฑ โ 15์ โ ํ ๋ถ์๊ธฐ, ์
๋ฌด ๋ฐฉ์ ๋งค์นญ โ
โ ๊ธฐํ ์กฐ๊ฑด โ 10์ โ ์์น, ์ฐ๋ด ๋ฑ (์ ํธ ์กฐ๊ฑด) โ
โโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โป ์ ํธ ์กฐ๊ฑด(preference.md)์ ์ฐธ๊ณ ์ฉ์ด๋ฉฐ, ๋ถ์ถฉ์กฑ ์ ํฐ ๊ฐ์ ์์
์ ํธ vs ํ์ ๊ตฌ๋ถ
์ ํฉ์ฑ ๋ถ์ ์ ๋ค์์ ๋ช ํํ ๊ตฌ๋ถํฉ๋๋ค:
| ๊ตฌ๋ถ | ์ถ์ฒ | ๊ฐ์ค์น | ๋ถ์ถฉ์กฑ ์ |
|---|---|---|---|
| ํ์ (Must) | ์ฑ์ฉ ๊ณต๊ณ ์๊ฒฉ์๊ฑด | ๋์ | ๋งค์น์จ ํฌ๊ฒ ๊ฐ์ |
| ์ ํธ (Prefer) | preference.md | ๋ฎ์ | ์ฐธ๊ณ ์ฉ, ์์ ๊ฐ์ |
| ์ฐ๋ (Plus) | ์ฑ์ฉ ๊ณต๊ณ ์ฐ๋์ฌํญ | ์ค๊ฐ | ์์ด๋ ๋ฌด๋ฐฉ |
์ถ๋ ฅ ํ์ผ
๊ฒฐ๊ณผ๋ฌผ์ output/ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค:
output/fit-result-[ํ์ฌ๋ช ]-YYYY-MM-DD.html- ๋ฉ์ธ ํ๋ ์ ํ ์ด์ output/fit-result-[ํ์ฌ๋ช ]-YYYY-MM-DD.md- ๋งํฌ๋ค์ด ๋ฒ์ (์ฌ์ฉ์ ์์ฒญ ์)output/fit-result-[ํ์ฌ๋ช ]-YYYY-MM-DD.pptx- PPTX ๋ฒ์ (make-pptx ์คํฌ ์ฌ์ฉ)
CSS ํ ํ๋ฆฟ
๊ฒฐ๊ณผ๋ฌผ์ ๋ฐ๋์ ํฌํจํด์ผ ํ ์ ์ฒด ์คํ์ผ:
:root {
/* Theme Colors - Teal Based */
--primary: #198175;
--primary-light: oklch(72.3% 0.219 149.579);
--primary-dark: #136b62;
--primary-glow: rgba(45, 212, 140, 0.3);
/* Status Colors */
--grade-5: oklch(72.3% 0.219 149.579);
--grade-4: oklch(75% 0.2 149.579);
--grade-3: #fbbf24;
--grade-2: #f97316;
--grade-1: #ef4444;
--success: oklch(72.3% 0.219 149.579);
--warning: #f59e0b;
--danger: #ef4444;
--neutral: #6b7280;
/* Glassmorphism - Light Mode */
--glass-bg: rgba(0, 0, 0, 0.02);
--glass-bg-light: rgba(0, 0, 0, 0.04);
--glass-border: rgba(0, 0, 0, 0.08);
--glass-border-light: rgba(0, 0, 0, 0.12);
--glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
--glass-blur: blur(12px);
/* Text - Light Mode */
--text-primary: #000000;
--text-secondary: #374151;
--text-muted: #4b5563;
/* Backgrounds - Light Mode */
--bg-dark: #ffffff;
--bg-card: rgba(0, 0, 0, 0.02);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg-gradient);
min-height: 100vh;
padding: 40px 20px;
color: var(--text-primary);
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
}
/* Glass Card Base */
.glass-card {
background: #ffffff;
backdrop-filter: var(--glass-blur);
-webkit-backdrop-filter: var(--glass-blur);
border: 1px solid var(--glass-border);
border-radius: 20px;
box-shadow: var(--glass-shadow);
}
.slide {
margin-bottom: 32px;
overflow: hidden;
}
/* ===== SECTION 1: Header & Match Rate ===== */
.header {
padding: 48px;
margin-bottom: 32px;
text-align: center;
}
.company-badge {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, var(--primary), var(--primary-dark));
color: white;
padding: 8px 20px;
border-radius: 100px;
font-size: 14px;
font-weight: 600;
margin-bottom: 20px;
}
.header h1 {
font-size: 36px;
font-weight: 800;
color: var(--text-primary);
margin-bottom: 8px;
}
.header .position {
font-size: 18px;
color: var(--text-muted);
margin-bottom: 32px;
}
/* Score Section */
.score-section {
display: flex;
align-items: center;
justify-content: center;
gap: 60px;
flex-wrap: wrap;
}
.donut-chart {
position: relative;
width: 200px;
height: 200px;
}
.donut-chart svg {
transform: rotate(-90deg);
}
.donut-chart circle {
fill: none;
stroke-width: 20;
}
.donut-bg {
stroke: #e5e7eb;
}
.donut-progress {
stroke: url(#tealGradient);
stroke-linecap: round;
transition: stroke-dasharray 1s ease;
}
.donut-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
.donut-center .score {
font-size: 48px;
font-weight: 800;
background: linear-gradient(135deg, var(--primary), var(--primary-dark));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.score-reasons {
display: flex;
flex-direction: column;
gap: 16px;
max-width: 400px;
}
.reason-item {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 16px 20px;
background: var(--glass-bg-light);
border-radius: 16px;
border: 1px solid var(--glass-border);
}
.reason-icon {
width: 36px;
height: 36px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.reason-icon.green {
background: #d1fae5;
color: #16a34a;
}
.reason-icon.yellow {
background: #fef3c7;
color: #d97706;
}
.reason-icon.blue {
background: #dbeafe;
color: #2563eb;
}
.reason-text {
font-size: 14px;
line-height: 1.5;
color: var(--text-secondary);
}
.reason-text strong {
color: var(--text-primary);
}
/* ===== SECTION 2: Strengths Table ===== */
.section {
margin-bottom: 32px;
}
.section-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 24px;
padding: 0 8px;
}
.section-icon {
width: 44px;
height: 44px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.section-icon.green {
background: linear-gradient(135deg, #22c55e, #16a34a);
color: white;
}
.section-icon.red {
background: linear-gradient(135deg, #ef4444, #dc2626);
color: white;
}
.section-icon.blue {
background: linear-gradient(135deg, #3b82f6, #2563eb);
color: white;
}
.section-icon.yellow {
background: linear-gradient(135deg, #f59e0b, #d97706);
color: white;
}
.section-icon.teal {
background: linear-gradient(135deg, var(--primary), var(--primary-dark));
color: white;
}
.section-title {
font-size: 24px;
font-weight: 700;
color: var(--text-primary);
}
/* Strengths Table */
.strengths-table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
}
.strengths-table thead th {
background: var(--glass-bg);
padding: 16px 20px;
text-align: left;
font-weight: 600;
font-size: 13px;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.5px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.strengths-table thead th:first-child {
border-radius: 16px 0 0 0;
}
.strengths-table thead th:last-child {
border-radius: 0 16px 0 0;
text-align: center;
}
.strengths-table tbody td {
padding: 20px;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
vertical-align: top;
}
.strengths-table tbody tr:last-child td {
border-bottom: none;
}
.strengths-table tbody tr:last-child td:first-child {
border-radius: 0 0 0 16px;
}
.strengths-table tbody tr:last-child td:last-child {
border-radius: 0 0 16px 0;
}
.requirement-cell {
font-weight: 600;
color: var(--text-primary);
}
.match-cell {
color: var(--text-secondary);
line-height: 1.6;
}
.match-cell strong {
color: var(--primary);
}
.badge-cell {
text-align: center;
}
/* Fit Badge (5-level) */
.fit-badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
border-radius: 100px;
font-size: 13px;
font-weight: 600;
}
.fit-badge.level-5 {
background: linear-gradient(135deg, #ccfbf1, #f0fdfa);
color: #0f766e;
border: 1px solid #99f6e4;
}
.fit-badge.level-4 {
background: linear-gradient(135deg, #d1fae5, #ecfdf5);
color: #16a34a;
border: 1px solid #a7f3d0;
}
.fit-badge.level-3 {
background: linear-gradient(135deg, #dbeafe, #eff6ff);
color: #2563eb;
border: 1px solid #bfdbfe;
}
.fit-badge.level-2 {
background: linear-gradient(135deg, #fef3c7, #fffbeb);
color: #d97706;
border: 1px solid #fde68a;
}
.fit-badge.level-1 {
background: linear-gradient(135deg, #fee2e2, #fef2f2);
color: #dc2626;
border: 1px solid #fecaca;
}
/* ===== SECTION 3: Gaps ===== */
.gap-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
gap: 20px;
}
.gap-card {
padding: 24px;
border-radius: 20px;
background: #fff;
border: 1px solid var(--glass-border);
}
.gap-card.critical {
border-left: 4px solid #ef4444;
}
.gap-card.prefer {
border-left: 4px solid #f59e0b;
}
.gap-card.info {
border-left: 4px solid #9ca3af;
}
.gap-card-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12px;
}
.gap-card-title {
font-size: 16px;
font-weight: 700;
color: var(--text-primary);
}
.gap-type-badge {
font-size: 11px;
font-weight: 600;
padding: 4px 10px;
border-radius: 100px;
text-transform: uppercase;
}
.gap-type-badge.critical {
background: #fee2e2;
color: #dc2626;
}
.gap-type-badge.prefer {
background: #fef3c7;
color: #d97706;
}
.gap-type-badge.info {
background: #f3f4f6;
color: #4b5563;
}
.gap-card-content {
font-size: 14px;
line-height: 1.6;
color: var(--text-secondary);
}
/* ===== SECTION 4: Improvements ===== */
.improvements-slide {
padding: 48px;
background: linear-gradient(
135deg,
var(--primary) 0%,
var(--primary-dark) 100%
);
backdrop-filter: var(--glass-blur);
-webkit-backdrop-filter: var(--glass-blur);
border: 1px solid var(--glass-border);
border-radius: 20px;
}
.improvement-list {
display: flex;
flex-direction: column;
gap: 24px;
}
.improvement-item {
padding: 28px;
background: #fff;
border: 1px solid var(--glass-border);
border-radius: 16px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}
.improvement-badges {
display: flex;
gap: 12px;
margin-bottom: 20px;
}
.importance-badge,
.fulfillment-badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
border-radius: 10px;
font-size: 13px;
font-weight: 600;
background: var(--glass-bg);
border: 1px solid var(--glass-border);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.importance-badge i,
.fulfillment-badge i {
width: 16px;
height: 16px;
}
.importance-badge .label,
.fulfillment-badge .label {
font-size: 11px;
color: var(--text-muted);
margin-right: 4px;
}
.importance-badge.high {
color: var(--danger);
border-color: rgba(239, 68, 68, 0.3);
}
.importance-badge.medium {
color: var(--warning);
border-color: rgba(245, 158, 11, 0.3);
}
.importance-badge.low {
color: var(--primary-light);
border-color: rgba(45, 212, 140, 0.3);
}
.fulfillment-badge.low {
color: var(--danger);
border-color: rgba(239, 68, 68, 0.3);
}
.fulfillment-badge.medium {
color: var(--warning);
border-color: rgba(245, 158, 11, 0.3);
}
.fulfillment-badge.high {
color: var(--primary-light);
border-color: rgba(45, 212, 140, 0.3);
}
.improvement-item h3 {
font-size: 20px;
font-weight: 700;
margin-bottom: 12px;
color: var(--text-primary);
}
.improvement-item .description {
color: var(--text-secondary);
margin-bottom: 20px;
font-size: 15px;
line-height: 1.7;
}
.evidence,
.suggestion {
padding: 18px;
border-radius: 12px;
margin-bottom: 12px;
font-size: 14px;
background: var(--glass-bg);
border: 1px solid var(--glass-border);
}
.evidence {
border-left: 3px solid var(--warning);
}
.suggestion {
border-left: 3px solid var(--primary);
}
.evidence strong,
.suggestion strong {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
font-size: 13px;
color: var(--text-secondary);
}
.evidence strong i,
.suggestion strong i {
width: 16px;
height: 16px;
}
.evidence strong {
color: var(--warning);
}
.suggestion strong {
color: var(--primary-light);
}
.evidence p,
.suggestion p {
color: var(--text-secondary);
line-height: 1.7;
}
/* ===== SECTION 5: Summary ===== */
.summary-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
@media (max-width: 900px) {
.summary-grid {
grid-template-columns: 1fr;
}
}
.summary-card {
padding: 28px;
border-radius: 20px;
background: var(--glass-bg-light);
border: 1px solid var(--glass-border);
}
.summary-card-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 16px;
}
.summary-card-icon {
width: 40px;
height: 40px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.summary-card-icon.green {
background: #d1fae5;
color: #16a34a;
}
.summary-card-icon.yellow {
background: #fef3c7;
color: #d97706;
}
.summary-card-icon.blue {
background: #dbeafe;
color: #2563eb;
}
.summary-card-title {
font-size: 16px;
font-weight: 700;
color: var(--text-primary);
}
.summary-card-content {
display: flex;
flex-direction: column;
gap: 12px;
}
.summary-item {
display: flex;
align-items: flex-start;
gap: 10px;
font-size: 14px;
line-height: 1.5;
color: var(--text-secondary);
}
.summary-item i {
flex-shrink: 0;
margin-top: 2px;
color: #9ca3af;
}
/* Footer */
.footer {
text-align: center;
padding: 32px;
}
.footer-badge {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 12px 24px;
background: linear-gradient(
135deg,
var(--primary) 0%,
var(--primary-dark) 100%
);
border: none;
border-radius: 50px;
color: #ffffff;
font-size: 14px;
font-weight: 600;
cursor: pointer;
text-decoration: none;
box-shadow: 0 4px 15px rgba(25, 129, 117, 0.3);
transition: all 0.3s ease;
}
.footer-badge:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(25, 129, 117, 0.4);
background: linear-gradient(
135deg,
var(--primary-light) 0%,
var(--primary) 100%
);
}
.footer-badge:active {
transform: translateY(0);
}
.footer-badge i {
width: 18px;
height: 18px;
}
.footer-badge .brand-name {
font-weight: 700;
color: #ffffff;
}
.footer-badge .divider {
width: 1px;
height: 16px;
background: rgba(255, 255, 255, 0.3);
}
.footer-badge .author {
opacity: 0.9;
}
/* Responsive */
@media (max-width: 768px) {
.title-slide {
padding: 40px 24px;
}
.title-slide .company-name {
font-size: 32px;
}
.match-circle {
width: 180px;
height: 180px;
}
.match-circle::before {
width: 145px;
height: 145px;
}
.rate-value {
font-size: 48px;
}
.comparison {
flex-direction: column;
gap: 12px;
}
.improvement-badges {
flex-wrap: wrap;
}
}
JavaScript ์ด๊ธฐํ
HTML ํ์ผ ํ๋จ์ ๋ฐ๋์ ํฌํจ:
<script>
lucide.createIcons();
function handleBadgeClick(event) {
const badge = event.currentTarget;
badge.style.transform = 'scale(0.95)';
setTimeout(() => {
badge.style.transform = '';
}, 100);
}
</script>
ในใณใข
็ทๅในใณใข
ใชใใธใใชใฎๅ่ณชๆๆจใซๅบใฅใ่ฉไพก
SKILL.mdใใกใคใซใๅซใพใใฆใใ
ใฉใคใปใณในใ่จญๅฎใใใฆใใ
100ๆๅญไปฅไธใฎ่ชฌๆใใใ
GitHub Stars 100ไปฅไธ
3ใถๆไปฅๅ ใซๆดๆฐใใใ
10ๅไปฅไธใใฉใผใฏใใใฆใใ
ใชใผใใณIssueใ50ๆชๆบ
ใใญใฐใฉใใณใฐ่จ่ชใ่จญๅฎใใใฆใใ
1ใคไปฅไธใฎใฟใฐใ่จญๅฎใใใฆใใ
ใฌใใฅใผ
ใฌใใฅใผๆฉ่ฝใฏ่ฟๆฅๅ ฌ้ไบๅฎใงใ