# Normalize Map

> Normalize Modbus candidates into explicit offsets, areas, units, datatypes, widths, access, and byte-order states. Use when candidate rows exist and need canonical engineering fields, holds, and source-preserving normalization.

- Skill: `studioxvii/normalize-map` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add studioxvii/normalize-map`
- Raw SKILL.md: https://api.skillmd.com/api/skills/studioxvii/normalize-map/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: studioxvii (https://skillmd.com/u/studioxvii)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/studioxvii/normalize-map

---


# Normalize Map

Convert only fields supported by source evidence or explicit confirmation.

Follow `../../references/interaction-contract.md`.

## Process

1. Run `python3 <skill-dir>/scripts/run.py --input <candidate.json> --output <normalized.json>`.
2. Validate all deterministic conversions automatically.
3. Group remaining assumptions and holds by shared root cause and affected scope.
4. Ask once for all independent blocking engineering choices, then rerun once.
   An explicitly confirmed `--defaults` address convention fills absent or blank
   conventions across that scope; it does not override a nonblank source claim.
   `--defaults` takes a JSON file, for example
   `{"address_convention": "protocol-offset"}` after that convention is confirmed.
   Rerun with `--defaults <confirmed-defaults.json>`. To refresh the normalized output
   you created for this same scope, also pass `--overwrite`; otherwise choose a new
   output path. Never overwrite the source candidates. Check the command succeeded
   before treating an existing output as the corrected result.

## Output files

- `normalized.json` - Use this canonical map for validation and later steps. It keeps source values, resolved engineering fields, warnings, and grouped unresolved holds together.

Completion requires every source field to be normalized, held, or rejected with
evidence; clean deterministic normalization needs no human approval.

## Stop

- Do not guess unknown datatype, access, bit order, or byte order.
- Keep the raw source address separate from protocol offset.
- Stop for writes, broadcasts, discovery, or unbounded polling.

## Handoff

- Normalization completes: suggest `check-map`.
- The user requests a known map-wide address conversion: suggest `remap-addresses`.

Keep the raw source address separate from protocol offset. Preserve unknown datatype, access, and byte order as unresolved.

