Skills structs-diplomacy
Handles permissions, address management, and inter-player coordination in Structs. Use when granting or revoking permissions on objects, registering new addresses, managing multi-address accounts, delegating authority to other players, or setting up address-level access control.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/abstrct/structs-diplomacy" ~/.claude/skills/openclaw-skills-structs-diplomacy && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/abstrct/structs-diplomacy" ~/.openclaw/skills/openclaw-skills-structs-diplomacy && rm -rf "$T"
manifest:
skills/abstrct/structs-diplomacy/SKILL.mdsource content
Structs Diplomacy
Important: Entity IDs containing dashes (like
3-1, 4-5) are misinterpreted as flags by the CLI parser. All transaction commands in this skill use -- before positional arguments to prevent this.
Permission System (24-bit)
Permissions use a 24-bit bitmask. Individual permissions can be combined (OR'd together). See knowledge/mechanics/permissions for the full permission system reference.
| Permission | Value | Description |
|---|---|---|
| PermPlay | 1 | Basic play access |
| PermAdmin | 2 | Administrative control (manage permissions) |
| PermUpdate | 4 | Update object settings |
| PermDelete | 8 | Delete object |
| PermTokenTransfer | 16 | Transfer tokens |
| PermTokenInfuse | 32 | Infuse tokens into reactors/generators |
| PermTokenMigrate | 64 | Migrate tokens between objects |
| PermTokenDefuse | 128 | Defuse (withdraw) tokens |
| PermGuildMembership | 512 | Manage guild membership |
| PermSubstationConnection | 1024 | Connect to substations |
| PermAllocationConnection | 2048 | Connect to allocations |
| PermReactorGuildCreate | 524288 | Create guilds on a reactor |
| PermHashBuild | 1048576 | Submit build proof-of-work |
| PermHashMine | 2097152 | Submit mine proof-of-work |
| PermHashRefine | 4194304 | Submit refine proof-of-work |
| PermHashRaid | 8388608 | Submit raid proof-of-work |
| PermAll | 16777215 | All permissions (full access) |
Procedure
- Query permissions —
,structsd query structs permission [id]
,permission-by-object [object-id]
.permission-by-player [player-id] - Grant on object —
. Permissions are additive.structsd tx structs permission-grant-on-object TX_FLAGS -- [object-id] [player-id] [permissions] - Revoke on object —
.structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions] - Set on object —
— clears existing and applies new set.structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] - Address-level permissions —
,structsd tx structs permission-grant-on-address -- [address] [permissions]
,permission-revoke-on-address -- [address] [permissions]
.permission-set-on-address -- [address] [permissions] - Guild rank permissions —
— grant permission on object to guild members at or above specified rank. Revoke:structsd tx structs permission-guild-rank-set TX_FLAGS -- [object-id] [guild-id] [permission] [rank]
.structsd tx structs permission-guild-rank-revoke TX_FLAGS -- [object-id] [guild-id] [permission] - Address management — Register:
. Revoke:structsd tx structs address-register TX_FLAGS -- [address] [proof-pubkey] [proof-signature] [permissions]
. Update primary:structsd tx structs address-revoke -- [address]
.structsd tx structs player-update-primary-address -- [new-address]
Commands Reference
| Action | Command |
|---|---|
| Grant on object | |
| Revoke on object | |
| Set on object | |
| Grant on address | |
| Revoke on address | |
| Set on address | |
| Set guild rank permission | |
| Revoke guild rank permission | |
| Address register | |
| Address revoke | |
| Update primary address | |
TX_FLAGS:
--from [key-name] --gas auto --gas-adjustment 1.5 -y
| Query | Command |
|---|---|
| Permission by ID | |
| Permission by object | |
| Permission by player | |
| Guild rank permission by object | |
| Guild rank permission by object+guild | |
| Address | |
| Addresses by player | |
Verification
- Permission:
— list players with access.structsd query structs permission-by-object [object-id] - Guild rank permission:
— list guild rank-based permissions.structsd query structs guild-rank-permission-by-object [object-id] - Address:
— verify registration, player link.structsd query structs address [address] - Player addresses:
— all linked addresses.structsd query structs address-all-by-player [player-id]
Error Handling
- Permission denied: Signer lacks permission on object. Check
for current grants.permission-by-object - Address already registered: Use
first, or link to different player.address-revoke - Invalid proof: Address registration requires valid proof pubkey and signature. Verify auth flow.
- Object not found: Object ID may be stale. Re-query to confirm entity exists.
See Also
- knowledge/mechanics/permissions — Full permission system reference (24-bit values, guild rank permissions)
- knowledge/entities/entity-relationships — Object types and IDs
- protocols/authentication — Auth for address registration