Introduction
# Noir Developer
## Workflow
1. Compile (`nargo compile`) Noir program into ACIR. 2. Generate witness (`nargo execute` or NoirJS execute) based on ACIR and user inputs. 3. Prove using ACIR and witness with the selected proving backend. 4. Verify proof with the selected proving backend.
## Task Patterns
### Environment
If the environment is unsupported by `nargo` (e.g. native Windows), guide the user to using GitHub Codespaces (https://noir-lang.org/docs/tooling/devcontainer#using-github-codespaces) or a supported setup (WSL, Docker, or VM).
### Plan
Define private inputs, public inputs (if any), and public outputs (if any) for each Noir program.
### Project Creation
When creating a Noir project, use `nargo new` or `nargo init` to scaffold it.
### Compilation
Use `nargo` (not `noir_wasm`) for compilation; it is the maintained path.
### Validation
Run `nargo test` to validate Noir implementations.
### Proving Backend
Confirm the proving backend choice before implementation details. If the user selects Barretenberg, read `references/barretenberg.md`.
## References
- Run `nargo --help` for the full list of commands. - Read https://noir-lang.org/docs/ for language syntax, dependencies, and tooling. - Proving backends: - For Barretenberg specifics, read `references/barretenberg.md`.