Contributing
March 10, 2026 · View on GitHub
Thanks for contributing! This repo powers create-awesome-node-app.
For a full explanation of how templates, extensions, and the file system work, read docs/AUTHORING.md.
Adding an extension
- Create
extensions/<your-slug>/ - Add a
package.jsonwithdependenciesand/ordevDependenciesto merge into the project - Add any files to copy (use
.template,.append,[bracket]/as needed — see docs/AUTHORING.md) - Register it in
templates.jsonunder"extensions":
{
"name": "My Extension",
"slug": "my-extension",
"description": "Adds X to your project",
"url": "https://github.com/Create-Node-App/cna-templates/tree/main/extensions/my-extension",
"type": ["react"],
"category": "UI",
"labels": ["React", "UI"]
}
Adding a template
- Create
templates/<your-slug>/ - Set up
package/index.js,package/dependencies.js,package/devDependencies.js - Add project files with the appropriate suffixes
- Register it in
templates.jsonunder"templates"(same fields as extension, plus optionalcustomOptions)
Commit messages
Use conventional commits: feat:, fix:, docs:, chore:, refactor:.
PR checklist
- Directory name matches the
slugintemplates.json -
urlpoints to the correct path on themainbranch -
slugis globally unique across templates and extensions - All required fields present:
name,slug,description,url,type,category,labels - Extension
typeis an array if it supports multiple template types - Tested locally — see docs/TESTING.md
Questions?
Open an issue or start a discussion.