Summary
Add CNA-parity file processing when loading template/extension layers:
.template files — process with Jinja2 ({{ variable }}), strip the suffix from the output path..append files — append content to an existing matching file instead of overwriting.
Variables come from scaffold context (projectName, customOptions answers from cpa.config.json, etc.).
CNA mapping
CNA: EJS .template + .append conventions in cna-templates / loaders (docs/AUTHORING.md in cna-templates).
CPA today: copy-only merge in create_python_app_core.loaders (copy_tree). Documented as a known limitation in cpa-templates docs (ARCHITECTURE.md, AUTHORING.md).
Acceptance criteria
Out of scope (follow-ups)
[bracket]/ directory renaming.if-* conditional file inclusion
Blocked by
none
Blocks
Better extension authoring in cpa-templates (today extensions must ship complete overlay files).
Reference
Summary
Add CNA-parity file processing when loading template/extension layers:
.templatefiles — process with Jinja2 ({{ variable }}), strip the suffix from the output path..appendfiles — append content to an existing matching file instead of overwriting.Variables come from scaffold context (
projectName,customOptionsanswers fromcpa.config.json, etc.).CNA mapping
CNA: EJS
.template+.appendconventions incna-templates/ loaders (docs/AUTHORING.mdin cna-templates).CPA today: copy-only merge in
create_python_app_core.loaders(copy_tree). Documented as a known limitation incpa-templatesdocs (ARCHITECTURE.md,AUTHORING.md).Acceptance criteria
.templatefiles are rendered with Jinja2 and written without the.templatesuffix.appendappends to the destination file when it exists; creates it when missingprojectNameandcpa.config.jsoncustom option answers.template,.append, and interaction with overwritecpa-templatesAUTHORING docs once behavior ships (or open a follow-up there)Out of scope (follow-ups)
[bracket]/directory renaming.if-*conditional file inclusionBlocked by
none
Blocks
Better extension authoring in
cpa-templates(today extensions must ship complete overlay files).Reference
knowledge/create-python-app-parity-matrix.md(workspace)packages/create-python-app-core/src/create_python_app_core/loaders.py