์ž‘๊ฐ€:
    ์ƒ์„ฑ:2024-08-11๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ:2026-06-17

    ๋ฌธ์„œ ๊ฒ€ํ† 

    doc review ๋ช…๋ น์–ด๋Š” ๋‹ค์–‘ํ•œ ๋กœ์ผ€์ผ์—์„œ ๋ฌธ์„œ ํŒŒ์ผ์˜ ํ’ˆ์งˆ, ์ผ๊ด€์„ฑ ๋ฐ ์™„์ „์„ฑ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์š” ์‚ฌํ•ญ:

    • AI ๋ชจ๋ธ์˜ ์ปจํ…์ŠคํŠธ ์ฐฝ ์ œํ•œ ๋‚ด์—์„œ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํฐ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ์„ ์ฒญํฌ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฒ€ํ† ํ•  ์ฒญํฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ์ด๋ฏธ ๋ฒˆ์—ญ๋˜์—ˆ์œผ๋ฉฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
    • ํ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ, ์ฒญํฌ ๋ฐ ๋กœ์ผ€์ผ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
    bash
    npx intlayer doc review
    

    ์ด๋ฏธ ๋ฒˆ์—ญ๋œ ํŒŒ์ผ์„ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ๋ฒˆ์—ญ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ,

    • ์ด ํŒŒ์ผ์˜ ๋ฒˆ์—ญ๋ณธ์ด ์—†๋Š” ๊ฒฝ์šฐ doc translate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    • ์ด ํŒŒ์ผ์˜ ๋ฒˆ์—ญ๋ณธ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ doc review๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํŒŒ์ผ์„ ์™„์ „ํžˆ ๊ฒ€ํ† ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒˆ์—ญ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋” ๋งŽ์€ ์ž…๋ ฅ ํ† ํฐ์„ ์†Œ๋น„ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋Š” ๊ฒ€ํ† ํ•  ์ฒญํฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

    ์ธ์ˆ˜:

    ํŒŒ์ผ ๋ชฉ๋ก ์˜ต์…˜:

    • --doc-pattern [docPattern...]: ๊ฒ€ํ† ํ•  ๋ฌธ์„œ ํŒŒ์ผ๊ณผ ์ผ์น˜ํ•˜๋Š” Glob ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --doc-pattern "docs/**/*.md" "src/**/*.mdx"
    • --excluded-glob-pattern [excludedGlobPattern...]: ๊ฒ€ํ† ์—์„œ ์ œ์™ธํ•  Glob ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --excluded-glob-pattern "docs/internal/**"
    • --skip-if-modified-before [skipIfModifiedBefore]: ์ง€์ •๋œ ์‹œ๊ฐ„ ์ด์ „์— ์ˆ˜์ •๋œ ํŒŒ์ผ์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

      • "2025-12-05"์™€ ๊ฐ™์€ ์ ˆ๋Œ€ ์‹œ๊ฐ„ (๋ฌธ์ž์—ด ๋˜๋Š” Date)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • 1 * 60 * 60 * 1000 (1์‹œ๊ฐ„)๊ณผ ๊ฐ™์€ ์ƒ๋Œ€ ์‹œ๊ฐ„(ms)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ด ์˜ต์…˜์€ fs.stat ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ์ˆ˜์ • ์‹œ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Git์ด๋‚˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์˜ˆ์‹œ: npx intlayer doc review --skip-if-modified-before "2025-12-05"
    • --skip-if-modified-after [skipIfModifiedAfter]: ์ง€์ •๋œ ์‹œ๊ฐ„ ์ด๋‚ด์— ์ˆ˜์ •๋œ ํŒŒ์ผ์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

      • "2025-12-05"์™€ ๊ฐ™์€ ์ ˆ๋Œ€ ์‹œ๊ฐ„(๋ฌธ์ž์—ด ๋˜๋Š” Date)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • 1 * 60 * 60 * 1000 (1์‹œ๊ฐ„)๊ณผ ๊ฐ™์€ ์ƒ๋Œ€ ์‹œ๊ฐ„(ms)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ด ์˜ต์…˜์€ fs.stat ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ์ˆ˜์ • ์‹œ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Git์ด๋‚˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์˜ˆ์‹œ: npx intlayer doc review --skip-if-modified-after "2025-12-05"
    • --skip-if-exists: ํŒŒ์ผ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --skip-if-exists

    ๊ฒ€ํ†  ๋ชจ๋“œ ์˜ต์…˜:

    • --log: ๋กœ๊ทธ ์ „์šฉ ๋ชจ๋“œ. AI๋กœ ๋ฒˆ์—ญํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๊ฐ€ ๋ฒˆ์—ญ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ๋ฐ ๋Œ€์ƒ ๋กœ์ผ€์ผ์— ๋Œ€ํ•ด ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๋ธ”๋ก(์ค„ ๋ฒˆํ˜ธ ๋ฐ ๋‚ด์šฉ ํฌํ•จ)์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

    • apply: Translate diverging blocks and provide the complete updated file in Korean (ko)
    • report: Log blocks needing attention with line numbers and content (no AI translation)
    • synthesis: Skip per-block output and provide only a final recap of up-to-date vs. documents needing edits

      ์˜ˆ์‹œ: npx intlayer doc review --log
    ์˜ˆ์‹œ: npx intlayer doc review --mode synthesis

    ์–ด๋–ค ๋ชจ๋“œ์ด๋“ , ์‹คํ–‰์€ ๊ธฐ๋ณธ ๋ฌธ์„œ์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ์™€ ํŽธ์ง‘ํ•  ๋ธ”๋ก์ด ๋‚จ์•„ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์ข…ํ•ฉ ๋ณด๊ณ ์„œ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

    ์ถœ๋ ฅ ์˜ต์…˜:

    • --locales [locales...]: ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•  ๋Œ€์ƒ ๋กœ์ผ€์ผ์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --locales fr es de
    • --base-locale [baseLocale]: ๋น„๊ตํ•  ์›๋ณธ ๋กœ์ผ€์ผ(๊ธฐ๋ณธ ๋ฌธ์„œ)์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --base-locale en

    ํŒŒ์ผ ์ฒ˜๋ฆฌ ์˜ต์…˜:

    • --nb-simultaneous-file-processed [nbSimultaneousFileProcessed]: ๋™์‹œ์— ๊ฒ€ํ† ํ•  ํŒŒ์ผ ์ˆ˜์ž…๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --nb-simultaneous-file-processed 5

    AI ์˜ต์…˜:

    • --model [model]: ๊ฒ€ํ† ์— ์‚ฌ์šฉํ•  AI ๋ชจ๋ธ (์˜ˆ: gpt-3.5-turbo).
    • --provider [provider]: ๊ฒ€ํ† ์— ์‚ฌ์šฉํ•  AI ์ œ๊ณต์ž.
    • --temperature [temperature]: AI ๋ชจ๋ธ์˜ ์˜จ๋„ ์„ค์ •.
    • --api-key [apiKey]: AI ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•  API ํ‚ค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • --application-context [applicationContext]: AI ๊ฒ€ํ† ์— ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • --data-serialization [dataSerialization]: Intlayer์˜ AI ๊ธฐ๋Šฅ์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ˜•์‹. ์˜ต์…˜: json (ํ‘œ์ค€, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์Œ), toon (ํ† ํฐ ์ ์Œ, ์ผ๊ด€์„ฑ ๋‚ฎ์Œ).
    • --custom-prompt [prompt]: ๊ฒ€ํ† ์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. (์ฐธ๊ณ : ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋™์ž‘์„ ๋” ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” --custom-instructions ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.)

      ์˜ˆ์‹œ: npx intlayer doc review --model deepseek-chat --provider deepseek --temperature 0.5 --api-key sk-1234567890 --application-context "My application is a cat store"

    ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ต์…˜:

    • --env: ํ™˜๊ฒฝ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: development, production).
    • --env-file [envFile]: ๋ณ€์ˆ˜๋ฅผ ๋กœ๋“œํ•  ์‚ฌ์šฉ์ž ์ •์˜ ํ™˜๊ฒฝ ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • --base-dir: ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • --no-cache: ์บ์‹œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --base-dir ./docs --env-file .env.production.local

    ๋กœ๊ทธ ์˜ต์…˜:

    • --verbose: ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์ƒ์„ธ ๋กœ๊ทธ ํ™œ์„ฑํ™”. (CLI์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ true)

      ์˜ˆ์‹œ: npx intlayer doc review --verbose

    ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์นจ ์˜ต์…˜:

    • --custom-instructions [customInstructions]: ํ”„๋กฌํ”„ํŠธ์— ์ถ”๊ฐ€๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์นจ. ํฌ๋งทํŒ…, URL ๋ฒˆ์—ญ ๋“ฑ ํŠน์ • ๊ทœ์น™์„ ์ ์šฉํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --custom-instructions "URL ๋ฒˆ์—ญ์„ ํ”ผํ•˜๊ณ , ๋งˆํฌ๋‹ค์šด ํ˜•์‹์„ ์œ ์ง€ํ•˜์„ธ์š”"
      ์˜ˆ์‹œ: npx intlayer doc review --custom-instructions "$(cat ./instructions.md)"

    Git ์˜ต์…˜:

    • --git-diff: ๊ธฐ์ค€(๊ธฐ๋ณธ๊ฐ’ origin/main)์—์„œ ํ˜„์žฌ ๋ธŒ๋žœ์น˜(๊ธฐ๋ณธ๊ฐ’ HEAD)๋กœ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • --git-diff-base: git diff์˜ ๊ธฐ์ค€ ์ฐธ์กฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’ origin/main).
    • --git-diff-current: git diff์˜ ํ˜„์žฌ ์ฐธ์กฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’ HEAD).
    • --uncommitted: ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • --unpushed: ํ‘ธ์‹œ๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • --untracked: ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: npx intlayer doc review --git-diff --git-diff-base origin/main --git-diff-current HEAD
      ์˜ˆ์‹œ: npx intlayer doc review --uncommitted --unpushed --untracked

    ์ถœ๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ ํŒจํ„ด์„ ๋Œ€์ฒดํ•˜์—ฌ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค:

    • /{{baseLocale}}/ ๋Š” /{{locale}}/ ๋กœ ๋Œ€์ฒด (Unix)
    • {{baseLocale}}` ๋Š” {{locale}}` ๋กœ ๋Œ€์ฒด (Windows)
    • _{{baseLocale}}. ๋Š” _{{locale}}. ๋กœ ๋Œ€์ฒด
    • {{baseLocale}}_ ๋Š” {{locale}}_ ๋กœ ๋Œ€์ฒด
    • .{{baseLocaleName}}. ๋Š” .{{localeName}}. ๋กœ ๋Œ€์ฒด

    ๋งŒ์•ฝ ํŒจํ„ด์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด, ์ถœ๋ ฅ ํŒŒ์ผ์€ ํŒŒ์ผ ํ™•์žฅ์ž์— .{{locale}} ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ./my/file.md ๋Š” ๊ฒ€ํ† ๋˜๊ณ , ํ”„๋ž‘์Šค์–ด ๋กœ์ผ€์ผ์˜ ๊ฒฝ์šฐ ./my/file.fr.md ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.