Thanks for contributing to Nimi.
- Node.js
>=24 - pnpm
>=10 - Go for Runtime, proto tooling, and Go SDK conformance (see
runtime/go.mod) - Rust for native packages and the Kit Tauri shell crate
- Buf CLI (for proto work)
pnpm installRuntime:
cd runtime
go test ./... -count=1Workspace build:
pnpm build- For desktop runtime debugging, use Desktop Runtime settings and app-specific dev docs.
- For proto changes, run
pnpm proto:generateand ensure no generated drift is left. - For Runtime changes, start with the affected Go package test. Use all Runtime tests for Runtime-wide changes; add vet/build when the changed boundary requires them.
- For kit changes, run
pnpm --filter @nimiplatform/kit build && pnpm --filter @nimiplatform/kit test. - For App development, use the Desktop-supervised
pnpm dev:<app>commands in LOCAL_DEVELOPMENT.md; first-party Apps run on the Electron host, not a Tauri development shell. - For full onboarding flow and environment template details, follow ONBOARDING.md.
- For test strategy details, follow TESTING.md.
Optional pre-commit hook setup:
python3 -m pip install --user pipx
pipx install pre-commit
pre-commit install- Keep scope focused and update docs when behavior changes. Use a branch or worktree when it helps isolate concurrent work.
- Run the affected behavior and relevant local tests/type checks.
- Ordinary changes may be pushed directly to
main. Follow the push CI results and repair or revert failures;mainis an integration branch, not a promise that every commit is releasable. - Use a PR for shared public contracts, native installation, data handling, and release workflow changes. Complete the relevant remote checks before merging; no independent human approval is required. Do not assume optional auto-merge waits for checks after branch rules change.
- Publication needs explicit authorization for the version and channel, plus that version's required validation. A commit being on
maindoes not authorize its release. Authorization to publish after successful validation need not be requested again; authorization only to prepare a candidate is not publication authorization.
If you use AI coding tools, follow the AGENTS hierarchy as the single rule source:
AGENTS.mdfor repo-wide rules- The nearest path-scoped
*/AGENTS.mdfor component rules
For .nimi/spec/** changes, also follow
.nimi/methodology/authority-authoring.yaml.
Compatibility files such as CLAUDE.md, .github/copilot-instructions.md, and *context.md are navigation shims only. They must not be treated as independent rule definitions.
- Code compiles
- Relevant tests pass
- Docs updated if API/behavior changed
- No unrelated file changes
- Commit messages are descriptive
- DCO sign-off included for PRs targeting branches other than
main(git commit -s)
Commit-signature and Developer Certificate of Origin (DCO) sign-off requirements
are temporarily suspended for main, including direct pushes and PRs targeting
main. Neither git commit -S nor git commit -s is required for that branch.
PRs targeting other branches still require DCO sign-off. DCO is a
Signed-off-by commit-message trailer, not a cryptographic Git signature.
To include it, use:
git commit -s -m "feat: your change"The full DCO text is in DCO.
For vulnerabilities, do not file public issues. Follow SECURITY.md.