Claude Code Plugins

Community-maintained marketplace

Feedback

managing-hms-versions

@gpt-cmdr/hms-commander
1
0

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name managing-hms-versions
description Manages HEC-HMS version differences (3.x vs 4.x), handles Python 2/3 compatibility, detects HMS installations, and generates version-appropriate Jython scripts. Use when working with legacy HMS 3.x projects, upgrading models from 3.x to 4.x, testing across multiple HMS versions, or troubleshooting version-specific issues. Handles 32-bit vs 64-bit architecture differences, memory limits, and script syntax variations. Trigger keywords: HMS version, HMS 3.x, HMS 4.x, legacy, upgrade, Python 2 compatible, 32-bit, 64-bit, version detection, multi-version testing.

Managing HMS Versions

Quick Start

from hms_commander import HmsJython

# Auto-detect HMS installations
hms_exe = HmsJython.find_hms_executable()
print(f"Found: {hms_exe}")

# Generate version-appropriate script
is_3x = "(x86)" in str(hms_exe)  # 32-bit = HMS 3.x
script = HmsJython.generate_compute_script(
    project_path="project",
    run_name="Run 1",
    python2_compatible=is_3x  # Critical for 3.x!
)

# Execute with detected version
success, stdout, stderr = HmsJython.execute_script(script, hms_exe)

Primary Sources

Code: hms_commander/HmsJython.py - Version detection and script generation

Rules: .claude/rules/hec-hms/version-support.md - Complete differences

Examples: examples/01_multi_version_execution.ipynb - Multi-version workflow

Task Agent: hms_agents/update_3_to_4/ - Automated 3.x → 4.x upgrade

When to Use This Skill

  • Working with legacy HMS 3.x projects
  • Upgrading models from 3.x to 4.x
  • Testing across multiple HMS versions
  • Troubleshooting version-specific script errors
  • Setting up multi-version test environments
  • Understanding memory and architecture limitations

Supported Versions

Version Support Architecture Python Notes
HMS 4.4.1+ ✅ Full 64-bit Python 3 Recommended
HMS 3.3-3.5 ✅ Full 32-bit Python 2 Requires python2_compatible=True
HMS 4.0-4.3 64-bit Python 3 Legacy classpath not supported
HMS 3.0-3.2 32-bit Python 2 Untested

See: .claude/rules/hec-hms/version-support.md for complete table

Critical Differences

HMS 3.x (32-bit, Python 2)

Install Path: C:\Program Files (x86)\HEC\HEC-HMS\3.x\ **Max Memory**: ~1.3 GB **Java**: java/bin/java.exe Python: Jython 2.5 (Python 2 syntax)

Script Generation:

script = HmsJython.generate_compute_script(
    project_path=path,
    run_name=run,
    python2_compatible=True  # MUST be True for 3.x!
)

Python 2 Syntax:

print "Computing run"  # No parentheses

HMS 4.x (64-bit, Python 3)

Install Path: C:\Program Files\HEC\HEC-HMS\4.x\ **Max Memory**: 32+ GB **Java**: jre/bin/java.exe Python: Jython 2.7 (Python 3 syntax)

Script Generation:

script = HmsJython.generate_compute_script(
    project_path=path,
    run_name=run
    # python2_compatible=False (default)
)

Python 3 Syntax:

print(f"Computing {run_name}")  # Parentheses required

Core Capabilities

1. Version Detection

# Auto-detect from common install locations
hms_exe = HmsJython.find_hms_executable()

# Check if 3.x or 4.x
if "(x86)" in str(hms_exe):
    print("HMS 3.x detected (32-bit)")
    python2_compatible = True
else:
    print("HMS 4.x detected (64-bit)")
    python2_compatible = False

2. Version-Appropriate Script Generation

script = HmsJython.generate_compute_script(
    project_path=project_path,
    run_name=run_name,
    python2_compatible=python2_compatible
)

HmsJython handles syntax differences automatically.

3. Multi-Version Testing

from hms_commander import HmsExamples

# List installed versions
versions = HmsExamples.list_versions()
print(f"Found HMS versions: {versions}")

# Test across all versions
for version in versions:
    HmsExamples.extract_project("tifton", version=version)
    # Run tests for this version

See: examples/01_multi_version_execution.ipynb for complete workflow

4. Version Upgrade

Automated approach (Recommended):

# Use update_3_to_4 task agent
# See: hms_agents/update_3_to_4/README.md

Manual approach: Open in HMS 4.x GUI, save (converts file format)

Common Workflows

Workflow 1: Legacy 3.x Project

# 1. Detect HMS 3.x
hms_3x_path = r"C:\Program Files (x86)\HEC\HEC-HMS\3.5"

# 2. Generate Python 2 script
script = HmsJython.generate_compute_script(
    project_path=r"C:\Projects\old_project",
    run_name="Run 1",
    python2_compatible=True
)

# 3. Execute
success, stdout, stderr = HmsJython.execute_script(
    script_content=script,
    hms_exe_path=hms_3x_path
)

# 4. Check for Python 2 syntax errors
if "SyntaxError" in stderr:
    print("Forgot python2_compatible=True!")

Workflow 2: Multi-Version Testing

for version in ["3.5", "4.11", "4.13"]:
    # Extract version-specific example
    HmsExamples.extract_project("tifton", version=version)

    # Detect Python 2 vs 3
    python2 = version.startswith("3.")

    # Generate script
    script = HmsJython.generate_compute_script(
        f"tifton_{version}/tifton",
        "1970_simulation",
        python2_compatible=python2
    )

    # Execute
    hms_exe = HmsExamples.get_hms_exe(version)
    success, stdout, stderr = HmsJython.execute_script(script, hms_exe)

    print(f"HMS {version}: {'✅' if success else '❌'}")

Workflow 3: Upgrade 3.x to 4.x

Use the update_3_to_4 task agent:

# See: hms_agents/update_3_to_4/AGENT.md
from hms_agents.update_3_to_4 import VersionUpgrader

upgrader = VersionUpgrader(
    project_3x="path/to/hms3x/project",
    project_4x="path/to/hms4x/project"
)

verdict = upgrader.execute()
upgrader.export_modeling_log("UPGRADE_LOG.md")

Troubleshooting

Issue: Python 2 Syntax Error

Error: SyntaxError: invalid syntax

Cause: Forgot python2_compatible=True for HMS 3.x

Fix:

script = HmsJython.generate_compute_script(
    project_path=path,
    run_name=run,
    python2_compatible=True  # Add this!
)

Issue: Memory Error (HMS 3.x)

Error: OutOfMemoryError

Cause: HMS 3.x limited to ~1.3 GB (32-bit)

Fix: Upgrade to HMS 4.x (64-bit) for large models

Issue: HMS Not Found

Error: FileNotFoundError: HMS executable not found

Fix:

# Specify path manually
hms_exe = r"C:\Program Files\HEC\HEC-HMS\4.11\HEC-HMS.cmd"
HmsJython.execute_script(script, hms_exe_path=hms_exe)

Reference Files

  • reference/hms-3x-vs-4x.md - Complete differences table
  • reference/python2-compatibility.md - Script syntax differences
  • examples/legacy-projects.md - HMS 3.x workflow examples

Related Skills

  • executing-hms-runs - Uses version detection for execution
  • cloning-hms-components - Clone before upgrading