agentsclimarketplace

Swmm design review

Skill Zhonghao1995/agentic-swmm-workflow/skills/swmm-design-review

Score a completed SWMM run against a configurable YAML rulebook of design checks — GB50014-style standards for real catchments, or the reference-free physical-plausibility rulebook for synthesized networks. Reads the run's existing manifest.json / model.rpt / model.inp and never re-runs SWMM. Use it post-run for compliance or plausibility review; continuity gating stays with postflight.From its SKILL.md

Install
npx -y skills add Zhonghao1995/agentic-swmm-workflow --skill swmm-design-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 7 commands, including `python3 skills/swmm-design-review/scripts/design_review.py --run-dir <path>` and 6 more.

SKILL.md

6.4 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

swmm-design-review — Design Review / Code-Compliance Checker

What this skill does

Evaluates a completed SWMM run against a configurable rulebook of design checks. Reads the run's existing artifacts (manifest.json + model.rpt + model.inp) — SWMM is never re-run. Classifies each rule as pass, fail, warn, or needs-data and writes 11_review/design_review.json + 11_review/design_review.md into the run directory (canonical per ADR-0004; the underlying script's own bare default is the legacy 09_review/ — see CLI usage below).

This skill is decision-support only. It never certifies regulatory compliance.


CLI usage

# Standalone script
python3 skills/swmm-design-review/scripts/design_review.py \
    --run-dir <path>         # required: directory with model.rpt, manifest.json, model.inp
    [--rpt <path>]           # override: explicit model.rpt path
    [--inp <path>]           # override: explicit model.inp path
    [--manifest <path>]      # override: explicit manifest.json path
    [--rules <rulebook>]     # override rulebook YAML/JSON (repeatable for multiple books)
    [--out-dir <dir>]        # bare-script default: <run-dir>/09_review/ (legacy)
    [--no-inp]               # skip INP-derived metrics (slope, diameter)

# CLI verb (registered in aiswmm CLI) — always passes --out-dir explicitly,
# defaulting to the canonical <run-dir>/11_review/ (ADR-0004)
aiswmm review --run-dir <path> [--rules <rulebook.yaml>] [--out-dir <dir>]

Exit codes: 0 = pass/warn/needs-data only; 1 = any FAIL; 2 = script/input error.

Agent tool: review_run

Registered in AgentToolRegistry. Direct handler (not MCP-routed) — writes 11_review/design_review.json + 11_review/design_review.md into the run dir (canonical per ADR-0004).

review_run(run_dir="runs/my_run/")
review_run(run_dir="runs/my_run/", rules="skills/swmm-design-review/rulebooks/gb50014_template.yaml")

is_read_only=False — QUICK profile prompts the user (tool writes files).

Executed example

python3 skills/swmm-design-review/scripts/design_review.py \
    --run-dir tests/fixtures/design_review \
    --manifest tests/fixtures/design_review/sample_manifest.json \
    --rpt tests/fixtures/design_review/sample_mini.rpt \
    --inp tests/fixtures/design_review/sample_mini.inp \
    --rules tests/fixtures/design_review/sample_rules.yaml \
    --out-dir /tmp/design_review_out
# Exit 1 = FAIL (1 pass, 1 fail, 0 warn, 1 needs-data)
# Report: /tmp/design_review_out/design_review.md

Return-period adequacy workflow

To check return-period adequacy (RETURN_PERIOD_ADEQUACY rule):

  1. generate_design_storm with the target return period P.
  2. build_inp to integrate the design storm into the model.
  3. run_swmm_inp --storm-return-period-yr P to propagate provenance to manifest.
  4. design_review.py --run-dir <path> — extractor reads manifest.metadata.storm_return_period_yr.

Until step 3 is wired (separate PR), RETURN_PERIOD_ADEQUACY returns needs-data.


Metrics available today (PR1)

MetricSource
run.peak_flowmanifest.json
run.continuity_error_pctmanifest.json
link.max_velocityrpt Link Flow Summary
link.max_full_flow_ratiorpt Link Flow Summary
link.max_full_depth_ratiorpt Link Flow Summary
link.peak_flowrpt Link Flow Summary
outfall.max_flowrpt Outfall Loading Summary
node.flow_balance_error_pctrpt Node Inflow Summary
conduit.slope_pctINP [CONDUITS] + [JUNCTIONS]/[OUTFALLS] join
conduit.diameter_mINP [XSECTIONS] GEOM1 (CIRCULAR only)
conduit.roughnessINP [CONDUITS]

Metrics returning needs-data until PR2: node.surcharge_hours, node.max_depth_m, node.flooding_hours, node.flooding_volume_m3, junction.freeboard_m, run.return_period_yr.


Output files

  • <run-dir>/11_review/design_review.json — machine-readable results (schema_version 1.0)
  • <run-dir>/11_review/design_review.md — human report with disclaimer and sign-off table

(Canonical location per ADR-0004. Runs from before that migration, or the bare script invoked without --out-dir, carry these under the legacy 09_review/.)


What the agent MUST say

When presenting review results, the agent must:

  1. Lead with the overall status (PASS / FAIL / WARN / NEEDS-DATA).
  2. State the disclaimer: "Findings are decision-support only and do NOT constitute compliance with any drainage standard."
  3. Invite the engineer to inspect any FAIL or NEEDS-DATA finding before proceeding.
  4. List NEEDS-DATA rules prominently with the reason they cannot produce a result.

What the agent MUST NOT say

  • Do NOT say "the design is compliant with GB 50014" or any equivalent.
  • Do NOT say "no issues found" when there are NEEDS-DATA rules — those are not passes.
  • Do NOT paraphrase away the disclaimer.
  • Do NOT imply the thresholds are authoritative — all template thresholds carry verify: true precisely because they must be confirmed by the user.

Custom rulebooks

Write a YAML file following the schema in rulebooks/gb50014_template.yaml. Every rule must have:

  • id (SCREAMING_SNAKE_CASE, unique)
  • metric (named extractor from the table above)
  • operator (lte / lt / gte / gt / eq / neq / between)
  • threshold (float, SI) or threshold_low + threshold_high for between
  • units: SI
  • severity: FAIL or severity: WARN
  • citation — clause reference or "TODO: cite local standard"
  • verify: true unless you have personally confirmed the threshold against the applicable edition of the standard

Honesty rule: a rule MUST NOT have verify: false while citation is still "TODO: cite local standard". The test suite enforces this invariant.


Part of

Issue #249 capability backlog — design-review / code-compliance checker. PR1: extractor layer + evaluator + rulebook + reports + tests. PR2 (upcoming): ToolSpec wiring, CLI verb, rpt_summary extensions.

What ships with it: 3 files

58.2 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.