FAQ¶
Answers to common questions about azure-functions-scaffold and generated
projects.
What templates are available?¶
Five templates are built in:
httptimerqueueblobservicebus
You can list them at any time:
See Templates for behavior and use cases.
How do I add custom templates?¶
The CLI ships with bundled templates and does not currently provide a runtime plugin command for external template packs.
If you need custom templates today:
- Fork or clone the project source.
- Add a new folder under
src/azure_functions_scaffold/templates/. - Register it in
src/azure_functions_scaffold/template_registry.py. - Add tests for generation and function-add behavior.
See Template Specification for format rules.
Team strategy
If your organization needs opinionated internal templates, maintain a pinned internal fork and version it like any other developer platform tool.
What is the difference between presets?¶
Presets control quality tooling in generated project configuration.
| Preset | Tooling | Best for |
|---|---|---|
minimal |
none | Prototypes, very small scripts |
standard |
ruff, pytest |
Most projects (default) |
strict |
ruff, mypy, pytest |
Type-safe, team-scale APIs |
List presets from CLI:
Can I use it without Azure Functions Core Tools?¶
Yes for scaffolding, no for local runtime and deployment.
- You can generate files with
afs new,afs api add, andafs advanced addwithout Core Tools. - You need Core Tools (
func) to runfunc startlocally. - You typically need Core Tools for
func azure functionapp publish ....
How do I add features after project creation?¶
Feature flags are generation-time options. There is no separate command like
afs features enable ... today.
Practical options:
- Regenerate with desired flags and port business code.
- Manually add equivalent dependencies and code wiring.
Examples:
- OpenAPI requires route handlers in
function_app.pyand OpenAPI decorators. - Validation requires
azure-functions-validation, request/response models, and validated endpoint signatures. - Doctor requires dependency plus command invocation (for example
make doctor).
See Configuration for flag behavior.
What are the project naming rules?¶
Project names must:
- be non-empty
- start with a letter or number
- contain only letters, numbers, hyphens, or underscores
Valid examples:
my-apiorders_v2api2026
Invalid examples:
my api_apiapi!
Does it create tests?¶
Yes when pytest tooling is enabled.
standardandstrictpresets include pytest and generate tests.minimalpreset does not include pytest by default.
When adding functions with afs api add or afs advanced add, test files are created if a tests/
directory exists in the project.
Does afs differ from azure-functions-scaffold?¶
No. afs is a short alias and a drop-in replacement.
These are equivalent:
Can I preview changes before writing files?¶
Yes. Use --dry-run on both project creation and add flows.
afs advanced new --preset strict --dry-run my-api
afs advanced add queue process_orders --project-root ./my-api --dry-run
Where should I start next?¶
Why is orjson included in generated projects?¶
All scaffolded projects include orjson as a
default dependency. The Azure Functions Python worker
automatically detects orjson
when it is installed and uses it for JSON serialization and deserialization —
no code changes required.
Benchmarks from Microsoft show up to 40% lower HTTP response times and
significantly higher throughput for Service Bus and Event Hub triggers. Since
orjson provides pre-built wheels for all platforms Azure Functions supports,
it adds negligible install overhead for a meaningful performance gain.