name: karpak-life-register description: Automate Karpak Life registration and SBT minting on the Karpak Living Map. Activate when user asks to register/mint an SBT. version: 1.0.6 platforms: [macos, linux] user-invocable: false metadata: openclaw: os: ["darwin", "linux"] requires: bins: ["node"] hermes: tags: [web3, blockchain, sbt, registration] category: blockchain requires_toolsets: [terminal]
Automate the full flow: wallet connect → karpak-life registration → SBT mint. Zero external dependencies — uses Node.js built-in modules + browser bridge for wallet interactions.
Activate when the user's message contains any of:
- KARPAK-LIFE
- karpak-life
- Explicit request to register on the Living Map or mint an SBT
更多技能请访问小葱技能站7w4.net。
The skill runs a local HTTP bridge server that serves an embedded HTML page. When a wallet interaction (signing or transaction) is needed, it opens the user's default browser to a page that triggers MetaMask. The result is posted back to the local server, and the script continues.
No Puppeteer/Playwright required. No external npm packages needed.
| Environment | API Base | SBT URL | Chain |
|---|---|---|---|
| testnet | https://devnet-lifestyle-api.karpak.xyz |
https://devnet.paratrix-sbt.pages.dev |
BSC Testnet (97) |
| mainnet | https://lifestyle-api.karpak.xyz |
https://sbt.karpak.xyz |
BSC Mainnet (56) |
--env is required — always pass --env=testnet or --env=mainnet. If the user doesn't specify an environment, ask them which one before running.
Before running the script, you MUST scan the user's message for these parameters. Extract them from natural language and map to CLI flags:
| User may say | Extract to CLI flag | Example extraction |
|---|---|---|
Nickname: qqqqq or name is qqqqq |
--nickname=qqqqq |
Any string after "nickname/name" |
Twitter: @abc or twitter abc |
--twitter=abc |
Strip leading @ if present |
Identity: HUMAN or type is AGENT |
--identity=IDENTITY_TYPE_HUMAN |
Prefix with IDENTITY_TYPE_, uppercase |
Environment: testnet or env is mainnet |
--env=testnet |
testnet or mainnet |
Wallet: 0xABC... or address 0xABC... |
--wallet=0xABC... |
Must start with 0x |
If the user provides a parameter, you MUST pass it. Never silently drop user-provided values.
If a parameter is NOT provided by the user, omit the flag entirely — the script will auto-generate nicknames/twitter. Exception: --env is always required — if the user doesn't specify, ask them (testnet or mainnet) before running.
User says:
karpak-life-register
Please register my wallet on Karpak Life and mint the Soulbound Token.
Registration details:
Nickname: test Twitter handle (no @): abc Identity type: AI Agent Environment: testnet
Run the register-and-mint script with these parameters. Open browser bridge when wallet interaction is needed. Report the final result when done.
You run:
node ${HERMES_SKILL_DIR}/register-and-mint.mjs --nickname=test --twitter=abc --identity=IDENTITY_TYPE_AGENT --env=testnet
User says:
karpak-life-register
Please register my wallet on Karpak Life and mint the Soulbound Token.
Registration details:
Nickname: test Twitter handle (no @): abc Identity type: AI Agent
Run the register-and-mint script with these parameters. Open browser bridge when wallet interaction is needed. Report the final result when done.
You run:
node ${HERMES_SKILL_DIR}/register-and-mint.mjs --nickname=test --twitter=abc --identity=IDENTITY_TYPE_AGENT --env=mainnet
User says:
karpak-life-register, nickname: alice, identity: HUMAN, env: mainnet
You run:
node ${HERMES_SKILL_DIR}/register-and-mint.mjs --nickname=alice --identity=IDENTITY_TYPE_HUMAN --env=mainnet
Construct the CLI command from extracted parameters and run:
node ${HERMES_SKILL_DIR}/register-and-mint.mjs [OPTIONS]
Path Resolution:
${HERMES_SKILL_DIR}is automatically replaced with the skill's absolute directory at load time.
| Flag | Default | Description |
|---|---|---|
--nickname=NAME |
Auto-generated (karpak_agent_XXXXXXXX) |
Display name on karpak-life |
--identity=TYPE |
IDENTITY_TYPE_HUMAN |
IDENTITY_TYPE_HUMAN or IDENTITY_TYPE_AGENT |
--twitter=USER |
Auto-generated | Twitter username for SBT (no @) |
--wallet=0x... |
(via bridge) | Skip wallet connect step |
--env=testnet\|mainnet |
(required) | Target environment |
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
│ 1. Connect │────▶│ 2. IssueNonce│────▶│ 3. Sign msg │
│ wallet │ │ (API) │ │ (MetaMask) │
└─────────────┘ └──────────────┘ └───────┬───────┘
│
▼
┌──────────────┐ ┌──────────────────────────────────────┐
│ 5. Profile? │◀───▶│ 4. Verify → accountStatus │
│ (if needed)│ │ PROFILE_REQUIRED → set profile │
└──────┬───────┘ │ CREDENTIAL_REQUIRED → mint SBT │
│ │ ACTIVE → done! │
▼ └──────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 6. Mint SBT Flow: │
│ credentialMintConfig → mint-signature → │
│ MetaMask tx → wait confirm → verify credential │
└─────────────────────────────────────────────────────┘
The script opens the browser exactly twice (or once if already registered):
Each browser tab auto-closes after the user acts.
Before minting, the script calls GET /api/mint-status on the SBT server. If mintEnded is true, the mint is skipped and the user is notified. This prevents attempting to mint when the campaign has ended.
The script handles these errors gracefully:
| Error | Behavior |
|---|---|
| No wallet extension | Reports to user, exits |
| User rejects signature | Reports to user, exits |
| User rejects transaction | Reports to user, exits |
| Nonce expired | Suggests retry |
| Invalid token | Suggests re-login |
| Transaction reverted | Reports on-chain failure |
| Timeout (120s) | Reports timeout, exits |
ACCOUNT_STATUS_PROFILE_REQUIRED → PUT /v1/me → CREDENTIAL_REQUIRED or ACTIVE
ACCOUNT_STATUS_CREDENTIAL_REQUIRED → mint SBT → ACTIVE
ACCOUNT_STATUS_ACTIVE → done
| Variable | Default | Description |
|---|---|---|
KARPAK_ENV |
— | Target environment (alternative to --env) |
KARPAK_NICKNAME |
(auto) | Default nickname |
KARPAK_IDENTITY |
IDENTITY_TYPE_HUMAN |
Identity type |
KARPAK_TWITTER |
(auto) | Default Twitter handle |
KARPAK_WALLET |
(bridge) | Pre-set wallet address |
BRIDGE_PORT |
random 3000-4000 | Local bridge server port |
这是一个功能完整的 Web3 注册与 SBT 铸造工具。优点是零依赖、流程自动化程度高、钱包交互只需打开浏览器两次就完成全流程,错误提示也很清晰。不足是文档中环境配置描述略有出入,可能导致困惑。整体质量良好,使用体验设计周到,适合需要 Karpak Life 注册和 SBT 铸造的用户。