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.md
source 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.

PermissionValueDescription
PermPlay1Basic play access
PermAdmin2Administrative control (manage permissions)
PermUpdate4Update object settings
PermDelete8Delete object
PermTokenTransfer16Transfer tokens
PermTokenInfuse32Infuse tokens into reactors/generators
PermTokenMigrate64Migrate tokens between objects
PermTokenDefuse128Defuse (withdraw) tokens
PermGuildMembership512Manage guild membership
PermSubstationConnection1024Connect to substations
PermAllocationConnection2048Connect to allocations
PermReactorGuildCreate524288Create guilds on a reactor
PermHashBuild1048576Submit build proof-of-work
PermHashMine2097152Submit mine proof-of-work
PermHashRefine4194304Submit refine proof-of-work
PermHashRaid8388608Submit raid proof-of-work
PermAll16777215All permissions (full access)

Procedure

  1. Query permissions
    structsd query structs permission [id]
    ,
    permission-by-object [object-id]
    ,
    permission-by-player [player-id]
    .
  2. Grant on object
    structsd tx structs permission-grant-on-object TX_FLAGS -- [object-id] [player-id] [permissions]
    . Permissions are additive.
  3. Revoke on object
    structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions]
    .
  4. Set on object
    structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions]
    — clears existing and applies new set.
  5. Address-level permissions
    structsd tx structs permission-grant-on-address -- [address] [permissions]
    ,
    permission-revoke-on-address -- [address] [permissions]
    ,
    permission-set-on-address -- [address] [permissions]
    .
  6. Guild rank permissions
    structsd tx structs permission-guild-rank-set TX_FLAGS -- [object-id] [guild-id] [permission] [rank]
    — grant permission on object to guild members at or above specified rank. Revoke:
    structsd tx structs permission-guild-rank-revoke TX_FLAGS -- [object-id] [guild-id] [permission]
    .
  7. Address management — Register:
    structsd tx structs address-register TX_FLAGS -- [address] [proof-pubkey] [proof-signature] [permissions]
    . Revoke:
    structsd tx structs address-revoke -- [address]
    . Update primary:
    structsd tx structs player-update-primary-address -- [new-address]
    .

Commands Reference

ActionCommand
Grant on object
structsd tx structs permission-grant-on-object -- [object-id] [player-id] [permissions]
Revoke on object
structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions]
Set on object
structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions]
Grant on address
structsd tx structs permission-grant-on-address -- [address] [permissions]
Revoke on address
structsd tx structs permission-revoke-on-address -- [address] [permissions]
Set on address
structsd tx structs permission-set-on-address -- [address] [permissions]
Set guild rank permission
structsd tx structs permission-guild-rank-set -- [object-id] [guild-id] [permission] [rank]
Revoke guild rank permission
structsd tx structs permission-guild-rank-revoke -- [object-id] [guild-id] [permission]
Address register
structsd tx structs address-register -- [address] [proof-pubkey] [proof-sig] [permissions]
Address revoke
structsd tx structs address-revoke -- [address]
Update primary address
structsd tx structs player-update-primary-address -- [new-address]

TX_FLAGS:

--from [key-name] --gas auto --gas-adjustment 1.5 -y

QueryCommand
Permission by ID
structsd query structs permission [id]
Permission by object
structsd query structs permission-by-object [object-id]
Permission by player
structsd query structs permission-by-player [player-id]
Guild rank permission by object
structsd query structs guild-rank-permission-by-object [object-id]
Guild rank permission by object+guild
structsd query structs guild-rank-permission-by-object-and-guild [object-id] [guild-id]
Address
structsd query structs address [address]
Addresses by player
structsd query structs address-all-by-player [player-id]

Verification

  • Permission:
    structsd query structs permission-by-object [object-id]
    — list players with access.
  • Guild rank permission:
    structsd query structs guild-rank-permission-by-object [object-id]
    — list guild rank-based permissions.
  • Address:
    structsd query structs address [address]
    — verify registration, player link.
  • Player addresses:
    structsd query structs address-all-by-player [player-id]
    — all linked addresses.

Error Handling

  • Permission denied: Signer lacks permission on object. Check
    permission-by-object
    for current grants.
  • Address already registered: Use
    address-revoke
    first, or link to different player.
  • 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