<h1 align="center">
<a href="https://prompts.chat">
`CONTRIBUTING.md` is canonical for public contribution workflow: issues,
Loading actions...
<a href="https://prompts.chat">
TypeScript and ESLint rules that MUST be followed when creating, modifying, or reviewing any file under apps/frontend/, including .ts, .tsx, .js, and .jsx files. Also apply when discussing frontend linting, type safety, or ESLint configuration.
risks
CONTRIBUTING.md is canonical for public contribution workflow: issues,
assignment, pull requests, refactors, changelogs, validation, commits, and DCO.
AI_POLICY.md is canonical for public AI-assisted contribution policy.
When working inside nemoguardrails/, also follow nemoguardrails/AGENTS.md for
runtime, public-API, and provider-integration rules.
gh, or similar tooling. Draft text for a human to
review and submit, following the repo's issue/PR templates so it can be
submitted as-is.CHANGELOG.md or CHANGELOG-Colang.md manually.AI_POLICY.md Safety and
Privacy for the canonical list.poetry run python ...,
poetry run pytest ..., poetry run pre-commit ....nemoguardrails/tests/ and benchmark/tests (the testpaths in pytest.ini)schemas/developInstall development dependencies:
poetry install --with dev
Install documentation dependencies when working on docs:
poetry install --with dev,docs
Do not add dependencies to pyproject.toml or update poetry.lock unless the
task requires it. For temporary local investigation, use:
poetry run pip install <package-name>
When a dependency change is required, keep it in the narrowest appropriate dependency group or optional extra, add clear compatibility bounds, and avoid moving optional integration dependencies into the default install path.
Canonical command reference: CONTRIBUTING.md Validation. The table below adds
agent-operational diagnosis commands; see CONTRIBUTING.md for shared rows such
as tox and package coverage.
| Task | Command |
|---|---|
| Run the test suite | make test (pytest-xdist parallel; unsets live-provider keys so unit tests cannot reach live services; runs all pytest.ini testpaths) |
| Focused test | make test TEST=path/to/test_file.py::test_name (extra flags via ARGS="-k ... -q") |
| Serial, deterministic run | make test WORKERS=1 (no parallelism, still unsets live keys) |
| Coverage | make test-coverage |
| Pre-commit hooks | poetry run pre-commit run --all-files |
| Docs check | make docs-fern |
| Ruff diagnosis | poetry run ruff check path/to/file.py |
| Ruff formatting diagnosis | poetry run ruff format path/to/file.py |
| Pyright diagnosis | poetry run pyright |
| Change type | Minimum validation |
|---|---|
| Docs or repository metadata only | poetry run pre-commit run --files <changed files>; build docs when rendering, links, examples, or docs configuration may be affected |
| Runtime bug fix | Focused regression test plus pre-commit on changed files; broaden when shared behavior is touched |
| Public API, config, or Colang behavior | Focused tests plus related docs/examples; add broader package tests when compatibility risk is meaningful |
| Server, streaming, tracing, actions, or generation | Targeted tests for the changed path and fallback/unsupported path |
| Packaging, dependencies, or lockfiles | Relevant install/package checks plus pre-commit; keep dependency diffs separate from unrelated changes |
make test runs every pytest.ini testpath, so it includes benchmark/tests,
not just tests/; scope with TEST=. The default suite needs no network:
tests/conftest.py swaps the default FastEmbed model for a deterministic
provider, so only real_embeddings-marked tests use the real model.make test with make test WORKERS=1 (same env-safety, no parallelism); serial/slow markers in
pytest.ini are advisory and not enforced by the parallel runner.make test-serial and bare poetry run pytest do NOT unset live-provider
keys; prefer make test / make test WORKERS=1 so unit tests cannot reach
live services.CONTRIBUTING.md for issue, assignment, PR title, refactor, changelog,
validation, commit, and DCO policy.AI_POLICY.md for disclosure, human accountability, safety, and
privacy requirements.PLAN.md PR maintainers
can review) rather than implementing.gh (distinct from the no-gh-submission rule above):
gh issue view <issue> --comments, gh pr list --state open --search "<issue> in:body", and gh pr list --state open --search "<area keywords>". If an open
PR already covers the change, do not prepare a duplicate; if your approach
differs materially, surface that difference in the issue draft for a maintainer.CONTRIBUTING.md.Co-Authored-By trailers for AI).CONTRIBUTING.md for review-readiness policy (CodeRabbit, Greptile,
human comments, readiness labels): address or reply to every open review comment
before requesting maintainer review, do not resolve reviewers' own threads, and
do not self-apply the readiness label.CONTRIBUTING.md. Do not run
build_notebook_docs.py unless explicitly asked; it currently runs broad git
staging and pre-commit commands. Use a clean worktree if it must be run.develop and
inspect tests as well as implementation.codex review or
/code-review) with a security pass for auth, input-handling, deserialization,
or external-call changes. Treat findings as advisory: verify each against the
real code path and loop until clean.