Claude-skill-registry investigating-hms-internals
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/investigating-hms-internals" ~/.claude/skills/majiayu000-claude-skill-registry-investigating-hms-internals && rm -rf "$T"
skills/data/investigating-hms-internals/SKILL.mdInvestigating 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:
- 5-minute guideQUICK_START.md
- Comprehensive documentationAGENT.md
- Curated API referencesknowledge/
- Key decompiled classesreference/
- Decompilation utilities (cfr.jar)tools/
- Usage workflowsexamples/
This agent is self-contained with all necessary reference data and tools.
When to Use This Skill
✅ Use When
-
Checking API Existence
- "Does JythonHms have method X?"
- "What parameters does SetLossRateValue accept?"
- "Is there a method to set time window?"
-
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?"
-
Understanding Behavior
- "Why does this HMS call fail?"
- "What error codes does HMS use?"
- "How does HMS execute scripts?"
-
Discovering Features
- "Are there undocumented JythonHms methods?"
- "What CLI flags does HMS support?"
- "Does HMS have an RMI command server?"
-
Validating Automation
- "Can I automate optimization via Jython?"
- "How should I structure my script?"
- "What's the correct method signature?"
❌ Don't Use When
-
Official Documentation Query
- Use hms_doc_query agent instead
- hms_doc_query searches User's Manual, Technical Reference
-
hms-commander API Questions
- Read hms-commander docstrings
- Check examples/ notebooks
- See hms-commander documentation
-
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
,-infoCommandServer- 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
- Entry point, CLI parsingHMS_3.3/hms/Hms.java
- Scripting API (3.x)HMS_3.3/hms/model/JythonHms.java
- GIS supportHMS_3.3/hec/map/hms/*.java
HMS 4.13
- Entry point, CLI parsingHMS_4.13/hms/Hms.java
- Scripting API (4.x)HMS_4.13/hms/model/JythonHms.java
- RMI serverHMS_4.13/hms/command/HmsCommandServerImpl.java
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:
- Filter classes to decompile--classfilter <pattern>
- Output directory for decompiled classes--outputdir <dir>
Common Use Cases
Use Case 1: Query JythonHms API
Example: Check if
SetTimeWindow() exists
Steps:
- Open
knowledge/JYTHON_HMS_API.md - Search for "SetTimeWindow"
- Result: ✅ Found
See:
examples/query_jython_api.md
Use Case 2: Check Version Compatibility
Example: Verify HMS 3.3 supports Jython
Steps:
- Open
knowledge/HMS_3x_SUPPORT.md - Review "Supported Versions"
- 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:
- Check if already in agent reference/
- If not, use tools/cfr.jar to decompile
- Review decompiled source
- 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:
- Use cfr.jar to decompile the class
- Analyze the decompiled source
- Add to agent reference/ if high-value
- 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:
- Open JYTHON_HMS_API.md
- Search for method
- Review signature and parameters
- 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:
- Identify target class
- Check if already decompiled
- Decompile using tools
- Analyze findings
- 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
files firstknowledge/ - If not found, checked agent
classesreference/ - 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:
| Question | File |
|---|---|
| "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