hunter-22
GitHub扫描ClawHunter赏金市场,根据代码、安全研究等真实能力筛选匹配的赏金机会。过滤无效内容,保留可交付任务,并为审计类工作提供漏洞扫描器触发入口,仅做发现不执行支付或提交。
Trigger Scenarios
Install
npx skills add aeonfun/aeon --skill hunter-22 -g -y
SKILL.md
Frontmatter
{
"name": "hunter-22",
"metadata": {
"var": "",
"mode": "write",
"tags": [
"bounties",
"income",
"discovery",
"security"
],
"title": "Hunter 22",
"category": "productivity",
"requires": []
},
"schedule": "0 10 * * *",
"description": "Scan the ClawHunter agent bounty marketplace for opportunities that genuinely match this agent's real capabilities (code, security research, writing) and surface only real matches — never a raw unfiltered dump. When a match is real audit-shaped work with a linked GitHub repo, the notification carries a one-tap button to dispatch vuln-scanner at it directly."
}
${var} — optional filter. Empty → default capability match (see below).
types:<a,b>→ restrict to bounty types (e.g.types:code,research).min:<usd>→ minimum reward floor.
Today is ${today}.
What this is
ClawHunter is a paid API that indexes crypto/social bounty venues and ranks opportunities. This skill calls its free discovery tier only — no API key, no wallet, no payment. Read docs/ClawHunter-API.md in this repo for the endpoint reference (base URL, auth, rate limits).
This is discovery only for anything requiring human judgment or funds — it never claims, submits, or executes a bounty, and never touches a wallet. It surfaces candidates for the operator to act on manually, with one exception: when a match is real audit-shaped work (code/security, with a linked GitHub repo), the notification carries a button that dispatches vuln-scanner at that repo — the operator still taps to trigger it, this skill never dispatches on its own. Do not call any $ (paid, x402) endpoint in this skill; those require a funded wallet this fork does not have configured.
What to do
- Read
memory/topics/hunter-22-seen.jsonif it exists (dedup log — bounty IDs already surfaced, with the timestamp last seen). Create it empty ([]) if missing. - Call
POST https://clawhunter.fun/api/v1/matchwith a JSON body describing this agent's real, demonstrated capabilities — not aspirational ones:{ "capabilities": ["code", "security-research", "research", "writing", "dependency-analysis"], "canDoRealWorld": false, "minReward": 20, "limit": 25 }canDoRealWorld: false— this agent has no wallet/payment rails configured, so exclude bounties requiring on-chain execution or payment. Do NOT setcanDoRealWorld: trueunless a wallet has actually been funded and documented inmemory/topics/— check first. - If
${var}setstypes:ormin:, adjust the request accordingly (typesfilters the bountytypesfield,minoverridesminReward). - Triage the response same as any other discovery skill — be honest, not generous:
- Drop anything that's really a content/social-growth task in disguise (tweet threads, engagement farming, influencer voice-cloning, "get a streamer/creator to post X" outreach). A
requiresarray that's onlyengage/outreach/video/imagewith nocode/onchainis the tell — this agent has no content-generation or social-outreach tooling wired up and can't credibly deliver those. - Keep bounties that map to real work: code fixes, dependency/security review, technical writing, structured research with citable sources — the kind of work already demonstrated in
output/articles/vuln-scan-*.md. - For each kept candidate, sanity-check the reward is real (not vaporware) and the deadline is actually reachable.
- Drop anything that's really a content/social-growth task in disguise (tweet threads, engagement farming, influencer voice-cloning, "get a streamer/creator to post X" outreach). A
- Flag audit-shaped candidates. For each candidate that survives step 4, check whether it's actually a code-security audit:
requiresincludescodeoronchain, and the bounty'sbody/urlcontains a GitHub repo link (github\.com/[\w.-]+/[\w.-]+). If both hold, extractowner/repo— this is exactly the Veilo-bounty shape (a Superteam listing naming a specific on-chain program's source repo). Not every kept candidate will have one; most won't. - Diff against
memory/topics/hunter-22-seen.json— only report bounties not already seen in the last 14 days. - Update
memory/topics/hunter-22-seen.json: append{id, title, reward, seen_at}for every candidate returned this run (seen or not — this keeps the dedup window accurate even for ones that got filtered out, so they don't get re-evaluated every day for no reason). Prune entries older than 30 days. - If there are new, genuinely-good matches:
./notifywith a short, decision-grade list — title, reward, venue, one-line why-it-matches, link. Lead with the count and the best one. For any match flagged audit-shaped in step 5, add an inline button so the operator can dispatch the audit in one tap:./notify -f /tmp/hunter22-notify.md --buttons '[[ {"text":"Audit owner/repo","callback_data":"run:vuln-scanner:owner/repo"}, {"text":"Open bounty","url":"<bounty url>"} ]]'callback_datahas a hard 64-byte limit (seedocs/telegram-commands.md) —run:vuln-scanner:owner/repofits comfortably for any realistic repo path. If more than one candidate this run is audit-shaped, send one notify per candidate (each with its own button row) rather than merging them, so a tap is unambiguous about which repo it targets. If nothing new or nothing real survived triage, do not notify (see CLAUDE.md: "notify only on signal"). - Commit
memory/topics/hunter-22-seen.jsonwith an updatedtimestamp:.
Guardrails
- Never call a paid (
$) endpoint. Never touch/tools/*,/chat/completions, or anything billed via x402 in this skill. - Never claim or submit a bounty on the operator's behalf — this skill only surfaces candidates, and the audit-dispatch button in step 8 still requires a human tap, not an automatic trigger.
- If the API is unreachable or rate-limited, log it and exit quietly — do not retry aggressively (60/min per IP is the documented ceiling; this runs once daily, nowhere close).
Version History
- 573f06c Current 2026-08-12 16:48


