Skip to content
OpenSmartRoute
Skillv1.0.0

github-vesting

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, proo

by bankrbot(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from bankrbot/skills (github-vesting/SKILL.md). Install upstream with npx skills add bankrbot/skills --skill github-vesting. Copyright stays with the author.

GitHub Vesting — Bankr agent skill

CRITICAL — API host (read first)

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.


CRITICAL — security (read before writes)

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.mdstop, 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


CRITICAL — not an allowlist

  • known-escrow.json and streaming-hints.json are streaming detection hints only (Space → lockAllowance).
  • Ignore supportedTokens for gating. Never refuse a token without calling POST https://api.proofofdev.xyz/api/agent/lock.
  • If Bankr /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

install the github-vesting skill from https://github.com/BankrBot/skills/tree/main/github-vesting

What users mean

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 milestone1 milestone → full amount releases after 10 verified pushes.


Mandatory routing

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.


Agent API (reads)

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.


Writes — lock via Bankr chat or X

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.

Lock flow (mandatory order)

  1. POST https://api.proofofdev.xyz/api/agent/lock (always — even when user gives a 0x address):

    • Header x-wallet-address: 0x…
    • Body: { "repo": "owner/repo", "token": "TMP", "amount": "855M", "totalPushes": 1 }
    • token = symbol from wallet holdings, fee-recipient name, or 0x contract address
    • amount = human units (855000000, 855M, 3.49M)
  2. If response has installUrl → allowlist-check, then tell user to install GitHub App, then retry.

  3. references/TX-VALIDATION.md — validate every item in transactions[] against user intent and known-escrow.json. Abort if any check fails.

  4. Submit validated txs on Base via Bankr:

    • POST https://api.bankr.bot/wallet/submit with { "transaction": { to, data, value, chainId }, "waitForConfirmation": true }
    • Order: approve (if present) → lock
    • waitForConfirmation: true on the lock tx
  5. POST https://api.proofofdev.xyz/api/agent/confirm-lock with:

    • Same x-wallet-address header
    • Body: { "repo": "owner/repo", "lockTxHash": "0x…" }
  6. Format confirm response locally (references/RESPONSE-SAFETY.md) — include allowlisted lock page URL on its own line.

Token resolution

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.

Example one-liners

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/submitPOST /api/agent/confirm-lock → formatted reply.

Forbidden

  • Saying "TMP isn't supported" or "only Space and TEST" without calling POST /api/agent/lock
  • Confusing GitHub vesting with a token's native release() vesting schedule
  • Skipping confirm-lock after on-chain lock
  • Submitting transactions[] without TX-VALIDATION.md checks
  • Pasting API replyText / tweetReply verbatim
  • Telling users to use the web UI after Bankr untrusted_address block

Repo ownership (optional, before lock)

Bond wallet ↔ repo by pushing .proofofdev/claim.json:

  1. POST /api/repo-claims/challenge → sign via POST /wallet/sign (personal_sign)
  2. POST /api/repo-claims/prepare-file → validate fileContent schema
  3. Explicit user confirmation → commit only .proofofdev/claim.json at repo root path
  4. GET /api/repo-claims/status?poll=1

Claim pushes are excluded from vesting push counts. See references/AGENT-API.md.

Web fallback

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

Twitter/X reply rules

  • Build replies from structured API fields (references/RESPONSE-SAFETY.md)
  • Full https:// URL on its own line at the end (allowlisted hosts only)
  • Never omit the lock/status link after confirm-lock

Space token

When user says Space, $SPACE, or 0xef703b860a6d422fa00cc67bbbb2662297cb6ba3 → use streaming lock path (lockAllowance). Disclose allowance risk per references/TRUST-ONCHAIN.md.


Files

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)

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/bankrbot-skills-github-vesting/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

bankrbot-skills-github-vesting.ocm.jsonjson
{
  "ocm": "1",
  "id": "bankrbot-skills-github-vesting",
  "kind": "skill",
  "name": "github-vesting",
  "description": "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.",
  "publisher": "bankrbot",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "github",
      "vesting",
      "bankr",
      "base",
      "defi",
      "proofofdev",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "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."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/bankrbot/skills",
      "path": "github-vesting/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/bankrbot/skills/blob/HEAD/github-vesting/SKILL.md",
      "key": "bankrbot/skills/github-vesting/SKILL.md"
    }
  },
  "instructions": "# GitHub Vesting — Bankr agent skill\n\n## CRITICAL — API host (read first)\n\n**Agent API:** `https://api.proofofdev.xyz`  \n**Web UI:** `https://www.proofofdev.xyz`\n\n```\nGET  https://api.proofofdev.xyz/health\nPOST https://api.proofofdev.xyz/api/agent/lock\nPOST https://api.proofofdev.xyz/api/agent/confirm-lock\n```\n\n**NEVER** call `github-vesting.vercel.app` for API — it is frontend-only (POST → 405).  \n**NEVER** guess `/api/lock`, `/api/v1/lock`, `/api/web/lock` — they do not exist.\n\nSee `references/API-HOST.md` before any HTTP call.\n\n---\n\n## CRITICAL — security (read before writes)\n\n| Topic | Doc",
  "cost": {
    "context_tokens": 2216
  }
}

Fetch it by URL: GET /api/v1/registry/bankrbot-skills-github-vesting/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.