web5 cli
by @rink1969
Use when working with Web5 CLI tool for decentralized identity, CKB wallet, DID management, PDS data operations, account creation, posting, profile updates
clawhub install web5-cliπ About This Skill
name: web5-cli description: Use when working with Web5 CLI tool for decentralized identity, CKB wallet, DID management, PDS data operations, account creation, posting, profile updates
Web5 CLI
Overview
Web5 CLI is a command-line tool for interacting with Web5 infrastructure. It provides key management, CKB wallet operations, DID lifecycle management, and PDS (Personal Data Store) interactions.install
npm install -g web5-cli
Commands
| Command | Purpose | Key Subcommands |
|---------|---------|-----------------|
| keystore | DID signing key management | new, import, clean, get, sign, verify |
| wallet | CKB wallet operations | new, import, clean, get, send-tx, check-tx, balance |
| did | DID lifecycle on CKB | build-create-tx, build-destroy-tx, build-update-didkey-tx, build-update-handle-tx, build-transfer-tx, list |
| pds | PDS server interactions | check-username, get-did-by-username, create-account, delete-account, login, write, repo, records, blobs, export, import |
Quick Reference
Key Management
web5-cli keystore new # Create new keypair
web5-cli keystore import --sk # Import private key
web5-cli keystore get # Get DID key
web5-cli keystore sign --message # Sign message
web5-cli keystore verify --message --signature # Verify signature
Wallet Operations
web5-cli wallet new # Create CKB wallet
web5-cli wallet import --sk # Import wallet
web5-cli wallet get # Get CKB address
web5-cli wallet balance # Check balance
web5-cli wallet send-tx --tx-path # Send transaction
web5-cli wallet check-tx --tx-hash # Check tx status
DID Management
web5-cli did build-create-tx --username --pds --didkey --output-path
web5-cli did build-destroy-tx --args --output-path
web5-cli did build-update-didkey-tx --args --new-didkey --output-path
web5-cli did list --ckb-addr # List DID cells
PDS Operations
web5-cli pds check-username --username
web5-cli pds get-did-by-username --username
web5-cli pds create-account --pds --username --didkey --did --ckb-address
web5-cli pds login --pds --didkey --did --ckb-address
web5-cli pds write --pds --accessJwt --didkey --did --rkey --data
web5-cli pds repo --pds --did
web5-cli pds records --pds --did --collection [--limit N] [--cursor ]
web5-cli pds export --pds --did --data-file [--since ]
web5-cli pds import --pds --did --accessJwt --data-file
Configuration
~/.web5-cli/signkey~/.web5-cli/ckb-sk~/.web5-cli/account.json after account creation (includes Username, DID, Handle, didkey, ckb address, PDS domain, etc.)CKB_NETWORK environment variable (ckb_testnet or ckb)Output Format
All commands output JSON format for easy parsing by AI agents and scripts.
Notes
* --pds arg no 'https://' or 'http://' prefix, just the hostname * one account only and always belong to one pds * only one did and one account in same time * Don't modify or delete the key/wallet files directly, use the CLI commands to manage them, and need user confirmation for destructive actions likekeystore clean or wallet cleanWorkflow Scripts
Use these Python scripts for common multi-step operations:
create account
1. callweb5-cli wallet get check if wallet exists and get ckb address
2. if no wallet, create wallet and get ckb address
3. call web5-cli wallet balance check if balance > 450 testnet CKB
4. if no balance, prompt user to transfer some ckb to ckb address and wait for confirmation
5. once have enough balance, call scripts/create_account.py to complete account creation (keystore + wallet + DID + PDS)
6. write account info (includes Username, DID, Handle, didkey, ckb address, PDS domain, etc) to ~/.web5-cli/account.json for later use (like posting, profile update)destroy account
1. callscripts/destroy_account.py to complete account destruction (delete PDS Account then destory DID cell, don't delete wallet or keystore since they can be reused for new accounts)
2. delete ~/.web5-cli/account.json after account destroyedupdate profile
1. get account info from~/.web5-cli/account.json, if not exist, notify user to create account first and exit
2. prompt user to input new profile info (like displayName, handle, etc), and construct json data for writing to pds
4. call web5-cli pds login --pds --didkey --did --ckb-address with the correct parameters to get an access jwt for PDS operations, if login failed, notify user and exit
5. call web5-cli pds write --pds --accessJwt --didkey --did --rkey 'self' --data to update profile record in PDS, with the correct parameters. json data should be in the format of
{
$type: 'app.actor.profile'
displayName: string;
handle: string;
[key: string]: any;
}
post to bbs
1. get account info from~/.web5-cli/account.json, if not exist, notify user to create account first and exit
2. prompt user to input post info (like section_id, title, text), and construct json data for writing to pds. about section_id, you can use "3" or "4" for now.
3. call web5-cli pds login --pds --didkey --did --ckb-address with the correct parameters to get an access jwt for PDS operations, if login failed, notify user and exit
4. call web5-cli pds write --pds --accessJwt --didkey --did --data (--rkey is no need) to create a new post in PDS, with the correct parameters. json data should be in the format of
{
$type: 'app.bbs.post'
section_id: string;
title: string;
text: string;
}
Script Examples
# Create a complete account
python create_account.py alice web5.bbsfans.devdestroy the account
python destroy_account.py alice web5.bbsfans.dev
Security Notes
public information
avliable pds url: * web5.bbsfans.dev * web5.ccfdao.devavliable data structure for writing to pds: * profile of user
{
$type: 'app.actor.profile'
displayName: string;
handle: string;
[key: string]: any;
}
* post of bbs
{
$type: 'app.bbs.post'
section_id: string;
title: string;
text: string;
edited?: string
created?: string
is_draft?: boolean
is_announcement?: boolean
}
* comment of bbs
{
$type: 'app.bbs.comment'
post: string // εεΈuri
text: string;
section_id: string;
edited?: string;
}
* like of bbs
{
$type: 'app.bbs.like'
to: string;
section_id: string;
}
* reply of bbs
{
$type: 'app.bbs.reply'
post: string
comment?: string
to?: string
text: string
section_id: string
edited?: string
}
* reply of dao
{
$type: 'app.dao.reply'
proposal: string
to?: string
text: string
parent?: string
}
* proposal of dao
{
$type: 'app.dao.proposal'
[key: string]: unknown;
}
* like of dao
{
$type: 'app.dao.like'
to: string;
viewer: string;
}
βοΈ Configuration
~/.web5-cli/signkey~/.web5-cli/ckb-sk~/.web5-cli/account.json after account creation (includes Username, DID, Handle, didkey, ckb address, PDS domain, etc.)CKB_NETWORK environment variable (ckb_testnet or ckb)π Tips & Best Practices
* --pds arg no 'https://' or 'http://' prefix, just the hostname
* one account only and always belong to one pds
* only one did and one account in same time
* Don't modify or delete the key/wallet files directly, use the CLI commands to manage them, and need user confirmation for destructive actions like keystore clean or wallet clean