Skip to content

[New Skill]: data_engineering/unit_normalizer — structured unit normalization for agent pipelines #167

Description

@rosspeili

Skill Name

data_engineering/unit_normalizer

What should this skill do?

Parent discussion: supersede the basic utilities/unit_converter proposal in PR #166.

Problem: LLMs handle one-off unit math fine, but agents fail when normalizing mixed units across structured records (JSON rows, CSV columns, telemetry batches) or parsing compound/ambiguous unit strings under tool constraints.

Proposed capability (v1):

  • action: normalize — convert a single value with explicit from/to units (subset of PR feat: add utilities/unit_converter skill #166, kept minimal)
  • action: normalize_batch — convert a list of records or a column map; return per-row results + errors
  • action: parse_quantity — parse compound strings (e.g. 5 ft 11 in, 100 km/h) into canonical SI value + unit metadata
  • Structured errors only; no network; deterministic factors

Out of scope for v1:

  • Live FX/crypto rates (separate finance skill if needed)
  • New top-level category utilities/ — use data_engineering/

Success criteria:

  • Solves something agents reliably get wrong (batch + parse + audit trail), not grade-school single conversions alone
  • Full Skillware bundle: manifest, instructions, card.json, test_skill.py, init.py files, docs/skills page, README catalog row, CHANGELOG
  • Issue approved before PR opened

Ideal Inputs & Outputs

Input (normalize_batch):
{
"action": "normalize_batch",
"records": [
{"id": "a", "value": 100, "from_unit": "km", "to_unit": "miles"},
{"id": "b", "value": 70, "from_unit": "kg", "to_unit": "lbs"}
]
}

Output:
{
"status": "ready",
"results": [
{"id": "a", "converted_value": 62.137119, "from_unit": "km", "to_unit": "miles"},
{"id": "b", "converted_value": 154.323584, "from_unit": "kg", "to_unit": "lbs"}
],
"errors": []
}

Input (parse_quantity):
{"action": "parse_quantity", "text": "5 ft 11 in", "target_unit": "m"}

Output:
{"status": "ready", "original_text": "5 ft 11 in", "value": 1.8034, "unit": "m"}

Targeted Models (if applicable)

Model Agnostic (All)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestskill requestRequest for a new capability to be added.
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions