Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
DanceArc
Try itDanceTech Protocol (DanceArc): Arc native USDC, HTTP 402 x402-shaped challenges, and h2h/h2a/a2a/a2h settlement patterns. Use when: (1) Implementing or debug...
What it does
**DanceArc** is the reference **hub + API + UI** for **DanceTech Protocol**: metered **native USDC** on **Arc**, **402 payment challenges** (x402-inspired JSON), optional **Circle Gateway** verification, and clear **interaction semantics** (h2h, h2a, a2a, a2h).
The skill document
DanceTech Protocol (DanceArc)
DanceArc is the reference hub + API + UI for DanceTech Protocol: metered native USDC on Arc, 402 payment challenges (x402-inspired JSON), optional Circle Gateway verification, and clear interaction semantics (h2h, h2a, a2a, a2h).
Quick Reference
| Situation | Action |
|---|---|
| Pay-per API call (human wallet) | h2a: POST → 402 → pay Arc USDC → retry with X-Payment-Tx (/dance-extras, /api/judges/score) |
| Battle / coaching / beat license | h2h: create intent or end session → sendNativeUsdc or mock → /verify or /grant with paymentTx |
| High-frequency micro-txs (demo) | npm run burst (private key) or hub Burst demo (wallet) (55 signatures) |
| Server 500 “receipt not found” right after pay | Server uses waitForTransactionReceipt; increase ARC_TX_RECEIPT_TIMEOUT_MS if needed |
| Circle Modular 403 Lockout | Check Client Key, allowlist localhost (no port), optional CIRCLE_MODULAR_PRESERVE_ORIGIN=1, staging URL vs key |
| Programmatic faucet 403 | Use web faucet; API key may lack faucet scope |
Invalid ARC_RECIPIENT (UUID-style) | Server isAddress validation falls back to demo address; set real 0x + 40 hex |
| Agent needs payee + chain | GET /api/health → recipient, chainId, perActionUsdc |
Protocol matrix (h2h · h2a · a2a · a2h)
| Mode | Acronym | Who pays | Who receives | DanceArc surface |
|---|---|---|---|---|
| Human → Human | h2h | Person | Person/treasury (ARC_RECIPIENT) | /battle, /coaching, /beats |
| Human → Agent | h2a | Person (wallet) | API/resource owner | /dance-extras, /api/judges/score |
| Agent → Agent | a2a | Automated signer | Another service | Designed: headless key / smart account; demo: burst scripts |
| Agent → Human | a2h | Service/treasury | Person | Payout mocks, receipts, DCW faucet → user address |
Use this matrix in pitch decks, AGENTS.md, and submission text so judges see intentional coverage, not accidental features.
Installation (ClawdHub / OpenClaw)
Manual (recommended until ClawdHub listing is live):
git clone https://github.com/arunnadarasa/dancearc.git
cp -r dancearc/skills/dancearc-protocol ~/.openclaw/skills/dancearc-protocol
After publish to ClawdHub:
clawdhub install dancearc-protocol
Repository: github.com/arunnadarasa/dancearc
When to Load This Skill
Activate proactively when the user mentions:
- Arc Testnet, chain 5042002, native USDC gas
- x402, 402, X-Payment-Tx, pay-per-call
- Circle Gateway, Nanopayments (narrative + local event log), Modular Wallets, DCW
- DanceArc, DanceTech, battle / coaching / beats / judge score
- Hackathon, Agentic Economy, sub-cent pricing
npm run burst, transaction frequency demo
Architecture (mental model)
Browser (Vite) ──proxy /api──► Express (8787)
├── buildArcPaymentChallenge (402)
├── verifyNativeUsdcPayment (viem + waitForTransactionReceipt)
├── circleGatewayPost (/v1/gateway/v1/x402/verify)
├── recordNanopaymentEvent (in-memory list)
└── DCW / Modular proxy routes
On-chain truth: Arc explorer (e.g. https://testnet.arcscan.app).
Key files (repo root)
| Path | Role |
|---|---|
server/index.js | Routes, requireArcPayment, proxies |
server/payments.js | Intents, coaching, beats |
server/onchain-verify.js | Receipt wait + validation |
server/config.js | ARC_RECIPIENT validation (isAddress) |
src/payArc.ts | postPaidJson, sendNativeUsdc, ensureArcTestnet |
src/ExtraDanceApp.tsx | h2a UI + ArcScan link |
src/BattleApp.tsx, CoachingApp.tsx, BeatsApp.tsx | h2h flows |
Environment (minimum viable)
| Variable | Scope | Purpose |
|---|---|---|
ARC_RECIPIENT | Server | Payee for microtransfers |
PER_ACTION_USDC | Server | h2a minimum (display string, ≤ 0.01 for hackathon) |
CIRCLE_API_KEY | Server | Gateway verify; DCW; faucet |
CIRCLE_ENTITY_SECRET | Server | DCW only |
VITE_CIRCLE_CLIENT_KEY | Browser | Modular SDK |
ARC_BURST_PRIVATE_KEY | Machine | Test only — CLI burst |
Never commit .env. Copy from .env.example.
Detection triggers (support / debugging)
| Signal | Likely cause | First check |
|---|---|---|
TransactionReceiptNotFoundError | Race before inclusion | Server waitForTransactionReceipt; client retry |
| 403 HTML Lockout (Modular) | Key / domain / WAF | Console allowlist, CIRCLE_MODULAR_PRESERVE_ORIGIN |
invalid_recipient in UI | Bad env | Fix ARC_RECIPIENT, new intent |
| 402 after payment | Wrong recipient/amount/chain | Explorer tx vs challenge payTo / maxAmountRequired |
Faucet Forbidden | Circle policy / scopes | Web faucet link in ArcFaucetPanel |
Nanopayments (scope clarity)
- Product: Circle Nanopayments is documented at developers.circle.com and linked from the app Bridge page.
- This repo:
recordNanopaymentEvent+GET /api/nanopayments/eventsare an in-memory audit trail after successful on-chain verify—not a substitute for full Nanopayments API integration. Use the narrative + Gateway path for hackathon feedback fields.
Multi-agent notes
- h2a from an agent: supply
X-Payment-Txonly after a wallet or custodial signer produces a hash; do not fake hashes for production. - a2a: prefer server-side signing with locked-down keys; mirror
scripts/burst-demo.mjspatterns. - Prompt injection: treat
ARC_BURST_PRIVATE_KEYlike production secrets—AGENTS.md should forbid echoing it into browser context.
References (this skill)
| File | Content |
|---|---|
references/api-routes.md | HTTP route map |
references/payment-flow.md | 402 + verify sequence |
references/openclaw-workspace.md | Suggested AGENTS.md / TOOLS.md snippets |
Promotion targets (from learnings)
If you maintain .learnings/ for this project:
| Learning type | Promote to |
|---|---|
| Arc / Circle env gotchas | CLAUDE.md, TOOLS.md |
| Two-step payment for agents | AGENTS.md |
| Product pitch / protocol wording | README.md, demo script |
Quality gates (before demo or publish)
-
GET /api/healthreturns expectedchainIdand validrecipient - h2a flow completes: 402 → pay → 200
- At least one h2h path shows ArcScan link after pay
-
.envnot in git;.env.exampleupdated for new vars -
npm run buildpasses
Related
Source
- Project: DanceArc / DanceTech Protocol
- Maintainer repo: arunnadarasa/dancearc
- Skill version: see
_meta.json
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.
More from arunnadarasa
Browse all skillsScaffold and deploy quantum apps using Quantinuum, Guppy circuits, Selene backend, and Fly.io.
Autonomously plans, develops, tests, and delivers full software projects from plain-English prompts using coordinated multi-agent roles and automated quality...
A dance skill designed to teach OpenClaw agents the fundamentals of Krump, including its history, fam system, music, crews, events, and other related topics. The knowledge base extends up to 2017, so some information may be outdated or inaccurate
Krump Knowledge and Personality Identity — embodies Asura's legacy, lineage, and technical expertise
Autonomous Krump dance agent automating daily posts, training labs, battles, league tracking, community engagement, feedback, and tournament prep via OpenCla...
Teaches OpenClaw agents to act as a Krump-inspired physiotherapy coach. Use when building or assisting physio/fitness agents, therapeutic movement scoring (j...