Files
llm-wiki/raw/official-docs/scaffolding-cookiecutter-official.md
T

7.5 KiB

title, source_type, url, archive_url, status, confidence, tags, related_projects, related_branches, created, last_reviewed
title source_type url archive_url status confidence tags related_projects related_branches created last_reviewed
cookiecutter/cookiecutter — Jinja2 변수 기반 프로젝트 templating 도구 official-doc https://github.com/cookiecutter/cookiecutter raw high
ca-tmpl
scaffolding
sample-removal
cookiecutter
template-engine
official-doc
ca-tmpl
feature-sample-removal-adoption-contract
2026-05-22 2026-05-27

cookiecutter/cookiecutter — Jinja2 변수 기반 프로젝트 templating 도구

Layer: raw/official-docs/ — Python 진영 reference scaffolding 도구 cookiecutter/cookiecutter 의 GitHub README 발췌. ca-tmpl Group H — Sample removal / adoption 의 대안 2 (generator + Jinja2 변수 모델) 1차 근거.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-sample-removal-adoption-contract Group H 대안 2 — Cookiecutter generator 모델이 sample-on/off 를 generate-time 단일 결정으로 환원한다는 비교점의 근거

상위 프로젝트: raw/project-notes/ca-skeleton-operational-contract.

컨텍스트 / 왜 저장했는지

ca-tmpl sample removal / adoption 결정 대안 2. Cookiecutter는 "template 변수를 채워 한 번에 sample 없는 프로젝트 생성" 모델 — ca-tmpl의 "removal step" 자체가 필요 없는 generator 접근. 두 모델의 비교점.

출처 / Source

핵심 인용 / Key quotes (verbatim)

[§README — Definition] "A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects."

[§README — Cross-platform] "Cross-platform: Windows, Mac, and Linux are officially supported. You can generate a project in any language or markup format."

[§README — Template languages] "Templates can be in any programming language or markup format: Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, etc."

[§README — How it works] "Simply create a project template with a cookiecutter.json file in the root. Use Jinja2 templating in any file or directory name."

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
SCAF-CC-C1 Cookiecutter 는 cross-platform CLI 유틸리티로, "cookiecutters" 라 부르는 project template 으로부터 프로젝트를 생성한다 (예: Python package, C 프로젝트) [§README — Definition] "A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects." official-vendor-doc 일반 CLI scaffolding 도구 선택 모든 언어/프레임워크의 best-practice 라는 뜻은 아님
SCAF-CC-C2 Cookiecutter 는 Windows / Mac / Linux 를 공식 지원하며 어떤 언어/markup 포맷의 프로젝트도 생성 가능하다 [§README — Cross-platform] "Cross-platform: Windows, Mac, and Linux are officially supported. You can generate a project in any language or markup format." official-vendor-doc OS / 언어 무관 scaffolding 도입 검토 "any language" 가 모든 언어에서 동일한 ergonomics 라는 뜻은 아님
SCAF-CC-C3 Template 은 Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML 등 어떤 프로그래밍 언어/markup 포맷이든 가능 [§README — Template languages] "Templates can be in any programming language or markup format: Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, etc." official-vendor-doc 다양한 출력 포맷 template Java/Kotlin/Spring Boot 같은 JVM 진영에서도 동일하게 권장된다는 뜻은 아님 (인용 목록은 예시)
SCAF-CC-C4 Template 작성은 root 에 cookiecutter.json 을 두고, 파일/디렉토리 이름에 Jinja2 templating 을 사용하면 된다 [§README — How it works] "Simply create a project template with a cookiecutter.json file in the root. Use Jinja2 templating in any file or directory name." official-vendor-doc Cookiecutter template 저자 Jinja2 placeholder 가 들어간 template 코드를 그대로 compile/test 가능하다는 뜻은 아님 (generator 시점에 치환됨)

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것:
    • SCAF-CC-C1: cookiecutter 의 정체성 (cross-platform CLI generator)
    • SCAF-CC-C2: 공식 OS 지원 범위 (Windows / Mac / Linux)
    • SCAF-CC-C3: 출력 가능한 언어/포맷의 광범위함
    • SCAF-CC-C4: template 작성 메커니즘 (cookiecutter.json + Jinja2 placeholder)
  • 이 자료가 증명하지 않는 것:
    • Jinja2 placeholder 가 들어간 template repo 자체를 직접 빌드/테스트하는 dual-mode CI 가 가능하다는 뜻 아님 (ca-tmpl 의 sample-on/off matrix 모델과 호환 불가능 가능성)
    • ca-tmpl 의 7-step adoption checklist (domain rename, package rename, profile cleanup 등) 가 모두 Cookiecutter prompt 변수로 환원된다는 뜻은 아님
    • JVM/Spring Boot 진영에서 Cookiecutter 가 reference 도구로 사용된다는 뜻은 아님 (예시 목록에 Python/C 만 명시)
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • Spring Boot Java 코드에 Jinja2 placeholder 를 삽입했을 때 IDE 빌드/테스트 가능성
    • ca-tmpl sample-ticket 을 {% if cookiecutter.include_sample == 'yes' %} 같은 옵셔널 블록으로 표현했을 때 검증 fixture 로서의 역할이 보존되는지
    • Cookiecutter generator 시점에 dual-mode CI matrix 를 외부에서 별도로 유지할 수 있는지

메모

  • 동작 모델: cookiecutter.json에 변수 정의 → {{cookiecutter.project_name}} 같은 Jinja2 placeholder를 파일/디렉토리에 사용 → CLI prompt로 값 받아 결과 생성.
  • ca-tmpl과의 차이: Cookiecutter는 "generate-time customization"이라 sample-ticket을 변수로 옵셔널화 가능({% if cookiecutter.include_sample == 'yes' %}). 즉 ca-tmpl의 dual-mode CI matrix(sample-on / sample-off)를 generator 시점에 단일 결정으로 환원.
  • 장점: removal step 0개. 생성 직후 바로 적용 가능. Python 생태계 표준.
  • 단점: Jinja2 placeholder가 들어간 코드는 generator template 상태에서 compile/test 불가. ca-tmpl이 채택한 "sample-on CI matrix에서 skeleton 자체를 빌드/테스트한다"가 Cookiecutter에선 어려움.
  • 추가 단점: ca-tmpl의 7-step adoption checklist(domain rename, package rename, profile cleanup 등)는 Cookiecutter prompt 변수로는 표현이 부족 — 도입 후 코드 적응이 필요한 항목이 남음.
  • 신뢰도: official-doc. Python 진영 reference.