feat(vibewatch-sentiment): add vibewatch-sentiment skill - #421
feat(vibewatch-sentiment): add vibewatch-sentiment skill#421sonic-mast wants to merge 5 commits into
Conversation
Stacks ecosystem community sentiment from the Vibewatch Stacks Vibe Index: free index/terms/reports reads plus x402 pay-per-query depth (project, evidence, delta) settled in sBTC on Stacks through the shared payment engine.
Bare fetch() on the free index/terms/reports routes and the pre-payment slug/week lookups could hang on a dead endpoint. Add AbortSignal.timeout(10s), matching the engine's paid-route client.
|
@arc0btc @biwasxyz — you've reviewed the recent skill PRs here; would appreciate a look when you have a moment. Free subcommands need no wallet; the paid ones are 100 sats sBTC each on mainnet, and the body above has the reviewer-with-a-wallet notes. Relay-side behaviour you might hit while testing (409 held, client_insufficient_funds) is tracked in aibtcdev/x402-sponsor-relay#431 and #432. |
|
@biwasxyz one question for the maintainers, separate from this PR's diff: Brandon mentioned the aibtc MCP has moved to non-sponsored x402 transactions because the sponsor relay isn't stable. The skills engine on |
…ostic The shared engine decides whether an x402 transfer is sponsored; the prerequisites no longer assume the relay pays gas, and the relay-specific error rows are scoped to sponsored transfers.
…02scan listing - AGENT.md error table: 422 sponsored_unsupported after a 402 challenge (index rejects the payment shape; pay with a different transfer) - SKILL.md reference: x402scan resource listing - regenerate skills.json Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…aid envelope and wrapper txid:null
Actions on Celestial Shark's Tier 1 feedback (aibtc bounty mtt3jjrgcf0aa8fb225c):
- project: a panel slug whose free-index score is null is served paid as a
200 with series: [] and latest.score: null. Refuse before payment;
--allow-unscored opts in.
- SKILL.md: 'Paid response shape' — envelope (tier, as_of, resource,
payment{txid,payer,amount,asset,network,payment_identifier}, data,
suppressed[]) and per-resource data keys, plus payment_receipt.
- AGENT.md: top-level txid:null + txidNote comes from execute_x402_endpoint
(it reads txid/payment_txid only); payment.txid is the receipt.
- regenerate skills.json
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
vibewatch-sentiment— Stacks ecosystem community sentiment via x402The Vibewatch Stacks Vibe Index is a public sentiment index over an opted-in panel of Stacks projects (Stacks, Zest Protocol, Bitflow, Stacking DAO, AIBTC, Hermetica and more), computed from each project's own community channels and published with k-anonymity floors and marked suppression. This skill gives an agent both tiers:
index(composite, per-project scores, 90-day history, themes, governance),terms(the x402 discovery document),reports(the weekly-report archive).project(one project's daily series),evidence(the public posts behind a weekly report's themes),delta(what changed since a timestamp, for polling loops).Design points that matter for autonomous use:
--week→ a week with a completed report), so a bad argument fails before the wallet is touched and the error lists the valid values.SKILL.mdandAGENT.md; there is no free re-read across runs.AGENT.mdmaps every server error code (settlement_rejected+facilitator_reason,payment_in_flight,payment_replayed, rate limits, 502/503) to the action an agent should take.evidencereturns public posts only and marks withheld themesno_public_evidence.Verified against production: free subcommands and all pre-payment error paths from this branch; paid subcommands through the shared engine on the staging index (testnet) and one settle on mainnet on 2026-09-07 (
1c3b93bc…). The engine currently signs every x402 payment as sponsored, so agents will meet the relay's known behaviours (aibtcdev/x402-sponsor-relay#431, #432); theAGENT.mdtable covers them, and the prerequisites are written so nothing changes here if the engine follows the MCP to non-sponsored transfers. Paid calls on--network testnetwait on #419 (engine's testnet sBTC pin).Reviewers with a wallet: if you hold 100 sats sBTC, please run
bun run vibewatch-sentiment/vibewatch-sentiment.ts deltaand say what happened — the status sequence, anyfacilitator_reason, and thepayment_receipttxid if one came back. #431 and #432 are live on the mainnet relay, so a 409payment_in_flightor aclient_insufficient_funds402 is a data point, not a mystery; both are in theAGENT.mdtable. Every run is a real payment from a wallet we don't operate, which is the one thing we can't test ourselves.Files:
vibewatch-sentiment/{SKILL.md,AGENT.md,vibewatch-sentiment.ts}, aREADME.mdrow, and the regeneratedskills.json.bun run manifest,bun run validate(204/204) andbun run typecheckpass. No changes undersrc/lib/.Note on
--network testnet: it currently targets the Vibewatch staging index by its Railway hostname. A stable alias is coming and will be swapped in a follow-up; free subcommands work there today, paid testnet calls wait on #419 (engine testnet sBTC pin).