agentleFS
NVIDIAKnown publisherNVIDIA/physicsnemo-curator/CLAUDE.md

physicsnemo-curator

CLAUDE.md67 starsChanged 6 months agoApache-2.0View on GitHub

Rust-based ETL toolkit for deep learning data curation with Python APIs. The Rust extension is exposed as physicsnemo_curator._lib and imported in __init__.py. Type stubs live at src/physicsnemo_curator/_lib.pyi. Defined in pyproject.toml under [dependency-groups]: Optional extras in [project.optional-dependencies]: Install with: uv sync --group dev or uv sync --group docs

The file

We split this CLAUDE.md into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Python: Follow ruff defaults. Line length 120.

    line 60
  2. Very specific:

    Rust: Follow rustfmt defaults. All clippy warnings are errors (-D warnings).

    line 61
  3. Very specific:

    Type checking: All Python code must pass ty check.

    line 63
  4. Very specific:

    All commits must use Conventional Commits format.

    line 109
  5. Very specific:

    NEVER: use --no-verify to skip pre-commit hooks.

    line 122

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

PhysicsNeMo Curator

Rust-based ETL toolkit for deep learning data curation with Python APIs.

Architecture

  • Python API: src/physicsnemo_curator/ — public Python interface
  • Rust core: src/rust/ — native extension built with PyO3 + maturin
  • Tests: test/ — Python test suite (pytest)
  • Docs: docs/ — Sphinx documentation

The Rust extension is exposed as physicsnemo_curator._lib and imported in __init__.py. Type stubs live at src/physicsnemo_curator/_lib.pyi.

Toolchain

ToolPurposeInvocation
uvPython env & dependency managementuv sync, uv run
maturinRust/Python build bridge (PyO3)uv run maturin develop
ruffPython linting + formattinguv run ruff check, uv run ruff format
tyPython type checking (Astral)uv run ty check
pytestPython testing + coverageuv run pytest test/ --cov
pytest-benchmarkPython benchmarksuv run pytest --benchmark-only
ASVHistorical Python benchmarksuv run asv run, uv run asv publish
interrogateDocstring coverage (99% threshold)uv run interrogate
cargo fmtRust formattingcargo fmt --manifest-path src/rust/Cargo.toml
clippyRust lintingcargo clippy --manifest-path src/rust/Cargo.toml
cargo-nextestRust testingcargo nextest run --manifest-path src/rust/Cargo.toml
criterionRust benchmarkscargo bench --manifest-path src/rust/Cargo.toml
cargo-denyRust dependency auditingcargo deny --manifest-path src/rust/Cargo.toml check

Quick Reference

make install            # Install dev dependencies (uv sync --group dev)
make develop            # Build native extension (uv run maturin develop)
make setup-ci           # Install deps + pre-commit hooks

make format             # Format Python (ruff) + Rust (cargo fmt)
make lint               # Lint Python (ruff --fix) + Rust (clippy)
make typecheck          # Run ty type checker
make interrogate        # Check docstring coverage (99%)
make deny               # Audit Rust dependencies

make test               # Python tests with coverage
make test-rust          # Rust tests with nextest
make bench              # Python + Rust benchmarks
make asv-run            # ASV benchmarks on current commit
make asv-publish        # Build ASV HTML dashboard
make asv-preview        # Preview ASV dashboard locally

make check              # All checks (format + lint + typecheck + interrogate + deny)
make docs               # Build Sphinx documentation
make clean              # Remove build artifacts

Code Conventions

  • Python: Follow ruff defaults. Line length 120. NumPy-style docstrings.
  • Rust: Follow rustfmt defaults. All clippy warnings are errors (-D warnings).
  • Docstrings: 99% coverage enforced by interrogate (excludes test/, docs/).
  • Type checking: All Python code must pass ty check.
  • License: Apache-2.0. All source files must have SPDX license headers.
  • Tests: Go in test/ (Python) or src/rust/src/ as #[cfg(test)] (Rust).

Dependency Groups

Defined in pyproject.toml under [dependency-groups]:

  • dev: ruff, ty, pytest, pytest-cov, pytest-benchmark, asv, pre-commit, interrogate, maturin, pytest-asyncio
  • mesh: nvidia-physicsnemo, pyvista, pyarrow, torch, warp-lang, s3fs, tqdm, tensordict, jaxtyping, huggingface_hub
  • da: xarray, earth2studio, zarr, gcsfs
  • docs: sphinx, nvidia-sphinx-theme, myst-parser, sphinx-autoapi, sphinx-autodoc-typehints, etc.

Optional extras in [project.optional-dependencies]:

  • loky: joblib (for run_pipeline loky backend)
  • dask: dask (for run_pipeline dask backend)
  • prefect: prefect (for run_pipeline prefect backend)
  • dashboard: panel, panel-material-ui, holoviews, bokeh, pandas, pyarrow

Install with: uv sync --group dev or uv sync --group docs

Custom Tools Available

Claude tools in .claude/tools/:

ToolDescription
commitAlways use this to commit. Stages files, runs pre-commit hooks, enforces Conventional Commits format
ruffRun ruff linter (auto-fix by default)
ruff-formatRun ruff formatter
uvGeneral-purpose uv command runner
tyRun ty type checker
cargo-fmtRun cargo fmt on Rust code
cargo-clippyRun clippy on Rust code
cargo-nextestRun Rust tests with nextest
cargo-denyAudit Rust dependencies
pytestRun Python tests with scope (unit/integration/e2e), group (mesh/da/core), and coverage
asvRun ASV historical benchmarks
open-prOpen a PR from fork to NVIDIA/physicsnemo-curator using the repo PR template
greptile-reviewFetch Greptile AI review comments from a PR, sorted by priority, ready to address
gh-runFetch a GitHub Actions workflow run: lists recent runs or shows job details with failure logs
compress-imagesCompress JPEG/PNG images in a directory (configurable quality, optional resize, dry-run mode)

Commit Message Convention

All commits must use Conventional Commits format. The commit tool enforces this automatically — always use it instead of raw git commit.

<type>(<scope>): <short summary>

[optional body]
  • Types: feat, fix, refactor, test, docs, style, perf, ci, build, chore
  • Scope (optional): mesh, da, core, run, cli, rust
  • Summary: imperative mood, lowercase, no trailing period, max 72 chars
  • Pre-commit hooks are always run before the commit is created
  • NEVER use --no-verify to skip pre-commit hooks. Always resolve all hook failures before committing.

Skills Available

  • testing: Comprehensive guide for running Python and Rust tests, coverage, and benchmarks.
  • add-source: Guide for adding a new data source (discovery questions, implementation, testing, registration).
  • add-filter: Guide for adding a new filter (discovery questions, implementation patterns, generator semantics, testing, registration).
  • add-sink: Guide for adding a new sink (discovery, implementation, output naming, append/split, testing, registration).
  • curator-reviewer: PR review workflow with 8 passes (API conformance, correctness, licensing, quality gates, test coverage, performance, code quality, style). Produces P0/P1/P2/NIT report, optionally posts to PR.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.