Summary
- 보고서 데이터(시세 추이·HBM 점유율·5년 실적·시나리오·컨센서스·리스크 매트릭스·NVIDIA 공급 매트릭스)를 인터랙티브 차트로 시각화하는 스킬.
- Chart.js·ECharts·D3.js 라이브러리 선택, 호버 툴팁·스크롤 진입 애니메이션·반응형 차트 구현. 차트 빌드, 데이터…
revfactory/sk-hynix-report · Archived
보고서 데이터(시세 추이·HBM 점유율·5? 애니메이?
npx skills add revfactory/sk-hynix-report --skill web-data-visualization
This repository is archived — consider an actively maintained alternative.
마크다운 보고서(특히 SK하이닉스 분석 보고서)를 모던·세련된 인터랙티브 웹페이지로 변환하는 오케…
1 installs디자인 토큰 기반의 HTML 시맨틱 마크?
1 installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsToolkit for interacting with and testing local web applications using Playwright. Supports veri…
152.3K installsRelated neighbors and high-traction skills in the same topics — useful to compare before installing.
Create effective data visualizations with Python (matplotlib, seaborn, plotly). Use when buildi…
11.8K installsPatterns for visualizing data on maps including choropleth maps, heat maps, 3D visualizations, …
1.7K installs将数据可视化为图表。当用户需要生成柱状图、折线图、饼图、散点图、雷达图、桑基图、思维导图、流程…
6.1K installsChart selection and data visualization guidance for effective data communication. Use when: cre…
3.5K installsTeaches the agent to produce D3 charts and interactive data visualizations. A comprehensive D3.…
2.6K installsThis skill should be used when the user wants to visualize data. It intelligently selects the m…
2.3K installsOther skills from revfactory/sk-hynix-report.
npx skills add revfactory/sk-hynix-report
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
7,504 B
SUMMARY.md
439 B
web/_design/data.json을 입력으로 받아 인터랙티브 차트를 web/scripts/에 구현하는 워크플로우.
| 차트 유형 | 권장 라이브러리 | CDN |
|---|---|---|
| 라인/바/도넛/콤보 | Chart.js v4 | cdn.jsdelivr.net/npm/chart.js@4 |
| 히트맵·sankey·복잡 인터랙션 | Apache ECharts v5 | cdn.jsdelivr.net/npm/echarts@5 |
| 커스텀 fan chart·복합 SVG | D3.js v7 (필요 시만) | d3js.org/d3.v7.min.js |
| 보조: 트윈 애니메이션 | GSAP (motion-designer가 사용 중이면 공유) | - |
원칙: 단일 사이트에 라이브러리 1~2개만. 표준 차트는 Chart.js, 특수 차트(매트릭스·sankey)는 ECharts.
| 차트 ID | 데이터 소스 | 라이브러리 | 차트 종류 |
|---|---|---|---|
chart-price |
data.priceHistory + data.snapshot.high52w/low52w |
Chart.js | 라인 + 영역 채우기 + 마커 |
chart-revenue-trend |
data.revenueByYear |
Chart.js | 콤보 (바: 매출/OP, 라인: OPM 보조축) |
chart-hbm-share |
data.hbmShare2026 |
Chart.js | 도넛 3개 (bit / revenue / hbm4 토글) |
chart-nvidia-supply |
data.nvidiaSupplyMatrix |
ECharts | 히트맵 (행: GPU, 열: 공급사) |
chart-consensus |
data.consensus.targets |
Chart.js | 가로 도트 차트 + 평균 라인 |
chart-scenarios |
data.scenarios |
Chart.js or D3 | Fan chart 또는 박스 (Bear/Base/Bull) |
chart-risk-matrix |
data.riskMatrix |
ECharts | 3×3 히트맵 + 라벨 |
web/scripts/chart-configs/)// 스크롤 진입 시 애니메이션 (motion-designer와 협업)
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting && !entry.target.dataset.animated) {
entry.target.dataset.animated = 'true';
initChartFor(entry.target.id); // 진입 시점에 차트 생성
}
});
}, { threshold: 0.3 });
document.querySelectorAll('[data-chart]').forEach(el => observer.observe(el));
// prefers-reduced-motion 대응
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
const chartOptions = {
animation: prefersReducedMotion ? false : { duration: 800, easing: 'easeOutCubic' },
// ...
};
각 차트는 다음 HTML 구조에 마운트:
<div class="chart-container" data-chart>
<header class="chart-header">
<h3 class="chart-title">차트 제목</h3>
<p class="chart-subtitle">설명</p>
<!-- 토글 버튼 (필요 시) -->
</header>
<div class="chart-body">
<canvas id="chart-price"></canvas> <!-- 또는 <div id="..."> for ECharts -->
</div>
<footer class="chart-footer">
<p class="chart-source">출처: ...</p>
</footer>
</div>
이 마크업 명세를 frontend-engineer에게 SendMessage로 공유.
web/scripts/charts.jsimport { initPriceChart } from './chart-configs/price-chart.js';
import { initRevenueTrend } from './chart-configs/revenue-trend.js';
// ... 7개 차트 import
export async function initAllCharts() {
const data = await fetch('/web/_design/data.json').then(r => r.json());
// IntersectionObserver로 lazy init
const chartInitializers = {
'chart-price': () => initPriceChart(data),
'chart-revenue-trend': () => initRevenueTrend(data),
// ...
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
const id = entry.target.querySelector('canvas, div[id]')?.id;
if (entry.isIntersecting && chartInitializers[id]) {
chartInitializers[id]();
observer.unobserve(entry.target);
}
});
}, { threshold: 0.2 });
document.querySelectorAll('[data-chart]').forEach(el => observer.observe(el));
}
web/_design/visualization-notes.md에 다음 정리:
responsive: true + maintainAspectRatio: false. 모바일에서 레이블 단순화<table> 또는 aria-label) 제공이전 차트 코드 보존, 변경 필요 차트만 수정. data.json 변경 시 영향받는 차트만 갱신.