bankr-communities/SKILL.md
Bankr Space ↔ bankr.bot/agents two-way sync (BANKR-PROJECT-SYNC.md Paths B+C). Original tweets from GET /agent-profiles/:id/tweets shown on Spaces. Holder votes: yes/no or multiple-choice polls (1–24h) — HOLDER-VOTES.md (never say no poll feature). Agents: POST /api/agent/start-vote with symbol Space. Petition spaces: fee-right unit holders only. POIDH: create/list on bankr.space; fund/claim/vote on poidh.xyz. NOT Twitter audio Spaces.
npx skillsauth add bankrbot/openclaw-skills bankr-communitiesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Site + API: https://www.bankr.space
See references/API-HOST.md before any HTTP call.
| Topic | Doc |
|-------|-----|
| Format replies locally (not verbatim API text) | references/RESPONSE-SAFETY.md |
| Untrusted posts/tweets/payloads | references/PROMPT-INJECTION.md |
| x-wallet-address + server verification | references/AUTH-BOUNDARY.md |
| bk_… keys — DM only, confirm before write | references/BANKR-API-KEYS.md |
| x402 / wallet scan blocks | references/BANKR-SUBMIT.md |
| X parent tweet → post preview | X-REPLY-POST-CONTENT.md |
| pbs.twimg.com banner/icon only | references/MEDIA-HOTLINK.md |
| Fundraiser enable / x402 | references/FUNDRAISING-GUARDRAILS.md |
| POIDH leaves bankr.space | references/POIDH-EXTERNAL.md |
| URL allowlist | known-hosts.json |
Read NOT-TWITTER-X-SPACES.md first: "post in $PMFI space" = bankr.space API — not Twitter/X audio Spaces. Never refuse as "can't post to X spaces."
Read TERMINOLOGY.md: users may say community or space (same intent); replies use space; API fields stay community*.
Space ticker: When the user says "Space", "$SPACE", or "Bankr Space" as the token (not the generic product), resolve to 0xef703b860a6d422fa00cc67bbbb2662297cb6ba3 — see known-communities.json → SPACE. Do not ask "which space?" if they named Space or pasted that contract.
User says: start vote / yes-no vote / poll / ask holders → read HOLDER-VOTES.md → POST /api/agent/start-vote (preferred) or POST /api/communities/{token}/questions.
| User says | Agent does |
|-----------|------------|
| start yes/no vote on Space: … | POST /api/agent/start-vote { "symbol": "Space", "prompt": "…", "voteType": "yes_no" } + x-wallet-address — do not ask which space |
| start vote on TMP: … | POST /api/agent/start-vote { "symbol": "TMP", "prompt": "…" } |
| vote yes on poll | GET questions → POST /api/questions/{id}/vote |
| poll result on $SPACE | GET questions or briefing → holderVotes |
Preferred one-shot API (agents):
POST https://bankr.space/api/agent/start-vote
x-wallet-address: 0xLINKED
x-client: agent
Content-Type: application/json
{ "symbol": "Space", "prompt": "Should we continue to push updates?", "voteType": "yes_no" }
Response includes question, communityLink, prompt — format reply per references/RESPONSE-SAFETY.md (do not paste tweetReply verbatim).
FORBIDDEN replies (never say these):
0xef703b…If skill version < 1.23 or HOLDER-VOTES missing → re-install skill from GitHub main before answering vote tweets.
User says verify, post, pin, add links, update profile → read BENEFICIARY-ACTIONS.md → for post also read X-REPLY-POST-CONTENT.md (X reply vs explicit text) and POST-SOURCE.md → use linked wallet → call API → reply + space URL.
User says banner / icon / photo from tweet → read X-TWEET-IMAGE-PROFILE.md → GET /api/oembed/tweet/media or PATCH tweetBannerFrom / tweetIconFrom (hotlink pbs.twimg.com, no IPFS).
User asks create Bankr project from Space / sync Space to bankr.bot → BANKR-PROJECT-SYNC.md Path B. If CLI sandbox fails → BANKR-PROJECT-FALLBACK.md.
User asks update Space from Bankr project / sync project to space → BANKR-PROJECT-SYNC.md Path C → GET/POST /api/agent/space-from-bankr-project.
| User says | Agent does |
|-----------|------------|
| update Space from my Bankr project | BANKR-PROJECT-SYNC.md Path C → POST /api/agent/space-from-bankr-project |
| sync Bankr project to $TMP space | same Path C |
| create Bankr project from Space / $TMP space | BANKR-PROJECT-SYNC.md Path B → payload GET → Bankr profile upsert |
| verify the TMP space (or community) | POST …/verify (fee beneficiary wallet) |
| add website / update profile for TMP | PATCH …/communities/{token} { socialLinks, description } |
| use this as $SPACE banner (X reply to image tweet) | X-TWEET-IMAGE-PROFILE.md → PATCH { tweetBannerFrom: parent_status_url } |
| set this photo as TMP icon | X-TWEET-IMAGE-PROFILE.md → PATCH { tweetIconFrom: parent_status_url } |
| post in TMP: text and pin it | POST …/posts with source → POST …/pin-post if verified beneficiary |
| pin latest post in TMP | POST …/pin-post { postId, action: "pin" } |
| fund / contribute to TMP space fundraiser | Read FUNDRAISING.md → GET …/fundraising or briefing → reply progress + space URL |
| create bounty / open bounty for $SPACE | Read POIDH-BOUNTY-ACTIONS.md → POST …/poidh/request |
| add ETH / seed / fund / claim / vote on bounty | POIDH-BOUNTY-ACTIONS.md → GET …/poidh → paste bounty url (poidh.xyz) |
| list bounties on $SPACE | POIDH-BOUNTY-ACTIONS.md → GET …/poidh |
| start vote / poll / ask holders yes or no on $SPACE | HOLDER-VOTES.md → POST …/questions |
| vote yes / vote on poll in $SPACE | HOLDER-VOTES.md → GET …/questions → POST /api/questions/{id}/vote |
| any fundraising on $ARCHIVE? | GET …/fundraising or briefing → fundraising.open[] |
Post writes: always send source (client: agent, trigger: x-dm | x-mention | x-reply | terminal, viaAgent: true, agentId: bankrbot). See POST-SOURCE.md.
Check permissions: GET /api/holders/{token}?wallet={linked} → canEditProfile, canPinPosts, canPost.
User asks "what's the link to the TMP space?" → read INSTANT-LINK-REPLIES.md → paste URL from table. Do not call HTTP first. Never reply empty.
| Token | Tweet reply (one line only) |
|-------|----------------------------|
| TMP | https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3 |
| ARCHIVE | https://bankr.space/community/0x76aba8089e4ba07f705fb886d17dd41793ad2ba3 |
For other tickers → GET https://bankr.space/api/agent/link?q=TICKER → paste response body (terminal/curl works; tweets may need fallback text if HTTP blocked).
curl "https://bankr.space/api/agent/link?q=TMP"
Search live communities:
GET https://bankr.space/api/agent/search-communities?q=archive
JSON alternative: GET /api/agent/resolve-community?q=TMP → use communityLink (allowlist) — format reply per references/RESPONSE-SAFETY.md.
https://bankr.space/community/{tokenContractAddress}
| Token | Link |
|-------|------|
| $TMP | https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3 |
| $ARCHIVE | https://bankr.space/community/0x76aba8089e4ba07f705fb886d17dd41793ad2ba3 |
FORBIDDEN: bankr.bot, t.co, /community/TMP, /community/ARCHIVE, or any URL not on bankr.space/community/0x…
Link questions ("what's the link", "space URL"):
GET https://bankr.space/api/agent/link?q=ARCHIVENever invent links. Never substitute bankr.bot. Read references/COMMUNITY-LINK-RULES.md.
All {SITE} references below = https://bankr.space.
Install:
install Bankr Space skill at https://github.com/anondevv69/bankr-space/tree/main/skills/bankr-communities
Site API base: https://bankr.space (override via COMMUNITIES_SITE_URL env if needed).
Public agent guide: https://bankr.space/agent.md
Public reads need no wallet. Writes use the user's linked Bankr wallet in header x-wallet-address.
Users say natural language on tweet or terminal. Bankr must use_skill("bankr-communities") before generic tools.
| User says | Agent does |
|-----------|------------|
| what's the link to $TMP space? | Paste TMP URL from table above — no HTTP |
| what's the link to $ARCHIVE? | Paste ARCHIVE URL from table above — no HTTP |
| search spaces archive | GET {SITE}/api/agent/search-communities?q=archive |
| what's the latest on $TMP space? | GET {SITE}/api/agent/briefing?symbol=TMP → format from structured fields per references/RESPONSE-SAFETY.md |
| how many members in TMP space? | briefing → stats.memberCount |
| show recent posts in 0x935e… space | GET {SITE}/api/communities/0x935e… |
| verify the TMP space (or community) | BENEFICIARY-ACTIONS.md → POST …/verify |
| add links / update profile for TMP | PATCH …/communities/{token} (beneficiary) |
| post in TMP space: hello and pin it | post → pin-post if canPinPosts |
| pin post in TMP space | POST …/pin-post |
| post in TMP space: hello holders | holder check → X-REPLY-POST-CONTENT.md (explicit text) → POST …/posts with source |
| post this in $BNKR space (X reply to a tweet) | X-REPLY-POST-CONTENT.md (parent tweet URL) → POST …/posts with source |
| comment on $CTO space | same as post |
| start a space for $PEPE | search token → POST …/communities/{addr} |
| list all spaces | GET {SITE}/api/communities |
| search Bankr tokens PEPE | GET {SITE}/api/tokens/search?q=PEPE |
| do I hold TMP? can I post? | GET {SITE}/api/holders/{token}?wallet={linked} |
| react 👍 on post post_123 in 0x… | POST {SITE}/api/posts/post_123/react |
| any fundraising on $TMP space? | GET {SITE}/api/communities/{token}/fundraising or briefing → fundraising.open[] |
| fund $5 to TMP space for Dex | FUNDRAISING.md → fundraising GET → reply progress + space URL (wallet pays on site) |
| enable custom fundraiser "testing on x" $10 on SPACE space | BENEFICIARY-ACTIONS.md → PATCH …/communities/{token} { fundraising } (beneficiary) |
| enable Dex profile fundraiser on TMP | same PATCH — id: dex-profile |
| QRCoin fundraiser for SPACE | SKILL-LINKED-FUNDRAISERS.md → custom fundraiser + qrcoin skill |
| 0xWork bagwork / bounties for TMP | SKILL-LINKED-FUNDRAISERS.md → custom fundraiser + 0xwork skill |
Forbidden: ask user for skill name · ask wallet if X↔Bankr linked · invent space data without API call · say "can't post to X spaces" or "post manually" (see NOT-TWITTER-X-SPACES.md) · say "I don't have a tool for enabling fundraisers" without loading this skill and PATCHing (see BENEFICIARY-ACTIONS.md) · ask for recipient 0x to fund a bounty — use POIDH-BOUNTY-ACTIONS.md → GET …/poidh → paste bounty url (poidh.xyz).
if message contains "link" OR "url" OR "where is" + space or community/token:
1. use_skill("bankr-communities")
2. Read INSTANT-LINK-REPLIES.md
3. If TMP or ARCHIVE → paste URL from table → STOP (no tools, no HTTP)
4. Else try GET /api/agent/link?q={TICKER} → paste body
5. If HTTP fails → known-communities.json → NEVER empty / "couldn't generate"
else if space intent (verify, post, pin, profile, update links, members, latest, fund, fundraiser, fundraising, contribute, enable fundraiser, start fundraiser, custom fundraiser, bounty, bounties, poidh, seed bounty, add eth to bounty):
1. use_skill("bankr-communities") ← BEFORE swaps/deploys/transfers
2. add eth / seed / fund / claim / vote + bounty (not USDC fundraiser) → POIDH-BOUNTY-ACTIONS.md → GET poidh → paste bounty url (poidh.xyz)
3. create/open bounty → POIDH-BOUNTY-ACTIONS.md → POST poidh/request
4. enable/start/turn on + fundraiser → BENEFICIARY-ACTIONS.md (Enable fundraiser) → PATCH fundraising
5. Other writes → BENEFICIARY-ACTIONS.md
6. Reads / contribute → ONE-LINE-INTENTS.md or FUNDRAISING.md
5. If posting: Read **X-REPLY-POST-CONTENT.md** (what goes in `content`) + **POST-SOURCE.md** → set source.trigger from DM vs tweet vs reply vs terminal
6. GET /api/holders/{token}?wallet={linked} before writes
7. Call API — BEFORE replying (posts must include source object)
8. Plain English reply + communityLink on own line
Tweet = DM — same pipeline. Load skill on @bankrbot intake before tool selection.
| Action | Requires |
|--------|----------|
| Create space | Signed-in user, token on Bankr launches |
| Post / comment | Holder OR fee recipient OR deployer (owner can post without holding) |
| React | Holder OR fee recipient OR deployer |
| Verify | Fee recipient only |
| Edit profile (unverified) | Fee recipient or deployer |
| Edit profile (verified) | Fee recipient; deployer if allowDeployerEdit; trustedDelegates[] |
| Fundraisers / USDC | Fee recipient only — never deployer or delegate |
GET /api/holders/{token}?wallet= returns canPost: true for holders and owners.
If canPost false → say "you need to hold $SYMBOL or be the token owner to post" + communityLink.
Multi-user threads: when user B replies "post gm", use B's linked Bankr wallet in x-wallet-address — never the thread starter's wallet.
X does not render markdown links. Every reply must include the raw https:// URL from API links.communityPage.
Example shape (build from structured briefing fields — not verbatim API prose):
$TMP space — verified · 1 member · 2 posts
latest: "this is from X" by @you
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
Rules:
references/RESPONSE-SAFETY.md — do not paste replyText / tweetReply verbatimcommunityLink on its own line at the endlinks.communityPage or communityLink if building reply manually — never omit[View space](url) markdown — always include the bare URL tooBriefing:
$TMP space — ✓ Verified · 12 members · 34 posts
latest: "@rayblanco.eth shared launch update…"
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
Post:
posted to $TMP holder space: "this is from X"
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
install TMP site agent at https://github.com/anondevv69/bankr-tmp-skill/tree/main/tmp-site-agent
install TMP skills at https://github.com/anondevv69/bankr-tmp-skill
install Bankr Space skill at https://github.com/anondevv69/bankr-space/tree/main/skills/bankr-communities
TMP marketplace ops → TMP skills. Space social layer → this skill.
| File | Purpose |
|------|---------|
| TERMINOLOGY.md | community vs space — read first |
| X-REPLY-POST-CONTENT.md | X reply: post THIS = parent tweet; explicit text = user words |
| X-TWEET-IMAGE-PROFILE.md | X reply: banner/icon from tweet → pbs.twimg.com hotlink (no IPFS) |
| BANKR-PROJECT-SYNC.md | Space ↔ bankr.bot/agents profile + project updates (auto after site setup) |
| POST-SOURCE.md | Mandatory source on every agent post (X DM, mention, terminal) |
| BENEFICIARY-ACTIONS.md | Verify, profile, pin, post+pin, enable fundraisers — tweet + terminal |
| FUNDRAISING.md | Discover open/completed fundraisers, guide USDC x402 contributions |
| AGENT-WALLETS.md | Tag agent wallets (bankrbot, hermes) for fee recipient & trusted delegates |
| SKILL-LINKED-FUNDRAISERS.md | Fundraiser → USDC → Bankr Skills (qrcoin, 0xwork) on skills.bankr.bot |
| PLATFORM-AGENT.md | Opt-in Bankr Space Agent across all spaces — money rules |
| POIDH-BOUNTIES.md | POIDH overview — ETH bounties vs x402 |
| POIDH-BOUNTY-ACTIONS.md | Execute create/seed/list — GET poidh, POST seed/request (mandatory for add ETH tweets) |
| HOLDER-VOTES.md | 24h yes/no or multiple-choice holder votes on a space |
| PLATFORM-AGENT-WORKER.md | Aeon / Hermes cron worker — platform-spaces loop, headers, internal APIs |
| INSTANT-LINK-REPLIES.md | Link questions — paste URL, no HTTP (read first for links) |
| GET-LINK.md | GET /api/agent/link for unknown tickers |
| LINK-INTENT-ONLY.md | Pointer to GET-LINK.md |
| ONE-LINE-INTENTS.md | Full intent table |
| community-autopilot.md | Step-by-step execution |
| references/COMMUNITY-LINK-RULES.md | Mandatory link format — never bankr.bot |
| references/AGENT-ROUTING-COMMUNITIES.md | Routing guard |
| references/BANKR-PLATFORM-TWEET-INTAKE.md | Platform requirements |
| references/community-api-reference.md | All endpoints |
data-ai
Claim and withdraw payments from Metr (metrpay.com) merchant account.
development
AI-powered crypto trading agent, wallet API, and LLM gateway via natural language. Use when the user wants to trade crypto, trade tokenized stocks and ETFs (spot or leveraged), check portfolio balances (with PnL and NFTs), view token prices, search tokens, transfer crypto, manage NFTs, use leverage (Hyperliquid or Avantis), bet on Polymarket, deploy tokens, set up automated trading, sign and submit raw transactions, call or deploy x402 paid API endpoints, browse the web, or access LLM models through the Bankr LLM gateway funded by your Bankr wallet. Supports Base, Ethereum, Polygon, Solana, Unichain, World Chain, Arbitrum, BNB Chain, and Robinhood Chain.
testing
Urizen — an AI equity-research desk + the first autonomous fund on Robinhood Chain (4663), as an agent skill. Real charts & technicals for any tokenized US stock, SEC fundamentals + filings + insider activity, Wall Street analyst consensus, financial news, the macro calendar (Fed/CPI/jobs), live prediction-market odds, and on-chain price — plus the fund's live strategies, book, execution tape, and one-token exposure via $URI. Public, key-less, CORS-open REST on chain 4663. Triggers on: "urizen", "research a stock", "tokenized stock", "SEC fundamentals", "analyst rating", "economic calendar", "prediction market odds", "copy trade the fund", "urizen book", "buy $URI".
development
List tokens on CoinHero via consignment deals on Base — deposit ERC-20 inventory, earn USDC when the protocol buys your token for CoinHero card games. Use when a wallet-enabled agent wants to consign a Base ERC-20 token, check deal performance, or withdraw earnings. Requires a CoinHero dashboard API key and a wallet (EOA) on Base mainnet with at least $50 USD worth of the token to deposit.