Skip to content

feat(skills): add taskmarket-delegate skill (browse/create/submit TaskMarket tasks) - #865

Merged
aaronjmars merged 6 commits into
aeonfun:mainfrom
Autonomy-Labs-Tech:feat/taskmarket-delegate-skill
Aug 12, 2026
Merged

feat(skills): add taskmarket-delegate skill (browse/create/submit TaskMarket tasks)#865
aaronjmars merged 6 commits into
aeonfun:mainfrom
Autonomy-Labs-Tech:feat/taskmarket-delegate-skill

Conversation

@Autonomy-Labs-Tech

Copy link
Copy Markdown
Contributor

Task

Adds taskmarket-delegate — a self-contained Aeon skill that lets the agent delegate to the TaskMarket agent-worker market (tasks.taskmarket.dev / api.taskmarket.dev) instead of burning inference on unreliable or low-confidence work.

Behavior

  • browse (no key): fetch + rank open TaskMarket tasks, winnable-first (lowest submissionCount wins the top rows)
  • create/submit (key-gated): create a market task or submit completed work, only after an explicit operator authorization gate
  • Graceful degradation without TASKMARKET_API_KEY: read-only still works, write actions exit 3 with a clear notify

Implementation

  • skills/taskmarket-delegate/SKILL.md — action spec + authorization gate + reporting contract
  • skills/taskmarket-delegate/scripts/taskmarket.js — zero-dependency node client for api.taskmarket.dev (GET /api/tasks, POST /api/tasks, POST /api/tasks/:id/submit)
  • skills/taskmarket-delegate/tests/test-taskmarket.js — 6 deterministic tests incl. live read-only browse against the public endpoint (no spend)

New secrets

TASKMARKET_API_KEY — only for create/submit; skill degrades cleanly when absent.

Tests

ALL TESTS PASSED (live, read-only).

Links

Status: open, awaiting review.

@Autonomy-Labs-Tech

Copy link
Copy Markdown
Contributor Author

Live reproducible demo (read-only, no key, against the public endpoint) — this is the browse action output as of 2026-08-09:

0x422e75 reward=20000000 subs=16 expiry=2026-08-09 | Create a **15-second, photorealistic scene from the televisi
0xd7bf7e reward=20000000 subs=17 expiry=2026-08-11 | # Guest Task Drop: Onboard an Established AI/Crypto/Blockcha
0x3d7614 reward=1000000 subs=21 expiry=2026-08-11 | # PROXYWAR Strategy Benchmark\n\nRun a reproducible benchmar
0xae2afd reward=1000000 subs=24 expiry=2026-08-11 | # PROXYWAR Strategy Benchmark\n\nRun a reproducible benchmar
0x21cc30 reward=3397087 subs=27 expiry=2026-08-15 | # Integrate TaskMarket into an Agentic Product\n\nCreate and
0x8e416b reward=4500000 subs=33 expiry=2026-08-22 | # Earn 0.50 USDC for a Real TaskMarket Integration PR\n\nSub
0x8eacb2 reward=9000000 subs=53 expiry=2026-08-09 | Cross the Streams
0xa89eaa reward=9000000 subs=55 expiry=2026-08-09 | Two Girls at the End of the Hall

Also: registered the skill in aeon.yml (disabled) so operators can schedule/discover it — commit 04eef25. Write actions (create/submit) remain gated behind TASKMARKET_API_KEY + explicit operator authorization per the SKILL.md.

@Autonomy-Labs-Tech

Copy link
Copy Markdown
Contributor Author

Local CI-equivalent verification (head c9da429, 2026-08-09)

All repo gate scripts re-run locally against this head — every one passes:

Gate Result
scripts/check-skill-categories.sh OK — taskmarket-delegate declared category: crypto (in required set)
bin/generate-skills-json vs committed catalog/skills.json identical modulo normalized generated/sha/updated; semantic diff = only the new skill entry
eyebrow verify --ci (eyebrowlock.json, policy failOnSeverity=critical) exit 0 — lockfile covers the new skill; egress api.taskmarket.dev declared; findings high/medium, zero critical
skill test suite skills/taskmarket-delegate/tests/test-taskmarket.js 6/6 PASS (live public endpoint, read-only)

Installability of the shipped command (bin/add-skill <repo> taskmarket-delegate) is verified in companion PR #866, which fixes bin/add-skill for the standard skills/<slug>/ layout — end-to-end install of this skill + passing tests confirmed there.

@imancipate

Copy link
Copy Markdown

Triage: ACCEPTED — clean against the contribution rubric (scope ✓ / format ✓ framework-v2 block-form / originality ✓ / size ✓ at 334 lines).
Noted for the maintainer: introduces a new external service (taskmarket.dev / api.taskmarket.dev) and a new secret TASKMARKET_API_KEY for write actions — read-only browse degrades cleanly without it, and write actions are gated behind an explicit operator authorization step. New-service adoption and secret provisioning are the maintainer decisions this triage does not make on its own.
Thanks @Autonomy-Labs-Tech — welcome as a first-time contributor here. A maintainer review pass will follow; in the meantime no changes requested from this triage layer.

@Autonomy-Labs-Tech

Copy link
Copy Markdown
Contributor Author

Hi — bumping this once since the triage pass noted "a maintainer review pass will follow" (2026-08-09T09:54Z) and the workflow runs are still in action_required (waiting on first-time-contributor workflow approval, which is maintainer-side).

No changes requested so far; happy to address anything the review finds. The integration is live and demo-verified against the public TaskMarket API (read-only). Standing by.

Autonomy Labs and others added 3 commits August 10, 2026 07:25
…skMarket tasks from Aeon

Adds a self-contained skill that lets an Aeon agent delegate work to the
TaskMarket agent-worker market (api.taskmarket.dev):
- public browse endpoint (no key) with winnable-first ranking
- key-gated create/submit with a mandatory operator authorization gate
- bundled zero-dependency node client + deterministic test harness
  (tests pass against the live public browse endpoint, read-only)

New secret: TASKMARKET_API_KEY (create/submit only; browse works without).
@aaronjmars
aaronjmars force-pushed the feat/taskmarket-delegate-skill branch from c9da429 to 44edec3 Compare August 11, 2026 13:54
@aaronjmars

Copy link
Copy Markdown
Collaborator

Thanks for this. I resolved the merge conflict for you and pushed to this branch (44edec3): rebased onto current main, regenerated catalog/skills.json and catalog/packs.json (packs.json wasn't regenerated in the original commits, so it still read 74 skills), and merged the taskmarket-delegate entry into eyebrowlock.json on top of the current lockfile. ci-skill-integrity coverage + eyebrow verify should pass now. Nothing for you to do on the conflict.

One thing to confirm before merge, your call:

Reward unit. SKILL.md documents reward as "in MOLT" and scripts/taskmarket.js sends it straight through on create (reward: Number(reward), no scaling). A separate PR modeling the same API treated reward as USDC in micro-units (value / 1e6). These can't both be right, and it only matters on the write path:

  • If api.taskmarket.dev denominates reward in base/micro units, then create "<title>" "<desc>" 5 posts 5 base units instead of 5 whole tokens, a 1e6 underfund.
  • If it takes the human-readable number, the current code is correct and the display label is the only open question (MOLT vs USDC).

Can you confirm against the TaskMarket API which unit reward is, and scale on create if needed? The read/browse path is fine either way since it just echoes the API value.

Minor (optional): no requires: TASKMARKET_API_KEY in the frontmatter. It degrades cleanly so not a blocker, but adding it documents the dependency for the dashboard vault.

PR aeonfun#865 added the taskmarket-delegate skill (catalog now 75), but the
README full-catalog caption still read "all 74 skills by pack", failing
ci-readme-catalog and ci-tests.

- .github/README.md: caption + anchor 74 -> 75
- docs/skill-packs.md: heading 74 -> 75; Crypto & Markets pack 14 -> 15
  with the new taskmarket-delegate entry
- add docs/assets/skill-icons/taskmarket-delegate.svg glyph
@aaronjmars

Copy link
Copy Markdown
Collaborator

Thanks for this - it's in good shape: default-disabled and all checks green. One nit before I merge:

scripts/taskmarket.js sends worker_address: process.env.TASKMARKET_WORKER_ADDRESS || '' on the submit path, but the SKILL.md "Required secrets" section only lists TASKMARKET_API_KEY. As written, submit silently posts an empty worker_address when that env var isn't set. Could you either document TASKMARKET_WORKER_ADDRESS as a required secret for submit (and fail fast if it's missing), or make submit error out when it's empty?

Minor: the submit usage error uses exit(4) (the api-error code) rather than 2.

Once the worker_address handling is sorted I'll merge. Thanks!

aaronjmars and others added 2 commits August 11, 2026 18:05
…d submit

- Add requires: TASKMARKET_API_KEY? + TASKMARKET_WORKER_ADDRESS? so the
  dashboard vault can provision the key (write actions were unreachable).
- Drop the bare TASKMARKET_API_KEY="$..." prefix from the create/submit
  invocations; the script reads the key from env, and Aeon's Bash layer
  refuses a credential-shaped $SECRET on a shell line.
- submit fail-closes when TASKMARKET_WORKER_ADDRESS is unset instead of
  posting an empty worker_address (which would void the reward).
- submit bad-usage now exits 2 (was 4), matching the documented contract.
- Fix reward currency (USDC on Base, not MOLT); drop inaccurate x402/mcp tags.

Co-Authored-By: Claude <noreply@anthropic.com>
…requires

Co-Authored-By: Claude <noreply@anthropic.com>
@aaronjmars
aaronjmars merged commit 1183057 into aeonfun:main Aug 12, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants