← Back to Skills

unicode-normalizer

v1.0.0 approved Encoding ⬇ 7 ↑ 7/7d updated today
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ Download
Install Guide↓
🤖 Agent install commands (curl / MCP / Claude Desktop)
▸ curl one-liner
curl -L -o unicode-normalizer.skill   "https://aiskillstore.io/v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=ClaudeCode"
▸ MCP tool call (after registering Skill Store MCP)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "f3d4aef9-2ef4-4b74-853f-7392d057cb82",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP config (one-time)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 Full agent API guide: /llms.txt  ·  MCP server card

Unicode text normalizer with 5 actions: normalize, detect, korean_jamo, width_convert, audit. Zero external dependencies, Korean jamo decompose/combine, fullwidth conversion, zalgo/homoglyph security audit.

# unicode # normalization # korean # encoding # security # jamo # fullwidth # zalgo # homoglyph # text-processing

Basic Info

Owner 👤 aiskillstore-team Category Encoding Registered 2026-04-30 Last Updated 2026-04-30 Latest Version 1.0.0 Packaged At 2026-04-30 Vetting Status approved Downloads 7 Checksum (SHA256) 75f2199003e78f235e9cb392b0af49f726c4b81fdd25ac68c4cb3dd4c24e1081

⚡ AGENT INFO USK v3

Capabilities
unicode_normalization korean_jamo_processing fullwidth_halfwidth_conversion unicode_security_audit encoding_form_detection
Permissions
✗ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=OpenClaw GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=ClaudeCode GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=Cursor GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=GeminiCLI GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=CodexCLI GET /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=CustomAgent

Installation

Compatible Platforms any

1
Install the skill using openclaw_skill_manager.py.
python openclaw_skill_manager.py --install unicode-normalizer
2
Verify installation
python openclaw_skill_manager.py --list-installed
3
Install a specific version (optional)
python openclaw_skill_manager.py --install unicode-normalizer --version 1.0.0
1
Download the skill package.
curl -O https://aiskillstore.io/v1/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download
2
Place it in the Claude Code commands directory.
unzip unicode-normalizer.skill -d ~/.claude/commands/unicode-normalizer/
3
Use it as a slash command in Claude Code.
/unicode-normalizer
1
Download the Agent Skills package.
curl -O https://aiskillstore.io/v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=ClaudeCodeAgentSkill
2
Unzip it into the Claude Code skills directory.
unzip unicode-normalizer-agent-skill-*.skill -d ~/.claude/skills/unicode-normalizer/
3
Restart Claude Code — the skill is auto-loaded at session start. No slash command needed.
1
Download the Cursor-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=Cursor
2
Unzip and place it in a permanent location.
unzip unicode-normalizer-cursor-*.skill -d ~/.cursor/skills/unicode-normalizer/
3
Add the MCP server config to .cursor/mcp.json, then restart Cursor.
cat ~/.cursor/skills/unicode-normalizer/cursor_mcp_config.json
1
Download the Gemini CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=GeminiCLI
2
Unzip and place it in a permanent location.
unzip unicode-normalizer-geminicli-*.skill -d ~/.gemini/skills/unicode-normalizer/
3
Add the MCP server config to ~/.gemini/settings.json, then restart Gemini CLI.
cat ~/.gemini/skills/unicode-normalizer/gemini_settings_snippet.json
1
Download the Codex CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download?platform=CodexCLI
2
Unzip and place it in a permanent location.
unzip unicode-normalizer-codexcli-*.skill -d ~/.codex/skills/unicode-normalizer/
3
Add the MCP server config to ~/.codex/config.toml, then restart Codex CLI.
cat ~/.codex/skills/unicode-normalizer/codex_config_snippet.toml
1
Download the skill package via REST API.
GET https://aiskillstore.io/v1/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/download
2
Place it in your agent platform's skills directory.
cp unicode-normalizer.skill ./skills/
3
Fetch platform-specific details via the Install Guide API.
GET https://aiskillstore.io/v1/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/install-guide?platform=CustomAgent

Security Vetting Report

Vetting Result APPROVED

Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]

✅ No security risks found.

AI Review Stage

Reviewer gemini Risk Level 🟢 Low Review Summary 유니코드 텍스트 정규화 및 보안 감사를 수행하는 안전하고 독립적인 스킬입니다.
Reasoning

제공된 스킬 메타데이터와 코드 파일(main.py, lib/*.py)을 분석하고 정적 분석 결과를 검토했습니다. 다음은 각 검수 기준에 대한 판단입니다. 1. **선언된 permissions(network/filesystem/subprocess)과 실제 코드가 일치하는가?** * 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`로 명시되어 있습니다. * 코드 검토 결과, `requests`, `urllib`, `socket` 등 네트워크 관련 모듈 사용이 없습니다. * `open()`, `shutil` 등 파일 시스템에 직접 접근하거나 수정하는 코드가 없습니다. `os.path` 및 `sys.path` 사용은 Python 모듈 로딩을 위한 표준적인 방식으로, 일반적인 파일 시스템 접근으로 간주하지 않습니다. * `subprocess.run()`, `os.system()` 등 외부 프로세스를 실행하는 코드가 없습니다. * `sys.stdin`과 `sys.stdout`을 통한 입출력은 `call_pattern: stdin_stdout`에 명시된 대로 동작하며, 이는 선언된 권한 범위 내입니다. * **결론: 선언된 권한과 실제 코드가 완벽하게 일치합니다.** 2. **악의적 목적의 코드가 있는가? (데이터 탈취, 시스템 파괴, 난독화 등)** * 코드는 유니코드 정규화, 자모 처리, 전각/반각 변환, 보안 감사 등 명확하게 정의된 텍스트 처리 기능을 수행합니다. * 데이터를 외부로 전송하거나 저장하는 기능이 없으므로 데이터 탈취 위험이 없습니다. * 시스템 파일을 수정하거나 삭제하는 등의 파괴적인 동작이 없습니다. * 정적 분석 결과에서도 난독화 경고가 없었으며, 코드 자체도 가독성이 높고 명확합니다. * **결론: 악의적인 목적의 코드는 발견되지 않았습니다.** 3. **선언되지 않은 외부 통신이 있는가?** * 코드 내에서 외부 네트워크 통신을 시도하는 어떠한 흔적도 발견되지 않았습니다. * **결론: 선언되지 않은 외부 통신은 없습니다.** 4. **사용자 데이터를 무단으로 수집하거나 전송하는가?** * 스킬은 `stdin`으로 받은 텍스트를 처리하여 `stdout`으로 결과를 반환하는 방식으로 동작합니다. 처리 과정에서 사용자 데이터를 영구적으로 저장하거나, 외부로 전송하는 기능은 없습니다. * **결론: 사용자 데이터를 무단으로 수집하거나 전송하지 않습니다.** 5. **코드 품질이 스킬의 목적과 일치하는가?** * 코드는 `lib` 디렉토리 아래 기능별로 잘 분리되어 있으며, 각 모듈과 함수는 명확한 목적을 가지고 있습니다. * `unicodedata` 모듈을 제외하고는 Python 표준 라이브러리만을 사용하여 'Zero external dependencies'라는 설명과 일치합니다. * 입력 유효성 검사(`_validate_input`)가 잘 구현되어 있어 안정적인 동작을 기대할 수 있습니다. * 각 기능은 스킬의 설명과 메타데이터에 명시된 `capabilities`를 충실히 구현하고 있습니다. * **결론: 코드 품질은 매우 높으며 스킬의 목적과 완벽하게 일치합니다.** **정적 분석 결과:** * `status: approved`, `red_flags_found: []`, `obfuscation_warnings: []`, `forbidden_exec_files_found: []`로, 자동화된 보안 검사에서도 어떠한 문제도 발견되지 않았습니다. 이는 수동 검토 결과와 일치합니다. 종합적으로 판단할 때, 이 스킬은 안전하며 명시된 기능을 충실히 수행하는 고품질의 유틸리티입니다. 어떠한 보안 위험 요소도 발견되지 않았으므로 즉시 공개 가능합니다.

Version History

Version USK v3 Vetting Status Packaged At Downloads Changelog
v1.0.0 approved 2026-04-30 ⬇ 7

Examples 7

Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.

normalize_nfc
# normalize# NFC# korean

텍스트를 NFC 형식으로 정규화 / Normalize text to NFC form

📥 Input
{
  "action": "normalize",
  "operations": [],
  "target_form": "NFC",
  "text": "\ud55c\uad6d\uc5b4 \ud14d\uc2a4\ud2b8 ABC"
}
📤 Output
{
  "action": "normalize",
  "changes_made": [
    {
      "count": 0,
      "operation": "form_normalization_NFC"
    }
  ],
  "normalized": "\ud55c\uad6d\uc5b4 \ud14d\uc2a4\ud2b8 ABC",
  "normalized_length": 10,
  "original_length": 10
}
normalize_nfkc_fullwidth
# normalize# NFKC# fullwidth# korean

전각 문자가 포함된 텍스트를 NFKC로 정규화 + 전각→반각 변환 / Normalize fullwidth text with NFKC and fullwidth_to_halfwidth

📥 Input
{
  "action": "normalize",
  "operations": [
    "fullwidth_to_halfwidth"
  ],
  "target_form": "NFKC",
  "text": "\uff21\uff22\uff23\uff11\uff12\uff13 \ud55c\uad6d\uc5b4"
}
📤 Output
{
  "action": "normalize",
  "changes_made": [
    {
      "count": 6,
      "operation": "form_normalization_NFKC"
    },
    {
      "count": 6,
      "operation": "fullwidth_to_halfwidth"
    }
  ],
  "normalized": "ABC123 \ud55c\uad6d\uc5b4",
  "normalized_length": 9,
  "original_length": 9
}
detect_mixed
# detect# NFC# korean

혼합 유니코드 형식 감지 / Detect mixed Unicode normalization forms

📥 Input
{
  "action": "detect",
  "text": "caf\u00e9 r\u00e9sum\u00e9 \ud55c\uad6d\uc5b4"
}
📤 Output
{
  "action": "detect",
  "confidence": "high",
  "detected_form": "NFC",
  "has_fullwidth": false,
  "has_korean": true,
  "has_zalgo": false
}
korean_jamo_decompose
# korean_jamo# decompose# korean

한국어 음절을 자모로 분리 / Decompose Korean syllables into jamo

📥 Input
{
  "action": "korean_jamo",
  "mode": "decompose",
  "text": "\ud55c\uad6d"
}
📤 Output
{
  "action": "korean_jamo",
  "jamo_breakdown": [
    {
      "jamo": "\u314e\u314f\u3134",
      "syllable": "\ud55c"
    },
    {
      "jamo": "\u3131\u315c\u3131",
      "syllable": "\uad6d"
    }
  ],
  "result": "\u314e\u314f\u3134\u3131\u315c\u3131",
  "syllables_processed": 2
}
korean_jamo_combine
# korean_jamo# combine# korean# roundtrip

자모를 한국어 음절로 결합 / Combine jamo into Korean syllables

📥 Input
{
  "action": "korean_jamo",
  "mode": "combine",
  "text": "\u314e\u314f\u3134\u3131\u315c\u3131"
}
📤 Output
{
  "action": "korean_jamo",
  "jamo_breakdown": [],
  "result": "\ud55c\uad6d",
  "syllables_processed": 2
}
width_convert_fullwidth
# width_convert# fullwidth# halfwidth

전각 알파벳/숫자를 반각으로 변환 / Convert fullwidth ASCII to halfwidth

📥 Input
{
  "action": "width_convert",
  "direction": "fullwidth_to_halfwidth",
  "text": "\uff21\uff22\uff23\uff11\uff12\uff13\uff01\uff20\uff03"
}
📤 Output
{
  "action": "width_convert",
  "result": "ABC123!@#"
}
audit_zalgo_security
# audit# zalgo# security# SEC

Zalgo 공격 및 보안 이슈 위생 감사 / Audit text for zalgo attack and security issues

📥 Input
{
  "action": "audit",
  "text": "H\u0338\u0321\u0353\u0359\u0324\u0326\u0325\u0331\u034e\u032b\u0314\u033e\u0306\u0308\u035c\u035d\u00eb\u0336\u0324\u032a\u0330\u0356\u0325\u0301\u0360l\u0335\u0326\u0332\u031e\u0330\u0303\u034b\u0308\u0302\u0310\u0314\u0345l\u0338\u0320\u032f\u034e\u0316\u030e\u0307\u0303\u0305\u1ee1\u0338\u0359\u033c\u033a "
}
📤 Output
{
  "action": "audit",
  "fix_hint": {
    "apply_operations": [
      "remove_zero_width",
      "strip_control"
    ],
    "priority": "high",
    "reason": "Zalgo \ud328\ud134\uc73c\ub85c \uc778\ud55c \ubcf4\uc548 \uc704\ud5d8 / Security risk due to zalgo pattern",
    "recommended_form": "NFC"
  },
  "issues": [
    {
      "category": "SEC",
      "count": 1,
      "fix_hint": "unicodedata.normalize(\u0027NFC\u0027, text) \ud6c4 \uacb0\ud569 \ubb38\uc790 \uc81c\uac70 \uad8c\uc7a5 / Apply NFC normalization and strip excessive combining chars",
      "message": "Zalgo(\uc2dc\uac01\uc801 \uacf5\uaca9) \ud328\ud134 \uac10\uc9c0: \uacfc\ub3c4\ud55c \uacb0\ud569 \ubb38\uc790 / Zalgo text detected: excessive combining characters",
      "rule": "SEC-001",
      "severity": "error"
    }
  ],
  "score": 20
}

All examples are also available via the agent API: /v1/agent/skills/f3d4aef9-2ef4-4b74-853f-7392d057cb82/schema

Reviews & Ratings

No reviews yet. Be the first to leave one!

✍️ Write a Review