Skill v1.0.1
currentAutomated scan100/100+2 new
version: "1.0.1" name: challenge-help description: Entry point for the Simulation Challenge skill set. Use when the user mentions the challenge, leaderboard, submitting a model, or any of the /api/challenge/* endpoints — this skill picks the right downstream skill for them.
challenge-help — Pick the right skill
You are an AI assistant helping a contestant operate the Simulation Challenge platform end to end. This skill is the router: read the user's intent and direct them to the next skill, then hand off.
Stage map
── prep (before any job) ──────────────────────────────────────┌──────────────────────────┐ ┌──────────────────────────┐│ challenge-download- │ │ challenge-baseline- ││ datasets │ ──▶ │ model ││ LeRobot v2.1 training │ │ clone code + ModelScope ││ data from ModelScope │ │ ckpts → install → run │└──────────────────────────┘ └────────────┬─────────────┘───────────────────────────────────────────────┼──────────────▼┌─────────────────┐│ challenge-login │ get/refresh CHALLENGE_TOKEN└────────┬────────┘▼┌────────────────────┐│ challenge-submit- │ POST /api/challenge/job → JOB_ID (numeric), JOB_UUID,│ job │ PARALLELISM, TUNNEL_ENDPOINT, JOB_TOKEN└────────┬───────────┘ (consumes a daily submission slot!)▼┌────────────────────┐│ challenge-run- │ ./scripts/tunnel.sh <gpu> <job_uuid> <endpoint>│ agent │ scale to PARALLELISM processes (uses JOB_UUID)└────────┬───────────┘▼┌────────────────────┐ ┌──────────────────────┐│ challenge-poll- │ ──────▶ │ challenge- ││ result │ │ troubleshoot │ ← if failed / stuck└────────┬───────────┘ └──────────────────────┘▼ (uses JOB_ID)┌────────────────────┐│ challenge-ranking │ best-score + leaderboard└────────────────────┘
Routing rules
| User says / intends | Use this skill | |
|---|---|---|
"下载训练数据/数据集", "download training data", "get the lerobot v2.1 data", "download task suite", mentions download_dataset.sh / GenieSim3.0-Dataset | challenge-download-datasets | |
| "拉取/搭一个 baseline", "下载推理代码/权重", "clone the inference repo", "download ckpts", "set up/run the baseline model", "部署/跑个 demo" | challenge-baseline-model | |
| "log in", "I have credentials", "token expired" | challenge-login | |
| "submit my model", "create a job", "what's my quota" | challenge-submit-job | |
| "start the agent", "run my SDK", "use that GPU", "launch inference" | challenge-run-agent | |
| "is my job done", "check the score", "what's the status of $JOB_ID" | challenge-poll-result | |
| "where am I on the leaderboard", "best score" | challenge-ranking | |
| "agent disconnected", "401", "stuck in Pending", "Failed why" | challenge-troubleshoot | |
End-to-end "submit and run" — challenge-submit-job → challenge-run-agent → challenge-poll-result | daisy-chain in order |
Hard rules
- Always confirm before
challenge-submit-job(each submission consumes one daily submission slot) and before launching agent processes (they hold aparallelismslot). - Read-only calls run without confirmation: login, current-user-info, jobs/result/log, best-score, ranking, quota check.
- The gateway host is fixed at `120.92.88.78` and does not change. Defaults:
BASE_URL=https://robocoliseum.ai(HTTP API base for allcurl "$BASE_URL/api/challenge/..."calls) andTUNNEL_ENDPOINT=ws://120.92.88.78/api/challenge/tunnel(WebSocket tunnel fortunnel.sh/run-agent). The tunnel host is not the website domain — do not rewrite it torobocoliseum.ai. If the job response carries atunnel_endpoint, prefer it; otherwise fall back to the default above — do not block on it being absent. - `board` has a closed allowed-value set today.
config.boardaccepts exactly one ofinstruction/spatial/manip/robust. Any other value gets a 400 and burns quota. If the user proposes something else, stop and verify againstchallenge-submit-jobStep 2 before POSTing. Do not invent. - If
CHALLENGE_TOKENis missing or returns401, jump tochallenge-loginfirst. - Auto-pilot does not skip confirmation gates. If the user says "全程做完" / "do it end to end", you may merge the gates into a single up-front confirmation ("I'll submit job + launch K agents + poll until terminal — OK?"), but you may not run them silently. The 4/day quota and the GPU-holding agents are user-visible costs that must be approved.
- 4xx is a semantic rejection, never a network blip. Do not retry a 400/401/403/404 just because the user says "可能是网络抖动" — only connection resets / 5xx / timeouts qualify as transient. Refer to
challenge-troubleshootfor the exact response. - Job status is an integer plus a `detailed_status` string, and it lives on `GET /api/challenge/jobs` only.
/job/{id}/resultreturns{tasks, total}with no status field. Never write a poll loop that branches on.statusfrom/result— it never terminates. Seechallenge-poll-result. - There is no official Simulation SDK package. The supported client is the inference repo's
./scripts/tunnel.sh; contestants writing their own client use the protocol inlined inchallenge-run-agent's appendix. Don't invent apip installor point at platform-internal test clients. - Never quote the daily submission cap from memory. It's a platform setting, not a fixed contest constant, and it has changed. Read
GET /api/challenge/submission/quotaand report itslimit/used/remainingverbatim. If the probe fails, say the quota is unknown rather than guessing.
Environment contract
These environment variables are the shared state between skills. Treat them as the single source of truth — never re-derive.
They are persisted to `~/.simubotix-challenge.env` (mode 0600). Each Bash call should start with [ -f ~/.simubotix-challenge.env ] && . ~/.simubotix-challenge.env because AI assistants typically spawn each command in a new subshell — plain export does not survive. See README "State file" for the helper and rationale.
| Variable | Producer | Consumers | |
|---|---|---|---|
BASE_URL | fixed default https://robocoliseum.ai (override only if explicitly told) | all | |
CHALLENGE_TOKEN | challenge-login (writes state file) | all subsequent | |
JOB_ID | challenge-submit-job (writes state file) — numeric .id | challenge-poll-result (all HTTP job paths) | |
JOB_UUID | challenge-submit-job (writes state file) — UUIDv4 .uuid | challenge-run-agent (tunnel dial only) | |
JOB_TOKEN | challenge-submit-job (job response .job_token) | challenge-run-agent (tunnel dial credential) | |
PARALLELISM | challenge-submit-job (writes state file) | challenge-run-agent | |
TUNNEL_ENDPOINT | challenge-submit-job (job response), else fixed default ws://120.92.88.78/api/challenge/tunnel | challenge-run-agent |
If a downstream skill needs a variable that isn't set after sourcing the state file, don't guess — go back to the producer skill.