Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
## Extensions Catalog

<!-- BEGIN AUTO-GENERATED CATALOG -->
This repository contains **2 marketplace(s)** with **64 extensions** (54 skills, 10 plugins).
This repository contains **2 marketplace(s)** with **65 extensions** (54 skills, 11 plugins).

### large-codebase

Expand All @@ -108,7 +108,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases

Official skills and plugins for OpenHands — the open-source AI software engineer.

**60 extensions** (52 skills, 8 plugins)
**61 extensions** (52 skills, 9 plugins)

| Name | Type | Description | Commands |
|------|------|-------------|----------|
Expand Down Expand Up @@ -166,6 +166,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
| slack-standup-digest | skill | Create an automation that generates an async standup digest from Slack. Searches selected channels for messages since... | `/standup-digest:setup` |
| ssh | skill | Establish and manage SSH connections to remote machines, including key generation, configuration, and file transfers.... | — |
| swift-linux | skill | Install and configure Swift programming language on Debian Linux for server-side development. Use when building Swift... | — |
| taskmarket-delegation | plugin | Delegate well-scoped work to Taskmarket with bounded spending, explicit user authorization, and human review of submissions. | — |
| technical-writing | skill | Write and revise technical explanations in flowing, direct, conversational prose that stays concise without becoming ... | — |
| theme-factory | skill | Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc.... | — |
| upstream-fork-sync | skill | Keep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases lo... | `/upstream-fork-sync:setup` |
Expand Down
13 changes: 13 additions & 0 deletions marketplaces/openhands-extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,19 @@
"encryption"
]
},
{
"name": "taskmarket-delegation",
"source": "./plugins/taskmarket-delegation",
"description": "Delegate well-scoped work to Taskmarket with bounded spending, explicit user authorization, and human review of submissions.",
"category": "agent-authoring",
"keywords": [
"taskmarket",
"delegation",
"bounty",
"agents",
"payments"
]
},
{
"name": "skill-creator",
"source": "./skills/skill-creator",
Expand Down
1 change: 1 addition & 0 deletions plugins/taskmarket-delegation/.claude-plugin
1 change: 1 addition & 0 deletions plugins/taskmarket-delegation/.codex-plugin
8 changes: 8 additions & 0 deletions plugins/taskmarket-delegation/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"taskmarket": {
"command": "python",
"args": ["scripts/taskmarket_mcp.py"]
}
}
}
12 changes: 12 additions & 0 deletions plugins/taskmarket-delegation/.plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "taskmarket-delegation",
"version": "0.1.0",
"description": "Delegate well-scoped work to Taskmarket with bounded spending and explicit review gates",
"author": {
"name": "OpenHands Extensions Contributors"
},
"homepage": "https://taskmarket.dev/",
"repository": "https://github.com/OpenHands/extensions",
"license": "MIT",
"keywords": ["taskmarket", "delegation", "bounty", "agents", "payments"]
}
30 changes: 30 additions & 0 deletions plugins/taskmarket-delegation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Taskmarket Delegation Plugin

This OpenHands plugin adds a small MCP bridge for the [Taskmarket](https://taskmarket.dev/) worker market.

## What it provides

- Read-only browsing of public tasks and task status.
- A preparation step that validates a description, duration, mode, visibility, and reward ceiling.
- A create step that requires a one-time preparation token plus the exact confirmation `CREATE_TASK`.
- Submission retrieval for human review; the plugin never accepts or rejects work automatically.

Paid writes are delegated to the first-party `taskmarket` CLI. The bridge does not handle private keys, seed phrases, or payment signatures. Install and configure the CLI separately, then load the plugin with the OpenHands SDK or Cloud:

```python
from openhands.sdk.plugin import PluginSource

plugin = PluginSource(
source="github:OpenHands/extensions",
ref="main",
repo_path="plugins/taskmarket-delegation",
)
```

The MCP server uses `TASKMARKET_API_URL` when set, otherwise `https://api.taskmarket.dev`. The default maximum task reward is 100 USDC and can be lowered with `TASKMARKET_MAX_REWARD_USDC`. The server only invokes `taskmarket task create` after the user has been shown the prepared summary and explicitly confirmed it.

## Safety and review flow

`/taskmarket:delegate` is the user-facing command. Agents should call `taskmarket_prepare_task`, show the returned summary, and wait for an explicit confirmation before calling `taskmarket_create_task`. `taskmarket_list_submissions` is intentionally read-only so a human decides which work to accept.

The MCP bridge is dependency-free and speaks the standard stdio transport. Its tests exercise the protocol, validation, reward ceiling, one-time authorization token, and the no-auto-accept behavior.
18 changes: 18 additions & 0 deletions plugins/taskmarket-delegation/commands/delegate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: Browse Taskmarket work or prepare a user-authorized delegation
argument-hint: [request]
---

# Taskmarket delegation

Use the Taskmarket MCP tools to help the user delegate a well-scoped request.

1. Read the user's request and identify the deliverable, deadline, and a realistic budget.
2. Browse open work when the user wants to find existing bounties.
3. For a new task, call `taskmarket_prepare_task` first. Show the exact description, mode, duration, visibility, and maximum reward to the user.
4. Call `taskmarket_create_task` only after the user explicitly confirms the displayed summary. Pass `confirm: true` and `confirmation_text: "CREATE_TASK"`.
5. After creation, return the task ID and link. Use `taskmarket_get_task` for status and `taskmarket_list_submissions` to present submissions for human review.

Never expose wallet keys, seed phrases, or tokens. Never infer consent from the original request, silently fund a task, or accept or reject a submission. The MCP server uses the user's already configured first-party Taskmarket CLI for paid writes and enforces a configurable reward ceiling.

If the request is ambiguous, ask for the missing scope instead of creating a task.
Loading
Loading