This is the execution-capable EVK workflow skill.
It turns the bundled EVK planner primitives into one agent-facing workflow, from route resolution and feed readiness through deployment and live borrow proof.
When 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.
Use one request file and one wrapper command. Do not drop into lower-level commands unless debugging, intervention, or proof-specific follow-up is required.
Create request.json with exact collateralAssets, exact borrowAssets, chain, risk intent, feed-funding intent, and EVK deployment intent.
references/live-request-template.json and replace every placeholder before use.Preflight before any live-capable EVK execution:
agentic-lending-evk preflight-evk-workflow --input-file ./request.json --format json
Stop unless safeToRun === true.
Run:
agentic-lending-evk run-evk-workflow --input-file ./request.json --format json
If the run was persisted, inspect or recover it with:
agentic-lending-evk explain-next --run-dir <run-dir> --format jsonagentic-lending-evk verify-evk-deployment-handoff --run-dir <run-dir> --format jsonagentic-lending-evk run-evk-workflow --resume-from-run-dir <run-dir> --input-file <run-dir>/request.json --format jsonIf the user asked for borrowability proof, continue with the bundled proof executor only after the deployment bundle is reviewed.
Report full deployment success only from persisted artifacts and exact status fields, not from narrative text.
--live and the config's guarded live-send acknowledgement field to match the script's required phrasereferences/api_reference.mdreferences/current_capabilities.mdreferences/summary-contract.md before claiming deployment success from wrapper outputreferences/live-borrow-checklist.md when the workflow reaches post-deploy proofreferences/arbitrum-eusdc1-isolated-example.json when a concrete proof config shape helpsscripts/evk_live_borrow_proof.jsdata/part2/feed-status.json and data/part2/market-registry.json as packaged local snapshots, not authoritative shared stateGather these before you assume the full combined workflow is feasible:
vaultContext when the deployment path needs concrete factory or asset wiringFor a full live end-to-end run, also confirm:
fundingExecutionClassification.state may be browser-assistedIf any of those are missing, stop and ask instead of improvising.
Normalize the request into:
Resolve the oracle path for the selected assets before treating deployment as executable.
Prefer preflight-evk-workflow, then run-evk-workflow, as the default end-to-end entrypoints when the user wants the full EVK path.
preflight-evk-workflow is the live-safety gate for placeholder detection, preview status, and blocker surfacingrecipeId explicitly when known, otherwise let the runner infer from the current EVK recipe catalogstatus as the canonical summary objectresult as the detailed staged artifact bundleartifacts.enabled whenever the run may need review, handoff, or a durable success claimagent-decision.json, summary.json, and rollback-plan.json over ad-hoc interpretationexplain-next for operator guidance, verify-evk-deployment-handoff for deployment-complete handoff checks, and --resume-from-run-dir when continuing a known runIf deployment succeeds and the user wants proof of actual borrowability, continue within this skill to the built-in post-deploy proof step.
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.
plan-market
ensure-feeds
if feeds are live, continue to the oracle and EVK planner path
if funding is needed, inspect purchase-inputs or prepare-buy-subscription output and branch on fundingExecutionClassification.state
if fundingExecutionClassification.state === "executable":
purchase-inputsprepare-contract-call or prepare-buy-subscriptionexecute-buy-subscriptionensure-feeds or ensure-active again to confirm the feed is now liveif fundingExecutionClassification.state === "browser-assisted":
browser-planensure-feeds or ensure-active after the browser flowif fundingExecutionClassification.state === "unsupported", stop and report unsupported status clearly
prepare-euler-oracle
prepare-evk-market
prepare-evk-deployment
deploy-evk-market
the bundled scripts/evk_live_borrow_proof.js executor for the post-deploy proof step when requested
Stop and report honestly if:
unsupportedPrefer dry-run first for exact onchain funding and deployment paths.
For browser-assisted funding, prefer browser automation over asking the user to click through manually when the UI is reachable.
Only use real send when the user explicitly wants it and the guarded acknowledgement contract is present.
Keep the path generic across supported pairs.
Treat the published skill as a complete artifact: it includes the proof executor it tells the agent to run.
Bundled executor path:
scripts/evk_live_borrow_proof.jsBundled planner data path:
data/part2/Use 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.
Before a live-capable run, enable artifact persistence so the deployment and proof handoff do not depend on memory alone:
json
{
"artifacts": {
"enabled": true,
"label": "evk-live-run"
}
}
Handoff contract:
borrow-proof-config.jsonnode ./scripts/evk_live_borrow_proof.js --config <path>--live only when the user explicitly wants the canaryThe bundled executor supports:
Keep the proof honest:
amountOutMinimum for live swapsapprovalPolicy.mode = "unlimited"The currently supported end-to-end EVK path requires:
buySubscription(...) pathprepare-evk-deployment.vaultContext
factoryAddressassetAddressWithout that vaultContext, the first EVK market transaction remains skeleton-only and readyToBroadcast must stay false.
Without a supported exact buy-subscription path, feed funding must stay at handoff or prep only.
When using this skill, always report:
preflight-evk-workflow.safeToRun passed before any live-capable requeststatus.phaseReached when the top-level runner is usedstatus.state when the top-level runner is usedstatus.recipeId when the top-level runner is usedfundingExecutionClassification.state when feed funding is involved manuallystatus.fundingExecutionState when the top-level runner is usedresult.artifactPersistence.bundleDir when artifacts were enabledIf 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.
If the top-level runner is used, also surface the executable flags under status.executable instead of paraphrasing them away.
Do not claim final deployment success unless the wrapper artifacts support it. Read references/summary-contract.md and require at minimum:
status.json and response.jsonsummary.json, agent-decision.json, and rollback-plan.jsonstatus.state === "real-send ready" only for readiness, not successdeploy-evk-market.json showing the intended deploy plan or live send resultverify-evk-deployment-handoff passing when the run is being handed off as deployment-completeBe blunt about current limits. Do not overclaim support beyond the routes the planner can actually resolve. Do not blur deployment success into borrowability proof. If the workflow falls off the happy path, say exactly where and why.