| name | screenshot-generator |
| description | Generate screenshots for web audio apps (desktop, mobile landscape, mobile portrait) using Playwright. Also captures component-level screenshots for documentation. |
๐ธ Screenshot Generator Skill
์น ์ฑ์ ์คํฌ๋ฆฐ์ท์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
๐ฏ ์ฉ๋
- README.md ๋ฐ ๋ฌธ์์ฉ ์คํฌ๋ฆฐ์ท ์์ฑ
- Desktop, Mobile Landscape, Mobile Portrait ๋ทฐ ์บก์ฒ
- ๊ฐ๋ณ ์ปดํฌ๋ํธ(ํค๋, ํจ๋, ๋
ธ๋ธ ๋ฑ) ์คํฌ๋ฆฐ์ท
๐ ํ์ผ ๊ตฌ์กฐ
screenshot-generator/
โโโ SKILL.md # ์ด ํ์ผ
โโโ scripts/
โโโ generate_screenshots.js # ๋ฉ์ธ ์คํฌ๋ฆฝํธ
โ๏ธ ์๊ตฌ์ฌํญ
npm install playwright
npx playwright install chromium
๐ ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ ์คํ
node scripts/generate_screenshots.js
์คํฌ๋ฆฝํธ ๋์
- ๋ก์ปฌ ์๋ฒ ์์:
http-server๋ก ์ฑ ์๋น (ํฌํธ 8080)
- ๋ธ๋ผ์ฐ์ ์คํ: Playwright Chromium
- ์คํฌ๋ฆฐ์ท ์บก์ฒ:
screenshot-desktop.png (1280x800)
screenshot-mobile-landscape.png (844x390)
screenshot-mobile-portrait.png (iPhone 13 Pro)
- ์ปดํฌ๋ํธ ์บก์ฒ: ๊ฐ๋ณ UI ์์
- ์๋ฒ ์ข
๋ฃ
์ถ๋ ฅ ์์น
์คํฌ๋ฆฐ์ท์ assets/ ํด๋์ ์ ์ฅ๋ฉ๋๋ค.
๐ง ํ๋ก์ ํธ๋ณ ์ปค์คํฐ๋ง์ด์ง
๊ฐ ํ๋ก์ ํธ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํ๊ณ ํ์์ ๋ง๊ฒ ์์ ํ์ธ์:
ํ์ ์์ ์ฌํญ
const server = spawn('npx', ['-y', 'http-server', '-p', '8080', '-a', '127.0.0.1']);
await page.waitForSelector('.your-main-element', { timeout: 10000 });
const header = page.locator('.your-header-class');
await header.screenshot({ path: path.join(assetsDir, 'header.png') });
์ ์คํฌ๋ฆฐ์ท ์ถ๊ฐ
console.log('Taking New Feature Screenshot...');
const newFeature = page.locator('.your-selector');
await newFeature.screenshot({ path: path.join(assetsDir, 'new-feature.png') });
๐ ํ๋ก์ ํธ๋ณ ์ค์ ์์
acidBros
await page.waitForSelector('.step-303', { timeout: 10000 });
await page.waitForSelector('.step-909', { timeout: 10000 });
await page.waitForSelector('.rotary-knob', { timeout: 10000 });
const transport = page.locator('.top-bar');
const tb303 = page.locator('.machine.tb-303').first();
const tr909 = page.locator('.machine.tr-909');
ddxx7
await page.waitForSelector('.operator-panel', { timeout: 10000 });
await page.waitForSelector('.algorithm-matrix', { timeout: 10000 });
const header = page.locator('header');
const operatorPanel = page.locator('.operator-panel');
const libraryView = page.locator('.library-view');
uss44
await page.waitForSelector('.pad-grid', { timeout: 10000 });
await page.waitForSelector('.waveform-editor', { timeout: 10000 });
const header = page.locator('header');
const padGrid = page.locator('.pad-grid');
const paramsPanel = page.locator('.params-panel');
โ ๏ธ ์ฃผ์์ฌํญ
- ์๋ฒ ์ถฉ๋: ์ด๋ฏธ 8080 ํฌํธ๊ฐ ์ฌ์ฉ ์ค์ด๋ฉด ์คํจ
- ํ์์์: ๋คํธ์ํฌ ๋๋ฆฌ๋ฉด waitForSelector ํ์์์ ์ฆ๊ฐ ํ์
- ํค๋๋ฆฌ์ค: ๊ธฐ๋ณธ์ ์ผ๋ก headless ๋ชจ๋ (ํ๋ฉด ํ์ ์์)
๐ ๊ด๋ จ ๋ฌธ์