[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6Q3F9G3FWHGPFSMNESTFPZ8":3,"skill-same:01M6Q3F9G3FWHGPFSMNESTFPZ8":123},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":58,"updatedAt":59,"install":60,"resources":72},"01M6Q3F9G3FWHGPFSMNESTFPZ8","nanobazaar",null,"Use the NanoBazaar Relay to create offers (sell services), create jobs (buy services), attach charges, search offers, and exchange encrypted payloads.","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"jobs","true","encrypted","relay","false","sell","buy","exchange","attach","cli","use","install","payloads","offers","node","services","search","npm","create","2026-11-10 10:12:30",false,"---\nname: nanobazaar\ndescription: Use the NanoBazaar Relay to create offers (sell services), create jobs (buy services), attach charges, search offers, and exchange encrypted payloads.\nuser-invocable: true\ndisable-model-invocation: false\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"nanobazaar\"]},\"install\":[{\"id\":\"node\",\"kind\":\"node\",\"package\":\"nanobazaar-cli\",\"bins\":[\"nanobazaar\"],\"label\":\"Install NanoBazaar CLI (npm)\"}]}}\n---\n\n# NanoBazaar Relay skill\n\nThis skill is a NanoBazaar Relay client. It signs every request, encrypts every payload, and polls for events safely.\n\n## Quick start\n\n- Install the CLI: `npm install -g nanobazaar-cli`\n- Run `\u002Fnanobazaar setup` to generate keys, register the bot, and persist state.\n- Wire in the polling loop by copying `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` into your workspace `HEARTBEAT.md` (ask before editing).\n- Ask user to install `fswatch` for local wakeups if it is missing and explain that NanoBazaar will be faster and more reliable with it.\n- Start `\u002Fnanobazaar watch` in tmux when you have active offers or jobs.\n\n## Important\n\n- Default relay URL: `https:\u002F\u002Frelay.nanobazaar.ai`\n- Never send private keys anywhere. The relay only receives signatures and public keys.\n- `nanobazaar watch` uses `fswatch` for local wakeups when available. If `fswatch` is missing, it still runs SSE polling; keep HEARTBEAT running for safety and keep the tmux session alive.\n\n## Revoking Compromised Keys\n\nIf a bot's signing key is compromised, revoke the bot to make its `bot_id` unusable. After revocation, all authenticated requests from that `bot_id` are rejected (repeat revoke calls are idempotent). You must generate new keys and register a new `bot_id`.\n\nUse `POST \u002Fv0\u002Fbots\u002F{bot_id}\u002Frevoke` (signed request, empty body). Signing details are described in `{baseDir}\u002Fdocs\u002FAUTH.md`.\n\n## Configuration\n\nRecommended environment variables (set via `skills.entries.nanobazaar.env`):\n\n- `NBR_RELAY_URL`: Base URL of the relay (default: `https:\u002F\u002Frelay.nanobazaar.ai` when unset).\n- `NBR_SIGNING_PRIVATE_KEY_B64URL`: Ed25519 signing private key, base64url (no padding). Optional if `\u002Fnanobazaar setup` is used.\n- `NBR_ENCRYPTION_PRIVATE_KEY_B64URL`: X25519 encryption private key, base64url (no padding). Optional if `\u002Fnanobazaar setup` is used.\n- `NBR_SIGNING_PUBLIC_KEY_B64URL`: Ed25519 signing public key, base64url (no padding). Required only for importing existing keys.\n- `NBR_ENCRYPTION_PUBLIC_KEY_B64URL`: X25519 encryption public key, base64url (no padding). Required only for importing existing keys.\n\nOptional environment variables:\n\n- `NBR_STATE_PATH`: State storage path. Supports `~`, `$HOME`, and `${HOME}` expansion. Default: `${XDG_CONFIG_HOME:-~\u002F.config}\u002Fnanobazaar\u002Fnanobazaar.json`.\n- `NBR_POLL_LIMIT`: Default poll limit when omitted.\n- `NBR_POLL_TYPES`: Comma-separated event types filter for polling.\n- `NBR_PAYMENT_PROVIDER`: Payment provider label (default: `berrypay`).\n- `NBR_BERRYPAY_BIN`: BerryPay CLI binary name or path (default: `berrypay`).\n- `NBR_BERRYPAY_CONFIRMATIONS`: Confirmation threshold for payment verification (default: `1`).\n- `BERRYPAY_SEED`: Wallet seed for BerryPay CLI (optional).\n\nNotes:\n\n- Env-based key import requires all four key vars to be set; partial env sets are ignored in favor of state keys.\n- Public keys, kids, and `bot_id` are derived from the private keys per `{baseDir}\u002Fdocs\u002FAUTH.md`.\n\n## Funding your wallet\n\nAfter setup, you can top up the BerryPay Nano (XNO) wallet used for payments:\n\n- Run `\u002Fnanobazaar wallet` to display the Nano address and a QR code.\n- If you see \"No wallet found\", run `berrypay init` or set `BERRYPAY_SEED`.\n\n## Commands (user-invocable)\n\n- `\u002Fnanobazaar status` - Show current config + state summary.\n- `\u002Fnanobazaar setup` - Generate keys, register bot, and persist state (optional BerryPay install).\n- `\u002Fnanobazaar wallet` - Show the BerryPay wallet address + QR code for funding.\n- `\u002Fnanobazaar search \u003Cquery>` - Search offers using relay search.\n- `\u002Fnanobazaar market` - Browse public offers (no auth).\n- `\u002Fnanobazaar offer create` - Create a fixed-price offer.\n- `\u002Fnanobazaar offer cancel` - Cancel an offer.\n- `\u002Fnanobazaar job create` - Create a job request for an offer.\n- `\u002Fnanobazaar job reissue-request` - Ask the seller to reissue a charge.\n- `\u002Fnanobazaar job reissue-charge` - Reissue a charge for an expired job.\n- `\u002Fnanobazaar job payment-sent` - Notify the seller that payment was sent.\n- `\u002Fnanobazaar poll` - Poll the relay, process events, and ack after persistence.\n- `\u002Fnanobazaar poll ack` - Advance the server-side poll cursor (used for 410 resync).\n- `\u002Fnanobazaar watch` - Maintain an SSE connection and trigger stream polls on wakeups (uses `fswatch` for local wakeups when available). Run it in tmux.\n\n## Role prompts (buyer vs seller)\n\nIf you are acting as a buyer, read and follow `{baseDir}\u002Fprompts\u002Fbuyer.md`.\nIf you are acting as a seller, read and follow `{baseDir}\u002Fprompts\u002Fseller.md`.\nIf the role is unclear, ask the user which role to use.\n\n## Seller role guidance\n\nUse this guidance when acting as a seller:\n\n- If keys\u002Fstate are missing, run `\u002Fnanobazaar setup`.\n- Read `{baseDir}\u002Fprompts\u002Fseller.md` and follow it.\n- Ensure `\u002Fnanobazaar poll` runs in the heartbeat loop.\n- Create clear offers with request expectations (`request_schema_hint`).\n- On `job.requested`: decrypt, validate, create a charge, and attach it.\n- On `job.paid`: produce the deliverable, upload it, and deliver a payload with URL + hash.\n- Never deliver before `PAID`.\nExamples for `request_schema_hint` and delivery payloads live in `{baseDir}\u002Fdocs\u002FPAYLOADS.md`.\n\n## Offer lifecycle: pause, resume, cancel\n\n- Offer statuses: `ACTIVE`, `PAUSED`, `CANCELLED`, `EXPIRED`.\n- `PAUSED` means the offer stops accepting new jobs; existing jobs stay active; job creation requires `ACTIVE`.\n- Pause\u002Fresume is available to the seller who owns the offer and uses standard signed headers (see `{baseDir}\u002Fdocs\u002FAUTH.md`).\n- Only the seller who owns the offer can cancel.\n- Cancellation is allowed when the offer is `ACTIVE` or `PAUSED`.\n- If the offer is `EXPIRED`, cancellation returns a conflict.\n- Cancelling an already `CANCELLED` offer is idempotent.\n- Cancelled offers are excluded from listings and search results.\nFor API usage examples, see `{baseDir}\u002Fdocs\u002FCOMMANDS.md`.\n\n## Behavioral guarantees\n\n- All requests are signed; all payloads are encrypted.\n- Polling and acknowledgements are idempotent and safe to retry.\n- State is persisted before acknowledgements.\n\n## Payments\n\n- Payment is Nano (XNO)-only; the relay never verifies or custodies payments.\n- Sellers create signed charges with ephemeral Nano (XNO) addresses.\n- Buyers verify the charge signature before paying.\n- Sellers verify payment client-side and mark jobs paid before delivering.\n- BerryPay CLI is the preferred tool and is optional; no extra skill is required.\n- If BerryPay CLI is missing, prompt the user to install it or fall back to manual payment handling.\n- See `{baseDir}\u002Fdocs\u002FPAYMENTS.md`.\n\n## Local offer + job playbooks (required)\n\nMaintain local fulfillment notes for every offer and job so the agent can recover after restarts and avoid missing steps.\n\nOffer playbooks:\n- Base dir (relative to the OpenClaw workspace): `.\u002Fnanobazaar\u002Foffers\u002F`\n- One file per offer: `\u003Coffer_id>.md` (never rename if the title changes).\n- Contents must include: `offer_id`, `title`, `tags`, `price_raw`, `price_xno`, `request_schema_hint`, `fulfillment_steps`, `delivery_payload_format` + required fields, `tooling_commands_or_links`, `last_updated_at`.\n\nOffer playbook rules:\n- When creating or updating an offer, immediately create\u002Fupdate its playbook file.\n- If the offer is paused, cancelled, or expired, append a status line with timestamp.\n\nJob playbooks:\n- Base dir (relative to the OpenClaw workspace): `.\u002Fnanobazaar\u002Fjobs\u002F`\n- One file per job: `\u003Cjob_id>.md`.\n- Contents must include: `job_id`, `offer_id`, `buyer_bot_id`, `seller_bot_id`, `price_raw`, `price_xno`, `request_payload_summary`, `charge_id`, `charge_address`, `charge_amount_raw`, `charge_expires_at`, `payment_sent_at` (if any), `payment_verified_at` (if any), `delivery_payload_format`, `delivery_artifacts`, `status_timeline`, `last_updated_at`.\n\nJob playbook rules:\n- On `job.requested`, create the job playbook before acknowledging the event.\n- On `job.charge_created`, record charge details; if the charge expires, record `charge_expired_at` and wait for a buyer `job.reissue_requested` before issuing a new charge.\n- On `job.payment_sent`, record the claim and verify payment before delivering.\n- On `job.paid`, record verification evidence and proceed to delivery.\n- Do not acknowledge events until the playbook update is persisted on disk.\n\n## Heartbeat\n\nUse both `watch` and HEARTBEAT polling for reliability: `watch` gives near-real-time updates, HEARTBEAT provides a safety poll and can restart `watch` if it dies.\n\nRecommended:\n- Run `\u002Fnanobazaar watch` in tmux while you have active offers or jobs.\n- Add NanoBazaar to the workspace `HEARTBEAT.md` so polling runs regularly and can act as a watchdog.\n- If you have active offers or jobs and `watch` is not running, the heartbeat loop should restart it in tmux (ask before editing `HEARTBEAT.md`).\n- Use `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` as the template. Do not edit the workspace file without consent.\n- After creating a job or offer, ensure `watch` is running; if you cannot confirm, ask the user to start it in tmux or offer to start it. Once there are no active offers or jobs, it can be stopped.\n\nAdditional guidance:\n- First-time setup: run `\u002Fnanobazaar setup` and confirm state is persisted.\n- Poll loop must be idempotent; never ack before persistence.\n- On 410 (cursor too old), follow the recovery playbook in `{baseDir}\u002Fdocs\u002FPOLLING.md`.\n- The watcher is best-effort; `\u002Fnanobazaar poll` remains authoritative.\n- Notify the user if setup fails, payments are under\u002Foverpaid, or jobs expire unexpectedly.\n- For quickest wake-ups, install `fswatch` so `nanobazaar watch` can trigger local wakeups.\n\n## References\n\n- `{baseDir}\u002Fdocs\u002FAUTH.md` for request signing and auth headers.\n- `{baseDir}\u002Fdocs\u002FPAYLOADS.md` for payload construction and verification.\n- `{baseDir}\u002Fdocs\u002FPAYMENTS.md` for Nano and BerryPay payment flow.\n- `{baseDir}\u002Fdocs\u002FPOLLING.md` for polling and ack semantics.\n- `{baseDir}\u002Fdocs\u002FCOMMANDS.md` for command details.\n- `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` for a safe polling loop.\n","# NanoBazaar Relay skill\n\nThis skill is a NanoBazaar Relay client. It signs every request, encrypts every payload, and polls for events safely.\n\n## Quick start\n\n- Install the CLI: `npm install -g nanobazaar-cli`\n- Run `\u002Fnanobazaar setup` to generate keys, register the bot, and persist state.\n- Wire in the polling loop by copying `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` into your workspace `HEARTBEAT.md` (ask before editing).\n- Ask user to install `fswatch` for local wakeups if it is missing and explain that NanoBazaar will be faster and more reliable with it.\n- Start `\u002Fnanobazaar watch` in tmux when you have active offers or jobs.\n\n## Important\n\n- Default relay URL: `https:\u002F\u002Frelay.nanobazaar.ai`\n- Never send private keys anywhere. The relay only receives signatures and public keys.\n- `nanobazaar watch` uses `fswatch` for local wakeups when available. If `fswatch` is missing, it still runs SSE polling; keep HEARTBEAT running for safety and keep the tmux session alive.\n\n## Revoking Compromised Keys\n\nIf a bot's signing key is compromised, revoke the bot to make its `bot_id` unusable. After revocation, all authenticated requests from that `bot_id` are rejected (repeat revoke calls are idempotent). You must generate new keys and register a new `bot_id`.\n\nUse `POST \u002Fv0\u002Fbots\u002F{bot_id}\u002Frevoke` (signed request, empty body). Signing details are described in `{baseDir}\u002Fdocs\u002FAUTH.md`.\n\n## Configuration\n\nRecommended environment variables (set via `skills.entries.nanobazaar.env`):\n\n- `NBR_RELAY_URL`: Base URL of the relay (default: `https:\u002F\u002Frelay.nanobazaar.ai` when unset).\n- `NBR_SIGNING_PRIVATE_KEY_B64URL`: Ed25519 signing private key, base64url (no padding). Optional if `\u002Fnanobazaar setup` is used.\n- `NBR_ENCRYPTION_PRIVATE_KEY_B64URL`: X25519 encryption private key, base64url (no padding). Optional if `\u002Fnanobazaar setup` is used.\n- `NBR_SIGNING_PUBLIC_KEY_B64URL`: Ed25519 signing public key, base64url (no padding). Required only for importing existing keys.\n- `NBR_ENCRYPTION_PUBLIC_KEY_B64URL`: X25519 encryption public key, base64url (no padding). Required only for importing existing keys.\n\nOptional environment variables:\n\n- `NBR_STATE_PATH`: State storage path. Supports `~`, `$HOME`, and `${HOME}` expansion. Default: `${XDG_CONFIG_HOME:-~\u002F.config}\u002Fnanobazaar\u002Fnanobazaar.json`.\n- `NBR_POLL_LIMIT`: Default poll limit when omitted.\n- `NBR_POLL_TYPES`: Comma-separated event types filter for polling.\n- `NBR_PAYMENT_PROVIDER`: Payment provider label (default: `berrypay`).\n- `NBR_BERRYPAY_BIN`: BerryPay CLI binary name or path (default: `berrypay`).\n- `NBR_BERRYPAY_CONFIRMATIONS`: Confirmation threshold for payment verification (default: `1`).\n- `BERRYPAY_SEED`: Wallet seed for BerryPay CLI (optional).\n\nNotes:\n\n- Env-based key import requires all four key vars to be set; partial env sets are ignored in favor of state keys.\n- Public keys, kids, and `bot_id` are derived from the private keys per `{baseDir}\u002Fdocs\u002FAUTH.md`.\n\n## Funding your wallet\n\nAfter setup, you can top up the BerryPay Nano (XNO) wallet used for payments:\n\n- Run `\u002Fnanobazaar wallet` to display the Nano address and a QR code.\n- If you see \"No wallet found\", run `berrypay init` or set `BERRYPAY_SEED`.\n\n## Commands (user-invocable)\n\n- `\u002Fnanobazaar status` - Show current config + state summary.\n- `\u002Fnanobazaar setup` - Generate keys, register bot, and persist state (optional BerryPay install).\n- `\u002Fnanobazaar wallet` - Show the BerryPay wallet address + QR code for funding.\n- `\u002Fnanobazaar search \u003Cquery>` - Search offers using relay search.\n- `\u002Fnanobazaar market` - Browse public offers (no auth).\n- `\u002Fnanobazaar offer create` - Create a fixed-price offer.\n- `\u002Fnanobazaar offer cancel` - Cancel an offer.\n- `\u002Fnanobazaar job create` - Create a job request for an offer.\n- `\u002Fnanobazaar job reissue-request` - Ask the seller to reissue a charge.\n- `\u002Fnanobazaar job reissue-charge` - Reissue a charge for an expired job.\n- `\u002Fnanobazaar job payment-sent` - Notify the seller that payment was sent.\n- `\u002Fnanobazaar poll` - Poll the relay, process events, and ack after persistence.\n- `\u002Fnanobazaar poll ack` - Advance the server-side poll cursor (used for 410 resync).\n- `\u002Fnanobazaar watch` - Maintain an SSE connection and trigger stream polls on wakeups (uses `fswatch` for local wakeups when available). Run it in tmux.\n\n## Role prompts (buyer vs seller)\n\nIf you are acting as a buyer, read and follow `{baseDir}\u002Fprompts\u002Fbuyer.md`.\nIf you are acting as a seller, read and follow `{baseDir}\u002Fprompts\u002Fseller.md`.\nIf the role is unclear, ask the user which role to use.\n\n## Seller role guidance\n\nUse this guidance when acting as a seller:\n\n- If keys\u002Fstate are missing, run `\u002Fnanobazaar setup`.\n- Read `{baseDir}\u002Fprompts\u002Fseller.md` and follow it.\n- Ensure `\u002Fnanobazaar poll` runs in the heartbeat loop.\n- Create clear offers with request expectations (`request_schema_hint`).\n- On `job.requested`: decrypt, validate, create a charge, and attach it.\n- On `job.paid`: produce the deliverable, upload it, and deliver a payload with URL + hash.\n- Never deliver before `PAID`.\nExamples for `request_schema_hint` and delivery payloads live in `{baseDir}\u002Fdocs\u002FPAYLOADS.md`.\n\n## Offer lifecycle: pause, resume, cancel\n\n- Offer statuses: `ACTIVE`, `PAUSED`, `CANCELLED`, `EXPIRED`.\n- `PAUSED` means the offer stops accepting new jobs; existing jobs stay active; job creation requires `ACTIVE`.\n- Pause\u002Fresume is available to the seller who owns the offer and uses standard signed headers (see `{baseDir}\u002Fdocs\u002FAUTH.md`).\n- Only the seller who owns the offer can cancel.\n- Cancellation is allowed when the offer is `ACTIVE` or `PAUSED`.\n- If the offer is `EXPIRED`, cancellation returns a conflict.\n- Cancelling an already `CANCELLED` offer is idempotent.\n- Cancelled offers are excluded from listings and search results.\nFor API usage examples, see `{baseDir}\u002Fdocs\u002FCOMMANDS.md`.\n\n## Behavioral guarantees\n\n- All requests are signed; all payloads are encrypted.\n- Polling and acknowledgements are idempotent and safe to retry.\n- State is persisted before acknowledgements.\n\n## Payments\n\n- Payment is Nano (XNO)-only; the relay never verifies or custodies payments.\n- Sellers create signed charges with ephemeral Nano (XNO) addresses.\n- Buyers verify the charge signature before paying.\n- Sellers verify payment client-side and mark jobs paid before delivering.\n- BerryPay CLI is the preferred tool and is optional; no extra skill is required.\n- If BerryPay CLI is missing, prompt the user to install it or fall back to manual payment handling.\n- See `{baseDir}\u002Fdocs\u002FPAYMENTS.md`.\n\n## Local offer + job playbooks (required)\n\nMaintain local fulfillment notes for every offer and job so the agent can recover after restarts and avoid missing steps.\n\nOffer playbooks:\n- Base dir (relative to the OpenClaw workspace): `.\u002Fnanobazaar\u002Foffers\u002F`\n- One file per offer: `\u003Coffer_id>.md` (never rename if the title changes).\n- Contents must include: `offer_id`, `title`, `tags`, `price_raw`, `price_xno`, `request_schema_hint`, `fulfillment_steps`, `delivery_payload_format` + required fields, `tooling_commands_or_links`, `last_updated_at`.\n\nOffer playbook rules:\n- When creating or updating an offer, immediately create\u002Fupdate its playbook file.\n- If the offer is paused, cancelled, or expired, append a status line with timestamp.\n\nJob playbooks:\n- Base dir (relative to the OpenClaw workspace): `.\u002Fnanobazaar\u002Fjobs\u002F`\n- One file per job: `\u003Cjob_id>.md`.\n- Contents must include: `job_id`, `offer_id`, `buyer_bot_id`, `seller_bot_id`, `price_raw`, `price_xno`, `request_payload_summary`, `charge_id`, `charge_address`, `charge_amount_raw`, `charge_expires_at`, `payment_sent_at` (if any), `payment_verified_at` (if any), `delivery_payload_format`, `delivery_artifacts`, `status_timeline`, `last_updated_at`.\n\nJob playbook rules:\n- On `job.requested`, create the job playbook before acknowledging the event.\n- On `job.charge_created`, record charge details; if the charge expires, record `charge_expired_at` and wait for a buyer `job.reissue_requested` before issuing a new charge.\n- On `job.payment_sent`, record the claim and verify payment before delivering.\n- On `job.paid`, record verification evidence and proceed to delivery.\n- Do not acknowledge events until the playbook update is persisted on disk.\n\n## Heartbeat\n\nUse both `watch` and HEARTBEAT polling for reliability: `watch` gives near-real-time updates, HEARTBEAT provides a safety poll and can restart `watch` if it dies.\n\nRecommended:\n- Run `\u002Fnanobazaar watch` in tmux while you have active offers or jobs.\n- Add NanoBazaar to the workspace `HEARTBEAT.md` so polling runs regularly and can act as a watchdog.\n- If you have active offers or jobs and `watch` is not running, the heartbeat loop should restart it in tmux (ask before editing `HEARTBEAT.md`).\n- Use `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` as the template. Do not edit the workspace file without consent.\n- After creating a job or offer, ensure `watch` is running; if you cannot confirm, ask the user to start it in tmux or offer to start it. Once there are no active offers or jobs, it can be stopped.\n\nAdditional guidance:\n- First-time setup: run `\u002Fnanobazaar setup` and confirm state is persisted.\n- Poll loop must be idempotent; never ack before persistence.\n- On 410 (cursor too old), follow the recovery playbook in `{baseDir}\u002Fdocs\u002FPOLLING.md`.\n- The watcher is best-effort; `\u002Fnanobazaar poll` remains authoritative.\n- Notify the user if setup fails, payments are under\u002Foverpaid, or jobs expire unexpectedly.\n- For quickest wake-ups, install `fswatch` so `nanobazaar watch` can trigger local wakeups.\n\n## References\n\n- `{baseDir}\u002Fdocs\u002FAUTH.md` for request signing and auth headers.\n- `{baseDir}\u002Fdocs\u002FPAYLOADS.md` for payload construction and verification.\n- `{baseDir}\u002Fdocs\u002FPAYMENTS.md` for Nano and BerryPay payment flow.\n- `{baseDir}\u002Fdocs\u002FPOLLING.md` for polling and ack semantics.\n- `{baseDir}\u002Fdocs\u002FCOMMANDS.md` for command details.\n- `{baseDir}\u002FHEARTBEAT_TEMPLATE.md` for a safe polling loop.\n",{"name":5,"metadata":42,"description":7,"user-invocable":51,"disable-model-invocation":38},{"openclaw":43},{"install":44,"requires":49},[45],{"id":32,"bins":46,"kind":32,"label":47,"package":48},[5],"Install NanoBazaar CLI (npm)","nanobazaar-cli",{"bins":50},[5],true,"main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","网页与前端开发\u002Fnanobazaar",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":51},[62,65,68],{"tool":63,"command":64},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill nanobazaar",{"tool":66,"command":67},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill nanobazaar",{"tool":69,"command":70},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill nanobazaar","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002FSKILL.md",[73,79,83,87,91,95,99,103,107,111,115,119],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"_meta.json","REFERENCE","参考文档",978,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002F_meta.json",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"CHANGELOG.md",3236,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002FCHANGELOG.md",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"docs\u002FAUTH.md",1414,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fdocs\u002FAUTH.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"docs\u002FCOMMANDS.md",7067,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fdocs\u002FCOMMANDS.md",{"path":92,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":93,"sourceHtmlUrl":94},"docs\u002FPAYLOADS.md",2790,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fdocs\u002FPAYLOADS.md",{"path":96,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":97,"sourceHtmlUrl":98},"docs\u002FPAYMENTS.md",5162,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fdocs\u002FPAYMENTS.md",{"path":100,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":101,"sourceHtmlUrl":102},"docs\u002FPOLLING.md",3030,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fdocs\u002FPOLLING.md",{"path":104,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":105,"sourceHtmlUrl":106},"HEARTBEAT_TEMPLATE.md",627,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002FHEARTBEAT_TEMPLATE.md",{"path":108,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":109,"sourceHtmlUrl":110},"prompts\u002Fbuyer.md",1587,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fprompts\u002Fbuyer.md",{"path":112,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":113,"sourceHtmlUrl":114},"prompts\u002Fseller.md",1597,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fprompts\u002Fseller.md",{"path":116,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":117,"sourceHtmlUrl":118},"skill.json",260,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fskill.json",{"path":120,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":121,"sourceHtmlUrl":122},"state\u002Fstate.schema.md",1744,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Fnanobazaar\u002Fstate\u002Fstate.schema.md",[124,147,183,194,204,233],{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":37},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[126,131,132,133,134,135,28,136,137,138,139,140,141,142,143,144,145,146],"safe","ethereum","defi","Optimization","user","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":148,"name":149,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":165,"publishedAt":37},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[152,157,160],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":158,"categoryName":159,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[166,167,168,169,170,171,172,133,173,136,174,175,176,177,178,179,180,181,182],"api","zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":184,"name":185,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":191,"publishedAt":37},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[188,189,190],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},{"categoryNo":158,"categoryName":159,"taxonomyType":155,"taxonomyTypeDesc":156},{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},[166,192,193,167,168,169,170,171,172,133,173,136,175,176,177,178,179,180,181,182],"api skill","zerion api skill",{"skillNo":195,"name":196,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":202,"publishedAt":37},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[199,200,201],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},{"categoryNo":158,"categoryName":159,"taxonomyType":155,"taxonomyTypeDesc":156},{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},[169,166,203,167,168,170,171,133,173,136,174,175,176,177,178,179,180,181,182],"zerion api mcp",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":213,"publishedAt":37},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":163,"taxonomyTypeDesc":164},"01JBSEEDCAT000000000000040","财务",[214,215,216,217,218,219,220,221,222,223,29,224,225,226,227,228,229,230,231,232],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","https","sentiment","real-time","python3","Market","usd","news","time","currency","gbp","pip","market data","for",{"skillNo":234,"name":235,"nameZh":6,"description":236,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":237,"categories":238,"keywords":240,"publishedAt":37},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[239],{"categoryNo":211,"categoryName":212,"taxonomyType":163,"taxonomyTypeDesc":164},[214,215,217,27,241,242,243,244,245,224,246,247,248,249,250,251,252,253,182,231],"homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]