CROSS WAVE
Submit Shorts / TikTok videos to CROSS WAVE missions for $CROSS rewards. Read missions and campaigns anonymously; auth via pasted JWT for submit and referral.
Browse missions and submit your videos with one sentence.Drives CROSS WAVE — the NEXUS Open Streamer Economy that pays $CROSS (and per-game coupons) for completing video missions. Anonymous read; auth via pasted JWT for submit / referral / whoami.
1. Install
The block below is a natural-language prompt to paste into your AI agent — not a terminal command.
Clone https://github.com/to-nexus/skill-cross-wave into a temporary directory and run the install.sh script inside it to install the cross-wave skill into my environment. Tell me the result in one line when you're done.
Bash execution required.Read-path works fully anonymous. Auth-path needs a one-time browser step (see §6).
Install all CROSS skills at once
Clone https://github.com/to-nexus/cross-skills-suite into a temporary directory and run the bootstrap.sh script inside it to install every CROSS skill into my environment. Tell me which skills succeeded and which failed.2. Where it runs
✅ Supported · CLI agents with Bash access
Claude Code (CLI) · OpenClaw · Cursor Composer · Codex CLI · Aider · Goose · Gemini CLI · OpenInterpreter · any other Bash-capable CLI.
❌ Not supported · Browser / hosted only
Claude.ai (web) · ChatGPT (web) · Gemini (web) · Copilot Chat (web). The skill needs filesystem access to persist your JWT at ~/.claude/skills/cross-wave/.sessions/wave.json mode 0600.
3. What you can do
Read · no auth
| Subcommand | What it does |
|---|---|
🟢 info | Service metadata + capture status + login status. |
🟢 missions | Flat or grouped mission list / single detail. |
🟢 campaigns | Mission groups view. |
Auth · paste-the-token
| Subcommand | What it does |
|---|---|
🟣 login | Verify a pasted JWT via /users/me and persist. |
🟣 whoami | Your wallet address, accrued CROSS, submitted missions. |
🟣 referral | Your referral link + 5% commission stats. |
🟣 submit | Submit a Shorts / TikTok URL to a mission. |
claim is a no_op by design — CROSS WAVE has no user-initiated claim. Operator review approves submissions, then rewards auto-distribute at each mission's rewardScheduledAt.
4. Try it
Any natural language works. Examples below are in English; phrase your intent in whichever language you prefer — the agent forwards your intent, not the wording.
List CROSS WAVE active campaigns
Show 5 ended missions
Open mission 21
Show campaign 5 detail
Save my WAVE access token (I have the JWT from DevTools)
Get my referral link
Submit my Shorts to mission 21: https://www.youtube.com/shorts/XXXX
Show my wave profile5. Command reference
| command | args | auth | mutation | description |
|---|---|---|---|---|
info | — | — | read | Service + registry + login status. |
missions | [<id>] [--status A|E|C] [--ended] [--grouped] [--page N --size N] | — | read | Flat or grouped mission list / detail. |
campaigns | [<id>] [--status ACTIVE|ENDED] [--page N --size N] | — | read | Mission groups view. |
login | --token <jwt> | paste | off-chain write | Verify + persist JWT. |
whoami | — | JWT | read | GET /users/me. |
referral | — | JWT | read | GET /referrals/me. |
submit | <missionId> --url <URL> | JWT | off-chain write | POST /missions/{id}/participate. |
claim | — | — | no-op | CROSS WAVE has no claim endpoint. |
6. Safety & credentials
This skill needs a pasted JWT for auth-path subcommands. No wallet signing involved.
| Rail | What it does |
|---|---|
| Required credential | A JWT access_token captured from wave.crosstoken.io DevTools (Network → any authenticated request → copy Authorization: Bearer …). |
| Why paste-the-token | CROSS WAVE login is CROSSx-wallet OAuth at cross-auth.crosstoken.io. It uses cross-device WebAuthn passkeys (phone-based 2FA) which crashes Playwright-bundled Chromium on macOS. Headless OAuth is fragile in general. |
| Token storage | Persisted at ~/.claude/skills/cross-wave/.sessions/wave.json mode 0600. One-shot alternative: CROSS_WAVE_ACCESS_TOKEN=<jwt> env var. |
| Token expiry | JWTs last 1–24 h. When auth-required calls return unauthorized, repeat the capture. |
| Submit URL allow-list | submit --url <U> aborts unless host is in youtube.com,youtu.be,tiktok.com,vt.tiktok.com. HTTPS-only. |
| Already-submitted guard | submit aborts cleanly if you've already participated in that mission. |
7. Troubleshooting
How do I capture the JWT?
- Open https://wave.crosstoken.io and log in normally.
- Open DevTools → Network tab.
- Click any request that goes to
wave-client-api.crosstoken.io(refresh the page if there are none). - Find the
Authorization: Bearer …request header. - Copy the value after
Bearer. Paste it: "save my WAVE token: eyJhbGciOiJ...".
bad_url on submit.
The host isn't in the allow-list. Currently allowed: youtube.com, youtu.be, tiktok.com, vt.tiktok.com. Set CROSS_WAVE_SUBMIT_HOSTS to extend it.
already_submitted
You've already participated in this mission. Each mission accepts one submission per wallet.
unauthorized when I had a valid token a few hours ago.
The JWT expired (1–24 h lifetime). Capture a fresh one and re-save.
Where do I claim my rewards?
You don't. CROSS WAVE auto-distributes rewards at each mission's rewardScheduledAt after operator review. The claim subcommand is a no-op.
Updated about 2 hours ago