Skip to content

OpenClaw Skills

Repository: https://github.com/billcheung10/openfish-skills

The skills follow the gstack pattern: do not generate a live trading agent from one sentence. Ask one decision question at a time, write a reviewed spec, build dry-run first, and require explicit approval before any live order.

SkillPurpose
openfish-trading-agentUmbrella lifecycle skill and shared references.
openfish-agent-designWallet/account/funding/backend/strategy/risk interview.
openfish-agent-risk-reviewSafety and implementation review before build.
openfish-agent-builderDry-run-first workspace generation.
openfish-first-live-orderReadiness gate and exactly one explicitly approved live FAK/FOK submit.
openfish-agent-reviewDry-run/live-run review and adjustment recommendations.

From an OpenClaw project root:

Terminal window
git clone https://github.com/billcheung10/openfish-skills.git
./openfish-skills/setup --host openclaw

To append the Openfish routing section to an AGENTS.md file:

Terminal window
./openfish-skills/setup --host openclaw --agents AGENTS.md

This example shows the intended user experience: OpenClaw asks one decision question at a time, confirms the plan, builds a dry-run agent, and only moves toward live trading after explicit approval.

In OpenClaw, the user can start with:

Use the Openfish skills to help me build a dry-run-first trading agent.
Goal: trade liquid crypto prediction markets.
Preference: directional momentum, not market making.
Risk: no live orders until I approve an exact first-order plan.
Budget: use one Openfish account for this agent, first live order cap 100 FISH.

OpenClaw should route this to openfish-agent-design, not directly to code generation.

A typical answer path:

Skill questionExample answer
Lifecycle stage?New agent from scratch.
Account status?Create/register a dedicated Openfish wallet for this agent.
Funding status?Fund later; dry-run is allowed first.
Execution backend?CLI-backed for first local run; API-backed if the agent becomes hosted.
Market scope?Prefer high-liquidity crypto and other liquid markets recommended by Openfish.
Strategy type?Directional momentum with no autonomous strategy changes.
Risk limits?Max order size 25 FISH in dry-run, first live order cap 100 FISH, max daily loss 300 FISH, stop on account-state failure.

The design stage should produce:

  • openfish_agent_design.md
  • agent_spec.yaml
  • risk_contract.yaml

The user reviews those files before build starts.

The generated runbook should keep credentials out of chat and guide the user through account readiness:

Terminal window
openfish wallet create
openfish clob create-api-key --agent-env-file .env.agent
openfish clob account-status

For API-backed agents, the generated workspace uses environment variables or a local secret file. It must not write real API secrets into tracked source files.

If the wallet is not registered with Openfish yet, the skill stops at onboarding. If the account has no FISH balance, dry-run can continue, but live-readiness remains blocked.

After the user approves the design, OpenClaw routes through openfish-agent-risk-review and then openfish-agent-builder.

The generated API-backed workspace can run a dry-run flow similar to:

Terminal window
python3 onboarding_checklist.py --agent-wallet 0xYOUR_AGENT_WALLET --registered --status
python3 mvp_full_flow.py \
--category crypto \
--strategy directional \
--target-size 25 \
--max-intents 3 \
--review

Expected reports:

  • reports/onboarding_report.md
  • reports/observation_report.md
  • reports/dry_run_report.md
  • reports/review_report.md

At this point no live orders have been submitted.

Only after the user explicitly requests a first live validation should OpenClaw route to openfish-first-live-order.

Readiness check:

Terminal window
python3 mvp_full_flow.py \
--category crypto \
--strategy directional \
--target-size 25 \
--max-intents 3 \
--live-ready \
--review

This still submits zero orders. It produces either:

  • reports/live_run_ready_report.md
  • reports/live_run_blocked_report.md

If ready, it also produces reports/first_live_order_plan.md with one exact order candidate. The user must approve that exact market, side, price, size, notional, budget cap, and cancellation rule before any live submit.

After a clean one-shot dry-run and review, the user can ask OpenClaw to convert the agent into scheduled or resident operation. The generated workspace uses run_loop.py as a bounded wrapper around agent.py.

Dry-run every 5 minutes for up to 12 runs:

Terminal window
python3 run_loop.py \
--interval-seconds 300 \
--max-runs 12 \
--max-runtime-seconds 7200 \
--max-errors 2 \
--stop-file ./STOP \
-- \
--category crypto \
--strategy directional \
--target-size 25 \
--max-intents 3 \
--min-depth 1 \
--max-spread 0.20

Stop a scheduled or resident run:

Terminal window
touch STOP

For live-readiness monitoring, the same wrapper can pass --live, but this still submits zero orders:

Terminal window
python3 run_loop.py \
--interval-seconds 900 \
--max-runs 8 \
--max-runtime-seconds 7200 \
--max-errors 2 \
--stop-file ./STOP \
-- \
--category crypto \
--strategy directional \
--target-size 25 \
--max-intents 3 \
--live

Do not schedule submit_first_live_order.py. First live submission remains a separate, explicit, one-order approval step.

After dry-run or the first live attempt, route to openfish-agent-review.

The review should answer:

  • Did the agent follow the confirmed spec and risk contract?
  • Were markets liquid enough?
  • Were any orders blocked, cancelled, or unexpectedly filled?
  • Should the next run keep, reduce, pause, stop, or revise the strategy?

The skill should update the spec only after review. It should not silently increase budget, switch market scope, enable live mode, transfer funds, or withdraw.

Terminal window
cd openfish-skills
git pull
./setup --host openclaw
Terminal window
rm -rf .openclaw/skills/openfish-*

The onboarding gate is complete only when:

  1. A wallet exists or has been imported.
  2. The wallet has registered with Openfish by creating/deriving CLOB API credentials.
  3. /agent/account/state or openfish clob account-status succeeds.
  4. FISH ledger balance is present when live trading is requested.

Local wallet creation alone is not enough.

  • Never paste private keys, seed phrases, API secrets, or passphrases into chat.
  • Generated agents default to dry-run.
  • One Openfish wallet/account per live agent is the default recommendation.
  • Live order submission requires explicit approval of an exact first-order plan.
  • Withdrawal and transfer steps are checklist-only; skills do not auto-withdraw.