← 返回 Skills 市场
kai-familiar

Catallax

作者 kai-familiar · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
934
总下载
2
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install catallax
功能描述
Interact with the Catallax decentralized contract work protocol on Nostr. Use when the user mentions tasks, bounties, contract work, arbiters, escrow, labor market, gigs, or Catallax. Supports browsing open tasks, creating task proposals, discovering arbiter services, submitting work deliveries, and managing the full task lifecycle (kinds 33400, 33401, 3402).
使用说明 (SKILL.md)

Catallax Skill

Interact with Catallax — a decentralized contract work protocol on Nostr using Lightning/Cashu payments and trusted escrow arbiters.

Protocol Overview

Read references/NIP-3400.md for the full spec. Key concepts:

  • Patron: Creates tasks, funds escrow, assigns workers
  • Arbiter: Escrow agent who judges work and handles payment
  • Free Agent: Applies for tasks, delivers work, gets paid
  • Kinds: 33400 (arbiter service), 33401 (task proposal), 3402 (task conclusion)
  • Status flow: proposed → funded → in_progress → submitted → concluded

Querying Tasks

Use nak to query kind 33401 events from relays:

# List all task proposals (limit 50)
nak req -k 33401 -l 50 wss://relay.damus.io

# Filter by tag (e.g. tasks tagged "development")
nak req -k 33401 -t development -l 50 wss://relay.damus.io

# Filter by status (open tasks only)
nak req -k 33401 -l 100 wss://relay.damus.io | \
  while read -r event; do
    status=$(echo "$event" | jq -r '.tags[] | select(.[0]=="status") | .[1]')
    if [ "$status" = "proposed" ] || [ "$status" = "funded" ]; then
      echo "$event"
    fi
  done

Parse the content field as JSON to get title, description, requirements. Parse tags for amount, status, categories.

Display Format

When presenting tasks to the user, show:

  • Title (from content.title)
  • Bounty (from amount tag, in sats — show "?" if missing)
  • Status (from status tag)
  • Date (from created_at)
  • Categories (from t tags)
  • Description (from content.description, truncated)
  • Funding type (from funding_type tag: "patron" or "crowdfunding")

Querying Arbiters

# List arbiter services
nak req -k 33400 -l 50 wss://relay.damus.io

Parse content for name, about, policy. Parse tags for fee_type, fee_amount, min/max amounts, categories.

Display Format

When presenting arbiters:

  • Name (from content.name)
  • Fee (fee_type + fee_amount — e.g. "5%" or "1000 sats flat")
  • Min/Max (from min_amount/max_amount tags)
  • Categories (from t tags)
  • About (from content.about)

Creating a Task Proposal

To create a task as a Patron, publish a kind 33401 event:

# Build and publish task proposal
nak event -k 33401 \
  --tag d="\x3Cunique-slug>" \
  --tag p="\x3Cyour-pubkey>" \
  --tag amount="\x3Cbounty-in-sats>" \
  --tag t="\x3Ccategory>" \
  --tag status="proposed" \
  --tag funding_type="patron" \
  -c '{"title":"Task Title","description":"Detailed description...","requirements":"What must be delivered"}' \
  --sec "\x3Cnsec>" \
  wss://relay.damus.io wss://nos.lol wss://relay.primal.net

Generate the d-tag slug from the title (lowercase, hyphenated, with random suffix for uniqueness).

Important: The content field must be valid JSON with title, description, and optionally requirements and deadline.

Updating Task Status

Since kind 33401 is addressable replaceable, publish a new event with the same d-tag to update. Include all original tags plus changes:

# Update to funded (add zap receipt reference)
nak event -k 33401 \
  --tag d="\x3Csame-d-tag>" \
  --tag status="funded" \
  --tag e="\x3Czap-receipt-event-id>" \
  # ... all other original tags ...
  --sec "\x3Cnsec>" \
  wss://relay.damus.io

Submitting Work (as Free Agent)

Work delivery is coordinated out-of-band per the protocol. However, agents may use kind 951 (work delivery) as a convention:

nak event -k 951 \
  --tag e="\x3Ctask-event-id>" \
  --tag p="\x3Cpatron-pubkey>" \
  -c '{"delivery":"Description of completed work","evidence":"Link or proof"}' \
  --sec "\x3Cnsec>" \
  wss://relay.damus.io

Task Conclusion (Arbiter only)

nak event -k 3402 \
  --tag e="\x3Cpayout-zap-receipt-id>" \
  --tag e="\x3Ctask-event-id>" \
  --tag p="\x3Cpatron-pubkey>" \
  --tag p="\x3Carbiter-pubkey>" \
  --tag p="\x3Cworker-pubkey>" \
  --tag resolution="successful" \
  --tag a="33401:\x3Cpatron-pubkey>:\x3Ctask-d-tag>" \
  -c '{"resolution_details":"Work met all requirements"}' \
  --sec "\x3Cnsec>" \
  wss://relay.damus.io

Common Queries

User says Action
"find bounties" / "show tasks" Query kind 33401, filter status=proposed or funded
"create a task" / "post a bounty" Build and publish kind 33401
"find arbiters" Query kind 33400
"submit work" / "deliver" Publish kind 951 referencing the task
"check my tasks" Query kind 33401 filtered by user's pubkey in p-tags
"what's the status" Fetch specific task by d-tag, report status

Reference Client

For visual browsing: https://catallax-reference-client.netlify.app/catallax

Key Relays

Query multiple relays for best coverage:

  • wss://relay.damus.io
  • wss://nos.lol
  • wss://relay.primal.net

Note: Some relays may not return results for nak req -k 33401 due to kind filtering. If nak returns empty results, fall back to a WebSocket script approach — open a WebSocket connection, send a REQ with {"kinds":[33401],"limit":50}, and collect EVENT responses until EOSE.

Edge Cases

  • Missing amount tag: Some tasks use crowdfunding (funding_type=crowdfunding) with a NIP-75 goal tag instead of a fixed amount. Display bounty as "crowdfunded" in this case.
  • Content format: Content should be JSON but some early tasks used plain text. Try JSON.parse first, fall back to treating content as description.
  • Stale tasks: Tasks with status=proposed older than 30 days may be abandoned. Note age when displaying.
  • Multiple relays: Always publish to 3+ relays for discoverability. Query from multiple relays and deduplicate by event id.
安全使用建议
This skill appears to implement the Catallax/Nostr workflow correctly, but it assumes access to your Nostr signing key (nsec) and shows examples of passing it inline to the nak CLI. Before installing or using: (1) don't paste your nsec into chat or into commands that will be stored in shell history—use a secure keyring, hardware signer, or nak's secure key management; (2) expect the skill to publish signed events to public relays—review every proposed publish before it runs; (3) ask the skill author how keys are obtained/stored (the skill metadata should declare required credentials but doesn't); and (4) if you only want read-only behavior, restrict the agent to queries and avoid providing signing material. If the author can document safe key-handling (explicit required credential and secure signing flow), this would reduce the main risk.
功能分析
Type: OpenClaw Skill Name: catallax Version: 1.0.0 The skill bundle is benign. It provides instructions for an AI agent to interact with the Catallax decentralized contract work protocol on Nostr using the `nak` CLI tool and `jq` for JSON parsing. All shell commands, network calls to Nostr relays, and the requirement for the agent to use a Nostr private key (`nsec`) are directly aligned with the skill's stated purpose. There is no evidence of prompt injection attempting to subvert the agent's behavior, exfiltrate data, install backdoors, or perform any other malicious actions. The instructions are clear, functional, and focused on the domain.
能力评估
Purpose & Capability
The name/description (Catallax on Nostr) align with the SKILL.md: it describes browsing tasks, creating proposals, discovering arbiters, submitting deliveries and concluding tasks. Requiring access to Nostr relays and the nak client is coherent with the purpose. However, the SKILL.md expects the agent/user to supply a signing secret (nsec) for publishing events but the skill metadata declares no required credentials or primaryEnv—this is an inconsistency.
Instruction Scope
Runtime instructions include concrete shell commands using nak and explicitly show passing --sec "<nsec>" (the user's private key) inline when publishing events. There is no guidance to use secure key storage, nor does the SKILL.md declare where the agent should obtain or store the nsec. Passing secrets on the command line risks exposure (shell history, process list) and the instructions give the agent discretion to publish signed events to multiple external relays, which could be abused if signing keys are mishandled.
Install Mechanism
No install spec and no code files — the skill is instruction-only, which minimizes installation risk. It relies on external tools (nak) being present but does not attempt to download or execute arbitrary installers.
Credentials
The SKILL.md effectively requires access to a Nostr private key (nsec) to perform publishes, but requires.env and primary credential are empty. That mismatch is concerning: a signing secret is a high-value credential and should be explicitly declared and handled with guidance for secure use (e.g., keyring, hardware signer, agent-hosted secure vault). The instructions also recommend publishing to several relays (external endpoints), which is expected for this protocol but increases the blast radius if a key is exposed.
Persistence & Privilege
No elevated persistence (always:false). The skill does not request or attempt to modify other skills or system-wide configs. Autonomous invocation is allowed by platform default but is not combined here with 'always' or other broad privileges.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install catallax
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /catallax 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release of the Catallax skill for decentralized contract work on Nostr. - Supports browsing, filtering, and displaying open tasks/bounties and arbiter services. - Allows users to create task proposals, submit work, update status, and conclude tasks via protocol events. - Handles querying multiple relays, parsing tags/content, and key protocol edge cases. - Provides clear output formats for both tasks and arbiters. - Follows NIP-3400 and associated kind conventions for contract workflow.
元数据
Slug catallax
版本 1.0.0
许可证
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Catallax 是什么?

Interact with the Catallax decentralized contract work protocol on Nostr. Use when the user mentions tasks, bounties, contract work, arbiters, escrow, labor market, gigs, or Catallax. Supports browsing open tasks, creating task proposals, discovering arbiter services, submitting work deliveries, and managing the full task lifecycle (kinds 33400, 33401, 3402). 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 934 次。

如何安装 Catallax?

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

Catallax 是免费的吗?

是的,Catallax 完全免费(开源免费),可自由下载、安装和使用。

Catallax 支持哪些平台?

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

谁开发了 Catallax?

由 kai-familiar(@kai-familiar)开发并维护,当前版本 v1.0.0。

💬 留言讨论