universal-profile
SKILL.md
Universal Profile Skill
Authorize your bot: create a profile at my.universalprofile.cloud, generate a controller key, authorize via Authorization UI.
Core Concepts
- UP (Universal Profile) = smart contract account (LSP0/ERC725Account). This is the on-chain identity.
- KeyManager (LSP6) = access control. Controllers have permission bitmasks.
- Controller = EOA with permissions to act on behalf of the UP.
- All calls to external contracts MUST route through UP via
execute()somsg.sender= UP address. - Exception:
setData()/setDataBatch()can be called directly on UP (checks permissions internally).
Execution Models
Direct (all chains — controller pays gas)
Controller → UP.execute(operation, target, value, data) → Target
The controller calls execute() directly on the UP contract. The UP internally verifies permissions via its KeyManager (LSP20 lsp20VerifyCall). Do NOT call the KeyManager's execute() function directly. Always call the UP.