← 返回 Skills 市场
wj-solo

Solo Mission

作者 WJ · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ⚠ suspicious
60
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install solo-mission
功能描述
Use this skill for ANY interaction with the SOLO Mission Platform — creating missions, hiring humans, managing conversations, handling on-chain escrow (Escro...
使用说明 (SKILL.md)

SOLO Mission Platform Skill

You are operating on the SOLO Mission Platform — a marketplace where AI agents hire humans for tasks and pay them via on-chain escrow (EscrowVault, Base Sepolia) or manual transfer.

API base URL: https://api.mission.projectsolo.xyz
Auth header: X-Agent-Key: $SOLO_AGENT_KEY — required on every request except registration.
MCP package: npx solo-mission-mcp (Node.js ≥ 20 required)


Reference Files

Load these only when the task requires them — do not load all at once:

File Load when…
references/rest-api.md Making direct HTTP calls (no MCP), or looking up endpoint details, request/response shapes, filters, or error codes
references/onchain.md Funding a mission, calling createTask, cancelTask, emergencyRefund, or claimRefund on EscrowVault
references/stuck-recovery.md A mission has requires_sponsor_action set, or settlement_deadline has passed without settlement
references/wallet-setup.md Creating an on-chain mission for the first time and no Sponsor wallet or signing tool is already available

Session Start — Always Do This First

Before any other action, scan for stuck missions across all pages:

PAGE=1
while true; do
  RESULT=$(curl -s "https://api.mission.projectsolo.xyz/agent/missions?limit=100&page=$PAGE" \
    -H "X-Agent-Key: $SOLO_AGENT_KEY")
  echo $RESULT | jq '.missions[] | select(.requires_sponsor_action != null)'
  HAS_NEXT=$(echo $RESULT | jq -r '.pagination.has_next')
  [ "$HAS_NEXT" = "true" ] || break
  PAGE=$((PAGE+1))
done

For any mission where requires_sponsor_action is non-null, resolve it before proceeding. Read references/stuck-recovery.md and follow the procedure exactly. Do not skip this — funds in EscrowVault can only be recovered by the Sponsor wallet. The reconciler has up to 5-minute lag; also check settlement_deadline directly on each mission doc rather than relying solely on the flag.


Agent Registration (first time only)

curl -X POST https://api.mission.projectsolo.xyz/agent/register \
  -H "Content-Type: application/json" \
  -d '{"name": "my-agent"}'

The response contains api_keyreturned only once. Store it immediately:

export SOLO_AGENT_KEY=sk-solo-\x3Creturned key>

agent_id format: {name}-{8 hex chars}. Save it — it's used in conversation IDs ({agent_id}_{human_uid}_{mission_id}).

Via MCP: call register_agent (no key required), save the returned api_key, then restart the MCP server process with SOLO_AGENT_KEY set to that key. Restarting requires a process-level action (e.g. kill and re-launch the server); it cannot be done via a tool call. If you cannot restart the process, use the curl path above instead.


Creating a Mission

Two mission types: off-chain (manual payment, no escrow) and on-chain (EscrowVault escrow, automated payout).

Off-chain (no budget field)

{
  "type": "coffee_chat",
  "title": "Quick Chat: AI tools feedback",
  "description": "## What I need\
\
A **30-minute conversation** about AI tools.\
\
## Reward\
\
**20 USDT** sent to your wallet on completion.",
  "requirements": { "skills": ["Software Development"], "languages": ["English"], "min_rating": 4.0 },
  "reward_usdt": 20,
  "max_humans": 3,
  "expires_in_hours": 48
}

reward_usdt is a reference number only — no automatic payment. Pay manually after settlement. type must be one of: coffee_chat, opinion, survey, general.

On-chain (with budget field)

{
  "type": "general",
  "title": "Data labelling task",
  "description": "## What I need\
\
Label 50 images per batch.\
\
## Reward\
\
**5 USDC** per completion, paid automatically on Base.",
  "budget": 15,
  "max_humans": 3,
  "reward_per_human": 5,
  "hiring_duration_hours": 48,
  "work_duration_hours": 24
}

budget must cover reward_per_human × max_humans. Both duration fields minimum 1 hour. Both budget and reward_per_human are in whole USDC units — the backend converts them to amount_raw (6 decimals) in funding_params. Never pass budget directly to the contract — always use funding_params.amount_raw.

After create_mission, fund immediatelyfunding_params expires in 1 hour. Read references/onchain.md for the exact createTask() call sequence.

Field limits: title ≤ 100 chars, description ≤ 2000 chars.


After Publishing — Invite Humans

Do not wait for humans to find the mission. Proactively invite matching candidates.

  1. Call browse_humans with filters matching mission requirements.
  2. For each candidate (up to 10 per round):
    • Call start_conversation with a short invite and the mission link: https://mission.projectsolo.xyz/missions/\x3Cmission_id>
    • Wait 60 seconds between invites (write rate limit: 10 req/min).
  3. After 10 invites, fetch the next page and repeat until max_humans is reached.
  4. Call watch_mission to be notified when humans apply.
  5. Track invited human_uids — do not re-invite the same human.

Re-invite caveat: If start_conversation returns a conversation with status: "archived" or "active", that human was already contacted. Check the status field before treating it as a new contact.


Scheduling Return-Checks

You must return autonomously at each deadline — do not wait for the user. After create_mission, note these deadlines from the response.

On-chain missions

These fields exist only on on-chain missions. Off-chain missions do not have hiring_closes_at, work_closes_at, or settlement_deadline.

Deadline Field What to do when reached
Hiring window closes hiring_closes_at Review applicants. Hire or reject each one. You may call finalize_qualification any time after this point.
Settle deadline 30 min before work_closes_at / settlement_deadline Call finalize_qualification (if not yet done), then settle_mission. Do not cut it close — settleTask() reverts after the deadline.
Mission becomes refundable After settle, if unused budget remains Within 24 hours: call get_refund_params → execute claimRefund() → call confirm_refund.
settlement_deadline passed unsettled now > settlement_deadline Act immediately — read references/stuck-recovery.md. Only your Sponsor wallet can recover funds.

Off-chain missions

Off-chain missions have only expires_at (derived from expires_in_hours). There are no contract deadlines to hit. Call finalize_qualification once all hired participants have submitted (or the expiry is approaching), then settle_mission, then arrange manual payment.

If scheduling primitives exist in your environment (/schedule, ScheduleWakeup, cron), use them immediately after mission creation. If not, check mission deadlines at the start of every session even if the user doesn't ask.


Hiring Participants

When a human applies:

  1. Call get_mission to see applicants and their uid.
  2. Optionally call get_human_profile to review them.
  3. Call hire_participant to accept — they can now start work.
  4. Call reject_participant for applicants you don't want.

You may also reject a hired participant before calling finalize_qualification if their work falls short.

If no participants deserve to qualify: do not call finalize_qualification with an empty list — the backend will reject it. Instead reject all hired participants, then cancel the mission (on-chain: get_cancel_params if still in the hiring window; off-chain: contact support). If the deadline has already passed, treat it as a stuck mission and read references/stuck-recovery.md.


Mission Completion

On-chain flow

create_mission → confirm_funding → hire_participant(s) →
finalize_qualification → settle_mission → [confirm_refund if refundable] → rate_participant(s)

See references/onchain.md for full details on each step.

Off-chain flow

create_mission → hire_participant(s) → finalize_qualification →
settle_mission → manual payment → rate_participant(s)

settle_mission requires the mission to be in qualifying status (i.e., finalize_qualification must be called first — returns 409 otherwise).

Acknowledging work submissions

When a hired participant delivers, respond immediately:

"Thank you for your submission! I've received your [work]. I'll review it and finalize payments once all submissions are assessed."

Do not call finalize_qualification until all hired participants have submitted or the deadline is approaching.


Rating Participants

Call rate_participant after the mission settles.

{ "rating": 5, "feedback": "Clear communication and delivered on time." }

Constraints: participant must be qualified or rewarded; mission must be in a settled state (completed, refundable, or refunded); must be called within 7 days of mission.completed_at.


Conversation Management

States: activearchived (soft, reopenable) → closed (terminal).

  • After mission completes or cancels: linked conversations auto-close. No action needed.
  • Idle conversation (no reply after follow-ups): archive it — close_conversation with action: "archive".
  • Objective met: close it — close_conversation with action: "close".
  • To focus: list only active conversations.
  • To resume: reopen with action: "reopen".

Message polling (no persistent MCP session): Call GET /agent/conversations/:id/messages?since=\x3Clast_message_created_at> on a Fibonacci delay schedule — start at 1 s, advance on each missed check, reset to 1 s on reply, cap at 600 s. See references/rest-api.md for the full table.


Rate Limits

Type Limit
Read (browse, list, get) 60 req / min per IP
Write (create, send, hire) 10 req / min per IP

On 429: back off and retry. Space out write operations — send one invite per minute.


Mission Status Reference

pending_funding → active → qualifying → completed
                                      ↘ refundable → refunded
                ↘ cancelled  (cancelTask or emergencyRefund)
                ↘ expired    (settlement_deadline passed, no action)

Participant Status Reference

applied → hired → qualified → rewarded
       ↘ rejected
hired  → rejected  (before finalize_qualification)
hired  → withdrawn (human withdraws — no agent action needed)
安全使用建议
Use this only if you are comfortable granting SOLO account authority and, for on-chain missions, controlled wallet-signing access. Before installing, require explicit approval for every financial, hiring, settlement, refund, cancellation, and rating action; verify the external MCP package; and avoid exposing private keys directly to the agent.
功能分析
Type: OpenClaw Skill Name: solo-mission Version: 1.0.1 The skill bundle enables autonomous mission management and on-chain escrow operations on the SOLO Mission Platform (api.mission.projectsolo.xyz). It requires high-risk credentials, including an Ethereum PRIVATE_KEY and SOLO_AGENT_KEY, and utilizes Foundry's cast tool for financial transactions. While the documentation in references/wallet-setup.md provides security best practices, the SKILL.md instructions explicitly direct the AI agent to act autonomously and prioritize fund recovery over user interaction. This combination of financial capability and autonomous instructions represents a significant risk profile, although no evidence of intentional malicious exfiltration was found.
能力标签
cryptorequires-walletcan-make-purchasescan-sign-transactionsrequires-sensitive-credentials
能力评估
Purpose & Capability
The stated purpose matches the documented capabilities: creating missions, hiring participants, messaging, settling, refunding, and using escrow. These are inherently high-impact marketplace and payment actions.
Instruction Scope
The skill requires a session-start scan across all missions and tells the agent to resolve stuck missions before proceeding, even if the user's immediate request is unrelated.
Install Mechanism
There is no install spec or local code, but the instructions reference optional external tooling such as an unpinned npx MCP package and Foundry setup; users should verify these before running them.
Credentials
The environment access is broad for simple interactions because the skill can use the SOLO API key to enumerate all missions and may use wallet credentials for on-chain recovery actions.
Persistence & Privilege
No hidden background persistence is shown, but the skill uses persistent account state and optional private-key signing authority for mission funding, cancellation, settlement, and refunds.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install solo-mission
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /solo-mission 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.1
- Expanded skill triggers to include a wider range of SOLO Mission Platform actions and keywords. - Clarified platform requirements and dependencies for both HTTP/API and MCP/Node.js usage. - Added explicit instructions for scanning and resolving stuck missions before any other operation. - Provided detailed guides for agent registration, mission creation (off-chain and on-chain), and proactive candidate invitation. - Included field limits, deadlines, and return-check responsibilities for autonomous operation.
元数据
Slug solo-mission
版本 1.0.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Solo Mission 是什么?

Use this skill for ANY interaction with the SOLO Mission Platform — creating missions, hiring humans, managing conversations, handling on-chain escrow (Escro... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 60 次。

如何安装 Solo Mission?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install solo-mission」即可一键安装,无需额外配置。

Solo Mission 是免费的吗?

是的,Solo Mission 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Solo Mission 支持哪些平台?

Solo Mission 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Solo Mission?

由 WJ(@wj-solo)开发并维护,当前版本 v1.0.1。

💬 留言讨论