Thank you for your interest in contributing to HEC-Commander. This project is an open-source suite of Jupyter Notebooks and tools for AI-assisted automation of HEC-RAS, HEC-HMS, and related water resources engineering workflows. It is maintained by CLB Engineering Corporation and licensed under the MIT License.
HEC-Commander was built with LLM assistance from the very beginning. We welcome contributions prepared the same way. Use whatever agent works for you -- Claude Code, Codex, Aider, Cursor, Gemini, GitHub Copilot, or anything else. The tool does not matter; the quality of the result does.
When an LLM agent reads the project rules, understands the conventions, and self-reviews its own output before you submit a PR, the maintainer's review burden drops significantly. That means faster merges for you and a healthier project for everyone.
Learn more about the philosophy behind this approach: LLM Forward Engineering
- Fork the repository on GitHub: gpt-cmdr/HEC-Commander
- Clone your fork locally:
git clone https://github.com/<your-username>/HEC-Commander.git cd HEC-Commander
- Create a branch for your contribution:
git checkout -b feat/my-contribution
- Launch your preferred LLM agent and point it at the repo. Have it read
CONTRIBUTING.md,CLAUDE.md/AGENTS.md, and any relevant notebook READMEs before writing code. - Make your changes, self-review with the checklist below, and open a PR.
We operate on a simple contract:
If your agent reads the project rules and self-reviews its output against the checklist below, your PR will be straightforward to review and fast to merge.
PRs that clearly followed the checklist get prioritized. PRs that ignore it may be sent back with a friendly "please re-run the checklist."
Before opening a PR, have your agent (or yourself) verify:
- First cell is a Markdown cell with an H1 title (
# Descriptive Title) - Notebook includes clear explanations between code cells (not just code dumps)
- All code cells execute without errors (Kernel > Restart & Run All)
- No hardcoded absolute paths -- use relative paths or parameterized variables
- Outputs are saved in the committed notebook (readers should see results)
- File size is reasonable (under 5 MB; large outputs should be images, not raw data)
- Functions have Google-style docstrings with Args, Returns, and Raises sections
- Uses
loggingmodule for status messages, not bareprint()statements (minor print usage in notebooks is acceptable for demonstration purposes) - Error handling is present for file I/O, network calls, and external tool invocations
- No secrets, credentials, or internal file paths committed
- Dependencies are documented (either in the notebook or in
requirements.txt)
- Uses example projects or clearly documents how to obtain test data
- No hardcoded paths to
C:\Users\...or similar machine-specific locations - HEC-RAS/HMS version requirements are stated
- Notebook explains the engineering workflow, not just the code
- Changes are scoped -- one logical change per PR
- Commit messages follow conventional format (see below)
- No unrelated formatting changes mixed in with functional changes
We welcome contributions in these areas:
- Notebooks: New automation workflows, analysis tools, or tutorials for HEC-RAS, HEC-HMS, DSS, or related tools
- Improvements to existing notebooks: Bug fixes, clarity improvements, updated dependencies
- Tools and utilities: Python scripts, helper functions, or CLI tools that support H&H workflows
- Documentation: README improvements, blog posts, setup guides, workflow explanations
- Bug fixes: Corrections to existing code, broken links, outdated instructions
- Example data: Small, shareable example datasets that make notebooks reproducible
- New dependencies without justification: If your contribution requires a new package, explain why in the PR description. Avoid heavy or obscure dependencies when a standard library solution exists.
- Breaking changes without discussion: If your change alters the behavior of an existing notebook or tool, open an issue first to discuss the approach.
- Proprietary or sensitive data: No project-specific data, client information, or files that cannot be freely redistributed.
- Low-effort submissions: Notebooks that are just raw LLM output without review, testing, or explanation do not meet the bar. The LLM is a tool -- you are the engineer.
Use Conventional Commits format:
feat(RAS-Commander): Add parallel execution notebook for 2D models
docs(Blog): Add post on AORC precipitation workflows
fix(HMS-Commander): Correct Jython path resolution on Windows 11
chore: Update requirements.txt with current dependency versions
Prefixes: feat, fix, docs, chore, refactor, test
Scope: Use the relevant folder name (RAS-Commander, HMS-Commander, DSS-Commander, Blog, ChatGPT Examples) or omit for repo-wide changes.
If an LLM agent wrote or substantially contributed to your changes, add a co-author line to your commit message:
feat(RAS-Commander): Add breach analysis automation notebook
Co-Authored-By: Claude <noreply@anthropic.com>
Use the appropriate attribution for the tool you used. This is not required, but it is appreciated for transparency.
HEC-Commander tools are used in flood modeling, dam safety, and floodplain management -- domains where errors can affect public safety. Contributions should reflect that seriousness:
- Validate results against known benchmarks when possible
- Document limitations and assumptions clearly
- Prefer conservative defaults over aggressive optimizations
- Include visual verification steps (plots, maps) so engineers can sanity-check results
- Be respectful and constructive in issues, PRs, and discussions
- Assume good faith -- contributors have varying levels of experience with both engineering and coding
- When reviewing others' work, explain the "why" behind requested changes
- Credit prior work and contributors appropriately
This project follows the LLM Forward approach to engineering:
- Professional responsibility first -- Public safety, ethics, and professional licensure remain paramount
- LLMs forward, not first -- Technology accelerates engineering insight without replacing professional judgment
- Multi-level verifiability -- HEC-RAS GUI review + visual outputs + code audit trails
- Human-in-the-loop -- Licensed professionals in responsible charge at all times
HEC-Commander/
├── RAS-Commander/ # HEC-RAS automation notebooks and tools
├── HMS-Commander/ # HEC-HMS automation notebooks and tools
├── DSS-Commander/ # DSS plotting and calibration statistics
├── Blog/ # Technical blog posts
├── ChatGPT Examples/ # GPT assistant examples and conversations
├── misc/ # Logos, presentations, supporting files
├── CLAUDE.md # Agent guidance for this repository
├── AGENTS.md # Agent guidance (same content)
└── CONTRIBUTING.md # This file
Place new notebooks in the appropriate subfolder. If your contribution doesn't fit an existing folder, propose a location in your PR description.
- Issues: Open an issue on GitHub for bugs, questions, or feature requests
- Discussions: Use GitHub Discussions for open-ended questions or ideas
- LLM Agents: Point your agent at the repo and ask it -- that is literally the point of this project
- Related projects:
- ras-commander -- Python library for HEC-RAS automation
- hms-commander -- Python library for HEC-HMS automation
Maintained by CLB Engineering Corporation. Licensed under MIT.