units
Unit-safe engineering calculations with provenance tracking, dimensional consistency verification, and unit conversion across SI, inch, and metric systems.
Best use case
units is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Unit-safe engineering calculations with provenance tracking, dimensional consistency verification, and unit conversion across SI, inch, and metric systems.
Teams using units should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/units/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How units Compares
| Feature / Agent | units | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Unit-safe engineering calculations with provenance tracking, dimensional consistency verification, and unit conversion across SI, inch, and metric systems.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# /units — Engineering Unit Tracking
Unit-safe engineering calculations with provenance tracking across the workspace-hub ecosystem.
## Usage
```
/units [subcommand]
```
## Subcommands
| Subcommand | Description |
|------------|-------------|
| `wrap <file>` | Analyze a Python file and suggest TrackedQuantity wrapping for raw numerics |
| `audit <file>` | Generate a CalculationAuditLog from an instrumented script |
| `check <file>` | Verify dimensional consistency across a calculation chain |
| `convert <value> <from> <to>` | Quick unit conversion with provenance |
| `systems` | List available unit systems (SI, inch, metric_engineering) |
| `registry` | Show all registered units including custom energy/offshore units |
## Quick Reference
### Core API (assetutilities.units)
```python
from assetutilities.units import (
TrackedQuantity, # Unit-tracked value with provenance
CalculationAuditLog, # Aggregate audit trail
UnitMismatchError, # Dimension mismatch exception
UnitSystemPolicy, # Project-wide unit enforcement
unit_checked, # Decorator for function-level validation
get_registry, # Singleton pint UnitRegistry
)
```
### TrackedQuantity
```python
# Create with source provenance
depth = TrackedQuantity(1300.0, "m", source="gulf_of_mexico")
# Convert (provenance recorded automatically)
depth_ft = depth.to("ft")
# Dimension analysis
depth.dimensions # "[length]"
depth.is_compatible("ft") # True
depth.is_compatible("kg") # False
depth.check_dimensions("[length]") # passes or raises ValueError
# Arithmetic (provenance merged from operands)
pressure = rho * g * depth # compound units handled by pint
# Serialize
data = depth.to_dict()
restored = TrackedQuantity.from_dict(data)
```
### OrcaFlex Adapter (rock_oil_field.units.orcaflex_adapter)
```python
from rock_oil_field.units.orcaflex_adapter import (
wrap_orcaflex_value, # Single value → TrackedQuantity
unwrap_for_orcaflex, # TrackedQuantity → raw float (converts to OrcaFlex units)
wrap_model_parameters, # Dict of (value, type) → TrackedQuantity dict
wrap_environment, # Config dict → TrackedQuantity dict with unit inference
ORCAFLEX_UNITS, # Default unit mapping per parameter type
)
```
### Instrumented Workflow Pattern
```python
from rock_oil_field.workflows.diffraction import (
setup_environment, # Water depth, mesh positions
setup_vessel_inertia, # Mass, CoG, inertia tensor, draught
setup_wave_parameters, # Headings, periods
run_instrumented_setup, # Full workflow → CalculationAuditLog
)
```
## Unit Systems
| System | Length | Stress | Force | Temperature |
|--------|--------|--------|-------|-------------|
| `SI` | m | Pa | N | degC |
| `inch` | inch | psi | lbf | degF |
| `metric_engineering` | mm | MPa | kN | degC |
## OrcaFlex Default Units
| Type | Unit | Type | Unit |
|------|------|------|------|
| length | m | mass | tonne |
| force | kN | stiffness | kN/m |
| moment | kN*m | period | s |
| angle | deg | pressure | kPa |
| velocity | m/s | acceleration | m/s^2 |
| density | tonne/m^3 | | |
## Wrapping Raw Parameters
When instrumenting a script with raw numerics:
```python
# BEFORE (raw — no unit safety)
seabed_depth = 1300
diff.SetData('WaterDepth', 0, seabed_depth)
# AFTER (tracked — full provenance)
from rock_oil_field.units.orcaflex_adapter import wrap_orcaflex_value, unwrap_for_orcaflex
seabed_depth = wrap_orcaflex_value(1300.0, "length", source="gulf_of_mexico")
diff.SetData('WaterDepth', 0, unwrap_for_orcaflex(seabed_depth, "length"))
```
## Visualization
```python
from assetutilities.units.visualization import LineageGraph
graph = LineageGraph.from_audit_log(audit)
graph.to_html() # Standalone HTML (no dependencies)
graph.to_svg() # SVG via graphviz (optional)
graph.to_dot() # Graphviz DOT text
graph.to_dict() # JSON-serializable dict
```
## Related
- Full guide: `assetutilities/docs/units-guide.md`
- Tests: `assetutilities/tests/units/`, `client-b/tests/unit/`
- S7 reference scripts: `client-b/s7/analysis_general/`Related Skills
test-oversized-skill
A test fixture skill that exceeds 200 lines with multiple H2/H3 sections for split testing.
interactive-report-generator
Generate interactive HTML reports with Plotly visualizations from data analysis results. Supports dashboards, charts, and professional styling.
data-validation-reporter
Generate interactive validation reports with quality scoring, missing data analysis, and type checking. Combines Pandas validation, Plotly visualization, and YAML configuration for comprehensive data quality reporting.
agent-os-framework
Generate standardized .agent-os directory structure with product documentation, mission, tech-stack, roadmap, and decision records. Enables AI-native workflows.
OrcaFlex Specialist Skill
```yaml
repo-ecosystem-hygiene
Interpret the daily read-only repo ecosystem hygiene audit and route remediation through approved workflows.
domain-knowledge-sweep
Systematic multi-source research of an engineering domain. Spawns parent issue → 6 research subissues (Standards, Academic, Industry, LinkedIn-marketing, Code-audit, Synthesis) → gap implementation subissues. Replaces LinkedIn-only extraction with defensible comprehensive sourcing.
subagent-write-verification
Independently verify subagent-claimed file writes with filesystem and git checks before treating the artifact as real, before committing it, and before referencing the path in downstream prompts.
git-operation-serialization-preflight
Before any commit, stash, merge, reset, rebase, or checkout in a multi-agent or shared-checkout environment, run a bounded preflight to detect active git writers and stale index/config locks, then serialize the mutating step under a single-writer guarantee.
public-knowledge-graph-governance
Maintain public-safe knowledge graph artifacts for llm-wiki and similar markdown knowledge bases. Use when changing graph generators, validators, schema docs, weekly freshness checks, or public/private source-scope boundaries.
llm-wiki-weekly-freshness
Class-level governance workflow for keeping llm-wiki-style markdown knowledge bases current, public-safe, graph/index-valid, and useful for code development. Use when reviewing llm-wiki architecture/content, scanning new LLM concepts, maintaining public knowledge graphs, producing an issue roadmap, or running recurring freshness cadence.
llm-wiki-source-extraction-coverage
Doc-type-aware extraction contract for llm-wiki source ingestion with measurable coverage and source-anchored traceability. Use when (1) ingesting a PDF, DOCX, XLSX, PPTX, HTML, or scanned-image source into a wiki `sources/` page, (2) computing the pre-extraction estimate (what fraction of the source we expect to recover) and post-extraction yield (what fraction we actually recovered), (3) anchoring wiki claims back to specific page / paragraph / cell / slide positions in the source so a reviewer can re-verify or revise against the actual document, (4) deciding whether OCR fallback or manual transcription is needed. Codifies workspace-hub's existing OCR fallback chain and python-docx / openpyxl / trafilatura patterns into a format-specific routing table. Companion to research/llm-wiki-page-shape-contract (Rule 7 input-layer pages) and research/llm-wiki — this skill is the defense against silent extraction failure.