← All skills
Tencent SkillHub · Communication & Collaboration

Identity Resolver

Resolves multi-channel user IDs to a single canonical ID, preventing fragmented state across Telegram, WhatsApp, Discord, web, and more.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Resolves multi-channel user IDs to a single canonical ID, preventing fragmented state across Telegram, WhatsApp, Discord, web, and more.

⬇ 0 downloads ★ 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, package.json, pyproject.toml, scripts/identity.py, scripts/identity_cli.py

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.6

Documentation

ClawHub primary doc Primary doc: SKILL.md 17 sections Open source page

identity-resolver

Canonical user identity resolution across messaging channels

Description

Resolves multi-channel user identities (Telegram, WhatsApp, Discord, web, etc.) to canonical user IDs, preventing state fragmentation when users interact via multiple channels. Problem it solves: Without identity resolution, a user messaging via Telegram and WhatsApp appears as two different users, causing fragmented memory, access control, and per-user state across skills. Solution: Maps all channel identities to one canonical user ID automatically.

Installation

Prerequisites: Install uv if not already installed: curl -LsSf https://astral.sh/uv/install.sh | sh Install the skill: cd /path/to/openclaw/workspace # Via ClawHub (recommended) clawhub install identity-resolver # Or via Git git clone https://github.com/clawinfra/identity-resolver skills/identity-resolver

For End Users

# Initialize identity map (auto-detects owner from USER.md) cd /path/to/workspace uv run python skills/identity-resolver/scripts/identity_cli.py init # Verify your identity uv run python skills/identity-resolver/scripts/identity_cli.py resolve \ --channel telegram --user-id YOUR_TELEGRAM_ID # Output: your-canonical-id # List all registered identities uv run python skills/identity-resolver/scripts/identity_cli.py list

For Skill Developers

Add to your skill's Python code: import sys from pathlib import Path # Import identity resolver sys.path.insert(0, str(Path.cwd() / "skills" / "identity-resolver" / "scripts")) from identity import resolve_canonical_id # Get canonical user ID from session context import os channel = os.getenv("OPENCLAW_CHANNEL") # e.g., "telegram" user_id = os.getenv("OPENCLAW_USER_ID") # e.g., "123456789" canonical_id = resolve_canonical_id(channel, user_id) # Use canonical_id for all user-specific operations # Example: User-specific memory file memory_file = f"data/users/{canonical_id}/memory.json"

Features

✅ Auto-registers owner from workspace USER.md ✅ Thread-safe identity map storage with fcntl locking ✅ CLI + Python API for both users and developers ✅ Path traversal protection — sanitizes all canonical IDs ✅ Zero dependencies — pure Python stdlib ✅ Multi-channel support — Telegram, WhatsApp, Discord, web, and future channels

Multi-User Memory Systems

# tiered-memory skill integration canonical_id = resolve_canonical_id(channel, user_id) memory_tree = f"memory/users/{canonical_id}/tree.json"

Access Control

# agent-access-control skill integration canonical_id = resolve_canonical_id(channel, user_id) if is_owner(canonical_id): # Full access else: # Limited access

Cross-Platform User Tracking

# Same user across Discord + Telegram discord_id = resolve_canonical_id("discord", "user#1234") telegram_id = resolve_canonical_id("telegram", "987654321") # Both resolve to same canonical ID if registered

Core Functions

resolve_canonical_id(channel, provider_user_id, workspace=None, owner_numbers=None) -> str Resolve channel identity to canonical user ID. Auto-registers owner numbers from USER.md Returns canonical ID (e.g., "alice") or "stranger:{channel}:{user_id}" for unmapped users add_channel(canonical_id, channel, provider_user_id, workspace=None, display_name=None) Add channel mapping to a canonical user (creates user if doesn't exist). remove_channel(canonical_id, channel, provider_user_id, workspace=None) Remove channel mapping from canonical user. list_identities(workspace=None) -> dict Return all identity mappings. get_channels(canonical_id, workspace=None) -> list Get all channels for a canonical user. is_owner(canonical_id, workspace=None) -> bool Check if canonical ID is the owner.

CLI Commands

# Initialize identity init [--force] # Resolve (auto-detect from env or explicit params) identity resolve [--channel CH] [--user-id ID] # Add mapping identity add --canonical ID --channel CH --user-id ID [--display-name NAME] # Remove mapping identity remove --canonical ID --channel CH --user-id ID # List all identity list [--json] # Get channels identity channels --canonical ID [--json] # Check owner identity is-owner --canonical ID [--json]

Identity Map Format

Location: data/identity-map.json or memory/identity-map.json { "version": "1.0", "identities": { { "version": "1.0", "identities": { "alice": { "canonical_id": "alice", "is_owner": true, "display_name": "Alice Johnson", "channels": [ "telegram:123456789", "whatsapp:+1234567890", "whatsapp:+9876543210", "whatsapp:+5555555555" ], "created_at": "2026-01-15T10:00:00Z", "updated_at": "2026-01-15T10:05:00Z" }, "bob": { "canonical_id": "bob", "is_owner": false, "display_name": "Bob Smith", "channels": [ "discord:bob#1234", "telegram:987654321" ], "created_at": "2026-01-15T10:10:00Z", "updated_at": "2026-01-15T10:10:00Z" } } } } } }

Security

Path traversal protection: Canonical IDs sanitized to [a-z0-9-_] only Thread-safe operations: fcntl file locking on all reads/writes Input validation: All user inputs validated and sanitized Owner auto-registration: Only numbers from USER.md auto-register as owner

Integration Examples

See docs/TIERED_MEMORY_INTEGRATION_EXAMPLE.md for complete working example.

License

MIT - See LICENSE file

Author

OpenClaw Agent agent@openclaw.local

Links

GitHub: https://github.com/clawinfra/identity-resolver Issues: https://github.com/clawinfra/identity-resolver/issues ClawHub: https://clawhub.com/skills/identity-resolver

Category context

Messaging, meetings, inboxes, CRM, and teammate communication surfaces.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
2 Docs2 Scripts1 Config1 Files
  • SKILL.md Primary doc
  • README.md Docs
  • scripts/identity_cli.py Scripts
  • scripts/identity.py Scripts
  • package.json Config
  • pyproject.toml Files