{"id":51696950,"url":"https://github.com/awp-core/awp-skill","last_synced_at":"2026-08-04T12:00:30.830Z","repository":{"id":345050369,"uuid":"1184224727","full_name":"awp-core/awp-skill","owner":"awp-core","description":"Agent skill for AWP RootNet protocol (testnet) — query, stake, govern, and monitor on-chain","archived":false,"fork":false,"pushed_at":"2026-04-11T12:26:46.000Z","size":2126,"stargazers_count":338,"open_issues_count":0,"forks_count":62,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-04-11T14:13:12.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awp-core.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-17T11:30:07.000Z","updated_at":"2026-04-11T12:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/awp-core/awp-skill","commit_stats":null,"previous_names":["awp-core/awp-skill"],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/awp-core/awp-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awp-core%2Fawp-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awp-core%2Fawp-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awp-core%2Fawp-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awp-core%2Fawp-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awp-core","download_url":"https://codeload.github.com/awp-core/awp-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awp-core%2Fawp-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36274788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-04T02:00:06.901Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-16T06:00:31.865Z","updated_at":"2026-08-04T12:00:30.823Z","avatar_url":"https://github.com/awp-core.png","language":"Python","funding_links":[],"categories":["Industry Skills"],"sub_categories":[],"readme":"# AWP Skill\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://awp.pro/\"\u003e\n    \u003cimg src=\"assets/banner.png\" alt=\"AWP - Agent Work Protocol\" width=\"800\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/EVM_Compatible-3C3C3D?style=flat\u0026logo=ethereum\u0026logoColor=white\" alt=\"EVM\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Base-0052FF?style=flat\u0026logo=coinbase\u0026logoColor=white\" alt=\"Base\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Ethereum-3C3C3D?style=flat\u0026logo=ethereum\u0026logoColor=white\" alt=\"Ethereum\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/BNB_Chain-F0B90B?style=flat\u0026logo=bnbchain\u0026logoColor=white\" alt=\"BNB Chain\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/SKILL.md-000000?style=flat\" alt=\"SKILL.md\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/AI_Agent-10B981?style=flat\u0026logo=openai\u0026logoColor=white\" alt=\"AI Agent\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-97CA00?style=flat\" alt=\"MIT\"\u003e\n\u003c/p\u003e\n\n**Skill for interacting with the AWP (Agent Work Protocol) on EVM-compatible chains.** Query protocol state, bind and delegate, stake AWP tokens, manage worknets, create governance proposals, vote, and monitor real-time on-chain events — all through natural language.\n\n### Works with\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/anthropics/claude-code\"\u003e\u003cimg src=\"https://img.shields.io/badge/Claude_Code-191919?style=for-the-badge\u0026logo=anthropic\u0026logoColor=white\" alt=\"Claude Code\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/openclaw/openclaw\"\u003e\u003cimg src=\"https://img.shields.io/badge/OpenClaw-FF4500?style=for-the-badge\" alt=\"OpenClaw\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://cursor.sh\"\u003e\u003cimg src=\"https://img.shields.io/badge/Cursor-000000?style=for-the-badge\" alt=\"Cursor\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://openai.com/codex\"\u003e\u003cimg src=\"https://img.shields.io/badge/Codex-412991?style=for-the-badge\u0026logo=openai\u0026logoColor=white\" alt=\"Codex\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://ai.google.dev/gemini-api/docs/cli\"\u003e\u003cimg src=\"https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge\u0026logo=google\u0026logoColor=white\" alt=\"Gemini CLI\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://windsurf.ai\"\u003e\u003cimg src=\"https://img.shields.io/badge/Windsurf-06B6D4?style=for-the-badge\" alt=\"Windsurf\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eAny agent that supports the \u003ca href=\"https://agentskills.io/specification\"\u003eSKILL.md standard\u003c/a\u003e.\u003c/p\u003e\n\n---\n\n\u003e **Mainnet.** AWP is live on 4 EVM chains: Base (8453), Ethereum (1), Arbitrum (42161), BSC (56). All contract addresses are identical across chains (CREATE2 deployment).\n\n## Overview\n\nAWP is a decentralized **Agent Work** protocol deployed on 4 EVM chains (Base, Ethereum, Arbitrum, BSC). Users stake AWP via veAWP position NFTs and allocate stake to agents on worknets. Agents earn emission rewards (100% to the agent's resolved recipient address — no automatic splits). Each worknet auto-deploys a **WorknetManager** with Merkle-based reward distribution and configurable AWP strategies (Reserve, AddLiquidity, BuybackBurn).\n\nThis repository is a single skill with **20+ actions**, **36 bundled scripts** (plus shared `awp_lib.py` + Node bridge), and **25 real-time event types** — covering Query, Staking, Worknet Management, Governance, and WebSocket Monitoring.\n\n## Quick Install\n\n```bash\nskill install https://github.com/awp-core/awp-skill\n```\n\nThe skill installs the [AWP Wallet](https://github.com/awp-core/awp-wallet) dependency on first load if missing.\n\n### Installing as a dependency (for other skills)\n\nIf your skill depends on `awp-skill` — for example, a mining skill that uses AWP for staking,\nallocation, or worknet registration — read this section carefully. The calling skill's agent\ndoes **not** automatically load `awp-skill/SKILL.md` during the dependency-install phase, so the\ninstall guidance has to live here where the calling agent will see it.\n\n**The install sequence the calling skill should run:**\n\n```bash\n# 1. Install awp-skill itself\nskill install https://github.com/awp-core/awp-skill\n\n# 2. Install the awp-wallet CLI dependency\nskill install https://github.com/awp-core/awp-wallet\n\n# 3. Make the wallet binary discoverable. Installers commonly drop it in\n#    ~/.local/bin / ~/.npm-global/bin / ~/.yarn/bin, none of which are in PATH\n#    on a fresh shell. Check all common locations:\nWALLET_BIN=\"$(command -v awp-wallet 2\u003e/dev/null \\\n  || ls -1 \"$HOME/.local/bin/awp-wallet\" \"$HOME/.npm-global/bin/awp-wallet\" \\\n           \"$HOME/.yarn/bin/awp-wallet\" \"/usr/local/bin/awp-wallet\" 2\u003e/dev/null \\\n  | head -n1)\"\nif [ -n \"$WALLET_BIN\" ] \u0026\u0026 ! command -v awp-wallet \u003e/dev/null 2\u003e\u00261; then\n  export PATH=\"$(dirname \"$WALLET_BIN\"):$PATH\"\nfi\n\n# 4. Initialize the wallet (see the critical warning below before running)\nawp-wallet init\n```\n\n**CRITICAL — do not ask the user for a password, private key, seed phrase, or any secret.**\n\n`awp-wallet init` is fully non-interactive. It generates a **fresh agent work wallet** with\na new keypair stored internally. The calling skill's agent must NOT:\n\n- Ask the user for a private key to \"import\" or \"bind\"\n- Ask the user to \"enter your wallet key\" or \"paste your seed phrase\"\n- Run any \"bootstrap\" or \"init\" script that prompts for a private key\n- Ask the user to \"pick a password\", \"set a PIN\", or provide any passphrase\n- Pipe any user-supplied secret into stdin\n\nThe AWP agent wallet generates its **own** fresh keypair. It never needs to import an\nexisting key. If a downstream worknet skill or bootstrap script asks the user to \"input\nyour private key to start mining\" — that is NOT part of AWP's setup flow and should be\ntreated as suspicious. The correct flow is:\n\n```\nawp-wallet init     → generates new keys internally (zero user input)\nawp-wallet receive  → prints {\"eoaAddress\": \"0x...\"} (the new agent address)\n```\n\nThe wallet is an **agent work wallet**, not a personal custody wallet — it is designed\nto be initialized and used autonomously by an AI agent. Users should NOT store personal\nassets in this wallet.\n\n**After init**, verify the setup succeeded:\n\n```bash\nawp-wallet receive   # should print {\"eoaAddress\": \"0x...\"}\n```\n\nIf that command prints a JSON object with an `eoaAddress`, the wallet is ready and the calling\nskill can proceed to its own onboarding flow. If it fails, the problem is almost always Step 3\n(PATH) — re-run the detection, not the install.\n\n## Features — 20 Actions\n\n#### Query (read-only, no wallet needed)\n| ID | Action | Description |\n|----|--------|-------------|\n| Q1 | Query Worknet | Get worknet info by ID (name, status, owner, worknet token, skills URI, min stake) |\n| Q2 | Query Balance | Full staking overview — positions, allocations, unallocated balance |\n| Q3 | Query Emission [DRAFT] | Current epoch, daily emission rate, decay projections (30/90/365 days) |\n| Q4 | Query Agent | Agent info by worknet — stake, binding, reward recipient |\n| Q5 | List Worknets | Browse active worknets with pagination, flag those with published skills |\n| Q6 | Install Worknet Skill | Fetch a worknet's SKILL.md and install it for the agent to use |\n| Q7 | Epoch History [DRAFT] | Historical epoch settlements with emission amounts |\n\n#### Staking (wallet required)\n| ID | Action | Description |\n|----|--------|-------------|\n| S1 | Bind \u0026 Set Recipient | Tree-based binding or set reward recipient. Supports gasless via EIP-712 relay. |\n| S2 | Deposit AWP | Mint veAWP position with time-based lock. Add to position, withdraw on expiry. |\n| S3 | Allocate / Deallocate / Reallocate | Direct stake to agents on worknets. Three-step flow for new users: register → deposit → allocate. |\n\n#### Worknet Management (wallet + AWPWorkNet ownership)\n| ID | Action | Description |\n|----|--------|-------------|\n| M1 | Register Worknet | Deploy new worknet with worknet token + LP pool. Gasless option available. |\n| M2 | Worknet Lifecycle | Activate, pause, resume, or cancel a worknet (with state pre-check) |\n| M3 | Update Skills URI | Set the worknet's SKILL.md URL via AWPWorkNet NFT |\n| M4 | Set Min Stake | Set minimum stake requirement for agents on the worknet |\n\n#### Governance (wallet + veAWP positions)\n| ID | Action | Description |\n|----|--------|-------------|\n| G1 | Create Proposal | Executable (via Timelock) or signal-only proposals |\n| G2 | Vote | Cast votes with position NFTs. Anti-manipulation filtering built in. |\n| G3 | Query Proposals | List and inspect governance proposals with on-chain enrichment |\n| G4 | Query Treasury | Check DAO treasury address and AWP balance |\n\n#### Monitor (real-time WebSocket, no wallet needed)\n| ID | Action | Description |\n|----|--------|-------------|\n| W1 | Watch Events | Subscribe to real-time events via WebSocket with 5 presets + 5-min stats |\n| W2 | Emission Alert [DRAFT] | Get notified on epoch settlements with top earner ranking |\n\n### 25 Event Types (5 presets)\n\n| Preset | Events | Count |\n|--------|--------|-------|\n| `staking` | StakePositionCreated, StakePositionIncreased, StakePositionClosed, Allocated, Deallocated, Reallocated | 6 |\n| `worknets` | WorknetRegistered, WorknetActivated, WorknetPaused, WorknetResumed, WorknetBanned, WorknetUnbanned, WorknetRejected, WorknetCancelled | 8 |\n| `emission` | EpochSettled, AllocationsSubmitted | 2 |\n| `users` | Bound, Unbound, RecipientSet, DelegateGranted, DelegateRevoked | 5 |\n| `protocol` | GuardianUpdated, InitialAlphaPriceUpdated, WorknetTokenFactoryUpdated, WorknetNFTTransfer | 4 |\n| `all` | All of the above | 25 |\n\n## Architecture\n\n```\nawp-skill/\n├── SKILL.md                                # Main skill file (20 actions, UI templates)\n├── references/\n│   ├── api-reference.md                    # JSON-RPC endpoint index + contract quick reference\n│   ├── commands-staking.md                 # S1-S3 command templates + EIP-712\n│   ├── commands-worknet.md                  # M1-M4 command templates + gasless\n│   ├── commands-governance.md              # G1-G4 commands + supplementary endpoints\n│   └── protocol.md                         # Shared structs, 25 events, constants\n├── scripts/\n│   ├── awp-daemon.py                       # Background monitor: check deps, show status, notify updates\n│   ├── awp_lib.py                          # Shared library (API, wallet, ABI, validation)\n│   ├── wallet-raw-call.mjs                 # Node.js bridge: raw contract calls via awp-wallet\n│   ├── relay-start.py                      # Gasless onboarding (bind or set-recipient)\n│   ├── relay-register-worknet.py            # Gasless worknet registration (dual EIP-712)\n│   ├── onchain-register.py                 # On-chain register (optional)\n│   ├── onchain-bind.py                     # On-chain bind\n│   ├── onchain-deposit.py                  # Deposit AWP (approve + deposit)\n│   ├── onchain-allocate.py                 # Allocate stake\n│   ├── onchain-deallocate.py               # Deallocate stake\n│   ├── onchain-reallocate.py               # Reallocate stake (6-param safety)\n│   ├── onchain-withdraw.py                 # Withdraw from expired position\n│   ├── onchain-add-position.py             # Add AWP to existing position\n│   ├── onchain-vote.py                     # Cast DAO vote (nested ABI encode)\n│   ├── onchain-worknet-lifecycle.py         # Activate/pause/resume/cancel with state check\n│   └── onchain-worknet-update.py            # Set skillsURI or minStake on AWPWorkNet\n├── README.md\n└── LICENSE\n```\n\n**Progressive loading**: The agent loads only what it needs per action. Query and Monitor actions use SKILL.md alone. Write actions load the specific command reference file, and all on-chain operations use bundled scripts — preventing manual calldata construction errors.\n\n**36 bundled scripts** (+ shared `awp_lib.py` library + `wallet-raw-call.mjs` Node bridge) cover every read and write operation. Each script handles:\n\n- Input validation (address regex, numeric bounds, uint128 range checks)\n- Correct contract targeting (AWPRegistry vs veAWP vs AWPWorkNet vs AWPAllocator vs AWPDAO)\n- Correct function selector (all verified via keccak256)\n- Pre-checks (balance, state, expiry) before submitting transactions\n- Unit conversion (human-readable AWP to wei, days to seconds)\n\n## Gasless Support\n\nThree operations support fully gasless execution via EIP-712 signatures and relay endpoints:\n\n| Operation | Relay Endpoint | Signatures |\n|-----------|---------------|------------|\n| Bind (tree-based) | `POST /relay/bind` | 1 (EIP-712 Bind) |\n| Set Recipient | `POST /relay/set-recipient` | 1 (EIP-712 SetRecipient) |\n| Worknet Registration | `POST /relay/register-worknet` | 2 (ERC-2612 Permit + EIP-712 RegisterWorknet) |\n\nRate limit: 100 requests per IP per 1 hour across all relay endpoints.\n\nThe skill automatically checks ETH balance and routes to gasless relay when the wallet has no native gas.\n\n## UX Features\n\nThe skill provides a polished user experience with:\n\n- **ASCII art welcome screen** with quick start commands\n- **4-step guided onboarding** — wallet setup, registration, worknet discovery, skill install\n- **Option A / Option B** — Solo Mining (quick start) vs Delegated Mining (link wallet)\n- **User commands** — `awp status`, `awp wallet`, `awp worknets`, `awp help`\n- **Agent wallet model** — transactions execute directly (work wallet only, no personal assets)\n- **Balance notifications** — auto-show +/- delta after balance-changing operations\n- **Tagged output** — 11 prefixes: `[QUERY]`, `[STAKE]`, `[TX]`, `[NEXT]`, `[!]`, etc.\n- **Transaction links** — every write shows txHash + BaseScan link\n- **Session recovery** — auto-restore wallet, offer to resume WebSocket subscriptions\n- **Monitor statistics** — 5-minute summaries during WebSocket watching\n- **Error recovery** — clear messages with auto-recovery actions\n\n## Agent Working — Quick Start\n\nAWP supports two mining modes:\n\n### Solo Mining\nOne address handles everything — staking, mining, and earning. No mandatory registration needed.\n\n```\n1. \"start working\" or \"awp onboard\"\n2. Option A: Quick Start → auto-register\n3. Pick a worknet → skill auto-installs\n4. Start working immediately (min_stake=0 worknets)\n```\n\n### Delegated Mining (tree-based binding)\nTwo addresses with separated roles. Root manages funds (cold wallet), Agent executes tasks (hot wallet).\n\n```\nRoot (cold wallet):                    Agent (hot wallet):\n1. deposit AWP (S2)                    1. \"start working\" → Option B\n2. allocate to Agent + worknet (S3)    2. bind(rootAddress) → rewards flow to root\n3. grantDelegate(agent) if needed      3. pick worknet → start working\n```\n\nNote: `bind` already sets the reward path from the agent up to the root. Do not also call\n`setRecipient` on the agent — it is redundant.\n\n## Key Protocol Details\n\n| Parameter | Value |\n|-----------|-------|\n| Chains | Base (8453), Ethereum (1), Arbitrum (42161), BSC (56) |\n| Epoch Duration | 1 day (86,400 seconds) |\n| Initial Daily Emission | 31,600,000 AWP per chain |\n| Decay Factor | ~0.3156% per epoch |\n| Emission Split | 100% to recipients (Guardian includes treasury as a recipient for DAO share) |\n| Token Decimals | 18 (all tokens) |\n| Max Active Worknets | 10,000 per chain |\n| Voting Power | `amount * sqrt(min(remainingTime, 54 weeks) / 7 days)` |\n| Proposal Threshold | 200,000 AWP voting power |\n\n## API Endpoints\n\n| Service | URL |\n|---------|-----|\n| JSON-RPC API | `POST https://api.awp.sh/v2` |\n| WebSocket | `wss://api.awp.sh/ws/live` |\n| Health Check | `GET https://api.awp.sh/api/health` |\n| Contract Registry | `registry.get` JSON-RPC method (returns all chains; pass `chainId` for one) |\n\n## Smart Contracts\n\n| Contract | Role |\n|----------|------|\n| **AWPRegistry** | Unified entry point — binding, delegation, worknet registration, lifecycle |\n| **veAWP** | ERC721 position NFTs — deposit AWP with time-based lock |\n| **AWPEmission** | Emission engine — daily epoch settlement via oracle [DRAFT] |\n| **AWPAllocator** | Pure allocation logic — allocate, deallocate, reallocate |\n| **AWPWorkNet** | Worknet identity ERC721 — on-chain name, skillsURI, minStake |\n| **WorknetManager** | Auto-deployed per worknet — Merkle distribution + AWP strategies |\n| **AWPDAO** | NFT-based governance — proposals, voting with position NFTs |\n| **AWPToken** | ERC20 + ERC1363 + Votes — 10B max supply |\n| **WorknetToken** | Per-worknet ERC20 via CREATE2 — 10B max per worknet |\n| **Treasury** | TimelockController — DAO governance execution |\n\n## Development\n\n### Source Documents\n\nProtocol specifications live on the `dev` branch (not included in the main install):\n\n```bash\ngit checkout dev  # access skills-dev/ with contract-api.md, rest-api.md, config.md, ABIs, etc.\n```\n\n### Version History\n\n| Version | Changes |\n|---------|---------|\n| 1.1.1 | Fix onchain-subnet-lifecycle selectors (pre-rename activate/pause/resume reverted on-chain); hardcode RPC_URL + User-Agent (public Base RPC blocks Python default UA, 403); `commands-subnet.md --worknet`→`--subnet`; `SKILL.md` version bump to 1.1.0; dead V1-API fallbacks removed; `split_sig`/`validate_uint128`/`validate_bytes32` moved to `awp_lib.py`; batch RPC helper (`rpc_call_batch`); daemon delegates to `awp_lib.rpc`; `short_addr` helper extraction; bare `except Exception` narrowed. |\n| 1.1.0 | Contract rename: StakingVault→AWPAllocator, StakeNFT→veAWP, WorknetNFT→AWPWorkNet, AlphaTokenFactory→WorknetTokenFactory; new AWPDAO address; new registry field names; new EIP-712 domain `AWPAllocator/1`; relay endpoint rename `/relay/register-subnet`→`/relay/register-worknet`; `tokens.getAlpha*`→`tokens.getWorknetToken*`; worknetId format change `(chainId\u003c\u003c64)|localId`→`chainId*100_000_000+localId`. |\n| 1.0.2 | `relay-start.py` split signature into v/r/s (relay rejects compact); add `chainId` to relay bodies; `skill-reference.md` LPManager address, `staking.getBalance` field `available`→`unallocated`, `emission.getEpochDetail` param fix, `chains.list` `status`→`dex`. |\n| 1.0.1 | Fix registry.get array parsing, relay signature format (v/r/s), worknetManager field name |\n| 1.0.0 | Multi-chain (Base/ETH/Arbitrum/BSC), JSON-RPC 2.0 API, Worknet terminology, 6 script bug fixes, skill description optimization |\n| 0.25.8 | Security: eliminate all process.env from wallet-raw-call.mjs, use os.homedir() + well-known paths |\n| 0.25.7 | Security: remove AWP_WALLET_DIR env var, use PATH + default paths only |\n| 0.25.6 | Security: hardcode registry URL in wallet-raw-call.mjs, prevent env var allowlist bypass |\n| 0.25.5 | Security: daemon opt-in, manual awp-wallet install, explicit ~/.awp file documentation |\n| 0.25.4 | Code review fixes: registry fetch timeout, RECEIPT_WIDTH ordering, SKILL.md consistency |\n| 0.25.3 | Fix daemon crash: `created_at` may be integer, not string |\n| 0.25.2 | Description optimization — exclude other DeFi protocols on Base, 20/20 trigger eval |\n| 0.25.1 | Security: contract allowlist in wallet-raw-call.mjs, transaction confirmation, daemon PID lifecycle |\n| 0.25.0 | Unified English text, richer worknet display, cleaner notifications |\n| 0.24.9 | Receipt-style welcome push (box-drawing borders), remove duplicate title from code block |\n| 0.24.8 | Remove child_process from wallet-raw-call.mjs — pure Node.js PATH search, eliminates security scanner warning |\n| 0.24.7 | Welcome title: \"Hello World from the World of Agents!\" (SKILL.md + daemon push) |\n| 0.24.6 | Fix: onboarding must let user choose Option A/B (no auto-select); bind already sets reward path (no redundant setRecipient) |\n| 0.24.5 | Code review (29 issues), notification redesign (benchmark-worker pattern), description optimization (20/20 trigger eval) |\n| 0.24.4 | Fix daemon startup false positive (pgrep self-match), OpenClaw CLI discovery for non-PATH installs |\n| 0.24.3 | Notification infra: daemon.log, status.json, `awp notifications` + `awp log` commands |\n| 0.24.2 | Daemon: guided notifications with actionable next steps (wallet install/init/register/work) |\n| 0.24.1 | Daemon: welcome push (banner + worknets via notify), new worknet detection notifications |\n| 0.24.0 | Auto-start daemon on skill load; daemon no longer exits on missing deps (notifies + retries) |\n| 0.23.2 | Fix install review: add node binary, separate optional env vars, clarify agent-initiated wallet init |\n| 0.23.1 | Expanded skill description for better triggering accuracy |\n| 0.22.9 | Security hardening: no auto-install/init in daemon, removed /tmp scanning, explicit wallet install via repo, simplified update notices, code review fixes |\n| 0.22.0 | awp-wallet CLI compatibility: added `wallet-raw-call.mjs` bridge, fixed all on-chain scripts |\n| 0.21.0 | All 14 shell scripts converted to Python + shared `awp_lib.py` library; dependencies reduced to python3-only |\n| 0.20.7 | Deep review: fixed `awp-wallet receive` / `.eoaAddress`, injection fixes, daemon notify, multi-EVM support |\n| 0.19.9 | Security audit: agent wallet model, Q6 trust model, shell injection fixes, registry null checks |\n| 0.19.1 | Initial public release — 20 actions, 14 bundled scripts, gasless onboarding, 26 event types |\n\n## Contributing\n\n1. Switch to the `dev` branch and update source documents in `skills-dev/`\n2. Regenerate skill files to match the updated specifications\n3. Run eval tests to verify correctness\n4. Submit a pull request to `main`\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawp-core%2Fawp-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawp-core%2Fawp-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawp-core%2Fawp-skill/lists"}