Skip to content
investigating-hms-internals logo

Investigating HMS Internals

investigating-hms-internals

Investigates HEC-HMS internals through decompiled Java classes. Provides JythonHms API reference, CLI options, version-specific differences (3.x vs 4.x), and guides on-demand decompilation for new discoveries. Use when debugging HMS behavior, discovering undocumented features, understanding versi...

SKILL.md

Full skill instructions

Investigating HMS Internals

Purpose: Understand HEC-HMS internal implementation through decompiled Java classes to support hms-commander development and debugging.


Quick Start

Check JythonHms Method

Q: "Does HMS support SetTimeWindow()?"
A: See hms_agents/​hms_decompiler/​knowledge/​JYTHON_HMS_API.md

Check Version Compatibility

Q: "Does HMS 3.3 support Jython?"
A: See hms_agents/​hms_decompiler/​knowledge/​HMS_3x_SUPPORT.md
→ YES! Discovered via decompilation

Decompile New Class

cd hms_agents/​hms_decompiler/​tools
decompile.bat "C:\...\hms.jar" "hms.model.ClassName" output

Primary Sources

Production Agent

Location: hms_agents/​hms_decompiler/

Quick access:

  • QUICK_START.md - 5-minute guide
  • AGENT.md - Comprehensive documentation
  • knowledge/ - Curated API references
  • reference/ - Key decompiled classes
  • tools/ - Decompilation utilities (cfr.jar)
  • examples/ - Usage workflows

This agent is self-contained with all necessary reference data and tools.


When to Use This Skill

✅ Use When

  1. Checking API Existence

    • "Does JythonHms have method X?"
    • "What parameters does SetLossRateValue accept?"
    • "Is there a method to set time window?"
  2. Version Compatibility

    • "Does HMS 3.x support Jython?"
    • "What's different between HMS 3.x and 4.x?"
    • "Will this API work in HMS 3.5?"
  3. Understanding Behavior

    • "Why does this HMS call fail?"
    • "What error codes does HMS use?"
    • "How does HMS execute scripts?"
  4. Discovering Features

    • "Are there undocumented JythonHms methods?"
    • "What CLI flags does HMS support?"
    • "Does HMS have an RMI command server?"
  5. Validating Automation

    • "Can I automate optimization via Jython?"
    • "How should I structure my script?"
    • "What's the correct method signature?"

❌ Don't Use When

  1. Official Documentation Query

    • Use hms_doc_query agent instead
    • hms_doc_query searches User's Manual, Technical Reference
  2. hms-commander API Questions

    • Read hms-commander docstrings
    • Check examples/ notebooks
    • See hms-commander documentation
  3. Project File Parsing

    • Use parsing-basin-models skill
    • Use HmsBasin, HmsMet, HmsControl classes

Knowledge Files

1. JYTHON_HMS_API.md

Location: hms_agents/​hms_decompiler/​knowledge/​JYTHON_HMS_API.md

Contains:

  • Complete JythonHms method reference (HMS 4.x)
  • Method signatures, parameters, exceptions
  • Examples and usage notes
  • Internal implementation details
  • Deprecated/​removed methods

Example lookup:

Q: "What parameters does SetLossRateValue accept?"
A: SetLossRateValue(elementName, parameterName, value)
   - elementName (String): Subbasin name
   - parameterName (String): e.g., "Curve Number"
   - value (double): Parameter value

2. HMS_3x_SUPPORT.md

Location: hms_agents/​hms_decompiler/​knowledge/​HMS_3x_SUPPORT.md

Contains:

  • HMS 3.x Jython support discovery (✅ YES!)
  • Python 2 vs 3 syntax differences
  • API method availability (3.x vs 4.x)
  • Example scripts for both versions
  • Test results from hms-commander

Key finding:

HMS 3.3+ supports Jython scripting (undocumented)!
Requires Python 2 syntax: print "text" (not print("text"))
Use Compute() instead of ComputeRun()

3. HMS_CLI_OPTIONS.md

Location: hms_agents/​hms_decompiler/​knowledge/​HMS_CLI_OPTIONS.md

Contains:

  • Complete CLI arguments discovered via decompilation
  • -script, -lite, -debug, -info, CommandServer
  • Version compatibility (which flags in which HMS versions)
  • Usage examples

Example:

Q: "How do I run HMS without GUI?"
A: HEC-HMS.cmd -lite -script path/​to/​script.py

Reference Classes

Location: hms_agents/​hms_decompiler/​reference/

HMS 3.3

  • HMS_3.3/​hms/​Hms.java - Entry point, CLI parsing
  • HMS_3.3/​hms/​model/​JythonHms.java - Scripting API (3.x)
  • HMS_3.3/​hec/​map/​hms/​*.java - GIS support

HMS 4.13

  • HMS_4.13/​hms/​Hms.java - Entry point, CLI parsing
  • HMS_4.13/​hms/​model/​JythonHms.java - Scripting API (4.x)
  • HMS_4.13/​hms/​command/​HmsCommandServerImpl.java - RMI server

Use: Review implementation details for specific methods


Tools

CFR Decompiler

Location: hms_agents/​hms_decompiler/​tools/​cfr.jar

Usage:

cd hms_agents/​hms_decompiler/​tools
java -jar cfr.jar "C:\Program Files\HEC\HEC-HMS\4.13\java\hms.jar" --classfilter "hms.model.ClassName" --outputdir output

Options:

  • --classfilter <pattern> - Filter classes to decompile
  • --outputdir <dir> - Output directory for decompiled classes

Common Use Cases

Use Case 1: Query JythonHms API

Example: Check if SetTimeWindow() exists

Steps:

  1. Open knowledge/​JYTHON_HMS_API.md
  2. Search for "SetTimeWindow"
  3. Result: ✅ Found

See: examples/​query_jython_api.md

Use Case 2: Check Version Compatibility

Example: Verify HMS 3.3 supports Jython

Steps:

  1. Open knowledge/​HMS_3x_SUPPORT.md
  2. Review "Supported Versions"
  3. Result: ✅ HMS 3.3+ supports Jython (Python 2 syntax required)

See: examples/​version_compatibility.md

Use Case 3: Decompile New Class

Example: Investigate how optimization works

Steps:

  1. Check if already in agent reference/
  2. If not, use tools/​cfr.jar to decompile
  3. Review decompiled source
  4. Document findings if high-value

See: examples/​decompile_new_class.md


Integration with hms-commander

How This Skill Supports Development

HmsJython.py implementation:

  • Uses JythonHms API reference from JYTHON_HMS_API.md
  • Implements python2_compatible flag based on HMS_3x_SUPPORT.md
  • Method signatures validated against decompiled source

HmsCmdr.py execution:

  • CLI options discovered from HMS_CLI_OPTIONS.md
  • Version detection patterns from decompiled Hms.java
  • Direct Java invocation (bypasses batch file bugs)

Error handling:

  • Error codes from decompiled source
  • Exception handling patterns from JythonHms.java

On-Demand Decompilation

The agent provides tools for decompiling any HMS class as needed:

Included:

  • CFR decompiler (tools/​cfr.jar)
  • Essential reference classes (reference/)
  • Curated knowledge files (knowledge/)

For New Classes:

  1. Use cfr.jar to decompile the class
  2. Analyze the decompiled source
  3. Add to agent reference/ if high-value
  4. Document findings in knowledge/ if commonly needed

This agent contains all necessary tools for HMS internal investigation.


Examples

Example 1: query_jython_api.md

Demonstrates: Checking if JythonHms method exists and understanding parameters

Workflow:

  1. Open JYTHON_HMS_API.md
  2. Search for method
  3. Review signature and parameters
  4. Check hms-commander integration status

Example 2: version_compatibility.md

Demonstrates: Understanding HMS 3.x vs 4.x differences

Key findings:

  • HMS 3.x DOES support Jython (Python 2)
  • API differences (Compute vs ComputeRun)
  • Architecture (32-bit vs 64-bit)

Example 3: decompile_new_class.md

Demonstrates: Complete workflow from question to decompilation to documentation

Steps:

  1. Identify target class
  2. Check if already decompiled
  3. Decompile using tools
  4. Analyze findings
  5. Document in library

Skill Workflow

Standard Investigation Flow

User Question
    ↓
Check Agent Knowledge
    ├─ JYTHON_HMS_API.md → Found? → Answer
    ├─ HMS_3x_SUPPORT.md → Found? → Answer
    └─ HMS_CLI_OPTIONS.md → Found? → Answer
    ↓ (Not Found)
Check Library INDEX.md
    ├─ Class listed? → Read decompiled source → Answer
    └─ Not listed? → Decompile on-demand → Document → Answer

Adding New Knowledge

Decompile Class (tools/​cfr.jar)
    ↓
Analyze Source
    ↓
High-Value Finding?
    ├─ YES → Add to agent reference/
    └─ NO → Keep in local output/
    ↓
Update AGENT.md if commonly needed
    ↓
Document in knowledge/ if API-relevant

Limitations

What This Skill CAN Do

  • ✅ Provide JythonHms API reference
  • ✅ Show version differences (3.x vs 4.x)
  • ✅ List CLI options
  • ✅ Decompile any HMS class on-demand using included tools
  • ✅ Explain HMS internal behavior

What This Skill CANNOT Do

  • ❌ Replace official HMS documentation (use hms_doc_query)
  • ❌ Modify HMS source code
  • ❌ Guarantee 100% decompilation accuracy
  • ❌ Explain "why" design decisions were made (only "how" implementation works)

Related Skills & Agents

hms_doc_query Agent

Purpose: Search official HMS documentation

Complementary use:

  • hms_doc_query → What's documented
  • investigating-hms-internals → How it works internally

update_3_to_4 Agent

Purpose: Migrate HMS projects from 3.x to 4.x

Uses: HMS_3x_SUPPORT.md for version differences

managing-hms-versions Skill

Purpose: Detect and work with multiple HMS versions

Uses: Version detection patterns from decompilation


Quality Checklist

Before answering user questions:

  • Checked agent knowledge/ files first
  • If not found, checked agent reference/ classes
  • Decompiled on-demand using tools/​cfr.jar if necessary
  • Documented findings in agent if high-value
  • Pointed to primary sources (not duplicated content)
  • Clarified limitations of decompiled code

Quick Reference

Common questions → Files:

QuestionFile
"What JythonHms methods exist?"knowledge/​JYTHON_HMS_API.md
"Does HMS 3.x support Jython?"knowledge/​HMS_3x_SUPPORT.md
"What CLI options are available?"knowledge/​HMS_CLI_OPTIONS.md
"How do I decompile a class?"Use tools/​cfr.jar directly
"What classes are available?"reference/ directory + on-demand decompilation

Status: Production skill Version: 1.0 Created: 2025-12-12 Agent: hms_decompiler

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View