Install
openclaw skills install @kjhyun04/unit-convert길이, 무게, 부피, 넓이, 속도, 온도, 디지털 용량 단위를 서로 변환한다. 번들에 들어 있는 변환표만 쓰기 때문에 네트워크도 API 키도 필요 없다. "5km는 몇 마일", "화씨 100도면 섭씨로 얼마", "30평이 몇 제곱미터" 같은 질문이 나오면 암산하지 말고 이 스킬을 쓴다. 암산에는 반올림 오차가 티 안 나게 섞여 들어간다.
openclaw skills install @kjhyun04/unit-convertdata/units.json에 적어둔 계수로 값을 바꾼다. 파이썬 표준 라이브러리만 사용한다.
python3 scripts/convert.py <값> <원래 단위> <바꿀 단위>
python3 scripts/convert.py 5 km mi # 5 km = 3.1068559612 mi
python3 scripts/convert.py 100 화씨 섭씨 # 100 f = 37.7777777778 c
python3 scripts/convert.py 30 평 m2 # 30 pyeong = 99.17355 m2
플래그는 두 개다.
--list는 지원하는 단위를 차원별로 뽑아준다. 어떤 단위가 표에 있는지 애매하면 추측해서 실행하고 오류를 받느니 이걸 먼저 돌리는 편이 빠르다.
--json은 문장 대신 {"value", "from", "to", "dimension", "result"} 꼴로 뱉는다. 결과를 다시 계산에 쓸 거면 이쪽, 사람한테 그대로 보여줄 거면 기본 출력을 쓴다.
단위 이름은 느슨하게 맞춰준다. 대소문자를 무시하고 °를 떼며, 영어 복수형과 풀네임, 한글 표기를 전부 심볼로 바꾼다. MILES, °C, kelvin, 그램, 킬로미터 다 통한다. 사용자가 쓴 표현을 굳이 다듬지 말고 그대로 넘겨도 대개 걸린다.
표에 없는 단위가 들어오면 0이 아닌 종료 코드와 함께 어느 단위가 문제인지 찍는다. 이때 비슷한 단위로 슬쩍 바꿔서 계산하면 안 된다. 못 알아들었다고 말하고 --list 결과를 보여준다.
스크립트는 소수점을 끝까지 뱉는다. 어느 정도 정밀해야 하는지는 스크립트가 알 수 없어서다. 사람한테 답할 때는 반올림한다. "5km면 얼마냐"는 질문에 3.1068559612 mi보다 약 3.11마일이 낫다. 자릿수를 살리는 건 기술 문서를 쓰거나 사용자가 정밀도를 요구한 경우뿐이다.
차원이 다른 변환은 막아뒀다. 리터를 킬로그램으로 바꿔달라는 요청이 오면 물질의 밀도가 있어야 풀리는 문제고 이 표의 범위 밖이다. 밀도를 적당히 가정해서 답하지 말고 그렇게 설명한다.
data/units.json은 차원별로 묶여 있다. 각 차원마다 기준 단위 base, 기준 대비 배율 units, 표기 변형을 받아주는 aliases가 있다.
단위를 하나 더 넣으려면 기준 단위 몇 개에 해당하는지만 적으면 된다.
"length": {
"base": "m",
"units": { "furlong": 201.168 },
"aliases": { "펄롱": "furlong" }
}
온도만 예외다. "affine": true가 붙고 각 단위가 scale과 offset을 따로 갖는다. 온도 눈금은 0점이 서로 어긋나 있어서 배율만 곱하면 답이 틀린다. 비슷한 눈금을 나중에 추가한다면 이 형태를 따라간다.