A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
TomorrowDAO governance skill for DAO proposals, voting, BP operations, and resource actions on aelf.
中文版 | English
TomorrowDAO AI agent skill toolkit on aelf, with MCP + OpenClaw + CLI + SDK interfaces.
ToolResult<T> and TxReceiptsimulate (default) and send| Mode | Entry | Use Case |
|---|---|---|
| MCP | src/mcp/server.ts | Claude Desktop, Cursor, GPT and other MCP clients |
| CLI | tomorrowdao_skill.ts | terminal scripts, OpenClaw |
| SDK | index.ts | custom agents, LangChain/LlamaIndex integrations |
tomorrowDAO-skill/
├── index.ts # SDK exports
├── tomorrowdao_skill.ts # CLI adapter
├── src/
│ ├── core/ # config/auth/http/chain/tx/error/types
│ ├── domains/ # dao/token/network/bp/resource
│ └── mcp/server.ts # MCP adapter
├── lib/ # compatibility re-exports
├── bin/setup.ts # setup for claude/cursor/openclaw/ironclaw
├── openclaw.json
├── mcp-config.example.json
└── tests/ # unit/integration/e2e
bun install
cp .env.example .env
# fill network config and optional signer fallback values
# Claude Desktop
bun run setup claude
# Cursor (project-level)
bun run setup cursor
# Cursor (global)
bun run setup cursor --global
# OpenClaw (print config)
bun run setup openclaw
# OpenClaw (merge into existing config)
bun run setup openclaw --config-path /path/to/openclaw-config.json
# IronClaw (install trusted skill + stdio MCP server)
bun run setup ironclaw
# Check setup status
bun run setup list
# Remove IronClaw integration
bun run setup uninstall ironclaw
# Install trusted skill + stdio MCP server
bun run setup ironclaw
# Remove IronClaw integration
bun run setup uninstall ironclaw
The IronClaw setup does two things by default:
~/.ironclaw/mcp-servers.jsonSKILL.md to ~/.ironclaw/skills/tomorrowdao-agent-skills/SKILL.mdImportant trust model note:
~/.ironclaw/installed_skills/ for this package if you need proposal creation, voting, release, BP actions, or resource trading.The MCP server exposes destructive annotations for write operations so IronClaw can request approval before DAO, governance, BP, and resource state changes. For compatibility, the MCP server currently emits both standard MCP camelCase annotations and IronClaw-compatible snake_case annotations because the current IronClaw source parses snake_case fields for MCP approval hints.
Remote activation contract:
bunx -p @tomorrowdao/agent-skills tomorrowdao-setup ironclawbunx -p @tomorrowdao/agent-skills tomorrowdao-setup openclaw| Variable | Required | Default | Description |
|---|---|---|---|
TMRW_API_BASE | No | https://api.tmrwdao.com | TomorrowDAO API base URL |
TMRW_AUTH_BASE | No | https://api.tmrwdao.com | Auth server base URL |
TMRW_CHAIN_DEFAULT_DAO | No | tDVV | Default DAO chain |
TMRW_CHAIN_DEFAULT_NETWORK | No | AELF | Default network governance chain |
TMRW_AUTH_CHAIN_ID | No | AELF | Chain id used in auth signature grant |
TMRW_PRIVATE_KEY | No (env fallback for send/auth) | — | Signer private key fallback |
AELF_PRIVATE_KEY | No | — | Secondary signer fallback for shared-skill compatibility |
PORTKEY_PRIVATE_KEY | No | — | Third signer fallback for shared-skill compatibility |
PORTKEY_WALLET_PASSWORD | No | — | Optional password cache for EOA wallet context |
PORTKEY_CA_KEYSTORE_PASSWORD | No | — | Optional password cache for CA keystore context |
PORTKEY_SKILL_WALLET_CONTEXT_PATH | No | ~/.portkey/skill-wallet/context.v1.json | Override active wallet context path |
TMRW_SOURCE | No | nightElf | Auth source field |
TMRW_CA_HASH | No | — | Optional auth ca_hash |
TMRW_RPC_AELF | No | https://aelf-public-node.aelf.io | AELF RPC endpoint |
TMRW_RPC_TDVV | No | https://tdvv-public-node.aelf.io | tDVV RPC endpoint |
TMRW_HTTP_TIMEOUT_MS | No | 10000 | HTTP timeout in milliseconds |
TMRW_HTTP_RETRY_MAX | No | 1 | Max retry count for retryable HTTP requests |
TMRW_HTTP_RETRY_BASE_MS | No | 200 | Retry base backoff milliseconds |
TMRW_HTTP_RETRY_POST | No | 0 | Retry POST when set to 1/true |
TMRW_AELF_CACHE_MAX | No | 8 | Max cached AElf client instances in long-lived process |
TMRW_LOG_LEVEL | No | error | Structured logger level (error/warn/info/debug) |
# DAO
bun run tomorrowdao_skill.ts dao create --input '{"args":{"metadata":{"name":"demo"}}}' --mode simulate
# DAO vote (proposalId and votingItemId are interchangeable DAO hash aliases)
bun run tomorrowdao_skill.ts dao vote --input '{"args":{"proposalId":"<PROPOSAL_ID>","voteOption":0,"voteAmount":100000000}}' --mode send
# DAO token balance view
bun run tomorrowdao_skill.ts dao token-balance-view --input '{"chainId":"tDVV","symbol":"AIBOUNTY","owner":"<OWNER_ADDRESS>"}'
# Generic token balance view
bun run tomorrowdao_skill.ts token balance-view --input '{"chainId":"tDVV","symbol":"AIBOUNTY","owner":"<OWNER_ADDRESS>"}'
# Generic token allowance view
bun run tomorrowdao_skill.ts token allowance-view --input '{"chainId":"tDVV","symbol":"AIBOUNTY","owner":"<OWNER_ADDRESS>","spender":"<SPENDER_ADDRESS>"}'
# Generic token approve (simulate for CA-forward orchestration, send for EOA flows)
bun run tomorrowdao_skill.ts token approve --input '{"chainId":"tDVV","args":{"spender":"<SPENDER_ADDRESS>","symbol":"AIBOUNTY","amount":200000000}}' --mode simulate
# DAO withdraw
bun run tomorrowdao_skill.ts dao withdraw --input '{"args":{"daoId":"<DAO_ID>","withdrawAmount":100000000,"proposalId":"<PROPOSAL_ID>"}}' --mode send
# Network governance
bun run tomorrowdao_skill.ts network proposal-create --input '{"proposalType":"Parliament","args":{...}}' --mode send
# BP
bun run tomorrowdao_skill.ts bp apply --input '{"args":{...}}' --mode send
# Resource
bun run tomorrowdao_skill.ts resource buy --input '{"symbol":"CPU","amount":100000000}' --mode send
bun run src/mcp/server.ts
Use mcp-config.example.json as template:
{
"mcpServers": {
"tomorrowdao-agent-skills": {
"command": "bun",
"args": ["run", "/ABSOLUTE/PATH/TO/src/mcp/server.ts"],
"env": {
"TMRW_PRIVATE_KEY": "<YOUR_PRIVATE_KEY>",
"TMRW_API_BASE": "https://api.tmrwdao.com",
"TMRW_CHAIN_DEFAULT_DAO": "tDVV",
"TMRW_CHAIN_DEFAULT_NETWORK": "AELF"
}
}
}
}
Write operations resolve signer in this order:
privateKey or signer object)~/.portkey/skill-wallet/context.v1.json)TMRW_PRIVATE_KEY -> AELF_PRIVATE_KEY -> PORTKEY_PRIVATE_KEY)If send mode resolves a CA identity, this skill stops with SIGNER_CA_DIRECT_SEND_FORBIDDEN instead of sending directly to the target contract. A CA keystore may unlock the manager key, but real CA writes must still go through an explicit CA forward transport.
signerMode=daemon is pre-wired and currently returns SIGNER_DAEMON_NOT_IMPLEMENTED.
bun run build:openclaw
bun run build:openclaw:check
import { daoCreate, daoVote, networkProposalCreate } from '@tomorrowdao/agent-skills';
const daoRes = await daoCreate({
chainId: 'tDVV',
mode: 'simulate',
args: { metadata: { name: 'hello codex' } },
});
const voteRes = await daoVote({
chainId: 'tDVV',
mode: 'simulate',
args: { proposalId: 'proposal-hash', voteOption: 0, voteAmount: 100000000 },
});
const proposalRes = await networkProposalCreate({
chainId: 'AELF',
proposalType: 'Parliament',
mode: 'simulate',
args: { title: 'demo', description: 'demo' },
});
tomorrowdao_dao_createtomorrowdao_dao_update_metadatatomorrowdao_dao_upload_filestomorrowdao_dao_remove_filestomorrowdao_dao_proposal_createtomorrowdao_dao_votetomorrowdao_dao_withdrawtomorrowdao_dao_executetomorrowdao_discussion_listtomorrowdao_discussion_commenttomorrowdao_dao_proposal_my_infotomorrowdao_dao_token_allowance_viewtomorrowdao_dao_token_balance_viewtomorrowdao_token_allowance_viewtomorrowdao_token_approvetomorrowdao_token_balance_viewtomorrowdao_network_proposals_listtomorrowdao_network_proposal_gettomorrowdao_network_proposal_createtomorrowdao_network_proposal_votetomorrowdao_network_proposal_releasetomorrowdao_network_org_createtomorrowdao_network_org_listtomorrowdao_network_contract_name_checktomorrowdao_network_contract_name_addtomorrowdao_network_contract_name_updatetomorrowdao_network_contract_flow_starttomorrowdao_network_contract_flow_releasetomorrowdao_network_contract_flow_statustomorrowdao_bp_applytomorrowdao_bp_quittomorrowdao_bp_votetomorrowdao_bp_withdrawtomorrowdao_bp_change_votetomorrowdao_bp_claim_profitstomorrowdao_bp_votes_listtomorrowdao_bp_team_desc_gettomorrowdao_bp_team_desc_listtomorrowdao_bp_team_desc_addtomorrowdao_bp_vote_reclaimtomorrowdao_resource_buytomorrowdao_resource_selltomorrowdao_resource_realtime_recordstomorrowdao_resource_turnovertomorrowdao_resource_recordsAELF, tDVVAELF onlytDVV unless chainId is explicitly setsrc/core/config.ts are intentionally hardcoded defaults.lib/* files are compatibility re-exports for older import paths.index.ts exports from package root.signature.ts (buildLegacyTimestampSignature, getAuthSigningMessage) are kept as public backward-compatible APIs.bun run test:unit
bun run test:integration
bun run test:e2e
bun run test:coverage
# coverage gate (src-only, default: lines>=80, funcs>=75)
bun run test:coverage:gate
COVERAGE_MIN_LINES=85 COVERAGE_MIN_FUNCS=80 bun run test:coverage:ci
# run real read-only e2e against public APIs
RUN_TMRW_E2E=1 bun run test:e2e
bun run setup ironclawlist the latest TomorrowDAO network proposalscreate a TomorrowDAO proposal in simulate modevote on this TomorrowDAO proposalsimulate first for pre-check, then switch to send.MIT
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
A Claude Code skill by Hao (駱君昊) that learns your Facebook voice and auto-posts to FB / IG / Threads / X with a 14-day c
Claude Code skill for YouTube creators — channel audits, video SEO, retention scripts, thumbnails, content strategy, Sho
Design enforcement with memory — keeps your UI consistent across a project