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 request.skill requestRequest for a new capability to be added to the registry.

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions