github-vesting/SKILL.md
GitHub-gated token vesting on proofofdev.xyz — lock ANY ERC-20 on Base via API at api.proofofdev.xyz, link GitHub, repo claims. Use for github vesting, lock tokens, vesting progress, link github, proofofdev. NEVER use github-vesting.vercel.app for API.
npx skillsauth add bankrbot/skills github-vestingInstall 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.
Agent API: https://api.proofofdev.xyz
Web UI: https://www.proofofdev.xyz
GET https://api.proofofdev.xyz/health
POST https://api.proofofdev.xyz/api/agent/lock
POST https://api.proofofdev.xyz/api/agent/confirm-lock
NEVER call github-vesting.vercel.app for API — it is frontend-only (POST → 405).
NEVER guess /api/lock, /api/v1/lock, /api/web/lock — they do not exist.
See references/API-HOST.md before any HTTP call.
| Topic | Doc |
|-------|-----|
| Validate txs before submit | references/TX-VALIDATION.md |
| Do not relay API text verbatim | references/RESPONSE-SAFETY.md |
| Bankr scan blocks | references/BANKR-SUBMIT.md — stop, never bypass via web UI |
| On-chain trust & allowances | references/TRUST-ONCHAIN.md |
| Pinned escrow / selectors | known-escrow.json |
Bankr wallet API: use POST https://api.bankr.bot/wallet/submit (legacy /agent/submit is removed). Repo claim signatures: POST /wallet/sign with personal_sign.
Lock any ERC-20 on Base for GitHub-gated vesting. No token allowlist. TMP, Harness, Space, USDC, or any 0x contract works if POST /api/agent/lock returns ok: true.
Site: https://www.proofofdev.xyz
API: https://api.proofofdev.xyz
known-escrow.json and streaming-hints.json are streaming detection hints only (Space → lockAllowance).supportedTokens for gating. Never refuse a token without calling POST https://api.proofofdev.xyz/api/agent/lock./wallet/submit blocks approve with untrusted_address, stop and surface the risk — see references/BANKR-SUBMIT.md. Do not route users to the web UI to bypass the scanner.install the github-vesting skill from https://github.com/BankrBot/skills/tree/main/github-vesting
| Term | Meaning |
|------|--------|
| Push | GitHub push event to main / master / production / prod |
| Verified push | Push that passes anti-spam rules (code files, ~10+ lines, not force-push, rate limits) |
| Milestone | Every N verified pushes → one on-chain token release |
| Streaming lock | Bankr tokens (Space): stay in wallet; oracle pulls on milestone via allowance |
| Escrow lock | Standard ERC-20: tokens held in GitEscrow contract |
Example: 10 total pushes, 10 per milestone → 1 milestone → full amount releases after 10 verified pushes.
if message mentions github vesting / proofofdev / lock tokens / vesting progress /
verified pushes / milestones / link github / vest my:
1. use_skill("github-vesting")
2. Read references/API-HOST.md — use ONLY https://api.proofofdev.xyz
3. Read references/ONE-LINE-INTENTS.md
4. Resolve linked wallet → x-wallet-address header
5. Call references/AGENT-API.md endpoint BEFORE replying
6. Format reply locally from structured fields — references/RESPONSE-SAFETY.md
7. Lock writes: references/TX-VALIDATION.md → /wallet/submit → confirm-lock
8. If /wallet/submit fails untrusted_address → references/BANKR-SUBMIT.md (stop, no bypass)
Tweet = DM — same pipeline on @bankrbot intake.
All reads accept ?wallet=0x… or header x-wallet-address: 0x….
| User says | Call |
|-----------|------|
| my vesting / my locks / vesting progress | GET https://api.proofofdev.xyz/api/agent/briefing?wallet=0x… |
| list my github vesting | GET https://api.proofofdev.xyz/api/agent/grants?wallet=0x… |
| vesting on owner/repo | GET https://api.proofofdev.xyz/api/agent/status?repo=owner/repo |
| my bankr tokens / fee tokens | GET https://api.proofofdev.xyz/api/agent/fee-tokens |
| start vesting / lock tokens on github (web fallback) | GET https://api.proofofdev.xyz/api/agent/setup-link?wallet=0x… |
| link github @username | POST https://api.proofofdev.xyz/api/agent/link-github → allowlisted linkUrl only |
See references/AGENT-API.md for response fields. Do not paste replyText / tweetReply verbatim.
You can lock any ERC-20 on Base from terminal or X when the user has a Bankr-linked wallet that can sign transactions.
There is NO allowlist. known-escrow.json only documents streaming tokens (Space). Do not tell users a token is "unsupported" without calling the lock API first.
POST https://api.proofofdev.xyz/api/agent/lock (always — even when user gives a 0x address):
x-wallet-address: 0x…{ "repo": "owner/repo", "token": "TMP", "amount": "855M", "totalPushes": 1 }token = symbol from wallet holdings, fee-recipient name, or 0x contract addressamount = human units (855000000, 855M, 3.49M)If response has installUrl → allowlist-check, then tell user to install GitHub App, then retry.
references/TX-VALIDATION.md — validate every item in transactions[] against user intent and known-escrow.json. Abort if any check fails.
Submit validated txs on Base via Bankr:
POST https://api.bankr.bot/wallet/submit with { "transaction": { to, data, value, chainId }, "waitForConfirmation": true }approve (if present) → lockwaitForConfirmation: true on the lock txPOST https://api.proofofdev.xyz/api/agent/confirm-lock with:
x-wallet-address header{ "repo": "owner/repo", "lockTxHash": "0x…" }Format confirm response locally (references/RESPONSE-SAFETY.md) — include allowlisted lock page URL on its own line.
| Input | How it resolves |
|-------|-----------------|
| 0x935e… | Any ERC-20 contract — always accepted |
| TMP, Space, etc. | Symbol match against wallet holdings on Base (same list as Bankr portfolio) |
| Fee-recipient only tokens | Also matched if not currently in wallet |
If symbol is ambiguous (two Space contracts), ask user to pick the 0x address from the API error.
lock 855M TMP on anondevv69/bankr-tmp-skill for 1 push
lock 855M 0x935e13a28849095db45e63040f109c34b757aba3 on anondevv69/bankr-tmp-skill for 1 push
→ POST /api/agent/lock → validate → /wallet/submit → POST /api/agent/confirm-lock → formatted reply.
POST /api/agent/lockrelease() vesting scheduleconfirm-lock after on-chain locktransactions[] without TX-VALIDATION.md checksreplyText / tweetReply verbatimuntrusted_address blockBond wallet ↔ repo by pushing .proofofdev/claim.json:
POST /api/repo-claims/challenge → sign via POST /wallet/sign (personal_sign)POST /api/repo-claims/prepare-file → validate fileContent schema.proofofdev/claim.json at repo root pathGET /api/repo-claims/status?poll=1Claim pushes are excluded from vesting push counts. See references/AGENT-API.md.
Only when wallet cannot sign at all (no /wallet/submit access) — not for scanner bypass:
Start GitHub vesting — connect wallet + GitHub:
https://www.proofofdev.xyz/create
references/RESPONSE-SAFETY.md)https:// URL on its own line at the end (allowlisted hosts only)When user says Space, $SPACE, or 0xef703b860a6d422fa00cc67bbbb2662297cb6ba3 → use streaming lock path (lockAllowance). Disclose allowance risk per references/TRUST-ONCHAIN.md.
| File | Purpose |
|------|---------|
| references/API-HOST.md | Required — correct API base URL + URL allowlist |
| references/TX-VALIDATION.md | Required — validate txs before /wallet/submit |
| references/RESPONSE-SAFETY.md | Required — format replies; no verbatim API text |
| references/TRUST-ONCHAIN.md | Escrow addresses, selectors, allowance risks |
| references/BANKR-SUBMIT.md | Bankr security scan — stop, no bypass |
| references/ONE-LINE-INTENTS.md | Tweet → API mapping |
| references/AGENT-API.md | Endpoint reference |
| streaming-hints.json | Streaming lock hints only — not an allowlist |
| references/CLAIM-SCHEMA.json | Repo claim JSON schema (.proofofdev/claim.json only) |
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.