Compile User Map
Produce the requested outcome without exposing internal stages.
Follow ../../references/interaction-contract.md.
Process
- Read
references/request.md and the interaction contract together. Use supplied
skill, source, and case paths directly; a full plugin or case-directory inventory
is unnecessary for a supported request.
- Select an available Python 3.11+ executable. PDF input also requires
pdfplumber;
if it is unavailable, report the missing dependency and stop instead of installing
software during the workflow. Structured input needs only the standard library.
- Put the OEM source, measurement intent, optional targets, and any resume input in
one request file. For a curated intent, follow the bounded source-inspection and
exact-match procedure in
references/request.md; do not assume that prose alone
selects points.
- Run
<selected-python> <skill-dir>/scripts/run.py --request <request.json> --output <case-directory>.
- Inspect the result plus the user-map holds and target statuses against the user's requested outcome.
offline-complete is valid only when source coverage is complete, selected PDF fields have confirmed source evidence, and selected points have no blocking holds. Return the state, elapsed time, artifact paths, exclusions, and one useful next step; never treat next_action: none alone as proof of completion.
If a new case awaits selection, the result and grouped selection packet are the
relevant handoff evidence. Do not reread the full OEM map or run a second integrity
inspection of the just-created case unless those artifacts expose a discrepancy.
- When the result needs a decision, present its complete grouped packet once, encode
the reply in a new request, and rerun the same case. Do not invent fields or bypass
case, source, packet, or artifact hashes.
On resume, run
scripts/inspect_case.py <case-directory> first. It verifies the
checkpoint and every indexed artifact without changing files, and returns the
current case hash and packet. Use the resume example in references/request.md;
its selection preparation helper copies verified bindings while requiring the
actual chosen IDs, then the normal wrapper applies the reply.
Implementation-code inspection is unnecessary for a normal supported request.
- Continue this skill automatically for safe internal stages. When a typed decision,
physical read, or target choice is required, recommend continuing this skill with
the exact case and input. Do not expose internal specialist-stage choreography.
Output files
Open these first:
output/user-map.md - The short human-readable map organized by measurement group.
output/user-map.csv - The spreadsheet-ready map for people and common tools.
output/user-map.json - The same map in the complete machine-readable format.
Normally leave these alone:
targets/ - Open this folder only when you requested files for Node-RED, Modpoll (BETA), or ModScan (BETA). It contains the files to import into that tool.
compile-result.json - the agent reads this receipt to tell whether the run finished or needs something from you. You normally do not need to open it.
case.json - This checkpoint lets the agent continue the same job later without starting over. Keep it until the job is finished, and do not edit it.
artifacts/ and control/ - These let the agent verify and resume the job. Keep them for troubleshooting; ignore them during normal use.
Completion requires compile-result.json plus the complete offline user-map bundle.
Requested targets may remain independently held without invalidating completed outputs.
A partial result still contains useful map files. Report those files and the one correction needed. Ask for input only when the state is awaiting-source-decision, awaiting-selection-decision, awaiting-binding, awaiting-physical-read, or awaiting-byte-order-decision. A corrected source starts a new case; do not describe it as a resume.
Stop
- Never perform a live device read.
- Stop for unsupported writes, broadcasts, scans, credentials, and polling.
- Do not invent fields or bypass case, source, packet, or artifact hashes.
- Do not expose internal specialist-stage choreography.
Finish
- The requested offline bundle is usable: say
Done, name its human, JSON, and CSV
artifacts, then offer target generation only as an optional goal.
- The current case can advance safely: continue it without a handoff.
- A decision or external action blocks the requested outcome: recommend continuing
compile-user-map with the case-bound packet or probe and invite proceed.
- A requested target is held while the offline map is usable: report both facts and
recommend the one action that unlocks that target.
Never perform a live device read. Return a case-bound probe when physical evidence is
required. Keep unsupported writes, broadcasts, scans, credentials, and polling stopped.
1---2name: compile-user-map3description: Compile an OEM Modbus PDF or structured register map plus measurement intent into an organized user map, JSON, CSV, and optional target outputs in one resumable run. Use when the user wants an organized user map or offline outputs from an OEM source rather than a specialist review chain.4license: Apache-2.05---67# Compile User Map89Produce the requested outcome without exposing internal stages.1011Follow `../../references/interaction-contract.md`.1213## Process14151. Read `references/request.md` and the interaction contract together. Use supplied16 skill, source, and case paths directly; a full plugin or case-directory inventory17 is unnecessary for a supported request.182. Select an available Python 3.11+ executable. PDF input also requires `pdfplumber`;19 if it is unavailable, report the missing dependency and stop instead of installing20 software during the workflow. Structured input needs only the standard library.213. Put the OEM source, measurement intent, optional targets, and any resume input in22 one request file. For a curated intent, follow the bounded source-inspection and23 exact-match procedure in `references/request.md`; do not assume that prose alone24 selects points.254. Run `<selected-python> <skill-dir>/scripts/run.py --request <request.json> --output <case-directory>`.265. Inspect the result plus the user-map holds and target statuses against the user's requested outcome. `offline-complete` is valid only when source coverage is complete, selected PDF fields have confirmed source evidence, and selected points have no blocking holds. Return the state, elapsed time, artifact paths, exclusions, and one useful next step; never treat `next_action: none` alone as proof of completion.27 If a new case awaits selection, the result and grouped selection packet are the28 relevant handoff evidence. Do not reread the full OEM map or run a second integrity29 inspection of the just-created case unless those artifacts expose a discrepancy.306. When the result needs a decision, present its complete grouped packet once, encode31 the reply in a new request, and rerun the same case. Do not invent fields or bypass32 case, source, packet, or artifact hashes.33 On resume, run `scripts/inspect_case.py <case-directory>` first. It verifies the34 checkpoint and every indexed artifact without changing files, and returns the35 current case hash and packet. Use the resume example in `references/request.md`;36 its selection preparation helper copies verified bindings while requiring the37 actual chosen IDs, then the normal wrapper applies the reply.38 Implementation-code inspection is unnecessary for a normal supported request.397. Continue this skill automatically for safe internal stages. When a typed decision,40 physical read, or target choice is required, recommend continuing this skill with41 the exact case and input. Do not expose internal specialist-stage choreography.4243## Output files4445Open these first:4647- `output/user-map.md` - The short human-readable map organized by measurement group.48- `output/user-map.csv` - The spreadsheet-ready map for people and common tools.49- `output/user-map.json` - The same map in the complete machine-readable format.5051Normally leave these alone:5253- `targets/` - Open this folder only when you requested files for Node-RED, Modpoll (BETA), or ModScan (BETA). It contains the files to import into that tool.54- `compile-result.json` - the agent reads this receipt to tell whether the run finished or needs something from you. You normally do not need to open it.55- `case.json` - This checkpoint lets the agent continue the same job later without starting over. Keep it until the job is finished, and do not edit it.56- `artifacts/` and `control/` - These let the agent verify and resume the job. Keep them for troubleshooting; ignore them during normal use.5758Completion requires `compile-result.json` plus the complete offline user-map bundle.59Requested targets may remain independently held without invalidating completed outputs.60A `partial` result still contains useful map files. Report those files and the one correction needed. Ask for input only when the state is `awaiting-source-decision`, `awaiting-selection-decision`, `awaiting-binding`, `awaiting-physical-read`, or `awaiting-byte-order-decision`. A corrected source starts a new case; do not describe it as a resume.6162## Stop6364- Never perform a live device read.65- Stop for unsupported writes, broadcasts, scans, credentials, and polling.66- Do not invent fields or bypass case, source, packet, or artifact hashes.67- Do not expose internal specialist-stage choreography.6869## Finish7071- The requested offline bundle is usable: say `Done`, name its human, JSON, and CSV72 artifacts, then offer target generation only as an optional goal.73- The current case can advance safely: continue it without a handoff.74- A decision or external action blocks the requested outcome: recommend continuing75 `compile-user-map` with the case-bound packet or probe and invite `proceed`.76- A requested target is held while the offline map is usable: report both facts and77 recommend the one action that unlocks that target.7879Never perform a live device read. Return a case-bound probe when physical evidence is80required. Keep unsupported writes, broadcasts, scans, credentials, and polling stopped.