| name | inject |
| description | Patch an existing Apps in Toss mini-app's build setup. Three facets:
`/ait:inject-devtools` adds the `@apps-in-toss/devtools` unplugin for browser dev
("๊ธฐ์กด Vite ํ๋ก์ ํธ์ devtools ๋ถ์ฌ์ค"); `/ait:inject-debug-console` installs
`@apps-in-toss/debug-console` (on-device attach + eruda) as a dependency;
`/ait:inject-tossface` wires the Tossface emoji web font (CDN link or subset
bundling) into a project's entry CSS. Idempotent, minimal edits. This skill only
INSTALLS packages/assets into a build setup โ it never diagnoses a running app.
"ํฐ์์ ์ด์ํ๊ฒ ๋์ํ๋๋ฐ ๋๋ฒ๊น
ํ๊ณ ์ถ์ด" / "๋ผ์ด๋ธ ์ํ๋ฅผ ๋ณด๊ณ ์ถ์ด" is
`debug`, not this.
|
| argument-hint | |
inject skill
์ด skill์ ์ธ facet์ ๋ด๋๋ค โ /ait:inject-devtools(devtools unplugin ์ฃผ์
), /ait:inject-debug-console(on-device attach ํจํค์ง ์ค์น), /ait:inject-tossface(์ด๋ชจ์ง ์์ฒด Tossface ๋ฐฐ์ ). ์
๋ค ๊ธฐ์กด ํ๋ก์ ํธ์ ๋น๋ ์
์
์ ์ต์ ๋ณ๊ฒฝ์ผ๋ก ํจ์นํ๋ brownfield station 2 ๋๊ตฌ๋ผ ํ๋๋ก ๋ฌถ์๋ค(agent-plugin#280 debug-console facet ์ถ๊ฐ). ์ฌ์ฉ์๊ฐ ์ด๋ command๋ก ์ง์
ํ๋์ง์ ๋ฐ๋ผ ์๋ ํด๋น facet์ผ๋ก ๋ถ๊ธฐํ๋ค โ ์ธ facet์ ๋
๋ฆฝ์ด๋ฉฐ ์๋ก๋ฅผ ์๋ ์คํํ์ง ์๋๋ค.
๋ชฉ์
์ด๋ฏธ @apps-in-toss/web-framework๋ฅผ ์ฐ๋ ๊ธฐ์กด ๋ฏธ๋์ฑ ํ๋ก์ ํธ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ํ์ฅํ๋ค.
new-miniapp์ด greenfield(๋น ๋๋ ํ ๋ฆฌ)๋ผ๋ฉด ์ด skill์ brownfield โ ๊ธฐ์กด ํ์ผ์ ์ต์ํ์ผ๋ก
์์ ํ๊ณ , ์ด๋ฏธ ์ค์ ์ด ์์ผ๋ฉด skipํ๋ค. ์ด๋ facet์ด๋ ์์ฑยท์์ ํ๋ ํ์ผ์ ๊ณผ์ฅยทํ๋ณด์ฑ ๋ฌธ๊ตฌ๋ฅผ
๋ฃ์ง ์๋๋ค.
์ธ facet์ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค:
- devtools facet (
/ait:inject-devtools): @apps-in-toss/devtools unplugin์ ๋น๋ config์
์ถ๊ฐํด ํ ์ค ์ฑ ์์ด ๋ธ๋ผ์ฐ์ ์์ mock SDK๋ก ๊ฐ๋ฐยทํ
์คํธํ๋ค. ์ธ์ ์์.
- debug-console facet (
/ait:inject-debug-console): @apps-in-toss/debug-console(on-device
attach + eruda)์ **dependencies**๋ก ์ค์นํ๊ณ /auto self-gating import๋ฅผ ์ง์
์ ์
์์ด์ด์
ํ๋ค. ํ๊ฒฝ 3(intoss-private candidate) on-device ๋๋ฒ๊น
์ attach ํ๋ฉด์ ๋จ๊ธด๋ค.
์ธ์ ์์.
- tossface facet (
/ait:inject-tossface): ์ด๋ชจ์ง๋ฅผ ํ ์คํ์ด์ค ๊ธ๋ฆฌํ๋ก ๋ ๋ํ๋๋ก
CDN ๋งํฌ ๋๋ ์์ฒด subset ๋ฒ๋ค์ ํ๋ก์ ํธ ์ง์
CSS์ ์์ด์ด์
ํ๋ค. design skill์
์์ฒด ์ ์ฑ
์ ๋ณธ๋ฌธ ์์ฒด๋ ๊ธ์ง ๋์์ด์ง๋ง ์ด๋ชจ์ง ์์ฒด(Tossface)๋ ๊ถ์ฅ ๋์์ด๋ค. ์ธ์ ์์.
devtools facet โ /ait:inject-devtools
๋น๋ ๋๊ตฌ(Vite / Next.js / Rspack / Webpack)๋ฅผ ๊ฐ์งํ๊ณ , lockfile๋ก ํจํค์ง ๋งค๋์ ๋ฅผ ๊ฐ์งํด
@apps-in-toss/devtools๋ฅผ devDep์ผ๋ก ์ค์นํ ๋ค, config ํ์ผ์ ๋ฉฑ๋ฑํ๊ฒ ํจ์นํ๋ค
(aitDevtools.<bundler>({ panel: true })). ์ด๋ฏธ ์ค์ ์ด ์์ผ๋ฉด skip. ์ฝ์ ์ธ์ฆ ๋ถํ์ โ ๋ก์ปฌ
dev ์ ์ฉ์ด๋ค.
ํต์ฌ ์ ์ฐจ: (1) package.json ํ์ธ โ (2) ๋น๋ ๋๊ตฌ ๊ฐ์ง โ (3) PM ๊ฐ์ง โ (4) idempotency
ํ์ธ โ (5) devDep ์ค์น โ (6) ๋ฒ๋ค๋ฌ๋ณ config ํจ์น(Vite optimizeDeps.exclude ํฌํจ) โ
(7) ์๋ฃ seam. ๋ฒ๋ค๋ฌ๋ณ ์ ํํ ํจ์น ํจํดยท๊ฒฝ๊ณ ์ฒ๋ฆฌยทํ์ง ๋ง์์ผ ํ ๊ฒ์ โ
์์ธ๊ฐ ํ์ํ๋ฉด Read <์ด skill์ base directory>/references/devtools.md.
debug-console facet โ /ait:inject-debug-console
@apps-in-toss/debug-console์ runtime dependency๋ก ์ค์นํ๊ณ (harness GitHub Release
tarball URL โ npm ๋ฏธ๋ฐํ), ์ง์
์ ์ self-gating import '@apps-in-toss/debug-console/auto'๋ฅผ
๋ฉฑ๋ฑํ๊ฒ ์ฝ์
ํ๋ค. ์ด ํจํค์ง๋ ์์
@apps-in-toss/devtools์ ./in-app export์๋ค โ devtools์ MCP ๋ฐ๋ชฌยทon-device attach
ํ๋ฉด์ด debugger ํจํค์ง(@apps-in-toss/debugger + @apps-in-toss/debug-console)๋ก
๋ถ๋ฆฌ๋๋ฉด์ ๋๋์๋ค.
๋ณด์ ์ค์ฝํ: ๋ ํจํค์ง ์ค ํ๋ก๋์
๋ฏธ๋์ฑ ๋ฒ๋ค์ ์ค์ ๋ก ๋ค์ด๊ฐ ์ ์๋ ์ ์ผํ
ํจํค์ง๋ผ dependencies๋ก ์ค์นํ๋ค(devtools๋ devDep ์ ์ฉ) โ ์ค์น๋ผ ์์ง
์์ผ๋ฉด attach ์ฝ๋๊ฐ ๋ฒ๋ค์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค์ด๊ฐ ์ ์๋ค.
ํจํค์ง README๋ ํ๋ก๋์
ํ๋๋ ๊ด์ ์์ build-time __DEBUG_BUILD__ ๊ฒ์ดํธ(๋ฐฉ์ B)๋ฅผ
๊ถ์ฅ ์์์ ๋จผ์ ์ ์ํ์ง๋ง, ์ด skill์ด ์ง์
์ ์ ์ค์ ๋ก ์๋ ์ฝ์
ํ๋ ๊ฒ์ ์ฌ์ ํ
/auto(๋ฐฉ์ A)๋ค โ consumer ๋ฒ๋ค๋ฌ define ๋ฐฐ์ ์ด ํ๋ก์ ํธ๋ง๋ค ๋ฌ๋ผ ์ด skill์ด
๋ฐฉ์ B๋ฅผ ๊ฐ์ ์ ์ฉํ๋ฉด ๊ธฐ์กด ๋น๋ ์ค์ ๊ณผ ์ถฉ๋ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐฉ์ B๋ ์ฌ์ฉ์๊ฐ
์ํ ๋ ์ฐธ๊ณ ํ ๋์์ผ๋ก references/debug-console.md์ ์๋ดํ๋ค.
ํต์ฌ ์ ์ฐจ: (1) package.json ํ์ธ โ (2) ๊ธฐ์กด ์ค์น ํ์ธ(idempotency) โ (3) dependencies๋ก
์ค์น โ (4) ์ง์
์ ๊ฐ์ง + /auto import ์ฝ์
โ (5) ์๋ฃ seam. ํ์ง ๋ง์์ผ ํ ๊ฒ์ โ
์์ธ๊ฐ ํ์ํ๋ฉด Read <์ด skill์ base directory>/references/debug-console.md.
tossface facet โ /ait:inject-tossface
์ด๋ชจ์ง๋ฅผ ํ ์คํ์ด์ค ๊ธ๋ฆฌํ๋ก ๋ ๋ํ๋ค. design skill์ ์์ฒด ์ ์ฑ
์ ๋ณธ๋ฌธ ์์ฒด(Toss Product Sans ๊ณ์ด)๋ ๊ธ์ง์ง๋ง, ์ด๋ชจ์ง ์์ฒด Tossface(toss/tossface๋ก ๊ณต๊ฐ ๋ฐฐํฌ)๋
๊ธ์ง ๋์์ด ์๋๋ผ ๊ถ์ฅ ๋์์ด๋ค โ ์์คํ
๋ง๋ค ๋ชจ์์ด ๊ฐ๋ฆฌ๋ ์ด๋ชจ์ง ๋์ ์ด๋์๋
๊ฐ์ ๊ธ๋ฆฌํ๋ก ๋ ๋๋๋ค. ๋จผ์ ๊ธฐ์กด ๋ฐฐ์ ์ฌ๋ถ๋ฅผ grep์ผ๋ก ํ์ธํด(idempotency) ์ด๋ฏธ ์์ผ๋ฉด
skipํ๋ค. ์ฝ์ ์ธ์ฆ ๋ถํ์ โ ๋ก์ปฌ ์์
์ด๋ค.
๋ ๋ชจ๋ ์ค ํ๋๋ฅผ ์ฌ์ฉ์ ํ์ธ ํ ์งํํ๋ค โ **๋ชจ๋ A(CDN ๋งํฌ)**๋ ๋ฒ๋ค ์ฆ๊ฐ
0์ด์ง๋ง ํ ์ค ์ฑ webview ์ CDN ๋๋ฌ์ฑ์ด ๋ฏธ์ค์ธก์ด๊ณ , **๋ชจ๋ B(subset ๋ฒ๋ค ํฌํจ)**๋
๋คํธ์ํฌ ์์ด ๊ฒฐ์ ์ ์ผ๋ก ๋์ํ์ง๋ง ๋ด๋ subset๋ง๋ค ์ฝ 520KB~1.9MB๊ฐ ๋๊ณ ๋ผ์ด์ ์ค๊ฐ
์๊ตฌํ๋ ์ ์๊ถ ๊ณ ์งยท์ ๋ฌธ ๋๋ด์ด ๋ฐ๋ฅธ๋ค.
ํต์ฌ ์ ์ฐจ: (0) ๊ธฐ์กด ๋ฐฐ์ ํ์ธ(idempotency) โ (1) ๋ ๋ชจ๋ ๋๊ฐ ๊ณ์ฐ + ๋ชจ๋ ํ์ โ
(2) ๋ชจ๋ A๋ @import/<link> ์ฝ์
, ๋ชจ๋ B๋ ์ฝ๋ํฌ์ธํธ ๋์กฐ โ subset ์ ์ (+ ์ ์
์งํ ์ฌํ์ ) โ ์๋ณธ ํ์ผ ๋ฐฐ์น โ ๋ผ์ด์ ์ค ๋๋ด โ CSS ์์ฑ โ (3) font-family ๋งจ
์์ Tossface ์ถ๊ฐ โ (4) ์๋ฃ seam. @import ์์น ์ ์ฝ(๋ค๋ฅธ ๊ท์น๋ณด๋ค ํญ์ ์์
์์ผ ํ๋ค)ยท์ ํํ CDN ์ค๋ํซยท๋ผ์ด์ ์ค ๊ทผ๊ฑฐ๋ โ
์์ธ๊ฐ ํ์ํ๋ฉด Read <์ด skill์ base directory>/references/tossface.md.
๋ค์ ๋จ๊ณ (facet๋ณ seam)
์ธ facet ๋ชจ๋ seam์ ์ฌ๋์ + ์์ฐ์ด 2ํ๋ฉด์ผ๋ก ์ธ์ํ๋ค(ํต์ผ ๊ท์น โ
๋ก์ปฌ docs/design/skill-conventions.md(repo ๋ฏธํฌํจ โ maintainer-local) ยง9).
devtools facet ์๋ฃ ํ:
@apps-in-toss/devtools ์ค์ ์๋ฃ ยท <config-file> ํจ์น
๋ค์ ๋จ๊ณ (๋ช
๋ น์ ๋ชฐ๋ผ๋ ๋ฉ๋๋ค โ ๋ฐ์ดํ ์ ๋ฌธ์ฅ์ ๊ทธ๋๋ก ๋งํด๋ ๊ฐ์ ๋จ๊ณ๋ก ๊ฐ๋๋ค):
npm run dev # ๋ธ๋ผ์ฐ์ ์์ ์ฑ ์คํ (ํ๋จ์ AIT DevTools ํจ๋)
# ๋ง๋ก: "๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋ฐ ์๋ฒ ๋์์ค"
/ait:debug # ๋ธ๋ผ์ฐ์ ํจ๋ยทwindow.__ait ์ํ๋ก ๋๋ฒ๊น
# ๋ง๋ก: "๋ธ๋ผ์ฐ์ ์์ ์ฑ ์ํ๊ฐ ์ด์ํ๋ฐ ๋๋ฒ๊น
ํด์ค"
debug-console facet ์๋ฃ ํ:
@apps-in-toss/debug-console ์ค์ ์๋ฃ ยท <์ง์
์ >์ /auto import ์ฝ์
๋ค์ ๋จ๊ณ (๋ช
๋ น์ ๋ชฐ๋ผ๋ ๋ฉ๋๋ค โ ๋ฐ์ดํ ์ ๋ฌธ์ฅ์ ๊ทธ๋๋ก ๋งํด๋ ๊ฐ์ ๋จ๊ณ๋ก ๊ฐ๋๋ค):
RELEASE_CHANNEL=dogfood npm run build # candidate ๋น๋์ attach ํ๋ฉด ํฌํจ
# (2.x ํด๋ฐฑ์ npm run bundle:ait)
/ait:debug # ํ๊ฒฝ 3 QR attach๋ก on-device ๋๋ฒ๊น
# ๋ง๋ก: "๋ฏธ๋์ฑ์ด ํฐ์์ ์ด์ํ๊ฒ ๋์ํ๋๋ฐ ๋ผ์ด๋ธ ์ํ๋ฅผ ๋๋ฒ๊น
ํ๊ณ ์ถ์ด"
tossface facet ์๋ฃ ํ:
Tossface ๋ฐฐ์ ์๋ฃ ยท <๋ชจ๋ A: CDN ๋งํฌ ์ถ๊ฐ | ๋ชจ๋ B: subset <N>๊ฐ ๋ฒ๋ค, +<์ฆ๊ฐ๋>>
๋ค์ ๋จ๊ณ (๋ช
๋ น์ ๋ชฐ๋ผ๋ ๋ฉ๋๋ค โ ๋ฐ์ดํ ์ ๋ฌธ์ฅ์ ๊ทธ๋๋ก ๋งํด๋ ๊ฐ์ ๋จ๊ณ๋ก ๊ฐ๋๋ค):
npm run dev # ๋ธ๋ผ์ฐ์ ์์ ์ด๋ชจ์ง ๋ ๋ ํ์ธ
# ๋ง๋ก: "๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋ฐ ์๋ฒ ๋์์ค"
/ait:design # ํ๋ฉด ๋ ๋ ๋ฌด๊ฒฐ์ฑ(G7 ๋ฑ) ํ์ ์ผ๋ก ์ด์ด์ ํ์ธ
# ๋ง๋ก: "ํ๋ฉด ๋์์ธ ํ์ง ์ ๊ฒํด์ค"
๊ฐ facet์ ์์ ํ ์๋ฃ ๋ธ๋ก(๋ณ๊ฒฝ ์์ฝยท์ฃผ์์ฌํญ ํฌํจ)์ ์ธ facet ๋ชจ๋ ์ references
ํ์ผ์ ์๋ค.
Out of scope (์ด skill์ด ํ์ง ์๋ ๊ฒ)
- โ ์ ํ๋ก์ ํธ ์์ฑ (greenfield) โ
/ait:new (new-miniapp skill).
- โ ์ฝ์ ์ธ์ฆยท๋ฑ๋กยท์
๋ก๋ โ console MCP ๋๊ตฌ(
miniapp_create/bundle_upload/
bundle_upload_complete)์ ์ญํ .
- โ ๋ฒ๋ค ์ค์ (
apps-in-toss.config.ts) ์ต์ด ์์ฑ โ ์ ๋ณธ ๊ฒฝ๋ก(create-ait-app)๋
/ait:new์ ๊ธฐ๋ณธ ํฌํจ, --local ํด๋ฐฑ๋ง new-miniapp์ L-5 ์ ์ฐจ๋ก ์ถ๊ฐ.
- โ (devtools) panel ๋ง์ดํธ E2E ๊ฒ์ฆ โ ์ฌ์ฉ์๊ฐ ์ง์
npm run dev๋ก ํ์ธ.
- โ (devtools) Rollup/esbuild ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๋์ mock ์ฃผ์
โ ์ฑ(๋ฏธ๋์ฑ) ์ ์ฉ.
- โ ์คํ ์ค์ธ ์ฑ์ ์ง๋จํ๋ ๊ฒ โ ์ด skill์ ํจํค์ง๋ฅผ ์ค์นํ ๋ฟ์ด๋ค. "ํฐ์์ ์ด์ํ๊ฒ ๋์ํ๋ค", "๋ผ์ด๋ธ ์ํ๋ฅผ ๋ณด๊ณ ์ถ๋ค"๋
/ait:debug(debug skill). debug-console facet์ ๊ทธ ์ง๋จ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค๋น๋ฌผ์ด์ง ์ง๋จ ์์ฒด๊ฐ ์๋๋ค.
- โ (debug-console) MCP ๋ฐ๋ชฌ ๋ฑ๋ก โ
/ait:setup-debugger๊ฐ ํ๋ก์ ํธ .mcp.json์ ๋ฐฐ์ (/ait:debug ยง5 ์ฐธ์กฐ).
- โ (debug-console)
devDependencies ์ค์น โ ํ๋ก๋์
๋ฒ๋ค ํฌํจ์ด ๋ชฉ์ ์ด๋ผ ๋ฐ๋์ dependencies.
- โ (tossface) ์ฌ-subsettingยทํฌ๋งท ๋ณํ โ ์๋ณธ ํ์ผ์ ๊ทธ๋๋ก๋ง ๋ฐฐ์นํ๋ค
(
references/tossface.md์ "tossface facet ํ์ง ๋ง์์ผ ํ ๊ฒ" ์ ์ฐธ์กฐ).
- โ (tossface) ๋ณธ๋ฌธ ์์ฒด๋ก ์ฌ์ฉ โ ์ด๋ชจ์ง ์์ฒด๋ค. ๋ณธ๋ฌธ ์์ฒด ๊ธ์ง๋
design skill์
"ํ ์ค ๋ธ๋๋ยทUI ๋ชจ๋ฐฉ ๊ธ์ง" ์ ์ด ๋ค๋ฃจ๋ ๋ณ๊ฐ ์ถ์ด๋ค.
์ฐธ๊ณ
- create-ait-app ํ๋ก์ ํธ์ IAP/IAA ์์ ์ถ๊ฐ: ์ด skill์ ๋ facet๊ณผ๋
๋ฌด๊ดํ ๋ณ๋ CLI ์๋ธ์ปค๋งจ๋์ง๋ง, ๊ฐ์ brownfield ์๋ฆฌ๋ผ ์ฌ๊ธฐ ๋จ๊ธด๋ค โ
npx -y create-ait-app@latest add-sample [directory] --inline --sample iap,iaa
(directory ์๋ต ์ ๊ธฐ๋ณธ๊ฐ์ cwd .). ๋์์ด Apps in Toss ํ๋ก์ ํธ๋ก
์ธ์๋ ๋๋ง ๋์ํ๊ณ (inspectSampleProject() โ @apps-in-toss/web-framework
์์กด์ฑ ๋๋ apps-in-toss.config.ts ์กด์ฌ๋ก ํ์ , ์๋๋ฉด ์ฆ์ ๊ฑฐ๋ถ),
--sample์ ์๋ตํ๋ฉด interactive checkbox ํ๋กฌํํธ๋ก ๋น ์ง๋ค. ์ด skill์ ์ด
๋ช
๋ น์ ์คํํ์ง ์๋๋ค โ new-miniapp skill์ Step 6 ์๋ฃ ์๋ด๊ฐ ๊ฐ์ ๋ช
๋ น์
๋
ธ์ถํ๋ค.
- ํ์ค dev ํ๊ฒฝ ์
์
(๋ธ๋ผ์ฐ์ mockยท์ค๊ธฐ๊ธฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ) ๋ฑ ์ฃผ์ ๋ณ ๊ฐ์ด๋๋ docs MCP
(
searchDocumentation/getPage)๋ก ์กฐํํ๋ค.
- devtools facet ์์ธ:
<์ด skill์ base directory>/references/devtools.md
- debug-console facet ์์ธ:
<์ด skill์ base directory>/references/debug-console.md
- tossface facet ์์ธ:
<์ด skill์ base directory>/references/tossface.md
- ์ง skill:
new-miniapp (์ ํ๋ก์ ํธ ์์ฑ โ create-ait-app ํธ์ถ + devtools ํ์ฒ๋ฆฌ ๋ฐฐ์ ), debug (devtools facet์ด ๊น์๋ ๋ธ๋ผ์ฐ์ panel ๋๋ debug-console facet์ด ๊น์๋ ํ๊ฒฝ 3 attach ํ๋ฉด์ ์๋นํ๋ ๋๋ฒ๊น
), design (tossface facet ๋ฐฐ์ ํ ํ๋ฉด ๋ ๋ ๋ฌด๊ฒฐ์ฑ ํ์ โ "ํ ์ค ๋ธ๋๋ยทUI ๋ชจ๋ฐฉ ๊ธ์ง" ์ ์ด ์ด๋ชจ์ง ์์ฒด ์ ์ฑ
์ ์ ๋ณธ).
@apps-in-toss/devtools(mock+panel+unplugin, ๋ธ๋ผ์ฐ์ dev ์ ์ฉ) ์์ค โ ๊ตฌ repo ์ด๋ ฅ์๋ง ์กด์ฌ(์ฌ์์ฑ์ผ๋ก ๋งํฌ ์๋ฉธ, maintainer ๋ก์ปฌ ๋ฐฑ์
mirror์์ ์ด๋ ๊ฐ๋ฅ)
@apps-in-toss/debug-console(on-device attach + eruda): https://github.com/toss/apps-in-toss-harness/tree/main/packages/debug-console
@apps-in-toss/debugger(MCP ๋ฐ๋ชฌ, /ait:setup-debugger๊ฐ ํ๋ก์ ํธ .mcp.json์ ๋ฐฐ์ ): https://github.com/toss/apps-in-toss-harness/tree/main/packages/debugger
Tossface(๊ณต๊ฐ ๋ฐฐํฌ ์ด๋ชจ์ง ์์ฒด): https://github.com/toss/tossface (LICENSE ์ ๋ฌธ, ๊ณต๊ฐ ์๋ด ํ์ด์ง https://toss.im/tossface/copyright).