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 |
|
|
|
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
- 원본 URL: https://github.com/cookiecutter/cookiecutter
- 문서: https://cookiecutter.readthedocs.io/
- 아카이브 URL: (미수집)
- 저자/조직: Audrey M. Roy Greenfeld 외 cookiecutter org
- Star 수: 23,000+
- 라이선스: BSD-3-Clause
- 마지막 확인일: 2026-05-27
핵심 인용 / 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.
Related / 관련
- 같은 주제 다른 official-doc (Group H — Sample removal / adoption 대안 5종):
- raw/official-docs/scaffolding-spring-initializr — 대안 4 (Spring Initializr)
- raw/official-docs/scaffolding-degit-svelte-github — 대안 3 (degit)
- raw/official-docs/scaffolding-github-template-repository — 대안 5 (GitHub Template Repository)
- 인용하는 branch:
- canonical contract 섹션:
- raw/project-notes/ca-skeleton-operational-contract#Sample Removal / Project Adoption
- 인용하는 wiki: (미작성)