{"id":"45ee691f-7779-4b2b-9b46-1b9d16d10153","entityType":"agent","slug":"clawhub-daav3-agentic-lending-evk","name":"Agentic Lending Evk","canonicalUrl":"https://www.xpersona.co/agent/clawhub-daav3-agentic-lending-evk","canonicalPath":"/agent/clawhub-daav3-agentic-lending-evk","generatedAt":"2026-10-10T11:50:57.831Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":null},"description":"Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selec...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s176sa2svdwgks5ycz1yngewb184yand:agentic-lending-evk","sourceUrl":"https://clawhub.ai/daav3/agentic-lending-evk","homepage":"https://clawhub.ai/daav3/skills/agentic-lending-evk","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/daav3/agentic-lending-evk","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/daav3/skills/agentic-lending-evk","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Agentic Lending Evk technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":null},"stars":null,"forks":null,"downloads":1530,"packageName":null,"latestVersion":"0.1.16","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:18:20.834Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T09:18:20.835Z","lastCrawledAt":"2026-10-10T09:18:20.834Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T09:18:20.834Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.16","createdAt":"2026-06-11T14:29:51.035Z","changelog":"Remove packaged raw send.privateKey placeholder from live request template; switch to signerEnvName and re-audit related ClawHub skill artifacts for secret exposure.","fileCount":36,"zipByteSize":116849},{"version":"0.1.15","createdAt":"2026-05-22T20:30:35.851Z","changelog":"Publish EVK live proof workflow updates, share-aware routing docs, and proper controller cleanup.","fileCount":36,"zipByteSize":116670},{"version":"0.1.14","createdAt":"2026-05-19T16:43:59.925Z","changelog":"Sync packaged Api3 feed manager runtime, including communal proxy deployment support during executable funding flows.","fileCount":33,"zipByteSize":105944},{"version":"0.1.13","createdAt":"2026-05-08T07:39:38.313Z","changelog":"Move deployment bytecode out of inline literals and avoid false-positive secret-literal moderation hits","fileCount":33,"zipByteSize":103733},{"version":"0.1.12","createdAt":"2026-05-08T00:05:31.366Z","changelog":"Replace secret-looking private key placeholders in CLI help text","fileCount":28,"zipByteSize":101675},{"version":"0.1.11","createdAt":"2026-05-08T00:02:32.107Z","changelog":"Self-contained bundle + cold-install smoke fixes","fileCount":28,"zipByteSize":101609},{"version":"0.1.10","createdAt":"2026-05-07T15:40:48.637Z","changelog":"Clarify this is the execution-capable EVK variant and make real-write boundaries, swap guards, and approval-risk expectations more explicit.","fileCount":7,"zipByteSize":14842},{"version":"0.1.9","createdAt":"2026-05-06T12:18:07.062Z","changelog":"Bundle the borrow-proof executor into the EVK public artifact and harden the live-proof contract with explicit swap protection and opt-in unlimited approvals.","fileCount":8,"zipByteSize":19617}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s176sa2svdwgks5ycz1yngewb184yand:agentic-lending-evk","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s176sa2svdwgks5ycz1yngewb184yand:agentic-lending-evk` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/daav3/agentic-lending-evk before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T11:50:57.825Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daav3-agentic-lending-evk/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":null},"readme":"Skill: Agentic Lending Evk\n\nOwner: daav3\n\nSummary: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selec...\n\nTags: latest:0.1.16\n\nVersion history:\n\nv0.1.16 | 2026-06-11T14:29:51.035Z | user\n\nRemove packaged raw send.privateKey placeholder from live request template; switch to signerEnvName and re-audit related ClawHub skill artifacts for secret exposure.\n\nv0.1.15 | 2026-05-22T20:30:35.851Z | user\n\nPublish EVK live proof workflow updates, share-aware routing docs, and proper controller cleanup.\n\nv0.1.14 | 2026-05-19T16:43:59.925Z | user\n\nSync packaged Api3 feed manager runtime, including communal proxy deployment support during executable funding flows.\n\nv0.1.13 | 2026-05-08T07:39:38.313Z | user\n\nMove deployment bytecode out of inline literals and avoid false-positive secret-literal moderation hits\n\nv0.1.12 | 2026-05-08T00:05:31.366Z | user\n\nReplace secret-looking private key placeholders in CLI help text\n\nv0.1.11 | 2026-05-08T00:02:32.107Z | user\n\nSelf-contained bundle + cold-install smoke fixes\n\nv0.1.10 | 2026-05-07T15:40:48.637Z | user\n\nClarify this is the execution-capable EVK variant and make real-write boundaries, swap guards, and approval-risk expectations more explicit.\n\nv0.1.9 | 2026-05-06T12:18:07.062Z | user\n\nBundle the borrow-proof executor into the EVK public artifact and harden the live-proof contract with explicit swap protection and opt-in unlimited approvals.\n\nv0.1.8 | 2026-05-06T11:55:47.307Z | user\n\nRollback to the 0.1.6 public skill artifact while we investigate newer scanner regressions.\n\nv0.1.7 | 2026-05-06T11:32:35.762Z | user\n\nSplit the public skill from the repo-local proof executor and reduce scanner-trigger language in the published bundle.\n\nv0.1.6 | 2026-05-05T21:46:08.251Z | user\n\nReduce scanner false positives by removing explicit secret-like literals from the public skill bundle while keeping legacy proof config compatibility.\n\nv0.1.5 | 2026-05-05T21:39:21.758Z | user\n\nGeneralize EVK skill docs and fix ClawHub packaging metadata.\n\nv0.1.4 | 2026-04-29T09:13:36.213Z | user\n\nAdded safer live-proof guardrails without removing any supported workflow.\nThe bundled borrow-proof script now requires an explicit live acknowledgement string and verifies that the configured account matches the signer before sending proof transactions.\nAlso mirrored the env/config requirements in top-level frontmatter and updated the docs/example config accordingly.\n\nv0.1.3 | 2026-04-29T07:54:12.809Z | user\n\nAdded explicit Clawhub trust metadata for required env/config expectations and browser-assisted funding disclosure.\nMade the skill cold-start safer with minimum required inputs, a canonical end-to-end flow, and explicit deployment-output to borrow-proof-config mapping.\nKept the actual workflow unchanged: dry-run/preview first, live signer-backed execution only on explicit request.\n\nv0.1.2 | 2026-04-29T07:49:47.690Z | auto\n\nagentic-lending-evk 0.1.2\n\n- Added a \"Minimum required inputs\" section in SKILL.md to clarify prerequisites for running the full workflow.\n- Updated documentation for greater clarity on input validation and required information before starting the workflow.\n- No functional or code changes—documentation only.\n\nv0.1.1 | 2026-04-28T21:43:30.916Z | auto\n\n- Added support and safety guidance for browser-assisted Api3 Market feed funding.\n- Updated skill metadata with author, homepage, environment, and config requirements.\n- Clarified default behavior: prefer planning, simulation, or preview mode before any live onchain execution.\n- Strengthened safety expectations: only perform live funding or deployment steps when explicitly requested by the user.\n- Extended documentation to reflect browser-based funding automation as an option when available and user-approved.\n\nv0.1.0 | 2026-04-28T16:07:10.782Z | auto\n\n- Initial release of agentic-lending-evk skill.\n- Provides a complete agent-facing workflow for EVK lending market deployment with Api3-backed oracles, including feed funding, oracle preparation, market assembly, deployment, and post-deploy live borrow proof.\n- Explicitly limited to the current EVK-first, Api3 feed-backed, and supported recipe paths—excludes Morpho and unsupported oracle recipes.\n- Workflow includes clear status reporting, executable state tracking, and step-by-step handling of feed funding, browser-assisted flows, and fallback behavior.\n- Built-in support for honest, verifiable post-deploy borrow proofs using the included script, with robust reporting of blockers and workflow limits.\n\nArchive index:\n\nArchive v0.1.16: 36 files, 116849 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (2324b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.bytecode.txt (2884b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (5707b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.bytecode.txt (6011b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (4247b), data/part2/contract-artifacts/ChainlinkOracle.bytecode.txt (6914b), data/part2/contract-artifacts/ChainlinkOracle.json (4209b), data/part2/contract-artifacts/CrossAdapter.bytecode.txt (4620b), data/part2/contract-artifacts/CrossAdapter.json (3967b), data/part2/contract-artifacts/EulerRouter.bytecode.txt (7835b), data/part2/contract-artifacts/EulerRouter.json (8428b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (14327b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (6792b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), references/live-request-template.json (1272b), references/summary-contract.md (5899b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (130934b), scripts/lib/part2-chain-bootstrap.js (4049b), scripts/lib/part2-planner.js (209667b), scripts/lib/part2-recipes.js (1330b), skill-card.md (2922b), SKILL.md (14808b), _meta.json (139b)\n\nFile v0.1.16:SKILL.md\n\n---\nname: agentic-lending-evk\ndescription: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selected collateral and borrow assets, discover or fund the required Api3 feeds, including browser-assisted Api3 Market funding when needed, prepare the Euler oracle path, assemble and deploy the EVK lending market, and then prove real borrowability with a post-deploy canary borrow against the intended collateral path. This variant can reach real onchain writes, including feed funding, market deployment, approvals, swaps, and borrow canaries when explicitly allowed. Default to plan, simulation, or preview mode first, and only use live signer-backed execution when the user explicitly asks for it. Do not use for Morpho, unsupported recipes, or unsupported oracle/deployment routes.\nmetadata:\n  clawdis:\n    homepage: https://github.com/daav3/agentic-lending-project\n    author: daav3\n    requires:\n      bins:\n        - node\n      env:\n        - LIVE_SIGNER_ENV\n      config:\n        - request.run-evk-workflow.json\n        - borrow-proof-config.json\n    primaryEnv: LIVE_SIGNER_ENV\n---\n\n# Agentic Lending EVK\n\nThis is the execution-capable EVK workflow skill.\n\nIt turns the bundled EVK planner primitives into one agent-facing workflow, from route resolution and feed readiness through deployment and live borrow proof.\n\nWhen the supported path is available and the user explicitly asks for it, this variant can send real transactions and should be treated as a guarded execution skill rather than a planning-only helper.\n\n## Golden path for normal use\nUse one request file and one wrapper command. Do not drop into lower-level commands unless debugging, intervention, or proof-specific follow-up is required.\n\n1. Create `request.json` with exact `collateralAssets`, exact `borrowAssets`, chain, risk intent, feed-funding intent, and EVK deployment intent.\n   - For a live-shaped starting point, copy `references/live-request-template.json` and replace every placeholder before use.\n2. Preflight before any live-capable EVK execution:\n\n   `agentic-lending-evk preflight-evk-workflow --input-file ./request.json --format json`\n\n   Stop unless `safeToRun === true`.\n3. Run:\n\n   `agentic-lending-evk run-evk-workflow --input-file ./request.json --format json`\n\n4. If the run was persisted, inspect or recover it with:\n   - `agentic-lending-evk explain-next --run-dir <run-dir> --format json`\n   - `agentic-lending-evk verify-evk-deployment-handoff --run-dir <run-dir> --format json`\n   - `agentic-lending-evk run-evk-workflow --resume-from-run-dir <run-dir> --input-file <run-dir>/request.json --format json`\n5. If the user asked for borrowability proof, continue with the bundled proof executor only after the deployment bundle is reviewed.\n6. Report full deployment success only from persisted artifacts and exact status fields, not from narrative text.\n\n## Safety expectations\n- default to planning, simulation, or preview mode first\n- treat browser-assisted funding as optional and only automate it when the user wants the flow completed end to end\n- only use live signer-backed funding, deployment, or borrow canaries when the user explicitly asks for live execution\n- for the bundled borrow-proof script, require both `--live` and the config's guarded live-send acknowledgement field to match the script's required phrase\n- require the configured proof account address to match the signer address before any live proof transaction is sent\n- require explicit nonzero swap protection for every live swap\n- require explicit opt-in before using unlimited approvals\n- keep private key material in environment variables or local runtime config, never in committed files\n\n## Use this when\n- the user wants to stand up or dry-run an EVK lending market backed by Api3 feeds\n- the user wants one workflow instead of manually stitching planner JSON steps\n- the task includes any combination of asset selection, oracle route resolution, feed readiness, feed funding, oracle preparation, EVK deployment prep, guarded dry-run or send, or post-deploy borrow proof\n\n## Do not use this when\n- the user wants Morpho, not EVK\n- the requested recipe or oracle path is not supported by the current repo\n- the task requires pretending a skeleton-only path is executable\n- the task assumes fully autonomous feed funding in every case\n\n## Read next\n1. `references/api_reference.md`\n2. `references/current_capabilities.md`\n3. `references/summary-contract.md` before claiming deployment success from wrapper output\n4. `references/live-borrow-checklist.md` when the workflow reaches post-deploy proof\n5. `references/arbitrum-eusdc1-isolated-example.json` when a concrete proof config shape helps\n6. Use the bundled executor at `scripts/evk_live_borrow_proof.js`\n7. Treat bundled `data/part2/feed-status.json` and `data/part2/market-registry.json` as packaged local snapshots, not authoritative shared state\n\n## Minimum required inputs for the combined flow\nGather these before you assume the full combined workflow is feasible:\n- chain name and chain id\n- collateral asset set and borrow asset set\n- target recipe id or risk preset\n- whether the user wants planning only, dry-run, or real send\n- whether the user also wants post-deploy borrow proof\n- live RPC availability for the chain\n- signer expectations for any live funding, deployment, or proof step\n- `vaultContext` when the deployment path needs concrete factory or asset wiring\n\nFor a full live end-to-end run, also confirm:\n- feed funding branch expectations, especially whether `fundingExecutionClassification.state` may be `browser-assisted`\n- browser access if the Api3 Market flow must be automated\n- a safe tiny borrow amount for the proof step\n- a target collateral vault for the proof, not just the borrow vault\n\nIf any of those are missing, stop and ask instead of improvising.\n\n## Default workflow\n1. Normalize the request into:\n   - chain\n   - collateral assets\n   - borrow assets\n   - target recipe or risk preset\n   - whether the user wants planning only, dry-run, or real send\n   - whether the user also wants proof of actual borrowability\n2. Resolve the oracle path for the selected assets before treating deployment as executable.\n   - prefer an exact direct route when the requested pair exists and is deployable\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. Prefer `preflight-evk-workflow`, then `run-evk-workflow`, as the default end-to-end entrypoints when the user wants the full EVK path.\n   - `preflight-evk-workflow` is the live-safety gate for placeholder detection, preview status, and blocker surfacing\n   - pass `recipeId` explicitly when known, otherwise let the runner infer from the current EVK recipe catalog\n   - treat `status` as the canonical summary object\n   - treat `result` as the detailed staged artifact bundle\n   - enable `artifacts.enabled` whenever the run may need review, handoff, or a durable success claim\n   - after a persisted run, prefer `agent-decision.json`, `summary.json`, and `rollback-plan.json` over ad-hoc interpretation\n   - use `explain-next` for operator guidance, `verify-evk-deployment-handoff` for deployment-complete handoff checks, and `--resume-from-run-dir` when continuing a known run\n4. If deployment succeeds and the user wants proof of actual borrowability, continue within this skill to the built-in post-deploy proof step.\n   - treat deployment success and borrowability proof as separate milestones\n   - use the deployment outputs plus live vault addresses, collateral-vault targets, EVC state, and tiny borrow sizing to build the proof config\n   - require preview mode first, then live canary only if the user wants a real proof\n5. Fall back to the manual staged commands only when the user asked for a subset, wants intervention at a specific phase, or the runner stops before the desired outcome.\n   - `plan-market`\n   - `ensure-feeds`\n   - if feeds are live, continue to the oracle and EVK planner path\n   - if funding is needed, inspect `purchase-inputs` or `prepare-buy-subscription` output and branch on `fundingExecutionClassification.state`\n   - if `fundingExecutionClassification.state === \"executable\"`:\n     - `purchase-inputs`\n     - `prepare-contract-call` or `prepare-buy-subscription`\n     - `execute-buy-subscription`\n     - `ensure-feeds` or `ensure-active` again to confirm the feed is now live\n   - if `fundingExecutionClassification.state === \"browser-assisted\"`:\n     - call `browser-plan`\n     - use the browser tool to execute the returned plan if the required UI is reachable and the user wants full automation\n     - re-run `ensure-feeds` or `ensure-active` after the browser flow\n   - if `fundingExecutionClassification.state === \"unsupported\"`, stop and report unsupported status clearly\n   - `prepare-euler-oracle`\n   - `prepare-evk-market`\n   - `prepare-evk-deployment`\n   - `deploy-evk-market`\n   - the bundled `scripts/evk_live_borrow_proof.js` executor for the post-deploy proof step when requested\n6. Stop and report honestly if:\n   - feed funding is `unsupported`\n   - the browser-assisted funding UI is not reachable or cannot be automated safely\n   - the oracle path is still skeleton-only\n   - the EVK market path is still skeleton-only\n7. Prefer dry-run first for exact onchain funding and deployment paths.\n8. For `browser-assisted` funding, prefer browser automation over asking the user to click through manually when the UI is reachable.\n9. Only use real send when the user explicitly wants it and the guarded acknowledgement contract is present.\n10. Keep the path generic across supported pairs.\n   - do not special-case only previously tested collateral/borrow combinations\n   - use the same resolution, funding, deployment, and proof rules for whichever supported assets are selected\n11. Do not claim a market is borrowable just because deployment succeeded. A live or at least previewed post-deploy proof step is required for that claim.\n\n## Built-in post-deploy borrow proof\nTreat the published skill as a complete artifact: it includes the proof executor it tells the agent to run.\n\nBundled executor path:\n- `scripts/evk_live_borrow_proof.js`\n\nBundled planner data path:\n- `data/part2/`\n\nUse the bundled planner data as the local default input set for this published skill. If the operator supplies fresher live RPC results or explicit `--registry-file` / `--feed-status-file` overrides, prefer those fresher inputs instead of pretending the packaged snapshots are always current.\n\nBefore a live-capable run, enable artifact persistence so the deployment and proof handoff do not depend on memory alone:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-live-run\"\n  }\n}\n```\n\nHandoff contract:\n1. generate `borrow-proof-config.json`\n2. verify the bundled executor path exists in the installed skill\n3. run preview first with `node ./scripts/evk_live_borrow_proof.js --config <path>`\n4. rerun with `--live` only when the user explicitly wants the canary\n\nThe bundled executor supports:\n- preview mode with a read-only account address\n- live mode with a signer loaded from an environment variable\n- optional debt repayment before the new proof\n- optional single-hop Uniswap V3 style swaps to source repay or collateral assets\n- collateral deposit into the target EVK vault\n- disabling stale collateral vaults in EVC\n- disabling stale controllers in EVC\n- enabling the target collateral and optionally the target controller\n- final tiny borrow and before or after logging\n\nKeep the proof honest:\n- distinguish mixed-collateral borrow from isolated target-collateral borrow\n- preserve the exact funding branch that led here\n- verify quoteability, LTV wiring, EVC state, and vault cash before a live canary\n- if the chain does not use a Uniswap V3 compatible router, replace or bypass the bundled swap step explicitly\n- require nonzero `amountOutMinimum` for live swaps\n- keep approval scope exact unless the operator explicitly opts into `approvalPolicy.mode = \"unlimited\"`\n\n## Current happy-path rule\nThe currently supported end-to-end EVK path requires:\n- feeds that are already live, or a feed that can be activated through the current narrow exact `buySubscription(...)` path\n- a cleanly resolved oracle path for the selected assets\n- top-level `prepare-evk-deployment.vaultContext`\n  - `factoryAddress`\n  - `assetAddress`\n- guarded send fields on the funding and deployment executor requests\n\nWithout that `vaultContext`, the first EVK market transaction remains skeleton-only and `readyToBroadcast` must stay false.\nWithout a supported exact buy-subscription path, feed funding must stay at handoff or prep only.\n\n## Output expectations\nWhen using this skill, always report:\n- whether `preflight-evk-workflow.safeToRun` passed before any live-capable request\n- `status.phaseReached` when the top-level runner is used\n- `status.state` when the top-level runner is used\n- `status.recipeId` when the top-level runner is used\n- what is executable vs still skeleton-only\n- blockers and warnings\n- `fundingExecutionClassification.state` when feed funding is involved manually\n- `status.fundingExecutionState` when the top-level runner is used\n- `result.artifactPersistence.bundleDir` when artifacts were enabled\n- whether the current state is:\n  - plan-only\n  - feed-ready but awaiting activation or funding handoff\n  - funding dry-run ready\n  - browser-assisted funding ready\n  - oracle-executable\n  - EVK dry-run ready\n  - real-send ready\n  - deployed but borrow-proof pending\n  - live borrow proven\n\nIf the user asked for borrowability proof, also report whether the workflow has already reached the post-deploy proof step or is still waiting on proof inputs.\n\nIf the top-level runner is used, also surface the executable flags under `status.executable` instead of paraphrasing them away.\n\nDo not claim final deployment success unless the wrapper artifacts support it. Read `references/summary-contract.md` and require at minimum:\n- persisted `status.json` and `response.json`\n- persisted `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n- `status.state === \"real-send ready\"` only for readiness, not success\n- `deploy-evk-market.json` showing the intended deploy plan or live send result\n- `verify-evk-deployment-handoff` passing when the run is being handed off as deployment-complete\n- a separate proof status when borrowability was requested\n\n## Tone\nBe blunt about current limits.\nDo not overclaim support beyond the routes the planner can actually resolve.\nDo not blur deployment success into borrowability proof.\nIf the workflow falls off the happy path, say exactly where and why.\n\nFile v0.1.16:README.md\n\n# Agentic Lending EVK\n\nExecution-capable EVK skill bundle for Api3-backed lending workflows.\n\n## Install + first command\n\n```bash\nnpm install <this-package>\npart2-planner run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nIf you want a top-level entrypoint instead:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nThis published skill now carries its own runnable EVK execution surface instead of depending on a separate repo checkout for the planner runtime and core planning artifacts.\n\n## Bundled contents\n\n- packaged skill instructions in `SKILL.md`\n- bundled live borrow proof executor in `scripts/evk_live_borrow_proof.js`\n- local CLI entrypoint in `scripts/bin/agentic-lending-evk.js`\n- bundled EVK planner runtime in `scripts/lib/`\n- bundled planning data under `data/part2/`\n  - `evk-addresses.api3-supported-overlap.json`\n  - `feed-status.json`\n  - `market-registry.json`\n  - required contract artifacts for the current EVK path\n\n## Published CLI commands\n\nAfter installing this package, the published executables are:\n\n- `agentic-lending-evk`\n- `api3-feed-manager`\n- `part2-planner`\n\n## Quick examples\n\nTop-level EVK workflow planning:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./request.json\n```\n\nFeed discovery or readiness work:\n\n```bash\napi3-feed-manager resolve --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\napi3-feed-manager ensure-active --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\n```\n\nLower-level planner entrypoint:\n\n```bash\npart2-planner plan-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\npart2-planner prepare-evk-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\n## Cold-install expectations\n\n- Node.js `>=20`\n- start from `references/example-request.json` and replace placeholder values or planning inputs as needed\n- provide a live RPC URL for on-chain checks or transaction-oriented flows\n- provide signer material only for explicitly user-approved send paths\n- treat bundled planner snapshots as local packaged fallback inputs, not fresh chain truth\n\n## Runtime note\n\nThe bundled `feed-status.json` and `market-registry.json` are packaged snapshots for local planning fallback, not global truth.\n\nWhen live RPC or fresher operator-managed data is available, prefer that newer state over the bundled snapshot.\n\nFile v0.1.16:_meta.json\n\n{\n  \"ownerId\": \"kn79961pqqa20q5jwn60zjkxzs84yc3w\",\n  \"slug\": \"agentic-lending-evk\",\n  \"version\": \"0.1.16\",\n  \"publishedAt\": 1781188191035\n}\n\nFile v0.1.16:references/api_reference.md\n\n# Agentic Lending EVK workflow reference\n\nThis skill wraps the bundled EVK-first planner workflow, then extends it into a post-deploy borrow proof step.\n\nThe important abstraction is the path, not the prior canaries:\n1. normalize the selected collateral and borrow assets\n2. resolve the oracle route for those assets\n3. ensure or fund feeds on the deployable path\n4. prepare and deploy the EVK market\n5. prove borrowability separately when requested\n\n## Command order\n\nPrefer the workflow in this order unless the user only asked for a subset:\n\n### Safety gate before live-capable use\n1. `preflight-evk-workflow`\n   - use this before any request that might become `broadcast-ready`, `real-send`, or signer-backed feed funding\n   - it returns:\n     - `safeToRun`\n     - `liveTxRequested`\n     - `liveTxAllowed`\n     - `placeholderSafe`\n     - `preview.status`\n     - `blockers`\n     - `warnings`\n\n### Preferred top-level entrypoint\n2. `run-evk-workflow`\n   - use this when the user wants one input and one status or result object for the current EVK-first path\n   - the response shape is:\n     - `status`\n       - `phaseReached`\n       - `state`\n       - `recipeId`\n       - `deployable`\n       - `fundingExecutionState`\n       - `executable`\n       - `blockers`\n       - `warnings`\n     - `result`\n       - `planMarket`\n       - `ensureFeeds`\n       - `feedFunding`\n       - `prepareEulerOracle`\n       - `prepareEvkMarket`\n       - `prepareEvkDeployment`\n       - `deployEvkMarket`\n       - `artifactPersistence`\n   - if `artifacts.enabled === true`, the persisted run bundle also includes `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n   - if the user wants proof of borrowability after deployment, treat that as the next workflow step inside this same skill\n\n### Persisted-run helper commands\n3. `explain-next`\n   - use this with `--run-dir` to recover the model-friendly state of a persisted run\n   - read it first when resuming or handing off a stored EVK run\n4. `verify-evk-deployment-handoff`\n   - use this with `--run-dir` before claiming the persisted run is deployment-complete or ready for proof follow-up\n5. `run-evk-workflow --resume-from-run-dir <dir>`\n   - use this to reopen a known run directory instead of reconstructing state from memory\n\n### Manual staged order\n1. `plan-market`\n2. verify the route chosen for the selected assets\n   - prefer an exact direct route when available\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. `ensure-feeds`\n4. if funding is needed and `fundingExecutionClassification.state === \"executable\"`:\n   - `purchase-inputs`\n   - `prepare-contract-call` or `prepare-buy-subscription`\n   - `execute-buy-subscription`\n   - `ensure-feeds` or `ensure-active` again\n5. if funding is needed and `fundingExecutionClassification.state === \"browser-assisted\"`:\n   - `browser-plan`\n   - execute that plan with the browser tool\n   - `ensure-feeds` or `ensure-active` again\n6. `prepare-euler-oracle`\n7. `prepare-evk-market`\n8. `prepare-evk-deployment`\n9. `deploy-evk-market`\n10. if the market was deployed and the user wants proof that it can really borrow against the intended collateral path:\n   - build a proof config with chain RPC, borrow vault, target collateral vault, EVC address, token decimals, tiny borrow amount, and any stale controller or collateral cleanup\n   - verify the bundled executor exists at `scripts/evk_live_borrow_proof.js`\n   - run `node ./scripts/evk_live_borrow_proof.js --config <path>` first\n   - rerun with `--live` only if the user wants the canary\n   - for live mode, require the config's guarded live-send acknowledgement field to match the script's required phrase, and require the configured account address to match the signer address\n\n## Practical command shapes\n\n```bash\nnode ./bin/part2-planner.js preflight-evk-workflow --input-file ./request.run-evk-workflow.json\nnode ./bin/part2-planner.js run-evk-workflow --input-file ./request.run-evk-workflow.json\nnode ./bin/part2-planner.js explain-next --run-dir ./artifacts/evk/<hash>/<run>\nnode ./bin/part2-planner.js verify-evk-deployment-handoff --run-dir ./artifacts/evk/<hash>/<run>\nnode ./bin/part2-planner.js run-evk-workflow --resume-from-run-dir ./artifacts/evk/<hash>/<run> --input-file ./artifacts/evk/<hash>/<run>/request.json\nnode ./bin/part2-planner.js plan-market --input-file ./request.plan-market.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/api3-feed-manager.js purchase-inputs --input-file ./request.purchase-inputs.json\nnode ./bin/api3-feed-manager.js prepare-buy-subscription --input-file ./request.prepare-buy-subscription.json\nnode ./bin/api3-feed-manager.js execute-buy-subscription --input-file ./request.execute-buy-subscription.json\nnode ./bin/api3-feed-manager.js browser-plan --input-file ./request.browser-plan.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/part2-planner.js prepare-euler-oracle --input-file ./request.prepare-euler-oracle.json\nnode ./bin/part2-planner.js prepare-evk-market --input-file ./request.prepare-evk-market.json\nnode ./bin/part2-planner.js prepare-evk-deployment --input-file ./request.prepare-evk-deployment.json\nnode ./bin/part2-planner.js deploy-evk-market --input-file ./request.deploy-evk-market.json\nnode ./scripts/evk_live_borrow_proof.js --config ./borrow-proof-config.json\n```\n\n## Top-level runner request shape\n\nMinimal shape:\n\n```json\n{\n  \"chain\": { \"name\": \"arbitrum\", \"chainId\": 42161 },\n  \"collateralAssets\": [\n    { \"symbol\": \"WETH\", \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\" }\n  ],\n  \"borrowAssets\": [\n    { \"symbol\": \"USDC\", \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\" }\n  ],\n  \"riskPreset\": \"eth-major\"\n}\n```\n\nUseful optional fields:\n- `recipeId`\n- `rpcPreference`\n- `feedFunding`\n- `artifacts`\n- `allowCustomFallback`\n- `preferInfrequentOracle`\n- `publishToRegistry`\n- `vaultContext`\n- `executionProfile`\n- `broadcast`\n- `send`\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\nFor any run that may need review or handoff, add:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-run\"\n  }\n}\n```\n\n## Minimum required inputs for a cold start\nBefore attempting the full combined workflow, confirm you have:\n- `chain.name` and `chain.chainId`\n- at least one collateral asset and one borrow asset\n- `riskPreset` or `recipeId`\n- whether the user wants planning only, dry-run, or real send\n- whether the user wants post-deploy borrow proof\n- live RPC access if any non-simulated step is expected\n- signer or executor details for live funding, deployment, or proof\n- `vaultContext` when the market deployment path requires concrete factory or asset addresses\n\nIf post-deploy proof is required, also gather:\n- target collateral vault address for the proof\n- EVC address\n- a tiny borrow amount\n- any stale collaterals or controllers that must be disabled for an isolated proof\n- swap venue details only if the wallet must source repay or collateral assets first\n\n## Canonical end-to-end example\nUse this exact mental model for a cold-start request:\n1. before live-capable execution, run `preflight-evk-workflow` and stop unless `safeToRun === true`\n2. run `run-evk-workflow` with chain, assets, and recipe intent\n3. inspect `status.state`, `status.phaseReached`, and `status.executable`\n4. make sure the resolved route for the selected assets is acceptable\n5. if feed funding is needed:\n   - branch on `fundingExecutionClassification.state`\n   - execute direct or wrapper funding when `executable`\n   - execute `browser-plan` plus browser automation when `browser-assisted`\n   - re-run feed readiness after funding\n6. continue through oracle prep, EVK market prep, and deployment\n7. if artifacts were enabled, inspect `agent-decision.json`, `summary.json`, `rollback-plan.json`, `status.json`, `response.json`, and `deploy-evk-market.json`\n8. run `verify-evk-deployment-handoff --run-dir <dir>` before claiming the deployment is ready for proof or operator handoff\n9. if the user asked for borrow proof:\n   - build a borrow-proof config from the deployment outputs plus proof-specific inputs\n   - run preview mode first with `node scripts/evk_live_borrow_proof.js --config <path>`\n   - only rerun with `--live` if the user wants the canary sent\n10. report deployment and borrowability as separate outcomes\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\n## Generalization rule\nTreat the EVK planner path as asset-agnostic across supported pairs:\n- do not special-case only previously tested collateral/borrow combinations\n- use the same route-resolution, funding, deployment, and proof logic for whichever supported assets are selected\n- treat prior successful canaries as evidence that the path can work, not as permission to hardcode those same examples into future planning\n\n## Current executable happy path\n\n### 1. `prepare-euler-oracle`\nUse a direct `euler-chainlink-oracle` route or another oracle route that already resolves to executable oracle txs.\n\n### 2. `prepare-evk-market`\nUse a real recipe id from the bundled planner runtime in `scripts/lib/part2-recipes.js`. A current example is `eth-major-stable-borrow-v1` with `riskPreset: \"eth-major\"`.\n\n### 3. `prepare-evk-deployment`\nThis is where the first executable EVK market transaction is unlocked.\n\n### 4. `deploy-evk-market`\nUse guarded broadcast opt-in and prefer dry-run first.\n\n## Feed activation note\n\nThe first supported executable funding paths are the narrow exact `buySubscription(...)` direct path and the exact prepared wrapper-call alternative when the code can already derive it safely.\n\nThe machine-usable field is now:\n- `fundingExecutionClassification.state`\n  - `not-needed`\n  - `executable`\n  - `browser-assisted`\n  - `unsupported`\n\nBranching rule:\n- `not-needed` → continue immediately\n- `executable` → use exact onchain execution\n- `browser-assisted` → call `browser-plan` and automate the Market flow with the browser tool when reachable\n- `unsupported` → stop and report unsupported\n\nAfter any funding execution step, re-run feed readiness before proceeding to oracle deployment.\n\n## Post-deploy borrow proof step\n\nAfter `deploy-evk-market`, do not stop at \"deployment succeeded\" if the user asked for proof of actual borrowability.\n\n### Deployment output → proof config mapping\nWhen building `borrow-proof-config.json`, map values deliberately instead of guessing:\n- borrow vault address → from the deployed EVK market output, using the newly deployed borrow vault, not a prior canary vault\n- collateral vault address → from the intended proof target, not from the borrow market manifest unless they are explicitly the same\n- EVC address → from the deployed borrow vault's `EVC()` contract when available, otherwise from the deployment context for that chain\n- borrow asset address and decimals → from the deployed borrow vault asset or the workflow request borrow asset, whichever is authoritative for the live market\n- collateral asset address and decimals → from the chosen collateral vault's underlying asset\n- wrapped native token → from the target chain, not hardcoded from Arbitrum examples\n- signer env name → from local runtime setup, for example `LIVE_SIGNER_ENV`, never from committed files\n- live acknowledgement → set the config's guarded live-send acknowledgement field only when the operator intends to allow a live proof send\n- stale collaterals or controllers to disable → from the actual wallet state at proof time, not from a past example\n\nIf any of those mappings are ambiguous, stop and inspect chain state before constructing the proof config.\n\nUse the local proof executor when the next question is any variant of:\n- can this market really borrow?\n- prove the isolated collateral path works\n- show a live borrow canary\n- rotate off the old collateral or controller and re-test\n\nMinimum proof inputs:\n- deployed borrow vault address\n- intended collateral vault address\n- EVC address\n- borrow asset and collateral asset addresses plus decimals\n- wrapped native token for the chain\n- tiny borrow amount\n- stale collaterals or controllers to disable if isolation matters\n- swap venue details only if the wallet must source collateral or repay assets first\n\nTreat these as distinct outcomes:\n- deployment dry-run ready\n- real-send ready\n- deployed but borrow-proof pending\n- live borrow proven\n\n## Stop conditions\n\nStop and report instead of improvising when:\n- `fundingExecutionClassification.state === \"unsupported\"`\n- the browser-assisted funding UI is not reachable or cannot be automated safely\n- `ensure-feeds` says the feeds are not ready and no supported exact buy-subscription path is available\n- the oracle path is still skeleton-only\n- `prepare-evk-deployment` does not include concrete top-level `vaultContext`\n- `deploy-evk-market` still reports skeleton market transactions\n- the proof step cannot honestly isolate or demonstrate the collateral path the user asked for\n\n## Real-send rule\n\nOnly move beyond dry-run when the user explicitly wants live sending and the request includes:\n- `broadcast.enabled: true`\n- `broadcast.acknowledgement`: the exact required live-send acknowledgement phrase\n- matching signer or executor identity\n- `send.rpcUrl`\n- `send.privateKey`\n\nIf any of those are missing, stay in planning or dry-run mode.\n\n## Success-reporting rule\nTreat the wrapper artifact bundle as the canonical evidence surface.\n\nBefore claiming deployment success, inspect at least:\n- `result.artifactPersistence.files.status`\n- `result.artifactPersistence.files.response`\n- `result.artifactPersistence.files.summary`\n- `result.artifactPersistence.files.agentDecision`\n- `result.artifactPersistence.files.rollbackPlan`\n- `result.artifactPersistence.files.deployEvkMarket`\n\nFor persisted runs, prefer:\n- `explain-next --run-dir <dir>` for operator guidance\n- `verify-evk-deployment-handoff --run-dir <dir>` for deployment-complete claims\n- `run-evk-workflow --resume-from-run-dir <dir>` when continuing an existing run\n\nUse `references/summary-contract.md` for the exact reporting contract.\n\nFile v0.1.16:references/arbitrum-eusdc1-isolated-example.json\n\n{\n  \"chainLabel\": \"arbitrum\",\n  \"rpcUrl\": \"https://arb1.arbitrum.io/rpc\",\n  \"accountAddress\": \"0x000000000000000000000000000000000000dEaD\",\n  \"signerEnvName\": \"LIVE_SIGNER_ENV\",\n  \"operatorAck\": \"SET_REQUIRED_LIVE_SEND_ACKNOWLEDGEMENT_PHRASE\",\n  \"tokens\": {\n    \"wrappedNative\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"borrowAsset\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"collateralAsset\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    }\n  },\n  \"vaults\": {\n    \"borrowVault\": {\n      \"label\": \"eWETH-11\",\n      \"address\": \"0x9dB604761a4664002629873f5985386904C3D5Fe\"\n    },\n    \"collateralVault\": {\n      \"label\": \"eUSDC-1\",\n      \"address\": \"0x0a1eCC5Fe8C9be3C809844fcBe615B46A869b899\"\n    },\n    \"disableCollateral\": [\n      {\n        \"label\": \"eWETH-1\",\n        \"address\": \"0x78E3E051D32157AACD550fBB78458762d8f7edFF\"\n      }\n    ]\n  },\n  \"evc\": {\n    \"address\": \"0x6302ef0F34100CDDFb5489fbcB6eE1AA95CD1066\",\n    \"enableController\": false,\n    \"controllersToDisable\": []\n  },\n  \"actions\": {\n    \"repayExistingDebt\": true,\n    \"depositFullCollateralBalance\": true,\n    \"borrowAmount\": \"0.00005\"\n  },\n  \"repayTopUp\": {\n    \"enabled\": true,\n    \"mode\": \"wrap-native\",\n    \"amount\": \"0.0002\"\n  },\n  \"repaySwap\": {\n    \"enabled\": false,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0\"\n  },\n  \"collateralSwap\": {\n    \"enabled\": true,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0.0015\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0.0015\"\n  }\n}\n\nFile v0.1.16:references/current_capabilities.md\n\n# Current capabilities and limits\n\nThis skill is intentionally honest about the current implementation.\n\n## What works today\n\n### Top-level EVK runner\n- the skill has a true top-level runner: `run-evk-workflow`\n- it takes one workflow request and returns one `{ status, result }` object\n- it can infer `recipeId` when the current EVK recipe catalog yields one clear match\n- it preserves the staged planner and executor outputs under `result` instead of hiding them behind an opaque success flag\n- it now has a matching live-safety gate: `preflight-evk-workflow`\n- the wrapper can persist a reviewable artifact bundle when `artifacts.enabled === true`\n- persisted runs now carry `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n- persisted runs can now be reopened or interrogated with `run-evk-workflow --resume-from-run-dir`, `explain-next`, and `verify-evk-deployment-handoff`\n\n### Feed and Api3 side\n- agents can discover and resolve Api3 feeds\n- agents can classify feed readiness\n- agents can surface activation and funding handoff information\n- agents can prepare some contract-call data for feed activation paths\n- agents can use the first guarded exact `buySubscription(...)` execution paths in dry-run or explicitly acknowledged submit mode\n- the supported execution modes are `direct`, `wrapper`, and `auto`, but wrapper only works when the repo already derives the exact wrapper calldata safely\n- browser-assisted funding cases can now stay automatable through `browser-plan` plus browser execution when the required Market flow is reachable\n\n### Oracle side\n- `Api3PartialAggregatorV2V3Interface` deployment can be executable\n- direct `ChainlinkOracle` deployment can be executable when constructor args are concrete\n- wrapper-first `wrapper -> ChainlinkOracle` can become executable when execution-time nonce context is available\n- composite `ChainlinkOracle + CrossAdapter` can become executable\n- EVK bundle oracle transactions can dry-run cleanly when the oracle path is executable\n- literal exact feed matching is preferred before alias-normalized fallback matching, so route resolution stays generic across supported assets instead of being accidentally biased toward alias families\n\n### EVK market side\n- the first honest executable EVK market transaction is the `deploy-evk-vault` call through `GenericFactory`\n- this path depends on top-level `prepare-evk-deployment.vaultContext`\n  - `factoryAddress`\n  - `assetAddress`\n- without that `vaultContext`, the market transaction stays skeleton-only and the bundle must stay non-ready\n\n### Post-deploy proof side\n- deployment and borrowability are treated as different claims\n- this skill now includes its own post-deploy borrow proof step instead of relying on a separate published skill\n- the controller → local-executor proof path is: deploy with this skill, then prove live borrowability with the bundled `scripts/evk_live_borrow_proof.js`\n- this is the honest path for share-token collateral cases where oracle quoteability, EVC state, and tiny live borrow success all matter\n\n## What does not yet work broadly\n- Morpho workflow is not the target of this skill\n- the EVK market deployment surface is still constrained by the currently supported recipes, oracle routes, and executor wiring\n- `ChainlinkInfrequentOracle` is not yet treated as executable\n- feed funding is still only fully onchain-executable for narrow supported exact buy-subscription paths\n- browser-assisted funding cases still exist\n- unsupported funding cases still exist\n- this is not yet a polished \"any agent can choose any supported assets and always complete everything\" surface\n\n## How to speak about status\n\nWhen reporting progress, use one of these states explicitly:\n- plan-only\n- feed-ready but awaiting activation or funding handoff\n- funding dry-run ready\n- browser-assisted funding ready\n- oracle-executable\n- EVK dry-run ready\n- real-send ready\n- deployed but borrow-proof pending\n- live borrow proven\n\nWhen funding is involved, also surface the machine-usable funding branch:\n- `fundingExecutionClassification.state = not-needed | executable | browser-assisted | unsupported`\n\nWhen the top-level runner is used, also surface the machine-usable status object fields:\n- `status.phaseReached`\n- `status.state`\n- `status.recipeId`\n- `status.fundingExecutionState`\n- `status.executable`\n- `result.artifactPersistence`\n\nOperational meaning:\n- `not-needed` → feed already live, continue\n- `executable` → use guarded exact onchain execution\n- `browser-assisted` → use `browser-plan` and browser automation if the Market flow is reachable\n- `unsupported` → stop and report\n\nDo not collapse those into a single vague \"ready\".\nDo not call something borrowable unless the post-deploy proof step has actually supported that claim.\nDo not call something fully deployed from prose alone when the artifact bundle is missing or incomplete.\n\n## Preflight rule\nBefore a live-capable EVK request, run `preflight-evk-workflow` first.\n\nUse it to confirm:\n- `safeToRun === true`\n- `placeholderSafe === true`\n- the preview `status` matches the expected workflow branch\n- live-looking request fields are not still dummy values\n\nIf preflight fails, stop and fix the concrete blocker instead of pushing ahead optimistically.\n\n## Artifact rule\nFor anything beyond casual planning, enable:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-run\"\n  }\n}\n```\n\nThat persisted bundle is the reliable handoff surface for:\n- status review\n- deployment review\n- proof follow-up\n- later audit of what the wrapper actually decided\n- model-friendly next-step recovery via `agent-decision.json`\n- deployment-complete handoff checks via `verify-evk-deployment-handoff`\n\nUse these persisted-run helpers deliberately:\n- `explain-next --run-dir <dir>` → recover the current model-friendly state\n- `verify-evk-deployment-handoff --run-dir <dir>` → verify the deploy bundle is coherent enough for handoff/proof claims\n- `run-evk-workflow --resume-from-run-dir <dir>` → reopen a known run instead of reconstructing it from memory\n\n## Generalization rule\nTreat the planner path as asset-agnostic across supported pairs:\n- do not special-case only previously tested collateral/borrow combinations\n- use the same route-resolution, funding, deployment, and proof logic for whichever supported assets are selected\n- only claim executable readiness when the planner can resolve a concrete oracle path and concrete deployment payloads for those assets\n\n## Recipe rule\nUse real EVK recipes from the bundled planner runtime in `scripts/lib/part2-recipes.js`.\nDo not invent recipe ids.\n\n## Address rule\nThe example addresses in the repo docs are structurally valid but illustrative only.\nDo not present them as recommended live deployment targets.\n\nFile v0.1.16:references/example-request.json\n\n{\n  \"chain\": {\n    \"name\": \"arbitrum\",\n    \"chainId\": 42161\n  },\n  \"collateralAssets\": [\n    {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\"\n    }\n  ],\n  \"borrowAssets\": [\n    {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"\n    }\n  ],\n  \"riskPreset\": \"eth-major\",\n  \"recipeId\": \"eth-major-stable-borrow-v1\",\n  \"activationMode\": \"prepare-only\",\n  \"publishToRegistry\": false,\n  \"rpcPreference\": {\n    \"allowPublicFallback\": false\n  },\n  \"executionProfile\": {\n    \"mode\": \"simulate\"\n  },\n  \"vaultContext\": {\n    \"factoryAddress\": \"0x5555555555555555555555555555555555555555\",\n    \"assetAddress\": \"0x7777777777777777777777777777777777777777\"\n  }\n}\n\nFile v0.1.16:references/live-borrow-checklist.md\n\n# EVK live borrow checklist\n\nUse this checklist before running a tiny live borrow canary.\n\n## What this skill proves\n- the target borrow vault can issue real debt\n- the intended collateral vault share token is accepted by the borrow vault's oracle and LTV config\n- the account can rotate into the intended EVC state\n- the proof can be isolated to one collateral path when requested\n\n## What this skill does not prove by itself\n- large borrow sizing safety\n- liquidation safety under volatility\n- multi-hop swap portability across every chain\n- router compatibility for non Uniswap V3 style venues\n- production monitoring or automated unwinds\n\n## Required inputs\nGather these before building the config:\n- `rpcUrl`\n- `accountAddress`\n- `signerEnvName` for live mode\n- wrapped native token address and decimals\n- borrow asset address and decimals\n- collateral asset address and decimals\n- borrow vault address\n- collateral vault address\n- EVC address\n- tiny `borrowAmount`\n\nOptional but often needed:\n- stale collateral vaults to disable\n- stale controllers to disable\n- `repayTopUp` if the debt asset is the wrapped native token\n- `repaySwap` if the wallet needs to source the debt asset before repayment\n- `collateralSwap` if the wallet needs to source the collateral asset before deposit\n\n## Acceptance criteria before live send\nDo not claim success unless all relevant items are true:\n- the borrow vault has cash\n- the borrow vault has an LTV link for the target collateral vault\n- the borrow vault oracle can price the collateral vault share token into the unit of account\n- the wallet has enough gas\n- the post-rotation EVC state matches the proof you want to claim\n\n## Config design notes\nBuild the proof config from the actual deployment outputs and live wallet state, not from memory.\n\nThe local executor reads a JSON config with these top-level sections:\n- `rpcUrl`, `chainLabel`, `accountAddress`, `signerEnvName`, `operatorAck`\n- `tokens`\n  - `wrappedNative`\n  - `borrowAsset`\n  - `collateralAsset`\n- `vaults`\n  - `borrowVault`\n  - `collateralVault`\n  - `disableCollateral` array\n- `evc`\n  - `address`\n  - `enableController`\n  - `controllersToDisable` array\n- `actions`\n  - `repayExistingDebt`\n  - `depositFullCollateralBalance`\n  - `borrowAmount`\n- `repayTopUp`, `repaySwap`, `collateralSwap`\n\n## Deployment output → proof config reminders\n- take the borrow vault address from the fresh deployment result, not an older canary market\n- take the collateral vault address from the collateral path you actually want to prove\n- derive the EVC address from the live borrow vault or chain deployment context\n- derive token decimals from live token contracts when possible\n- keep stale controller and collateral cleanup lists tied to the proof wallet's current state\n\n## Adapting to other assets and chains\n- Change token decimals, not just symbols.\n- Change the wrapped native token per chain.\n- Change the router and fee tier per venue.\n- If there is no compatible single-hop router, source assets another way and disable the swap step.\n- If the proof asset is not the wrapped native token, prefer `repaySwap` or pre-fund the wallet.\n- If the controller is already correct, leave `enableController` false.\n- If the proof must be isolated, list every stale collateral vault that must be disabled first.\n- Treat the proof path as generic across supported assets: build the config from the fresh deployment outputs and current wallet state, not from whichever asset pair happened to be used in an earlier canary.\n\n## Canonical isolated proof sequence\nUse this as the generic isolated proof sequence:\n1. repay old debt\n2. source fresh collateral asset\n3. deposit that asset into the target collateral vault\n4. disable stale collateral vaults in EVC\n5. leave only the target collateral path enabled\n6. borrow a tiny fresh amount from the target borrow vault\n7. report debt, enabled collaterals, and collateral-vault balance\n\n## When to stop instead of forcing it\nStop and report the blocker if:\n- the oracle cannot quote the collateral share token\n- EVC controller rotation reverts and you cannot safely clear the old controller\n- the wallet cannot source the repay or collateral asset\n- the vault cash is too low\n- the swap venue is not actually compatible with the configured router ABI\n- preview reveals that the flow would prove something weaker than the user asked for\n\n## Controller → executor handoff\nThe public skill plans the proof and generates the config.\nThe bundled skill executor executes it.\n\nCanonical local executor path:\n- `scripts/evk_live_borrow_proof.js`\n\nPreflight checks:\n1. confirm the installed skill bundle exists\n2. confirm `scripts/evk_live_borrow_proof.js` exists\n3. confirm the config file path is explicit\n4. confirm the signer env name is supplied only through local runtime setup\n5. run preview before considering `--live`\n\n## Suggested command pattern\nPreview:\n`node ./scripts/evk_live_borrow_proof.js --config <path>`\n\nLive:\n`node ./scripts/evk_live_borrow_proof.js --config <path> --live`\n\nFor live mode, also require:\n- `config.operatorAck` matches the script's required live-send acknowledgement phrase\n- `config.accountAddress` matches the signer address derived from `signerEnvName`\n\nKeep the runtime config outside git if it contains a real wallet address or secrets.\n\nFile v0.1.16:references/live-request-template.json\n\n{\n  \"chain\": {\n    \"name\": \"arbitrum\",\n    \"chainId\": 42161\n  },\n  \"collateralAssets\": [\n    {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\"\n    }\n  ],\n  \"borrowAssets\": [\n    {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"\n    }\n  ],\n  \"riskPreset\": \"eth-major\",\n  \"recipeId\": \"eth-major-stable-borrow-v1\",\n  \"activationMode\": \"allow-activation\",\n  \"rpcPreference\": {\n    \"rpcUrl\": \"https://replace-with-live-rpc.example.com\"\n  },\n  \"feedFunding\": {\n    \"mode\": \"dry-run\",\n    \"executionMode\": \"auto\"\n  },\n  \"executionProfile\": {\n    \"mode\": \"simulate\",\n    \"executorAddress\": \"0x1111111111111111111111111111111111111111\"\n  },\n  \"vaultContext\": {\n    \"factoryAddress\": \"0x2222222222222222222222222222222222222222\",\n    \"assetAddress\": \"0x3333333333333333333333333333333333333333\"\n  },\n  \"broadcast\": {\n    \"enabled\": false,\n    \"acknowledgement\": \"I_UNDERSTAND_THIS_WILL_SEND_TRANSACTIONS\",\n    \"signerAddress\": \"0x4444444444444444444444444444444444444444\"\n  },\n  \"send\": {\n    \"enabled\": false,\n    \"dryRun\": true,\n    \"rpcUrl\": \"https://replace-with-send-rpc.example.com\",\n    \"signerEnvName\": \"LIVE_SIGNER_ENV\"\n  },\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-live-run\"\n  }\n}\n\nFile v0.1.16:references/summary-contract.md\n\n# EVK wrapper summary contract\n\nUse this contract to interpret `run-evk-workflow` output and any persisted artifact bundle. Prefer exact fields over narrative text.\n\n## Recommended files in a persisted run bundle\nWhen `artifacts.enabled === true`, expect at least:\n\n- `request.json`\n- `status.json`\n- `response.json`\n- `summary.json`\n- `agent-decision.json`\n- `rollback-plan.json`\n\nDepending on how far the workflow progressed, expect some or all of:\n\n- `plan-market.json`\n- `ensure-feeds.json`\n- `feed-funding.json`\n- `prepare-euler-oracle.json`\n- `prepare-evk-market.json`\n- `prepare-evk-deployment.json`\n- `deploy-evk-market.json`\n\n## Primary status fields\nRead `agent-decision.json` first when it exists, then `summary.json`, then `status.json`.\n\n### Agent decision fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `safeStatus` | model-friendly state enum/string | use as the top-line recovered state |\n| `canContinue` | whether the run can continue without first resolving blockers | false means stop or ask/user action is required |\n| `nextCommand` | preferred next command when one exists | use after checking approvals and `mustNotDo` |\n| `mustNotDo[]` | hard safety reminders | do not violate these |\n| `successClaimAllowed` | final-success gate | must be `true` before claiming deployment-complete success |\n\n### Summary fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `phase` | deepest workflow phase reached | supporting stage summary |\n| `status` | model-friendly wrapper status | useful shorthand, not a replacement for evidence |\n| `rollbackPlan` | local-only vs forward-only onchain state | inspect before rerunning or handing off |\n| `nextSteps[]` | generated next actions | use for guidance and resume decisions |\n| `successClaimAllowed` | deployment-success gate from the persisted bundle | false means do not overclaim |\n\n### Status fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `phaseReached` | deepest workflow stage reached | use as the stage headline |\n| `state` | model-friendly state enum/string | use as the primary short status |\n| `recipeId` | selected EVK recipe | report exactly, do not infer another |\n| `fundingExecutionState` | funding branch summary | distinguish not-needed, executable, browser-assisted, unsupported |\n| `executable` | machine flags for feed, oracle, EVK, real send | use for readiness, not success |\n| `blockers[]` | hard blockers | non-empty means stop or report blocked |\n| `warnings[]` | cautionary notes | surface relevant live-send warnings |\n\n## Artifact persistence fields\nIf the wrapper result exposes `result.artifactPersistence`, read:\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `enabled` | whether persistence was requested | false means no durable run bundle exists |\n| `persisted` | whether files were actually written | must be true for a durable evidence claim |\n| `bundleDir` | run bundle path | report it when follow-up work depends on it |\n| `files.*` | per-stage artifact files | inspect the stage file you are making claims about |\n\n## Funding gates\nUse these fields when funding is involved:\n\n| Field | Success gate |\n| --- | --- |\n| `status.fundingExecutionState` | tells you whether funding was not-needed, executable, browser-assisted, or unsupported |\n| `result.feedFunding.entries[]` | inspect per-feed blockers, browser plans, or execution outputs |\n| `result.ensureFeeds.final.ready` | must be `true` before moving into oracle + EVK deployment claims |\n\nImportant: a funding path being executable is not the same as feeds being live. Require the final feed-readiness result.\n\n## Deployment gates\nUse these fields when deployment is in scope:\n\n| Field | Success gate |\n| --- | --- |\n| `result.prepareEvkDeployment.ready` | deployment bundle is coherent enough to continue |\n| `status.executable.evkMarket` | EVK market transaction is concrete enough for execution |\n| `status.executable.realSend` | wrapper is ready for live send, not proof that live send already happened |\n| `result.deployEvkMarket.executionSummary` | inspect dry-run vs broadcast-ready vs live-send outcome |\n| `result.deployEvkMarket.stepResults[]` | inspect the exact planned or executed steps |\n\nA deployment is not automatically successful just because `status.executable.realSend === true`. That is only readiness.\n\n## Borrow-proof gates\nIf the user asked for proof of borrowability, require a separate proof result.\n\nDeployment success and borrowability proof are different claims:\n- `deployed but borrow-proof pending`\n- `live borrow proven`\n\nDo not collapse them.\n\n## Final reporting rules\nReport one of these states exactly:\n\n- `plan-only`\n- `feed-ready but awaiting activation/funding handoff`\n- `funding dry-run ready`\n- `browser-assisted funding ready`\n- `oracle-executable`\n- `EVK dry-run ready`\n- `real-send ready`\n- `deployed but borrow-proof pending`\n- `live borrow proven`\n- `blocked`\n\n## Persisted-run helper commands\nUse these helpers against a stored run directory:\n\n- `explain-next --run-dir <dir>` → recover the model-friendly current state, next command, and guardrails\n- `verify-evk-deployment-handoff --run-dir <dir>` → verify the deploy bundle is coherent enough for handoff or proof follow-up\n- `run-evk-workflow --resume-from-run-dir <dir>` → reopen a known run instead of reconstructing it from memory\n\n## Minimum deployment-success predicate\nOnly report deployment success when all are true:\n\n```json\n{\n  \"artifactBundlePersisted\": true,\n  \"statusBlockersEmpty\": true,\n  \"finalFeedsReady\": true,\n  \"deployStagePresent\": true,\n  \"deployEvidenceInspected\": true,\n  \"agentDecisionSuccessClaimAllowed\": true,\n  \"handoffVerificationPassedWhenHandingOff\": true,\n  \"rollbackPlanInspected\": true\n}\n```\n\nIf borrowability was requested, add a separate proof predicate instead of silently assuming it from deployment artifacts.\n\nFile v0.1.16:CHANGELOG.md\n\n# Changelog\n\n## 0.1.16 - 2026-06-11\n\n- remove the packaged raw `send.privateKey` placeholder from the live request template and switch it to `signerEnvName` so the published skill no longer contains a private-key-shaped value\n- re-audit the published ClawHub skill artifacts for `agentic-lending-evk`, `agentic-lending-morpho`, `agentic-lending-evk-readonly`, `agentic-lending-morpho-readonly`, `api3-feed-manager`, and `api3-feed-manager-readonly`\n\n## 0.1.15 - 2026-05-22\n\n- document the EVK golden path around `preflight-evk-workflow`, persisted artifacts, handoff verification, and live request templates\n- publish the bundled live request template and summary contract references for clearer operator handoff\n- update the packaged planner/runtime bundle for share-aware router EVK deployment, live borrow proof preparation, and proper controller cleanup via EVault `disableController()`\n\n## 0.1.14 - 2026-05-19\n\n- sync the published EVK bundle to the newest packaged Api3 feed-funding runtime, including scripted communal proxy deployment support\n- make the bundled feed manager default real executable funding sends toward also deploying any missing communal proxy unless explicitly disabled\n\n## 0.1.13 - 2026-05-08\n\n- move deployment bytecode out of inline JSON artifact literals into wrapped sidecar files and rehydrate it at runtime to avoid false-positive secret-literal moderation hits\n\n## 0.1.12 - 2026-05-07\n\n- replace secret-looking private key placeholders in packaged CLI help text with `<private-key-hex>` to reduce false-positive scanner hits\n\n## 0.1.11 - 2026-05-07\n\n- finished the self-contained EVK executor bundle so cold installs no longer depend on repo-local runtime or planner data\n- aligned packaged CLI help text with the published binary names and added a packaged example request path that works from a clean install\n- fixed installed runtime path resolution for user-supplied input files and bundled `data/part2/...` lookups discovered during smoke testing\n\n## 0.1.10 - 2026-05-07\n\n- started converting `agentic-lending-evk` into a self-contained executor bundle\n- added a local `package.json` with executable packaging metadata\n- bundled the EVK live borrow proof executor into the published skill folder\n- added a local CLI entrypoint as the first step toward a fully bundled planner runtime\n\nFile v0.1.16:skill-card.md\n\n## Description:\n\nAgentic Lending EVK plans and runs guarded EVK-first Api3-backed lending workflows, including oracle route resolution, feed readiness or funding, EVK market deployment preparation, and optional live borrow proof when explicitly allowed.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[daav3](https://clawhub.ai/user/daav3)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and DeFi operators use this skill to prepare, dry-run, and, with explicit approval, execute Api3-backed EVK lending market workflows and post-deploy borrow canaries.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Live mode can send on-chain funding, deployment, approval, swap, and borrow-canary transactions.\n\nMitigation: Run preflight and preview first, and use live signer-backed execution only after explicit user approval.\n\nRisk: Signer material or wallet details can be exposed if placed in request files or persisted artifacts.\n\nMitigation: Use signerEnvName with LIVE_SIGNER_ENV, keep secrets in local environment variables or runtime config, and disable artifact persistence when secrets are present.\n\nRisk: Unlimited approvals and zero-slippage swaps can expose wallet funds.\n\nMitigation: Use exact approval scope unless unlimited approval is explicitly accepted, require nonzero amountOutMinimum, verify the router, and revoke allowances after tests.\n\nRisk: Bundled feed-status and market-registry snapshots can be stale.\n\nMitigation: Prefer live RPC results or fresh operator-managed registry and feed-status inputs when available.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/daav3/skills/agentic-lending-evk)\n- [Project homepage](https://github.com/daav3/agentic-lending-project)\n- [Agentic Lending EVK workflow reference](references/api_reference.md)\n- [Current capabilities and limits](references/current_capabilities.md)\n- [EVK wrapper summary contract](references/summary-contract.md)\n- [EVK live borrow checklist](references/live-borrow-checklist.md)\n- [Example request](references/example-request.json)\n- [Live request template](references/live-request-template.json)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON configuration examples and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct agents to run Node.js CLIs and produce persisted JSON artifacts when artifact persistence is enabled.]\n\n## Skill Version(s):\n\n0.1.16 (source: evidence.release.version, package.json, CHANGELOG released 2026-06-11)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.1.15: 36 files, 116670 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (1887b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.bytecode.txt (2884b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (5707b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.bytecode.txt (6011b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (4247b), data/part2/contract-artifacts/ChainlinkOracle.bytecode.txt (6914b), data/part2/contract-artifacts/ChainlinkOracle.json (4209b), data/part2/contract-artifacts/CrossAdapter.bytecode.txt (4620b), data/part2/contract-artifacts/CrossAdapter.json (3967b), data/part2/contract-artifacts/EulerRouter.bytecode.txt (7835b), data/part2/contract-artifacts/EulerRouter.json (8428b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (14327b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (6792b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), references/live-request-template.json (1320b), references/summary-contract.md (5899b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (130934b), scripts/lib/part2-chain-bootstrap.js (4049b), scripts/lib/part2-planner.js (209667b), scripts/lib/part2-recipes.js (1330b), skill-card.md (3154b), SKILL.md (14808b), _meta.json (139b)\n\nFile v0.1.15:SKILL.md\n\n---\nname: agentic-lending-evk\ndescription: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selected collateral and borrow assets, discover or fund the required Api3 feeds, including browser-assisted Api3 Market funding when needed, prepare the Euler oracle path, assemble and deploy the EVK lending market, and then prove real borrowability with a post-deploy canary borrow against the intended collateral path. This variant can reach real onchain writes, including feed funding, market deployment, approvals, swaps, and borrow canaries when explicitly allowed. Default to plan, simulation, or preview mode first, and only use live signer-backed execution when the user explicitly asks for it. Do not use for Morpho, unsupported recipes, or unsupported oracle/deployment routes.\nmetadata:\n  clawdis:\n    homepage: https://github.com/daav3/agentic-lending-project\n    author: daav3\n    requires:\n      bins:\n        - node\n      env:\n        - LIVE_SIGNER_ENV\n      config:\n        - request.run-evk-workflow.json\n        - borrow-proof-config.json\n    primaryEnv: LIVE_SIGNER_ENV\n---\n\n# Agentic Lending EVK\n\nThis is the execution-capable EVK workflow skill.\n\nIt turns the bundled EVK planner primitives into one agent-facing workflow, from route resolution and feed readiness through deployment and live borrow proof.\n\nWhen the supported path is available and the user explicitly asks for it, this variant can send real transactions and should be treated as a guarded execution skill rather than a planning-only helper.\n\n## Golden path for normal use\nUse one request file and one wrapper command. Do not drop into lower-level commands unless debugging, intervention, or proof-specific follow-up is required.\n\n1. Create `request.json` with exact `collateralAssets`, exact `borrowAssets`, chain, risk intent, feed-funding intent, and EVK deployment intent.\n   - For a live-shaped starting point, copy `references/live-request-template.json` and replace every placeholder before use.\n2. Preflight before any live-capable EVK execution:\n\n   `agentic-lending-evk preflight-evk-workflow --input-file ./request.json --format json`\n\n   Stop unless `safeToRun === true`.\n3. Run:\n\n   `agentic-lending-evk run-evk-workflow --input-file ./request.json --format json`\n\n4. If the run was persisted, inspect or recover it with:\n   - `agentic-lending-evk explain-next --run-dir <run-dir> --format json`\n   - `agentic-lending-evk verify-evk-deployment-handoff --run-dir <run-dir> --format json`\n   - `agentic-lending-evk run-evk-workflow --resume-from-run-dir <run-dir> --input-file <run-dir>/request.json --format json`\n5. If the user asked for borrowability proof, continue with the bundled proof executor only after the deployment bundle is reviewed.\n6. Report full deployment success only from persisted artifacts and exact status fields, not from narrative text.\n\n## Safety expectations\n- default to planning, simulation, or preview mode first\n- treat browser-assisted funding as optional and only automate it when the user wants the flow completed end to end\n- only use live signer-backed funding, deployment, or borrow canaries when the user explicitly asks for live execution\n- for the bundled borrow-proof script, require both `--live` and the config's guarded live-send acknowledgement field to match the script's required phrase\n- require the configured proof account address to match the signer address before any live proof transaction is sent\n- require explicit nonzero swap protection for every live swap\n- require explicit opt-in before using unlimited approvals\n- keep private key material in environment variables or local runtime config, never in committed files\n\n## Use this when\n- the user wants to stand up or dry-run an EVK lending market backed by Api3 feeds\n- the user wants one workflow instead of manually stitching planner JSON steps\n- the task includes any combination of asset selection, oracle route resolution, feed readiness, feed funding, oracle preparation, EVK deployment prep, guarded dry-run or send, or post-deploy borrow proof\n\n## Do not use this when\n- the user wants Morpho, not EVK\n- the requested recipe or oracle path is not supported by the current repo\n- the task requires pretending a skeleton-only path is executable\n- the task assumes fully autonomous feed funding in every case\n\n## Read next\n1. `references/api_reference.md`\n2. `references/current_capabilities.md`\n3. `references/summary-contract.md` before claiming deployment success from wrapper output\n4. `references/live-borrow-checklist.md` when the workflow reaches post-deploy proof\n5. `references/arbitrum-eusdc1-isolated-example.json` when a concrete proof config shape helps\n6. Use the bundled executor at `scripts/evk_live_borrow_proof.js`\n7. Treat bundled `data/part2/feed-status.json` and `data/part2/market-registry.json` as packaged local snapshots, not authoritative shared state\n\n## Minimum required inputs for the combined flow\nGather these before you assume the full combined workflow is feasible:\n- chain name and chain id\n- collateral asset set and borrow asset set\n- target recipe id or risk preset\n- whether the user wants planning only, dry-run, or real send\n- whether the user also wants post-deploy borrow proof\n- live RPC availability for the chain\n- signer expectations for any live funding, deployment, or proof step\n- `vaultContext` when the deployment path needs concrete factory or asset wiring\n\nFor a full live end-to-end run, also confirm:\n- feed funding branch expectations, especially whether `fundingExecutionClassification.state` may be `browser-assisted`\n- browser access if the Api3 Market flow must be automated\n- a safe tiny borrow amount for the proof step\n- a target collateral vault for the proof, not just the borrow vault\n\nIf any of those are missing, stop and ask instead of improvising.\n\n## Default workflow\n1. Normalize the request into:\n   - chain\n   - collateral assets\n   - borrow assets\n   - target recipe or risk preset\n   - whether the user wants planning only, dry-run, or real send\n   - whether the user also wants proof of actual borrowability\n2. Resolve the oracle path for the selected assets before treating deployment as executable.\n   - prefer an exact direct route when the requested pair exists and is deployable\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. Prefer `preflight-evk-workflow`, then `run-evk-workflow`, as the default end-to-end entrypoints when the user wants the full EVK path.\n   - `preflight-evk-workflow` is the live-safety gate for placeholder detection, preview status, and blocker surfacing\n   - pass `recipeId` explicitly when known, otherwise let the runner infer from the current EVK recipe catalog\n   - treat `status` as the canonical summary object\n   - treat `result` as the detailed staged artifact bundle\n   - enable `artifacts.enabled` whenever the run may need review, handoff, or a durable success claim\n   - after a persisted run, prefer `agent-decision.json`, `summary.json`, and `rollback-plan.json` over ad-hoc interpretation\n   - use `explain-next` for operator guidance, `verify-evk-deployment-handoff` for deployment-complete handoff checks, and `--resume-from-run-dir` when continuing a known run\n4. If deployment succeeds and the user wants proof of actual borrowability, continue within this skill to the built-in post-deploy proof step.\n   - treat deployment success and borrowability proof as separate milestones\n   - use the deployment outputs plus live vault addresses, collateral-vault targets, EVC state, and tiny borrow sizing to build the proof config\n   - require preview mode first, then live canary only if the user wants a real proof\n5. Fall back to the manual staged commands only when the user asked for a subset, wants intervention at a specific phase, or the runner stops before the desired outcome.\n   - `plan-market`\n   - `ensure-feeds`\n   - if feeds are live, continue to the oracle and EVK planner path\n   - if funding is needed, inspect `purchase-inputs` or `prepare-buy-subscription` output and branch on `fundingExecutionClassification.state`\n   - if `fundingExecutionClassification.state === \"executable\"`:\n     - `purchase-inputs`\n     - `prepare-contract-call` or `prepare-buy-subscription`\n     - `execute-buy-subscription`\n     - `ensure-feeds` or `ensure-active` again to confirm the feed is now live\n   - if `fundingExecutionClassification.state === \"browser-assisted\"`:\n     - call `browser-plan`\n     - use the browser tool to execute the returned plan if the required UI is reachable and the user wants full automation\n     - re-run `ensure-feeds` or `ensure-active` after the browser flow\n   - if `fundingExecutionClassification.state === \"unsupported\"`, stop and report unsupported status clearly\n   - `prepare-euler-oracle`\n   - `prepare-evk-market`\n   - `prepare-evk-deployment`\n   - `deploy-evk-market`\n   - the bundled `scripts/evk_live_borrow_proof.js` executor for the post-deploy proof step when requested\n6. Stop and report honestly if:\n   - feed funding is `unsupported`\n   - the browser-assisted funding UI is not reachable or cannot be automated safely\n   - the oracle path is still skeleton-only\n   - the EVK market path is still skeleton-only\n7. Prefer dry-run first for exact onchain funding and deployment paths.\n8. For `browser-assisted` funding, prefer browser automation over asking the user to click through manually when the UI is reachable.\n9. Only use real send when the user explicitly wants it and the guarded acknowledgement contract is present.\n10. Keep the path generic across supported pairs.\n   - do not special-case only previously tested collateral/borrow combinations\n   - use the same resolution, funding, deployment, and proof rules for whichever supported assets are selected\n11. Do not claim a market is borrowable just because deployment succeeded. A live or at least previewed post-deploy proof step is required for that claim.\n\n## Built-in post-deploy borrow proof\nTreat the published skill as a complete artifact: it includes the proof executor it tells the agent to run.\n\nBundled executor path:\n- `scripts/evk_live_borrow_proof.js`\n\nBundled planner data path:\n- `data/part2/`\n\nUse the bundled planner data as the local default input set for this published skill. If the operator supplies fresher live RPC results or explicit `--registry-file` / `--feed-status-file` overrides, prefer those fresher inputs instead of pretending the packaged snapshots are always current.\n\nBefore a live-capable run, enable artifact persistence so the deployment and proof handoff do not depend on memory alone:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-live-run\"\n  }\n}\n```\n\nHandoff contract:\n1. generate `borrow-proof-config.json`\n2. verify the bundled executor path exists in the installed skill\n3. run preview first with `node ./scripts/evk_live_borrow_proof.js --config <path>`\n4. rerun with `--live` only when the user explicitly wants the canary\n\nThe bundled executor supports:\n- preview mode with a read-only account address\n- live mode with a signer loaded from an environment variable\n- optional debt repayment before the new proof\n- optional single-hop Uniswap V3 style swaps to source repay or collateral assets\n- collateral deposit into the target EVK vault\n- disabling stale collateral vaults in EVC\n- disabling stale controllers in EVC\n- enabling the target collateral and optionally the target controller\n- final tiny borrow and before or after logging\n\nKeep the proof honest:\n- distinguish mixed-collateral borrow from isolated target-collateral borrow\n- preserve the exact funding branch that led here\n- verify quoteability, LTV wiring, EVC state, and vault cash before a live canary\n- if the chain does not use a Uniswap V3 compatible router, replace or bypass the bundled swap step explicitly\n- require nonzero `amountOutMinimum` for live swaps\n- keep approval scope exact unless the operator explicitly opts into `approvalPolicy.mode = \"unlimited\"`\n\n## Current happy-path rule\nThe currently supported end-to-end EVK path requires:\n- feeds that are already live, or a feed that can be activated through the current narrow exact `buySubscription(...)` path\n- a cleanly resolved oracle path for the selected assets\n- top-level `prepare-evk-deployment.vaultContext`\n  - `factoryAddress`\n  - `assetAddress`\n- guarded send fields on the funding and deployment executor requests\n\nWithout that `vaultContext`, the first EVK market transaction remains skeleton-only and `readyToBroadcast` must stay false.\nWithout a supported exact buy-subscription path, feed funding must stay at handoff or prep only.\n\n## Output expectations\nWhen using this skill, always report:\n- whether `preflight-evk-workflow.safeToRun` passed before any live-capable request\n- `status.phaseReached` when the top-level runner is used\n- `status.state` when the top-level runner is used\n- `status.recipeId` when the top-level runner is used\n- what is executable vs still skeleton-only\n- blockers and warnings\n- `fundingExecutionClassification.state` when feed funding is involved manually\n- `status.fundingExecutionState` when the top-level runner is used\n- `result.artifactPersistence.bundleDir` when artifacts were enabled\n- whether the current state is:\n  - plan-only\n  - feed-ready but awaiting activation or funding handoff\n  - funding dry-run ready\n  - browser-assisted funding ready\n  - oracle-executable\n  - EVK dry-run ready\n  - real-send ready\n  - deployed but borrow-proof pending\n  - live borrow proven\n\nIf the user asked for borrowability proof, also report whether the workflow has already reached the post-deploy proof step or is still waiting on proof inputs.\n\nIf the top-level runner is used, also surface the executable flags under `status.executable` instead of paraphrasing them away.\n\nDo not claim final deployment success unless the wrapper artifacts support it. Read `references/summary-contract.md` and require at minimum:\n- persisted `status.json` and `response.json`\n- persisted `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n- `status.state === \"real-send ready\"` only for readiness, not success\n- `deploy-evk-market.json` showing the intended deploy plan or live send result\n- `verify-evk-deployment-handoff` passing when the run is being handed off as deployment-complete\n- a separate proof status when borrowability was requested\n\n## Tone\nBe blunt about current limits.\nDo not overclaim support beyond the routes the planner can actually resolve.\nDo not blur deployment success into borrowability proof.\nIf the workflow falls off the happy path, say exactly where and why.\n\nFile v0.1.15:README.md\n\n# Agentic Lending EVK\n\nExecution-capable EVK skill bundle for Api3-backed lending workflows.\n\n## Install + first command\n\n```bash\nnpm install <this-package>\npart2-planner run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nIf you want a top-level entrypoint instead:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nThis published skill now carries its own runnable EVK execution surface instead of depending on a separate repo checkout for the planner runtime and core planning artifacts.\n\n## Bundled contents\n\n- packaged skill instructions in `SKILL.md`\n- bundled live borrow proof executor in `scripts/evk_live_borrow_proof.js`\n- local CLI entrypoint in `scripts/bin/agentic-lending-evk.js`\n- bundled EVK planner runtime in `scripts/lib/`\n- bundled planning data under `data/part2/`\n  - `evk-addresses.api3-supported-overlap.json`\n  - `feed-status.json`\n  - `market-registry.json`\n  - required contract artifacts for the current EVK path\n\n## Published CLI commands\n\nAfter installing this package, the published executables are:\n\n- `agentic-lending-evk`\n- `api3-feed-manager`\n- `part2-planner`\n\n## Quick examples\n\nTop-level EVK workflow planning:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./request.json\n```\n\nFeed discovery or readiness work:\n\n```bash\napi3-feed-manager resolve --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\napi3-feed-manager ensure-active --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\n```\n\nLower-level planner entrypoint:\n\n```bash\npart2-planner plan-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\npart2-planner prepare-evk-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\n## Cold-install expectations\n\n- Node.js `>=20`\n- start from `references/example-request.json` and replace placeholder values or planning inputs as needed\n- provide a live RPC URL for on-chain checks or transaction-oriented flows\n- provide signer material only for explicitly user-approved send paths\n- treat bundled planner snapshots as local packaged fallback inputs, not fresh chain truth\n\n## Runtime note\n\nThe bundled `feed-status.json` and `market-registry.json` are packaged snapshots for local planning fallback, not global truth.\n\nWhen live RPC or fresher operator-managed data is available, prefer that newer state over the bundled snapshot.\n\nFile v0.1.15:_meta.json\n\n{\n  \"ownerId\": \"kn79961pqqa20q5jwn60zjkxzs84yc3w\",\n  \"slug\": \"agentic-lending-evk\",\n  \"version\": \"0.1.15\",\n  \"publishedAt\": 1779481835851\n}\n\nFile v0.1.15:references/api_reference.md\n\n# Agentic Lending EVK workflow reference\n\nThis skill wraps the bundled EVK-first planner workflow, then extends it into a post-deploy borrow proof step.\n\nThe important abstraction is the path, not the prior canaries:\n1. normalize the selected collateral and borrow assets\n2. resolve the oracle route for those assets\n3. ensure or fund feeds on the deployable path\n4. prepare and deploy the EVK market\n5. prove borrowability separately when requested\n\n## Command order\n\nPrefer the workflow in this order unless the user only asked for a subset:\n\n### Safety gate before live-capable use\n1. `preflight-evk-workflow`\n   - use this before any request that might become `broadcast-ready`, `real-send`, or signer-backed feed funding\n   - it returns:\n     - `safeToRun`\n     - `liveTxRequested`\n     - `liveTxAllowed`\n     - `placeholderSafe`\n     - `preview.status`\n     - `blockers`\n     - `warnings`\n\n### Preferred top-level entrypoint\n2. `run-evk-workflow`\n   - use this when the user wants one input and one status or result object for the current EVK-first path\n   - the response shape is:\n     - `status`\n       - `phaseReached`\n       - `state`\n       - `recipeId`\n       - `deployable`\n       - `fundingExecutionState`\n       - `executable`\n       - `blockers`\n       - `warnings`\n     - `result`\n       - `planMarket`\n       - `ensureFeeds`\n       - `feedFunding`\n       - `prepareEulerOracle`\n       - `prepareEvkMarket`\n       - `prepareEvkDeployment`\n       - `deployEvkMarket`\n       - `artifactPersistence`\n   - if `artifacts.enabled === true`, the persisted run bundle also includes `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n   - if the user wants proof of borrowability after deployment, treat that as the next workflow step inside this same skill\n\n### Persisted-run helper commands\n3. `explain-next`\n   - use this with `--run-dir` to recover the model-friendly state of a persisted run\n   - read it first when resuming or handing off a stored EVK run\n4. `verify-evk-deployment-handoff`\n   - use this with `--run-dir` before claiming the persisted run is deployment-complete or ready for proof follow-up\n5. `run-evk-workflow --resume-from-run-dir <dir>`\n   - use this to reopen a known run directory instead of reconstructing state from memory\n\n### Manual staged order\n1. `plan-market`\n2. verify the route chosen for the selected assets\n   - prefer an exact direct route when available\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. `ensure-feeds`\n4. if funding is needed and `fundingExecutionClassification.state === \"executable\"`:\n   - `purchase-inputs`\n   - `prepare-contract-call` or `prepare-buy-subscription`\n   - `execute-buy-subscription`\n   - `ensure-feeds` or `ensure-active` again\n5. if funding is needed and `fundingExecutionClassification.state === \"browser-assisted\"`:\n   - `browser-plan`\n   - execute that plan with the browser tool\n   - `ensure-feeds` or `ensure-active` again\n6. `prepare-euler-oracle`\n7. `prepare-evk-market`\n8. `prepare-evk-deployment`\n9. `deploy-evk-market`\n10. if the market was deployed and the user wants proof that it can really borrow against the intended collateral path:\n   - build a proof config with chain RPC, borrow vault, target collateral vault, EVC address, token decimals, tiny borrow amount, and any stale controller or collateral cleanup\n   - verify the bundled executor exists at `scripts/evk_live_borrow_proof.js`\n   - run `node ./scripts/evk_live_borrow_proof.js --config <path>` first\n   - rerun with `--live` only if the user wants the canary\n   - for live mode, require the config's guarded live-send acknowledgement field to match the script's required phrase, and require the configured account address to match the signer address\n\n## Practical command shapes\n\n```bash\nnode ./bin/part2-planner.js preflight-evk-workflow --input-file ./request.run-evk-workflow.json\nnode ./bin/part2-planner.js run-evk-workflow --input-file ./request.run-evk-workflow.json\nnode ./bin/part2-planner.js explain-next --run-dir ./artifacts/evk/<hash>/<run>\nnode ./bin/part2-planner.js verify-evk-deployment-handoff --run-dir ./artifacts/evk/<hash>/<run>\nnode ./bin/part2-planner.js run-evk-workflow --resume-from-run-dir ./artifacts/evk/<hash>/<run> --input-file ./artifacts/evk/<hash>/<run>/request.json\nnode ./bin/part2-planner.js plan-market --input-file ./request.plan-market.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/api3-feed-manager.js purchase-inputs --input-file ./request.purchase-inputs.json\nnode ./bin/api3-feed-manager.js prepare-buy-subscription --input-file ./request.prepare-buy-subscription.json\nnode ./bin/api3-feed-manager.js execute-buy-subscription --input-file ./request.execute-buy-subscription.json\nnode ./bin/api3-feed-manager.js browser-plan --input-file ./request.browser-plan.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/part2-planner.js prepare-euler-oracle --input-file ./request.prepare-euler-oracle.json\nnode ./bin/part2-planner.js prepare-evk-market --input-file ./request.prepare-evk-market.json\nnode ./bin/part2-planner.js prepare-evk-deployment --input-file ./request.prepare-evk-deployment.json\nnode ./bin/part2-planner.js deploy-evk-market --input-file ./request.deploy-evk-market.json\nnode ./scripts/evk_live_borrow_proof.js --config ./borrow-proof-config.json\n```\n\n## Top-level runner request shape\n\nMinimal shape:\n\n```json\n{\n  \"chain\": { \"name\": \"arbitrum\", \"chainId\": 42161 },\n  \"collateralAssets\": [\n    { \"symbol\": \"WETH\", \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\" }\n  ],\n  \"borrowAssets\": [\n    { \"symbol\": \"USDC\", \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\" }\n  ],\n  \"riskPreset\": \"eth-major\"\n}\n```\n\nUseful optional fields:\n- `recipeId`\n- `rpcPreference`\n- `feedFunding`\n- `artifacts`\n- `allowCustomFallback`\n- `preferInfrequentOracle`\n- `publishToRegistry`\n- `vaultContext`\n- `executionProfile`\n- `broadcast`\n- `send`\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\nFor any run that may need review or handoff, add:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-run\"\n  }\n}\n```\n\n## Minimum required inputs for a cold start\nBefore attempting the full combined workflow, confirm you have:\n- `chain.name` and `chain.chainId`\n- at least one collateral asset and one borrow asset\n- `riskPreset` or `recipeId`\n- whether the user wants planning only, dry-run, or real send\n- whether the user wants post-deploy borrow proof\n- live RPC access if any non-simulated step is expected\n- signer or executor details for live funding, deployment, or proof\n- `vaultContext` when the market deployment path requires concrete factory or asset addresses\n\nIf post-deploy proof is required, also gather:\n- target collateral vault address for the proof\n- EVC address\n- a tiny borrow amount\n- any stale collaterals or controllers that must be disabled for an isolated proof\n- swap venue details only if the wallet must source repay or collateral assets first\n\n## Canonical end-to-end example\nUse this exact mental model for a cold-start request:\n1. before live-capable execution, run `preflight-evk-workflow` and stop unless `safeToRun === true`\n2. run `run-evk-workflow` with chain, assets, and recipe intent\n3. inspect `status.state`, `status.phaseReached`, and `status.executable`\n4. make sure the resolved route for the selected assets is acceptable\n5. if feed funding is needed:\n   - branch on `fundingExecutionClassification.state`\n   - execute direct or wrapper funding when `executable`\n   - execute `browser-plan` plus browser automation when `browser-assisted`\n   - re-run feed readiness after funding\n6. continue through oracle prep, EVK market prep, and deployment\n7. if artifacts were enabled, inspect `agent-decision.json`, `summary.json`, `rollback-plan.json`, `status.json`, `response.json`, and `deploy-evk-market.json`\n8. run `verify-evk-deployment-handoff --run-dir <dir>` before claiming the deployment is ready for proof or operator handoff\n9. if the user asked for borrow proof:\n   - build a borrow-proof config from the deployment outputs plus proof-specific inputs\n   - run preview mode first with `node scripts/evk_live_borrow_proof.js --config <path>`\n   - only rerun with `--live` if the user wants the canary sent\n10. report deployment and borrowability as separate outcomes\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\n## Generalization rule\nTreat the EVK planner path as asset-agnostic across supported pairs:\n- do not special-case only previously tested collateral/borrow combinations\n- use the same route-resolution, funding, deployment, and proof logic for whichever supported assets are selected\n- treat prior successful canaries as evidence that the path can work, not as permission to hardcode those same examples into future planning\n\n## Current executable happy path\n\n### 1. `prepare-euler-oracle`\nUse a direct `euler-chainlink-oracle` route or another oracle route that already resolves to executable oracle txs.\n\n### 2. `prepare-evk-market`\nUse a real recipe id from the bundled planner runtime in `scripts/lib/part2-recipes.js`. A current example is `eth-major-stable-borrow-v1` with `riskPreset: \"eth-major\"`.\n\n### 3. `prepare-evk-deployment`\nThis is where the first executable EVK market transaction is unlocked.\n\n### 4. `deploy-evk-market`\nUse guarded broadcast opt-in and prefer dry-run first.\n\n## Feed activation note\n\nThe first supported executable funding paths are the narrow exact `buySubscription(...)` direct path and the exact prepared wrapper-call alternative when the code can already derive it safely.\n\nThe machine-usable field is now:\n- `fundingExecutionClassification.state`\n  - `not-needed`\n  - `executable`\n  - `browser-assisted`\n  - `unsupported`\n\nBranching rule:\n- `not-needed` → continue immediately\n- `executable` → use exact onchain execution\n- `browser-assisted` → call `browser-plan` and automate the Market flow with the browser tool when reachable\n- `unsupported` → stop and report unsupported\n\nAfter any funding execution step, re-run feed readiness before proceeding to oracle deployment.\n\n## Post-deploy borrow proof step\n\nAfter `deploy-evk-market`, do not stop at \"deployment succeeded\" if the user asked for proof of actual borrowability.\n\n### Deployment output → proof config mapping\nWhen building `borrow-proof-config.json`, map values deliberately instead of guessing:\n- borrow vault address → from the deployed EVK market output, using the newly deployed borrow vault, not a prior canary vault\n- collateral vault address → from the intended proof target, not from the borrow market manifest unless they are explicitly the same\n- EVC address → from the deployed borrow vault's `EVC()` contract when available, otherwise from the deployment context for that chain\n- borrow asset address and decimals → from the deployed borrow vault asset or the workflow request borrow asset, whichever is authoritative for the live market\n- collateral asset address and decimals → from the chosen collateral vault's underlying asset\n- wrapped native token → from the target chain, not hardcoded from Arbitrum examples\n- signer env name → from local runtime setup, for example `LIVE_SIGNER_ENV`, never from committed files\n- live acknowledgement → set the config's guarded live-send acknowledgement field only when the operator intends to allow a live proof send\n- stale collaterals or controllers to disable → from the actual wallet state at proof time, not from a past example\n\nIf any of those mappings are ambiguous, stop and inspect chain state before constructing the proof config.\n\nUse the local proof executor when the next question is any variant of:\n- can this market really borrow?\n- prove the isolated collateral path works\n- show a live borrow canary\n- rotate off the old collateral or controller and re-test\n\nMinimum proof inputs:\n- deployed borrow vault address\n- intended collateral vault address\n- EVC address\n- borrow asset and collateral asset addresses plus decimals\n- wrapped native token for the chain\n- tiny borrow amount\n- stale collaterals or controllers to disable if isolation matters\n- swap venue details only if the wallet must source collateral or repay assets first\n\nTreat these as distinct outcomes:\n- deployment dry-run ready\n- real-send ready\n- deployed but borrow-proof pending\n- live borrow proven\n\n## Stop conditions\n\nStop and report instead of improvising when:\n- `fundingExecutionClassification.state === \"unsupported\"`\n- the browser-assisted funding UI is not reachable or cannot be automated safely\n- `ensure-feeds` says the feeds are not ready and no supported exact buy-subscription path is available\n- the oracle path is still skeleton-only\n- `prepare-evk-deployment` does not include concrete top-level `vaultContext`\n- `deploy-evk-market` still reports skeleton market transactions\n- the proof step cannot honestly isolate or demonstrate the collateral path the user asked for\n\n## Real-send rule\n\nOnly move beyond dry-run when the user explicitly wants live sending and the request includes:\n- `broadcast.enabled: true`\n- `broadcast.acknowledgement`: the exact required live-send acknowledgement phrase\n- matching signer or executor identity\n- `send.rpcUrl`\n- `send.privateKey`\n\nIf any of those are missing, stay in planning or dry-run mode.\n\n## Success-reporting rule\nTreat the wrapper artifact bundle as the canonical evidence surface.\n\nBefore claiming deployment success, inspect at least:\n- `result.artifactPersistence.files.status`\n- `result.artifactPersistence.files.response`\n- `result.artifactPersistence.files.summary`\n- `result.artifactPersistence.files.agentDecision`\n- `result.artifactPersistence.files.rollbackPlan`\n- `result.artifactPersistence.files.deployEvkMarket`\n\nFor persisted runs, prefer:\n- `explain-next --run-dir <dir>` for operator guidance\n- `verify-evk-deployment-handoff --run-dir <dir>` for deployment-complete claims\n- `run-evk-workflow --resume-from-run-dir <dir>` when continuing an existing run\n\nUse `references/summary-contract.md` for the exact reporting contract.\n\nFile v0.1.15:references/arbitrum-eusdc1-isolated-example.json\n\n{\n  \"chainLabel\": \"arbitrum\",\n  \"rpcUrl\": \"https://arb1.arbitrum.io/rpc\",\n  \"accountAddress\": \"0x000000000000000000000000000000000000dEaD\",\n  \"signerEnvName\": \"LIVE_SIGNER_ENV\",\n  \"operatorAck\": \"SET_REQUIRED_LIVE_SEND_ACKNOWLEDGEMENT_PHRASE\",\n  \"tokens\": {\n    \"wrappedNative\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"borrowAsset\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"collateralAsset\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    }\n  },\n  \"vaults\": {\n    \"borrowVault\": {\n      \"label\": \"eWETH-11\",\n      \"address\": \"0x9dB604761a4664002629873f5985386904C3D5Fe\"\n    },\n    \"collateralVault\": {\n      \"label\": \"eUSDC-1\",\n      \"address\": \"0x0a1eCC5Fe8C9be3C809844fcBe615B46A869b899\"\n    },\n    \"disableCollateral\": [\n      {\n        \"label\": \"eWETH-1\",\n        \"address\": \"0x78E3E051D32157AACD550fBB78458762d8f7edFF\"\n      }\n    ]\n  },\n  \"evc\": {\n    \"address\": \"0x6302ef0F34100CDDFb5489fbcB6eE1AA95CD1066\",\n    \"enableController\": false,\n    \"controllersToDisable\": []\n  },\n  \"actions\": {\n    \"repayExistingDebt\": true,\n    \"depositFullCollateralBalance\": true,\n    \"borrowAmount\": \"0.00005\"\n  },\n  \"repayTopUp\": {\n    \"enabled\": true,\n    \"mode\": \"wrap-native\",\n    \"amount\": \"0.0002\"\n  },\n  \"repaySwap\": {\n    \"enabled\": false,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0\"\n  },\n  \"collateralSwap\": {\n    \"enabled\": true,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0.0015\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0.0015\"\n  }\n}\n\nFile v0.1.15:references/current_capabilities.md\n\n# Current capabilities and limits\n\nThis skill is intentionally honest about the current implementation.\n\n## What works today\n\n### Top-level EVK runner\n- the skill has a true top-level runner: `run-evk-workflow`\n- it takes one workflow request and returns one `{ status, result }` object\n- it can infer `recipeId` when the current EVK recipe catalog yields one clear match\n- it preserves the staged planner and executor outputs under `result` instead of hiding them behind an opaque success flag\n- it now has a matching live-safety gate: `preflight-evk-workflow`\n- the wrapper can persist a reviewable artifact bundle when `artifacts.enabled === true`\n- persisted runs now carry `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n- persisted runs can now be reopened or interrogated with `run-evk-workflow --resume-from-run-dir`, `explain-next`, and `verify-evk-deployment-handoff`\n\n### Feed and Api3 side\n- agents can discover and resolve Api3 feeds\n- agents can classify feed readiness\n- agents can surface activation and funding handoff information\n- agents can prepare some contract-call data for feed activation paths\n- agents can use the first guarded exact `buySubscription(...)` execution paths in dry-run or explicitly acknowledged submit mode\n- the supported execution modes are `direct`, `wrapper`, and `auto`, but wrapper only works when the repo already derives the exact wrapper calldata safely\n- browser-assisted funding cases can now stay automatable through `browser-plan` plus browser execution when the required Market flow is reachable\n\n### Oracle side\n- `Api3PartialAggregatorV2V3Interface` deployment can be executable\n- direct `ChainlinkOracle` deployment can be executable when constructor args are concrete\n- wrapper-first `wrapper -> ChainlinkOracle` can become executable when execution-time nonce context is available\n- composite `ChainlinkOracle + CrossAdapter` can become executable\n- EVK bundle oracle transactions can dry-run cleanly when the oracle path is executable\n- literal exact feed matching is preferred before alias-normalized fallback matching, so route resolution stays generic across supported assets instead of being accidentally biased toward alias families\n\n### EVK market side\n- the first honest executable EVK market transaction is the `deploy-evk-vault` call through `GenericFactory`\n- this path depends on top-level `prepare-evk-deployment.vaultContext`\n  - `factoryAddress`\n  - `assetAddress`\n- without that `vaultContext`, the market transaction stays skeleton-only and the bundle must stay non-ready\n\n### Post-deploy proof side\n- deployment and borrowability are treated as different claims\n- this skill now includes its own post-deploy borrow proof step instead of relying on a separate published skill\n- the controller → local-executor proof path is: deploy with this skill, then prove live borrowability with the bundled `scripts/evk_live_borrow_proof.js`\n- this is the honest path for share-token collateral cases where oracle quoteability, EVC state, and tiny live borrow success all matter\n\n## What does not yet work broadly\n- Morpho workflow is not the target of this skill\n- the EVK market deployment surface is still constrained by the currently supported recipes, oracle routes, and executor wiring\n- `ChainlinkInfrequentOracle` is not yet treated as executable\n- feed funding is still only fully onchain-executable for narrow supported exact buy-subscription paths\n- browser-assisted funding cases still exist\n- unsupported funding cases still exist\n- this is not yet a polished \"any agent can choose any supported assets and always complete everything\" surface\n\n## How to speak about status\n\nWhen reporting progress, use one of these states explicitly:\n- plan-only\n- feed-ready but awaiting activation or funding handoff\n- funding dry-run ready\n- browser-assisted funding ready\n- oracle-executable\n- EVK dry-run ready\n- real-send ready\n- deployed but borrow-proof pending\n- live borrow proven\n\nWhen funding is involved, also surface the machine-usable funding branch:\n- `fundingExecutionClassification.state = not-needed | executable | browser-assisted | unsupported`\n\nWhen the top-level runner is used, also surface the machine-usable status object fields:\n- `status.phaseReached`\n- `status.state`\n- `status.recipeId`\n- `status.fundingExecutionState`\n- `status.executable`\n- `result.artifactPersistence`\n\nOperational meaning:\n- `not-needed` → feed already live, continue\n- `executable` → use guarded exact onchain execution\n- `browser-assisted` → use `browser-plan` and browser automation if the Market flow is reachable\n- `unsupported` → stop and report\n\nDo not collapse those into a single vague \"ready\".\nDo not call something borrowable unless the post-deploy proof step has actually supported that claim.\nDo not call something fully deployed from prose alone when the artifact bundle is missing or incomplete.\n\n## Preflight rule\nBefore a live-capable EVK request, run `preflight-evk-workflow` first.\n\nUse it to confirm:\n- `safeToRun === true`\n- `placeholderSafe === true`\n- the preview `status` matches the expected workflow branch\n- live-looking request fields are not still dummy values\n\nIf preflight fails, stop and fix the concrete blocker instead of pushing ahead optimistically.\n\n## Artifact rule\nFor anything beyond casual planning, enable:\n\n```json\n{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-run\"\n  }\n}\n```\n\nThat persisted bundle is the reliable handoff surface for:\n- status review\n- deployment review\n- proof follow-up\n- later audit of what the wrapper actually decided\n- model-friendly next-step recovery via `agent-decision.json`\n- deployment-complete handoff checks via `verify-evk-deployment-handoff`\n\nUse these persisted-run helpers deliberately:\n- `explain-next --run-dir <dir>` → recover the current model-friendly state\n- `verify-evk-deployment-handoff --run-dir <dir>` → verify the deploy bundle is coherent enough for handoff/proof claims\n- `run-evk-workflow --resume-from-run-dir <dir>` → reopen a known run instead of reconstructing it from memory\n\n## Generalization rule\nTreat the planner path as asset-agnostic across supported pairs:\n- do not special-case only previously tested collateral/borrow combinations\n- use the same route-resolution, funding, deployment, and proof logic for whichever supported assets are selected\n- only claim executable readiness when the planner can resolve a concrete oracle path and concrete deployment payloads for those assets\n\n## Recipe rule\nUse real EVK recipes from the bundled planner runtime in `scripts/lib/part2-recipes.js`.\nDo not invent recipe ids.\n\n## Address rule\nThe example addresses in the repo docs are structurally valid but illustrative only.\nDo not present them as recommended live deployment targets.\n\nFile v0.1.15:references/example-request.json\n\n{\n  \"chain\": {\n    \"name\": \"arbitrum\",\n    \"chainId\": 42161\n  },\n  \"collateralAssets\": [\n    {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\"\n    }\n  ],\n  \"borrowAssets\": [\n    {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"\n    }\n  ],\n  \"riskPreset\": \"eth-major\",\n  \"recipeId\": \"eth-major-stable-borrow-v1\",\n  \"activationMode\": \"prepare-only\",\n  \"publishToRegistry\": false,\n  \"rpcPreference\": {\n    \"allowPublicFallback\": false\n  },\n  \"executionProfile\": {\n    \"mode\": \"simulate\"\n  },\n  \"vaultContext\": {\n    \"factoryAddress\": \"0x5555555555555555555555555555555555555555\",\n    \"assetAddress\": \"0x7777777777777777777777777777777777777777\"\n  }\n}\n\nFile v0.1.15:references/live-borrow-checklist.md\n\n# EVK live borrow checklist\n\nUse this checklist before running a tiny live borrow canary.\n\n## What this skill proves\n- the target borrow vault can issue real debt\n- the intended collateral vault share token is accepted by the borrow vault's oracle and LTV config\n- the account can rotate into the intended EVC state\n- the proof can be isolated to one collateral path when requested\n\n## What this skill does not prove by itself\n- large borrow sizing safety\n- liquidation safety under volatility\n- multi-hop swap portability across every chain\n- router compatibility for non Uniswap V3 style venues\n- production monitoring or automated unwinds\n\n## Required inputs\nGather these before building the config:\n- `rpcUrl`\n- `accountAddress`\n- `signerEnvName` for live mode\n- wrapped native token address and decimals\n- borrow asset address and decimals\n- collateral asset address and decimals\n- borrow vault address\n- collateral vault address\n- EVC address\n- tiny `borrowAmount`\n\nOptional but often needed:\n- stale collateral vaults to disable\n- stale controllers to disable\n- `repayTopUp` if the debt asset is the wrapped native token\n- `repaySwap` if the wallet needs to source the debt asset before repayment\n- `collateralSwap` if the wallet needs to source the collateral asset before deposit\n\n## Acceptance criteria before live send\nDo not claim success unless all relevant items are true:\n- the borrow vault has cash\n- the borrow vault has an LTV link for the target collateral vault\n- the borrow vault oracle can price the collateral vault share token into the unit of account\n- the wallet has enough gas\n- the post-rotation EVC state matches the proof you want to claim\n\n## Config design notes\nBuild the proof config from the actual deployment outputs and live wallet state, not from memory.\n\nThe local executor reads a JSON config with these top-level sections:\n- `rpcUrl`, `chainLabel`, `accountAddress`, `signerEnvName`, `operatorAck`\n- `tokens`\n  - `wrappedNative`\n  - `borrowAsset`\n  - `collateralAsset`\n- `vaults`\n  - `borrowVault`\n  - `collateralVault`\n  - `disableCollateral` array\n- `evc`\n  - `address`\n  - `enableController`\n  - `controllersToDisable` array\n- `actions`\n  - `repayExistingDebt`\n  - `depositFullCollateralBalance`\n  - `borrowAmount`\n- `repayTopUp`, `repaySwap`, `collateralSwap`\n\n## Deployment output → proof config reminders\n- take the borrow vault address from the fresh deployment result, not an older canary market\n- take the collateral vault address from the collateral path you actually want to prove\n- derive the EVC address from the live borrow vault or chain deployment context\n- derive token decimals from live token contracts when possible\n- keep stale controller and collateral cleanup lists tied to the proof wallet's current state\n\n## Adapting to other assets and chains\n- Change token decimals, not just symbols.\n- Change the wrapped native token per chain.\n- Change the router and fee tier per venue.\n- If there is no compatible single-hop router, source assets another way and disable the swap step.\n- If the proof asset is not the wrapped native token, prefer `repaySwap` or pre-fund the wallet.\n- If the controller is already correct, leave `enableController` false.\n- If the proof must be isolated, list every stale collateral vault that must be disabled first.\n- Treat the proof path as generic across supported assets: build the config from the fresh deployment outputs and current wallet state, not from whichever asset pair happened to be used in an earlier canary.\n\n## Canonical isolated proof sequence\nUse this as the generic isolated proof sequence:\n1. repay old debt\n2. source fresh collateral asset\n3. deposit that asset into the target collateral vault\n4. disable stale collateral vaults in EVC\n5. leave only the target collateral path enabled\n6. borrow a tiny fresh amount from the target borrow vault\n7. report debt, enabled collaterals, and collateral-vault balance\n\n## When to stop instead of forcing it\nStop and report the blocker if:\n- the oracle cannot quote the collateral share token\n- EVC controller rotation reverts and you cannot safely clear the old controller\n- the wallet cannot source the repay or collateral asset\n- the vault cash is too low\n- the swap venue is not actually compatible with the configured router ABI\n- preview reveals that the flow would prove something weaker than the user asked for\n\n## Controller → executor handoff\nThe public skill plans the proof and generates the config.\nThe bundled skill executor executes it.\n\nCanonical local executor path:\n- `scripts/evk_live_borrow_proof.js`\n\nPreflight checks:\n1. confirm the installed skill bundle exists\n2. confirm `scripts/evk_live_borrow_proof.js` exists\n3. confirm the config file path is explicit\n4. confirm the signer env name is supplied only through local runtime setup\n5. run preview before considering `--live`\n\n## Suggested command pattern\nPreview:\n`node ./scripts/evk_live_borrow_proof.js --config <path>`\n\nLive:\n`node ./scripts/evk_live_borrow_proof.js --config <path> --live`\n\nFor live mode, also require:\n- `config.operatorAck` matches the script's required live-send acknowledgement phrase\n- `config.accountAddress` matches the signer address derived from `signerEnvName`\n\nKeep the runtime config outside git if it contains a real wallet address or secrets.\n\nFile v0.1.15:references/live-request-template.json\n\n{\n  \"chain\": {\n    \"name\": \"arbitrum\",\n    \"chainId\": 42161\n  },\n  \"collateralAssets\": [\n    {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\"\n    }\n  ],\n  \"borrowAssets\": [\n    {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"\n    }\n  ],\n  \"riskPreset\": \"eth-major\",\n  \"recipeId\": \"eth-major-stable-borrow-v1\",\n  \"activationMode\": \"allow-activation\",\n  \"rpcPreference\": {\n    \"rpcUrl\": \"https://replace-with-live-rpc.example.com\"\n  },\n  \"feedFunding\": {\n    \"mode\": \"dry-run\",\n    \"executionMode\": \"auto\"\n  },\n  \"executionProfile\": {\n    \"mode\": \"simulate\",\n    \"executorAddress\": \"0x1111111111111111111111111111111111111111\"\n  },\n  \"vaultContext\": {\n    \"factoryAddress\": \"0x2222222222222222222222222222222222222222\",\n    \"assetAddress\": \"0x3333333333333333333333333333333333333333\"\n  },\n  \"broadcast\": {\n    \"enabled\": false,\n    \"acknowledgement\": \"I_UNDERSTAND_THIS_WILL_SEND_TRANSACTIONS\",\n    \"signerAddress\": \"0x4444444444444444444444444444444444444444\"\n  },\n  \"send\": {\n    \"enabled\": false,\n    \"dryRun\": true,\n    \"rpcUrl\": \"https://replace-with-send-rpc.example.com\",\n    \"privateKey\": \"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n  },\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-live-run\"\n  }\n}\n\nFile v0.1.15:references/summary-contract.md\n\n# EVK wrapper summary contract\n\nUse this contract to interpret `run-evk-workflow` output and any persisted artifact bundle. Prefer exact fields over narrative text.\n\n## Recommended files in a persisted run bundle\nWhen `artifacts.enabled === true`, expect at least:\n\n- `request.json`\n- `status.json`\n- `response.json`\n- `summary.json`\n- `agent-decision.json`\n- `rollback-plan.json`\n\nDepending on how far the workflow progressed, expect some or all of:\n\n- `plan-market.json`\n- `ensure-feeds.json`\n- `feed-funding.json`\n- `prepare-euler-oracle.json`\n- `prepare-evk-market.json`\n- `prepare-evk-deployment.json`\n- `deploy-evk-market.json`\n\n## Primary status fields\nRead `agent-decision.json` first when it exists, then `summary.json`, then `status.json`.\n\n### Agent decision fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `safeStatus` | model-friendly state enum/string | use as the top-line recovered state |\n| `canContinue` | whether the run can continue without first resolving blockers | false means stop or ask/user action is required |\n| `nextCommand` | preferred next command when one exists | use after checking approvals and `mustNotDo` |\n| `mustNotDo[]` | hard safety reminders | do not violate these |\n| `successClaimAllowed` | final-success gate | must be `true` before claiming deployment-complete success |\n\n### Summary fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `phase` | deepest workflow phase reached | supporting stage summary |\n| `status` | model-friendly wrapper status | useful shorthand, not a replacement for evidence |\n| `rollbackPlan` | local-only vs forward-only onchain state | inspect before rerunning or handing off |\n| `nextSteps[]` | generated next actions | use for guidance and resume decisions |\n| `successClaimAllowed` | deployment-success gate from the persisted bundle | false means do not overclaim |\n\n### Status fields\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `phaseReached` | deepest workflow stage reached | use as the stage headline |\n| `state` | model-friendly state enum/string | use as the primary short status |\n| `recipeId` | selected EVK recipe | report exactly, do not infer another |\n| `fundingExecutionState` | funding branch summary | distinguish not-needed, executable, browser-assisted, unsupported |\n| `executable` | machine flags for feed, oracle, EVK, real send | use for readiness, not success |\n| `blockers[]` | hard blockers | non-empty means stop or report blocked |\n| `warnings[]` | cautionary notes | surface relevant live-send warnings |\n\n## Artifact persistence fields\nIf the wrapper result exposes `result.artifactPersistence`, read:\n\n| Field | Meaning | Safe interpretation |\n| --- | --- | --- |\n| `enabled` | whether persistence was requested | false means no durable run bundle exists |\n| `persisted` | whether files were actually written | must be true for a durable evidence claim |\n| `bundleDir` | run bundle path | report it when follow-up work depends on it |\n| `files.*` | per-stage artifact files | inspect the stage file you are making claims about |\n\n## Funding gates\nUse these fields when funding is involved:\n\n| Field | Success gate |\n| --- | --- |\n| `status.fundingExecutionState` | tells you whether funding was not-needed, executable, browser-assisted, or unsupported |\n| `result.feedFunding.entries[]` | inspect per-feed blockers, browser plans, or execution outputs |\n| `result.ensureFeeds.final.ready` | must be `true` before moving into oracle + EVK deployment claims |\n\nImportant: a funding path being executable is not the same as feeds being live. Require the final feed-readiness result.\n\n## Deployment gates\nUse these fields when deployment is in scope:\n\n| Field | Success gate |\n| --- | --- |\n| `result.prepareEvkDeployment.ready` | deployment bundle is coherent enough to continue |\n| `status.executable.evkMarket` | EVK market transaction is concrete enough for execution |\n| `status.executable.realSend` | wrapper is ready for live send, not proof that live send already happened |\n| `result.deployEvkMarket.executionSummary` | inspect dry-run vs broadcast-ready vs live-send outcome |\n| `result.deployEvkMarket.stepResults[]` | inspect the exact planned or executed steps |\n\nA deployment is not automatically successful just because `status.executable.realSend === true`. That is only readiness.\n\n## Borrow-proof gates\nIf the user asked for proof of borrowability, require a separate proof result.\n\nDeployment success and borrowability proof are different claims:\n- `deployed but borrow-proof pending`\n- `live borrow proven`\n\nDo not collapse them.\n\n## Final reporting rules\nReport one of these states exactly:\n\n- `plan-only`\n- `feed-ready but awaiting activation/funding handoff`\n- `funding dry-run ready`\n- `browser-assisted funding ready`\n- `oracle-executable`\n- `EVK dry-run ready`\n- `real-send ready`\n- `deployed but borrow-proof pending`\n- `live borrow proven`\n- `blocked`\n\n## Persisted-run helper commands\nUse these helpers against a stored run directory:\n\n- `explain-next --run-dir <dir>` → recover the model-friendly current state, next command, and guardrails\n- `verify-evk-deployment-handoff --run-dir <dir>` → verify the deploy bundle is coherent enough for handoff or proof follow-up\n- `run-evk-workflow --resume-from-run-dir <dir>` → reopen a known run instead of reconstructing it from memory\n\n## Minimum deployment-success predicate\nOnly report deployment success when all are true:\n\n```json\n{\n  \"artifactBundlePersisted\": true,\n  \"statusBlockersEmpty\": true,\n  \"finalFeedsReady\": true,\n  \"deployStagePresent\": true,\n  \"deployEvidenceInspected\": true,\n  \"agentDecisionSuccessClaimAllowed\": true,\n  \"handoffVerificationPassedWhenHandingOff\": true,\n  \"rollbackPlanInspected\": true\n}\n```\n\nIf borrowability was requested, add a separate proof predicate instead of silently assuming it from deployment artifacts.\n\nFile v0.1.15:CHANGELOG.md\n\n# Changelog\n\n## 0.1.15 - 2026-05-22\n\n- document the EVK golden path around `preflight-evk-workflow`, persisted artifacts, handoff verification, and live request templates\n- publish the bundled live request template and summary contract references for clearer operator handoff\n- update the packaged planner/runtime bundle for share-aware router EVK deployment, live borrow proof preparation, and proper controller cleanup via EVault `disableController()`\n\n## 0.1.14 - 2026-05-19\n\n- sync the published EVK bundle to the newest packaged Api3 feed-funding runtime, including scripted communal proxy deployment support\n- make the bundled feed manager default real executable funding sends toward also deploying any missing communal proxy unless explicitly disabled\n\n## 0.1.13 - 2026-05-08\n\n- move deployment bytecode out of inline JSON artifact literals into wrapped sidecar files and rehydrate it at runtime to avoid false-positive secret-literal moderation hits\n\n## 0.1.12 - 2026-05-07\n\n- replace secret-looking private key placeholders in packaged CLI help text with `<private-key-hex>` to reduce false-positive scanner hits\n\n## 0.1.11 - 2026-05-07\n\n- finished the self-contained EVK executor bundle so cold installs no longer depend on repo-local runtime or planner data\n- aligned packaged CLI help text with the published binary names and added a packaged example request path that works from a clean install\n- fixed installed runtime path resolution for user-supplied input files and bundled `data/part2/...` lookups discovered during smoke testing\n\n## 0.1.10 - 2026-05-07\n\n- started converting `agentic-lending-evk` into a self-contained executor bundle\n- added a local `package.json` with executable packaging metadata\n- bundled the EVK live borrow proof executor into the published skill folder\n- added a local CLI entrypoint as the first step toward a fully bundled planner runtime\n\nFile v0.1.15:skill-card.md\n\n## Description: <br>\nPlan, preflight, and execute EVK-first Api3-backed lending workflows, including feed readiness, oracle preparation, EVK market deployment, and guarded post-deploy borrow proof steps. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[daav3](https://clawhub.ai/user/daav3) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and operators use this skill to plan or run Api3-backed EVK lending market workflows, starting with preflight and simulation and moving to live signer-backed transactions only when explicitly approved. It is intended for route resolution, feed funding or handoff, deployment preparation, guarded execution, and separate borrowability proof. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can prepare or send real blockchain transactions, including feed funding, deployments, approvals, swaps, and borrow canaries. <br>\nMitigation: Use preflight and dry-run or preview modes first, and allow live signer-backed execution only after explicit operator approval. <br>\nRisk: Wallet keys or sensitive signer details can be exposed through request JSON, command arguments, or persisted run artifacts. <br>\nMitigation: Keep private keys in protected environment variables or local runtime config, avoid passing secrets in JSON or CLI arguments, and disable or tightly protect artifact persistence when secrets are present. <br>\nRisk: Live borrow proof safeguards depend on reviewed swap minimums, approval scope, and proof configuration. <br>\nMitigation: Review nonzero swap minimums, use exact approval scope unless unlimited approvals are explicitly accepted, and run the borrow proof preview before any live canary. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/daav3/agentic-lending-evk) <br>\n- [Publisher profile](https://clawhub.ai/user/daav3) <br>\n- [Project homepage](https://github.com/daav3/agentic-lending-project) <br>\n- [API reference](references/api_reference.md) <br>\n- [Current capabilities and limits](references/current_capabilities.md) <br>\n- [EVK wrapper summary contract](references/summary-contract.md) <br>\n- [EVK live borrow checklist](references/live-borrow-checklist.md) <br>\n- [Live request template](references/live-request-template.json) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, JSON, Shell commands, Configuration, Code] <br>\n**Output Format:** [Markdown guidance with JSON request/configuration files and shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May prepare or execute blockchain transaction workflows; live execution requires explicit operator approval and signer configuration.] <br>\n\n## Skill Version(s): <br>\n0.1.15 (source: package.json, CHANGELOG, server release) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.14: 33 files, 105944 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (1445b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.bytecode.txt (2884b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (5707b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.bytecode.txt (6011b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (4247b), data/part2/contract-artifacts/ChainlinkOracle.bytecode.txt (6914b), data/part2/contract-artifacts/ChainlinkOracle.json (4209b), data/part2/contract-artifacts/CrossAdapter.bytecode.txt (4620b), data/part2/contract-artifacts/CrossAdapter.json (3967b), data/part2/contract-artifacts/EulerRouter.bytecode.txt (7835b), data/part2/contract-artifacts/EulerRouter.json (8428b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (11593b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5076b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (130934b), scripts/lib/part2-chain-bootstrap.js (4049b), scripts/lib/part2-planner.js (191385b), scripts/lib/part2-recipes.js (1330b), SKILL.md (11896b), _meta.json (139b)\n\nFile v0.1.14:SKILL.md\n\n---\nname: agentic-lending-evk\ndescription: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selected collateral and borrow assets, discover or fund the required Api3 feeds, including browser-assisted Api3 Market funding when needed, prepare the Euler oracle path, assemble and deploy the EVK lending market, and then prove real borrowability with a post-deploy canary borrow against the intended collateral path. This variant can reach real onchain writes, including feed funding, market deployment, approvals, swaps, and borrow canaries when explicitly allowed. Default to plan, simulation, or preview mode first, and only use live signer-backed execution when the user explicitly asks for it. Do not use for Morpho, unsupported recipes, or unsupported oracle/deployment routes.\nmetadata:\n  clawdis:\n    homepage: https://github.com/daav3/agentic-lending-project\n    author: daav3\n    requires:\n      bins:\n        - node\n      env:\n        - LIVE_SIGNER_ENV\n      config:\n        - request.run-evk-workflow.json\n        - borrow-proof-config.json\n    primaryEnv: LIVE_SIGNER_ENV\n---\n\n# Agentic Lending EVK\n\nThis is the execution-capable EVK workflow skill.\n\nIt turns the bundled EVK planner primitives into one agent-facing workflow, from route resolution and feed readiness through deployment and live borrow proof.\n\nWhen the supported path is available and the user explicitly asks for it, this variant can send real transactions and should be treated as a guarded execution skill rather than a planning-only helper.\n\n## Safety expectations\n- default to planning, simulation, or preview mode first\n- treat browser-assisted funding as optional and only automate it when the user wants the flow completed end to end\n- only use live signer-backed funding, deployment, or borrow canaries when the user explicitly asks for live execution\n- for the bundled borrow-proof script, require both `--live` and the config's guarded live-send acknowledgement field to match the script's required phrase\n- require the configured proof account address to match the signer address before any live proof transaction is sent\n- require explicit nonzero swap protection for every live swap\n- require explicit opt-in before using unlimited approvals\n- keep private key material in environment variables or local runtime config, never in committed files\n\n## Use this when\n- the user wants to stand up or dry-run an EVK lending market backed by Api3 feeds\n- the user wants one workflow instead of manually stitching planner JSON steps\n- the task includes any combination of asset selection, oracle route resolution, feed readiness, feed funding, oracle preparation, EVK deployment prep, guarded dry-run or send, or post-deploy borrow proof\n\n## Do not use this when\n- the user wants Morpho, not EVK\n- the requested recipe or oracle path is not supported by the current repo\n- the task requires pretending a skeleton-only path is executable\n- the task assumes fully autonomous feed funding in every case\n\n## Read next\n1. `references/api_reference.md`\n2. `references/current_capabilities.md`\n3. `references/live-borrow-checklist.md` when the workflow reaches post-deploy proof\n4. `references/arbitrum-eusdc1-isolated-example.json` when a concrete proof config shape helps\n5. Use the bundled executor at `scripts/evk_live_borrow_proof.js`\n6. Treat bundled `data/part2/feed-status.json` and `data/part2/market-registry.json` as packaged local snapshots, not authoritative shared state\n\n## Minimum required inputs for the combined flow\nGather these before you assume the full combined workflow is feasible:\n- chain name and chain id\n- collateral asset set and borrow asset set\n- target recipe id or risk preset\n- whether the user wants planning only, dry-run, or real send\n- whether the user also wants post-deploy borrow proof\n- live RPC availability for the chain\n- signer expectations for any live funding, deployment, or proof step\n- `vaultContext` when the deployment path needs concrete factory or asset wiring\n\nFor a full live end-to-end run, also confirm:\n- feed funding branch expectations, especially whether `fundingExecutionClassification.state` may be `browser-assisted`\n- browser access if the Api3 Market flow must be automated\n- a safe tiny borrow amount for the proof step\n- a target collateral vault for the proof, not just the borrow vault\n\nIf any of those are missing, stop and ask instead of improvising.\n\n## Default workflow\n1. Normalize the request into:\n   - chain\n   - collateral assets\n   - borrow assets\n   - target recipe or risk preset\n   - whether the user wants planning only, dry-run, or real send\n   - whether the user also wants proof of actual borrowability\n2. Resolve the oracle path for the selected assets before treating deployment as executable.\n   - prefer an exact direct route when the requested pair exists and is deployable\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. Prefer `run-evk-workflow` as the default end-to-end entrypoint when the user wants the full EVK path.\n   - pass `recipeId` explicitly when known, otherwise let the runner infer from the current EVK recipe catalog\n   - treat `status` as the canonical summary object\n   - treat `result` as the detailed staged artifact bundle\n4. If deployment succeeds and the user wants proof of actual borrowability, continue within this skill to the built-in post-deploy proof step.\n   - treat deployment success and borrowability proof as separate milestones\n   - use the deployment outputs plus live vault addresses, collateral-vault targets, EVC state, and tiny borrow sizing to build the proof config\n   - require preview mode first, then live canary only if the user wants a real proof\n5. Fall back to the manual staged commands only when the user asked for a subset, wants intervention at a specific phase, or the runner stops before the desired outcome.\n   - `plan-market`\n   - `ensure-feeds`\n   - if feeds are live, continue to the oracle and EVK planner path\n   - if funding is needed, inspect `purchase-inputs` or `prepare-buy-subscription` output and branch on `fundingExecutionClassification.state`\n   - if `fundingExecutionClassification.state === \"executable\"`:\n     - `purchase-inputs`\n     - `prepare-contract-call` or `prepare-buy-subscription`\n     - `execute-buy-subscription`\n     - `ensure-feeds` or `ensure-active` again to confirm the feed is now live\n   - if `fundingExecutionClassification.state === \"browser-assisted\"`:\n     - call `browser-plan`\n     - use the browser tool to execute the returned plan if the required UI is reachable and the user wants full automation\n     - re-run `ensure-feeds` or `ensure-active` after the browser flow\n   - if `fundingExecutionClassification.state === \"unsupported\"`, stop and report unsupported status clearly\n   - `prepare-euler-oracle`\n   - `prepare-evk-market`\n   - `prepare-evk-deployment`\n   - `deploy-evk-market`\n   - the bundled `scripts/evk_live_borrow_proof.js` executor for the post-deploy proof step when requested\n6. Stop and report honestly if:\n   - feed funding is `unsupported`\n   - the browser-assisted funding UI is not reachable or cannot be automated safely\n   - the oracle path is still skeleton-only\n   - the EVK market path is still skeleton-only\n7. Prefer dry-run first for exact onchain funding and deployment paths.\n8. For `browser-assisted` funding, prefer browser automation over asking the user to click through manually when the UI is reachable.\n9. Only use real send when the user explicitly wants it and the guarded acknowledgement contract is present.\n10. Keep the path generic across supported pairs.\n   - do not special-case only previously tested collateral/borrow combinations\n   - use the same resolution, funding, deployment, and proof rules for whichever supported assets are selected\n11. Do not claim a market is borrowable just because deployment succeeded. A live or at least previewed post-deploy proof step is required for that claim.\n\n## Built-in post-deploy borrow proof\nTreat the published skill as a complete artifact: it includes the proof executor it tells the agent to run.\n\nBundled executor path:\n- `scripts/evk_live_borrow_proof.js`\n\nBundled planner data path:\n- `data/part2/`\n\nUse the bundled planner data as the local default input set for this published skill. If the operator supplies fresher live RPC results or explicit `--registry-file` / `--feed-status-file` overrides, prefer those fresher inputs instead of pretending the packaged snapshots are always current.\n\nHandoff contract:\n1. generate `borrow-proof-config.json`\n2. verify the bundled executor path exists in the installed skill\n3. run preview first with `node ./scripts/evk_live_borrow_proof.js --config <path>`\n4. rerun with `--live` only when the user explicitly wants the canary\n\nThe bundled executor supports:\n- preview mode with a read-only account address\n- live mode with a signer loaded from an environment variable\n- optional debt repayment before the new proof\n- optional single-hop Uniswap V3 style swaps to source repay or collateral assets\n- collateral deposit into the target EVK vault\n- disabling stale collateral vaults in EVC\n- disabling stale controllers in EVC\n- enabling the target collateral and optionally the target controller\n- final tiny borrow and before or after logging\n\nKeep the proof honest:\n- distinguish mixed-collateral borrow from isolated target-collateral borrow\n- preserve the exact funding branch that led here\n- verify quoteability, LTV wiring, EVC state, and vault cash before a live canary\n- if the chain does not use a Uniswap V3 compatible router, replace or bypass the bundled swap step explicitly\n- require nonzero `amountOutMinimum` for live swaps\n- keep approval scope exact unless the operator explicitly opts into `approvalPolicy.mode = \"unlimited\"`\n\n## Current happy-path rule\nThe currently supported end-to-end EVK path requires:\n- feeds that are already live, or a feed that can be activated through the current narrow exact `buySubscription(...)` path\n- a cleanly resolved oracle path for the selected assets\n- top-level `prepare-evk-deployment.vaultContext`\n  - `factoryAddress`\n  - `assetAddress`\n- guarded send fields on the funding and deployment executor requests\n\nWithout that `vaultContext`, the first EVK market transaction remains skeleton-only and `readyToBroadcast` must stay false.\nWithout a supported exact buy-subscription path, feed funding must stay at handoff or prep only.\n\n## Output expectations\nWhen using this skill, always report:\n- `status.phaseReached` when the top-level runner is used\n- `status.state` when the top-level runner is used\n- `status.recipeId` when the top-level runner is used\n- what is executable vs still skeleton-only\n- blockers and warnings\n- `fundingExecutionClassification.state` when feed funding is involved manually\n- `status.fundingExecutionState` when the top-level runner is used\n- whether the current state is:\n  - plan-only\n  - feed-ready but awaiting activation or funding handoff\n  - funding dry-run ready\n  - browser-assisted funding ready\n  - oracle-executable\n  - EVK dry-run ready\n  - real-send ready\n  - deployed but borrow-proof pending\n  - live borrow proven\n\nIf the user asked for borrowability proof, also report whether the workflow has already reached the post-deploy proof step or is still waiting on proof inputs.\n\nIf the top-level runner is used, also surface the executable flags under `status.executable` instead of paraphrasing them away.\n\n## Tone\nBe blunt about current limits.\nDo not overclaim support beyond the routes the planner can actually resolve.\nDo not blur deployment success into borrowability proof.\nIf the workflow falls off the happy path, say exactly where and why.\n\nFile v0.1.14:README.md\n\n# Agentic Lending EVK\n\nExecution-capable EVK skill bundle for Api3-backed lending workflows.\n\n## Install + first command\n\n```bash\nnpm install <this-package>\npart2-planner run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nIf you want a top-level entrypoint instead:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nThis published skill now carries its own runnable EVK execution surface instead of depending on a separate repo checkout for the planner runtime and core planning artifacts.\n\n## Bundled contents\n\n- packaged skill instructions in `SKILL.md`\n- bundled live borrow proof executor in `scripts/evk_live_borrow_proof.js`\n- local CLI entrypoint in `scripts/bin/agentic-lending-evk.js`\n- bundled EVK planner runtime in `scripts/lib/`\n- bundled planning data under `data/part2/`\n  - `evk-addresses.api3-supported-overlap.json`\n  - `feed-status.json`\n  - `market-registry.json`\n  - required contract artifacts for the current EVK path\n\n## Published CLI commands\n\nAfter installing this package, the published executables are:\n\n- `agentic-lending-evk`\n- `api3-feed-manager`\n- `part2-planner`\n\n## Quick examples\n\nTop-level EVK workflow planning:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./request.json\n```\n\nFeed discovery or readiness work:\n\n```bash\napi3-feed-manager resolve --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\napi3-feed-manager ensure-active --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\n```\n\nLower-level planner entrypoint:\n\n```bash\npart2-planner plan-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\npart2-planner prepare-evk-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\n## Cold-install expectations\n\n- Node.js `>=20`\n- start from `references/example-request.json` and replace placeholder values or planning inputs as needed\n- provide a live RPC URL for on-chain checks or transaction-oriented flows\n- provide signer material only for explicitly user-approved send paths\n- treat bundled planner snapshots as local packaged fallback inputs, not fresh chain truth\n\n## Runtime note\n\nThe bundled `feed-status.json` and `market-registry.json` are packaged snapshots for local planning fallback, not global truth.\n\nWhen live RPC or fresher operator-managed data is available, prefer that newer state over the bundled snapshot.\n\nFile v0.1.14:_meta.json\n\n{\n  \"ownerId\": \"kn79961pqqa20q5jwn60zjkxzs84yc3w\",\n  \"slug\": \"agentic-lending-evk\",\n  \"version\": \"0.1.14\",\n  \"publishedAt\": 1779209039925\n}\n\nFile v0.1.14:references/api_reference.md\n\n# Agentic Lending EVK workflow reference\n\nThis skill wraps the bundled EVK-first planner workflow, then extends it into a post-deploy borrow proof step.\n\nThe important abstraction is the path, not the prior canaries:\n1. normalize the selected collateral and borrow assets\n2. resolve the oracle route for those assets\n3. ensure or fund feeds on the deployable path\n4. prepare and deploy the EVK market\n5. prove borrowability separately when requested\n\n## Command order\n\nPrefer the workflow in this order unless the user only asked for a subset:\n\n### Preferred top-level entrypoint\n1. `run-evk-workflow`\n   - use this when the user wants one input and one status or result object for the current EVK-first path\n   - the response shape is:\n     - `status`\n       - `phaseReached`\n       - `state`\n       - `recipeId`\n       - `deployable`\n       - `fundingExecutionState`\n       - `executable`\n       - `blockers`\n       - `warnings`\n     - `result`\n       - `planMarket`\n       - `ensureFeeds`\n       - `feedFunding`\n       - `prepareEulerOracle`\n       - `prepareEvkMarket`\n       - `prepareEvkDeployment`\n       - `deployEvkMarket`\n   - if the user wants proof of borrowability after deployment, treat that as the next workflow step inside this same skill\n\n### Manual staged order\n1. `plan-market`\n2. verify the route chosen for the selected assets\n   - prefer an exact direct route when available\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. `ensure-feeds`\n4. if funding is needed and `fundingExecutionClassification.state === \"executable\"`:\n   - `purchase-inputs`\n   - `prepare-contract-call` or `prepare-buy-subscription`\n   - `execute-buy-subscription`\n   - `ensure-feeds` or `ensure-active` again\n5. if funding is needed and `fundingExecutionClassification.state === \"browser-assisted\"`:\n   - `browser-plan`\n   - execute that plan with the browser tool\n   - `ensure-feeds` or `ensure-active` again\n6. `prepare-euler-oracle`\n7. `prepare-evk-market`\n8. `prepare-evk-deployment`\n9. `deploy-evk-market`\n10. if the market was deployed and the user wants proof that it can really borrow against the intended collateral path:\n   - build a proof config with chain RPC, borrow vault, target collateral vault, EVC address, token decimals, tiny borrow amount, and any stale controller or collateral cleanup\n   - verify the bundled executor exists at `scripts/evk_live_borrow_proof.js`\n   - run `node ./scripts/evk_live_borrow_proof.js --config <path>` first\n   - rerun with `--live` only if the user wants the canary\n   - for live mode, require the config's guarded live-send acknowledgement field to match the script's required phrase, and require the configured account address to match the signer address\n\n## Practical command shapes\n\n```bash\nnode ./bin/part2-planner.js run-evk-workflow --input-file ./request.run-evk-workflow.json\nnode ./bin/part2-planner.js plan-market --input-file ./request.plan-market.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/api3-feed-manager.js purchase-inputs --input-file ./request.purchase-inputs.json\nnode ./bin/api3-feed-manager.js prepare-buy-subscription --input-file ./request.prepare-buy-subscription.json\nnode ./bin/api3-feed-manager.js execute-buy-subscription --input-file ./request.execute-buy-subscription.json\nnode ./bin/api3-feed-manager.js browser-plan --input-file ./request.browser-plan.json\nnode ./bin/part2-planner.js ensure-feeds --input-file ./request.ensure-feeds.json\nnode ./bin/part2-planner.js prepare-euler-oracle --input-file ./request.prepare-euler-oracle.json\nnode ./bin/part2-planner.js prepare-evk-market --input-file ./request.prepare-evk-market.json\nnode ./bin/part2-planner.js prepare-evk-deployment --input-file ./request.prepare-evk-deployment.json\nnode ./bin/part2-planner.js deploy-evk-market --input-file ./request.deploy-evk-market.json\nnode ./scripts/evk_live_borrow_proof.js --config ./borrow-proof-config.json\n```\n\n## Top-level runner request shape\n\nMinimal shape:\n\n```json\n{\n  \"chain\": { \"name\": \"arbitrum\", \"chainId\": 42161 },\n  \"collateralAssets\": [\n    { \"symbol\": \"WETH\", \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\" }\n  ],\n  \"borrowAssets\": [\n    { \"symbol\": \"USDC\", \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\" }\n  ],\n  \"riskPreset\": \"eth-major\"\n}\n```\n\nUseful optional fields:\n- `recipeId`\n- `rpcPreference`\n- `feedFunding`\n- `allowCustomFallback`\n- `preferInfrequentOracle`\n- `publishToRegistry`\n- `vaultContext`\n- `executionProfile`\n- `broadcast`\n- `send`\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\n## Minimum required inputs for a cold start\nBefore attempting the full combined workflow, confirm you have:\n- `chain.name` and `chain.chainId`\n- at least one collateral asset and one borrow asset\n- `riskPreset` or `recipeId`\n- whether the user wants planning only, dry-run, or real send\n- whether the user wants post-deploy borrow proof\n- live RPC access if any non-simulated step is expected\n- signer or executor details for live funding, deployment, or proof\n- `vaultContext` when the market deployment path requires concrete factory or asset addresses\n\nIf post-deploy proof is required, also gather:\n- target collateral vault address for the proof\n- EVC address\n- a tiny borrow amount\n- any stale collaterals or controllers that must be disabled for an isolated proof\n- swap venue details only if the wallet must source repay or collateral assets first\n\n## Canonical end-to-end example\nUse this exact mental model for a cold-start request:\n1. run `run-evk-workflow` with chain, assets, and recipe intent\n2. inspect `status.state`, `status.phaseReached`, and `status.executable`\n3. make sure the resolved route for the selected assets is acceptable\n4. if feed funding is needed:\n   - branch on `fundingExecutionClassification.state`\n   - execute direct or wrapper funding when `executable`\n   - execute `browser-plan` plus browser automation when `browser-assisted`\n   - re-run feed readiness after funding\n5. continue through oracle prep, EVK market prep, and deployment\n6. if the user asked for borrow proof:\n   - build a borrow-proof config from the deployment outputs plus proof-specific inputs\n   - run preview mode first with `node scripts/evk_live_borrow_proof.js --config <path>`\n   - only rerun with `--live` if the user wants the canary sent\n7. report deployment and borrowability as separate outcomes\n\nUse the staged commands directly only when you need narrower control than the top-level runner provides.\n\n## Generalization rule\nTreat the EVK planner path as asset-ag\n\nArchive v0.1.13: 33 files, 103733 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (1139b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.bytecode.txt (2884b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (5707b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.bytecode.txt (6011b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (4247b), data/part2/contract-artifacts/ChainlinkOracle.bytecode.txt (6914b), data/part2/contract-artifacts/ChainlinkOracle.json (4209b), data/part2/contract-artifacts/CrossAdapter.bytecode.txt (4620b), data/part2/contract-artifacts/CrossAdapter.json (3967b), data/part2/contract-artifacts/EulerRouter.bytecode.txt (7835b), data/part2/contract-artifacts/EulerRouter.json (8428b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (11593b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5076b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (116693b), scripts/lib/part2-chain-bootstrap.js (4049b), scripts/lib/part2-planner.js (191385b), scripts/lib/part2-recipes.js (1330b), SKILL.md (11896b), _meta.json (139b)\n\nArchive v0.1.12: 28 files, 101675 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (940b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (8561b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (10176b), data/part2/contract-artifacts/ChainlinkOracle.json (11027b), data/part2/contract-artifacts/CrossAdapter.json (8529b), data/part2/contract-artifacts/EulerRouter.json (16152b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (11593b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5076b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (116674b), scripts/lib/part2-chain-bootstrap.js (4030b), scripts/lib/part2-planner.js (190956b), scripts/lib/part2-recipes.js (1330b), SKILL.md (11896b), _meta.json (139b)\n\nArchive v0.1.11: 28 files, 101609 bytes\n\nFiles: assets/example_asset.txt (577b), CHANGELOG.md (776b), data/part2/contract-artifacts/Api3PartialAggregatorV2V3Interface.json (8561b), data/part2/contract-artifacts/ChainlinkInfrequentOracle.json (10176b), data/part2/contract-artifacts/ChainlinkOracle.json (11027b), data/part2/contract-artifacts/CrossAdapter.json (8529b), data/part2/contract-artifacts/EulerRouter.json (16152b), data/part2/contract-artifacts/GenericFactory.json (866b), data/part2/evk-addresses.api3-supported-overlap.json (6720b), data/part2/feed-status.json (1947b), data/part2/market-registry.json (1824b), package.json (1138b), README.md (2533b), references/api_reference.md (11593b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5076b), references/example-request.json (724b), references/live-borrow-checklist.md (5313b), scripts/bin/agentic-lending-evk.js (166b), scripts/bin/api3-feed-manager.js (170b), scripts/bin/part2-planner.js (166b), scripts/evk_live_borrow_proof.js (17420b), scripts/lib/api3-feed-manager.js (116662b), scripts/lib/part2-chain-bootstrap.js (4030b), scripts/lib/part2-planner.js (190956b), scripts/lib/part2-recipes.js (1330b), SKILL.md (11896b), _meta.json (139b)\n\nArchive v0.1.10: 7 files, 14842 bytes\n\nFiles: assets/example_asset.txt (577b), references/api_reference.md (11559b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5040b), references/live-borrow-checklist.md (5298b), SKILL.md (11416b), _meta.json (139b)\n\nArchive v0.1.9: 8 files, 19617 bytes\n\nFiles: assets/example_asset.txt (577b), references/api_reference.md (11782b), references/arbitrum-eusdc1-isolated-example.json (2499b), references/current_capabilities.md (5040b), references/live-borrow-checklist.md (5660b), scripts/evk_live_borrow_proof.js (18305b), SKILL.md (11021b), _meta.json (138b)\n\nArchive v0.1.8: 8 files, 22099 bytes\n\nFiles: assets/example_asset.txt (1560b), references/api_reference.md (12472b), references/arbitrum-eusdc1-isolated-example.json (3454b), references/current_capabilities.md (5996b), references/live-borrow-checklist.md (5927b), scripts/evk_live_borrow_proof.js (18411b), SKILL.md (11288b), _meta.json (138b)\n\nArchive v0.1.7: 7 files, 14635 bytes\n\nFiles: assets/example_asset.txt (577b), references/api_reference.md (11559b), references/arbitrum-eusdc1-isolated-example.json (2443b), references/current_capabilities.md (5040b), references/live-borrow-checklist.md (5298b), SKILL.md (10881b), _meta.json (138b)","readmeExcerpt":"Skill: Agentic Lending Evk Owner: daav3 Summary: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selec... Tags: latest:0.1.16 Version history: v0.1.16 | 2026-06-11T14:29:51.035Z | user Remove packaged raw send.privateKey placeholder from live request template; switch to signerEnvName and re-audit related ClawHub sk","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"artifacts\": {\n    \"enabled\": true,\n    \"label\": \"evk-live-run\"\n  }\n}"},{"language":"bash","snippet":"npm install <this-package>\npart2-planner run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json"},{"language":"bash","snippet":"agentic-lending-evk run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json"},{"language":"bash","snippet":"agentic-lending-evk run-evk-workflow --input-file ./request.json"},{"language":"bash","snippet":"api3-feed-manager resolve --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\napi3-feed-manager ensure-active --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc"},{"language":"bash","snippet":"part2-planner plan-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\npart2-planner prepare-evk-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: agentic-lending-evk\ndescription: Plan and execute the current EVK-first agentic lending workflow for Api3-backed markets. Use when a user wants an agent to resolve the oracle route for selected collateral and borrow assets, discover or fund the required Api3 feeds, including browser-assisted Api3 Market funding when needed, prepare the Euler oracle path, assemble and deploy the EVK lending market, and then prove real borrowability with a post-deploy canary borrow against the intended collateral path. This variant can reach real onchain writes, including feed funding, market deployment, approvals, swaps, and borrow canaries when explicitly allowed. Default to plan, simulation, or preview mode first, and only use live signer-backed execution when the user explicitly asks for it. Do not use for Morpho, unsupported recipes, or unsupported oracle/deployment routes.\nmetadata:\n  clawdis:\n    homepage: https://github.com/daav3/agentic-lending-project\n    author: daav3\n    requires:\n      bins:\n        - node\n      env:\n        - LIVE_SIGNER_ENV\n      config:\n        - request.run-evk-workflow.json\n        - borrow-proof-config.json\n    primaryEnv: LIVE_SIGNER_ENV\n---\n\n# Agentic Lending EVK\n\nThis is the execution-capable EVK workflow skill.\n\nIt turns the bundled EVK planner primitives into one agent-facing workflow, from route resolution and feed readiness through deployment and live borrow proof.\n\nWhen the supported path is available and the user explicitly asks for it, this variant can send real transactions and should be treated as a guarded execution skill rather than a planning-only helper.\n\n## Golden path for normal use\nUse one request file and one wrapper command. Do not drop into lower-level commands unless debugging, intervention, or proof-specific follow-up is required.\n\n1. Create `request.json` with exact `collateralAssets`, exact `borrowAssets`, chain, risk intent, feed-funding intent, and EVK deployment intent.\n   - For a live-shaped starting point, copy `references/live-request-template.json` and replace every placeholder before use.\n2. Preflight before any live-capable EVK execution:\n\n   `agentic-lending-evk preflight-evk-workflow --input-file ./request.json --format json`\n\n   Stop unless `safeToRun === true`.\n3. Run:\n\n   `agentic-lending-evk run-evk-workflow --input-file ./request.json --format json`\n\n4. If the run was persisted, inspect or recover it with:\n   - `agentic-lending-evk explain-next --run-dir <run-dir> --format json`\n   - `agentic-lending-evk verify-evk-deployment-handoff --run-dir <run-dir> --format json`\n   - `agentic-lending-evk run-evk-workflow --resume-from-run-dir <run-dir> --input-file <run-dir>/request.json --format json`\n5. If the user asked for borrowability proof, continue with the bundled proof executor only after the deployment bundle is reviewed.\n6. Report full deployment success only from persisted artifacts and exact status fields, not from narrative text.\n\n## Safety expectations\n- default to planning"},{"path":"README.md","content":"# Agentic Lending EVK\n\nExecution-capable EVK skill bundle for Api3-backed lending workflows.\n\n## Install + first command\n\n```bash\nnpm install <this-package>\npart2-planner run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nIf you want a top-level entrypoint instead:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\nThis published skill now carries its own runnable EVK execution surface instead of depending on a separate repo checkout for the planner runtime and core planning artifacts.\n\n## Bundled contents\n\n- packaged skill instructions in `SKILL.md`\n- bundled live borrow proof executor in `scripts/evk_live_borrow_proof.js`\n- local CLI entrypoint in `scripts/bin/agentic-lending-evk.js`\n- bundled EVK planner runtime in `scripts/lib/`\n- bundled planning data under `data/part2/`\n  - `evk-addresses.api3-supported-overlap.json`\n  - `feed-status.json`\n  - `market-registry.json`\n  - required contract artifacts for the current EVK path\n\n## Published CLI commands\n\nAfter installing this package, the published executables are:\n\n- `agentic-lending-evk`\n- `api3-feed-manager`\n- `part2-planner`\n\n## Quick examples\n\nTop-level EVK workflow planning:\n\n```bash\nagentic-lending-evk run-evk-workflow --input-file ./request.json\n```\n\nFeed discovery or readiness work:\n\n```bash\napi3-feed-manager resolve --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\napi3-feed-manager ensure-active --dapi-name ETH/USD --chain arbitrum --rpc-url https://arb1.arbitrum.io/rpc\n```\n\nLower-level planner entrypoint:\n\n```bash\npart2-planner plan-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\npart2-planner prepare-evk-market --input-file ./node_modules/agentic-lending-evk/references/example-request.json\n```\n\n## Cold-install expectations\n\n- Node.js `>=20`\n- start from `references/example-request.json` and replace placeholder values or planning inputs as needed\n- provide a live RPC URL for on-chain checks or transaction-oriented flows\n- provide signer material only for explicitly user-approved send paths\n- treat bundled planner snapshots as local packaged fallback inputs, not fresh chain truth\n\n## Runtime note\n\nThe bundled `feed-status.json` and `market-registry.json` are packaged snapshots for local planning fallback, not global truth.\n\nWhen live RPC or fresher operator-managed data is available, prefer that newer state over the bundled snapshot."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79961pqqa20q5jwn60zjkxzs84yc3w\",\n  \"slug\": \"agentic-lending-evk\",\n  \"version\": \"0.1.16\",\n  \"publishedAt\": 1781188191035\n}"},{"path":"references/api_reference.md","content":"# Agentic Lending EVK workflow reference\n\nThis skill wraps the bundled EVK-first planner workflow, then extends it into a post-deploy borrow proof step.\n\nThe important abstraction is the path, not the prior canaries:\n1. normalize the selected collateral and borrow assets\n2. resolve the oracle route for those assets\n3. ensure or fund feeds on the deployable path\n4. prepare and deploy the EVK market\n5. prove borrowability separately when requested\n\n## Command order\n\nPrefer the workflow in this order unless the user only asked for a subset:\n\n### Safety gate before live-capable use\n1. `preflight-evk-workflow`\n   - use this before any request that might become `broadcast-ready`, `real-send`, or signer-backed feed funding\n   - it returns:\n     - `safeToRun`\n     - `liveTxRequested`\n     - `liveTxAllowed`\n     - `placeholderSafe`\n     - `preview.status`\n     - `blockers`\n     - `warnings`\n\n### Preferred top-level entrypoint\n2. `run-evk-workflow`\n   - use this when the user wants one input and one status or result object for the current EVK-first path\n   - the response shape is:\n     - `status`\n       - `phaseReached`\n       - `state`\n       - `recipeId`\n       - `deployable`\n       - `fundingExecutionState`\n       - `executable`\n       - `blockers`\n       - `warnings`\n     - `result`\n       - `planMarket`\n       - `ensureFeeds`\n       - `feedFunding`\n       - `prepareEulerOracle`\n       - `prepareEvkMarket`\n       - `prepareEvkDeployment`\n       - `deployEvkMarket`\n       - `artifactPersistence`\n   - if `artifacts.enabled === true`, the persisted run bundle also includes `summary.json`, `agent-decision.json`, and `rollback-plan.json`\n   - if the user wants proof of borrowability after deployment, treat that as the next workflow step inside this same skill\n\n### Persisted-run helper commands\n3. `explain-next`\n   - use this with `--run-dir` to recover the model-friendly state of a persisted run\n   - read it first when resuming or handing off a stored EVK run\n4. `verify-evk-deployment-handoff`\n   - use this with `--run-dir` before claiming the persisted run is deployment-complete or ready for proof follow-up\n5. `run-evk-workflow --resume-from-run-dir <dir>`\n   - use this to reopen a known run directory instead of reconstructing state from memory\n\n### Manual staged order\n1. `plan-market`\n2. verify the route chosen for the selected assets\n   - prefer an exact direct route when available\n   - otherwise use a supported composed route when the planner can prove it cleanly\n   - prefer literal exact feed-name matches before alias-normalized fallback matches\n3. `ensure-feeds`\n4. if funding is needed and `fundingExecutionClassification.state === \"executable\"`:\n   - `purchase-inputs`\n   - `prepare-contract-call` or `prepare-buy-subscription`\n   - `execute-buy-subscription`\n   - `ensure-feeds` or `ensure-active` again\n5. if funding is needed and `fundingExecutionClassification.state === \"browser-assisted\"`:\n   - `browser-plan`\n   - execute that plan with the browser t"},{"path":"references/arbitrum-eusdc1-isolated-example.json","content":"{\n  \"chainLabel\": \"arbitrum\",\n  \"rpcUrl\": \"https://arb1.arbitrum.io/rpc\",\n  \"accountAddress\": \"0x000000000000000000000000000000000000dEaD\",\n  \"signerEnvName\": \"LIVE_SIGNER_ENV\",\n  \"operatorAck\": \"SET_REQUIRED_LIVE_SEND_ACKNOWLEDGEMENT_PHRASE\",\n  \"tokens\": {\n    \"wrappedNative\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"borrowAsset\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"collateralAsset\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    }\n  },\n  \"vaults\": {\n    \"borrowVault\": {\n      \"label\": \"eWETH-11\",\n      \"address\": \"0x9dB604761a4664002629873f5985386904C3D5Fe\"\n    },\n    \"collateralVault\": {\n      \"label\": \"eUSDC-1\",\n      \"address\": \"0x0a1eCC5Fe8C9be3C809844fcBe615B46A869b899\"\n    },\n    \"disableCollateral\": [\n      {\n        \"label\": \"eWETH-1\",\n        \"address\": \"0x78E3E051D32157AACD550fBB78458762d8f7edFF\"\n      }\n    ]\n  },\n  \"evc\": {\n    \"address\": \"0x6302ef0F34100CDDFb5489fbcB6eE1AA95CD1066\",\n    \"enableController\": false,\n    \"controllersToDisable\": []\n  },\n  \"actions\": {\n    \"repayExistingDebt\": true,\n    \"depositFullCollateralBalance\": true,\n    \"borrowAmount\": \"0.00005\"\n  },\n  \"repayTopUp\": {\n    \"enabled\": true,\n    \"mode\": \"wrap-native\",\n    \"amount\": \"0.0002\"\n  },\n  \"repaySwap\": {\n    \"enabled\": false,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0\"\n  },\n  \"collateralSwap\": {\n    \"enabled\": true,\n    \"routerAddress\": \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\",\n    \"tokenIn\": {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      \"decimals\": 18,\n      \"isWrappedNative\": true\n    },\n    \"tokenOut\": {\n      \"symbol\": \"USDC\",\n      \"address\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      \"decimals\": 6\n    },\n    \"fee\": 100,\n    \"amountIn\": \"0.0015\",\n    \"amountOutMinimum\": \"0\",\n    \"wrapNativeAmount\": \"0.0015\"\n  }\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1735,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:18:20.835Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:50:57.831Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}