{"id":"972dd156-b863-44e7-944f-9072a6d59d22","entityType":"agent","slug":"clawhub-api3dao-morpho-market-creation","name":"morpho-market-creation","canonicalUrl":"https://www.xpersona.co/agent/clawhub-api3dao-morpho-market-creation","canonicalPath":"/agent/clawhub-api3dao-morpho-market-creation","generatedAt":"2026-10-11T01:45:56.367Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T23:26:50.094Z","emptyReason":null},"description":"Deploys Morpho markets backed by Api3 oracles. Skill: morpho-market-creation Owner: api3dao Summary: Deploys Morpho markets backed by Api3 oracles. Tags: latest:0.6.0 Version history: v0.6.0 | 2026-08-03T13:35:56.316Z | auto morpho-market-creation 0.6.0 - Removed obsolete skill-card.md file. - Minor updates to SKILL.md; no changes to workflow or command logic. - No user-facing features or workflow updates in this release. v0.5.0 | 2026-07-29T14:34:59.812Z | auto","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17fpem9ms79vcs99cb3mps27x8bd7p6:morpho-market-creation","sourceUrl":"https://clawhub.ai/api3dao/morpho-market-creation","homepage":"https://clawhub.ai/api3dao/skills/morpho-market-creation","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/api3dao/morpho-market-creation","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/api3dao/skills/morpho-market-creation","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Deploys Morpho markets backed by Api3 oracles. Skill: morpho-market-creation Owner: api3dao Summary: Deploys Morpho markets backed by Api3 oracles. Tags: latest"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:26:50.094Z","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-10T23:26:50.094Z","emptyReason":null},"stars":null,"forks":null,"downloads":1230,"packageName":null,"latestVersion":"0.6.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:26:50.087Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T23:26:50.094Z","lastCrawledAt":"2026-10-10T23:26:50.087Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T23:26:50.088Z","lastVerifiedAt":null,"highlights":[{"version":"0.6.0","createdAt":"2026-08-03T13:35:56.316Z","changelog":"morpho-market-creation 0.6.0 - Removed obsolete skill-card.md file. - Minor updates to SKILL.md; no changes to workflow or command logic. - No user-facing features or workflow updates in this release.","fileCount":16,"zipByteSize":11969},{"version":"0.5.0","createdAt":"2026-07-29T14:34:59.812Z","changelog":"## morpho-market-creation v0.5.0 - Removed the `skill-card.md` file for improved clarity and reduced redundancy. - Updated `SKILL.md` with no user-facing process changes, but reflecting version bump to 0.5.0 and maintaining a consistent documentation structure. - Kept the core step-by-step assisted Morpho market deployment workflow unchanged.","fileCount":16,"zipByteSize":11973},{"version":"0.4.1","createdAt":"2026-07-28T15:04:56.349Z","changelog":"Version 0.4.1 - Removed the unused _meta.json file from the skill package. - Updated SKILL.md; no functional changes to user workflows, rules, or phases. - Internal cleanup for improved maintainability.","fileCount":16,"zipByteSize":11920},{"version":"0.4.0","createdAt":"2026-07-28T14:56:10.017Z","changelog":"Version 0.4.0 - Updated skill metadata version from 0.4.1 to 0.4.0. - Added the new _meta.json metadata file. - Removed the skill-card.md file. - SKILL.md content and workflow remain unchanged.","fileCount":16,"zipByteSize":11860},{"version":"0.3.2","createdAt":"2026-07-28T14:50:31.577Z","changelog":"## morpho-market-creation v0.3.2 changelog - Removed skill-card.md file. - Updated metadata and dependencies in _meta.json and package.json. - No user-facing functional changes; this is a minor maintenance release.","fileCount":16,"zipByteSize":11933},{"version":"0.3.1","createdAt":"2026-07-28T14:49:31.012Z","changelog":"## morpho-market-creation 0.3.1 Changelog - Update: Modified `package.json`. No logic or behavior changes to skill flow or user interaction. - No impact to usage or user experience.","fileCount":16,"zipByteSize":11930},{"version":"0.3.0","createdAt":"2026-07-13T07:22:58.943Z","changelog":"- Added _meta.json file for skill metadata management. - Removed skill-card.md from the project. - Updated package.json to reflect dependency or metadata changes. - No changes to core skill logic or user-facing instructions.","fileCount":16,"zipByteSize":12016},{"version":"0.2.0","createdAt":"2026-07-02T18:27:26.180Z","changelog":"Updated script, polished SKILL.md","fileCount":16,"zipByteSize":11960}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17fpem9ms79vcs99cb3mps27x8bd7p6:morpho-market-creation","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-api3dao-morpho-market-creation/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/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-11T01:45:56.359Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-api3dao-morpho-market-creation/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":"high","updatedAt":"2026-10-10T23:26:50.094Z","emptyReason":null},"readme":"Skill: morpho-market-creation\n\nOwner: api3dao\n\nSummary: Deploys Morpho markets backed by Api3 oracles.\n\nTags: latest:0.6.0\n\nVersion history:\n\nv0.6.0 | 2026-08-03T13:35:56.316Z | auto\n\nmorpho-market-creation 0.6.0\n\n- Removed obsolete skill-card.md file.\n- Minor updates to SKILL.md; no changes to workflow or command logic.\n- No user-facing features or workflow updates in this release.\n\nv0.5.0 | 2026-07-29T14:34:59.812Z | auto\n\n## morpho-market-creation v0.5.0\n\n- Removed the `skill-card.md` file for improved clarity and reduced redundancy.\n- Updated `SKILL.md` with no user-facing process changes, but reflecting version bump to 0.5.0 and maintaining a consistent documentation structure.\n- Kept the core step-by-step assisted Morpho market deployment workflow unchanged.\n\nv0.4.1 | 2026-07-28T15:04:56.349Z | auto\n\nVersion 0.4.1\n\n- Removed the unused _meta.json file from the skill package.\n- Updated SKILL.md; no functional changes to user workflows, rules, or phases.\n- Internal cleanup for improved maintainability.\n\nv0.4.0 | 2026-07-28T14:56:10.017Z | auto\n\nVersion 0.4.0\n\n- Updated skill metadata version from 0.4.1 to 0.4.0.\n- Added the new _meta.json metadata file.\n- Removed the skill-card.md file.\n- SKILL.md content and workflow remain unchanged.\n\nv0.3.2 | 2026-07-28T14:50:31.577Z | auto\n\n## morpho-market-creation v0.3.2 changelog\n\n- Removed skill-card.md file.\n- Updated metadata and dependencies in _meta.json and package.json.\n- No user-facing functional changes; this is a minor maintenance release.\n\nv0.3.1 | 2026-07-28T14:49:31.012Z | auto\n\n## morpho-market-creation 0.3.1 Changelog\n\n- Update: Modified `package.json`. No logic or behavior changes to skill flow or user interaction.\n- No impact to usage or user experience.\n\nv0.3.0 | 2026-07-13T07:22:58.943Z | auto\n\n- Added _meta.json file for skill metadata management.\n- Removed skill-card.md from the project.\n- Updated package.json to reflect dependency or metadata changes.\n- No changes to core skill logic or user-facing instructions.\n\nv0.2.0 | 2026-07-02T18:27:26.180Z | user\n\nUpdated script, polished SKILL.md\n\nv0.1.0 | 2026-06-08T14:33:39.908Z | auto\n\nInitial release – guides users step-by-step to deploy Morpho Markets with API3 oracles.\n\n- Introduces a structured, interactive workflow divided into clear phases (setup, package installation, parameter collection, validation, testing, and deployment).\n- Requires user confirmation before running package installs or deploying transactions.\n- Validates user input against live data from API3 (data feeds) and supported chain lists.\n- Provides instructions and interactive checks to manually verify oracle addresses and feed activity.\n- Integrates with external tools via direct (non-markdown) URLs for oracle testing and payload generation.\n\nArchive index:\n\nArchive v0.6.0: 16 files, 11969 bytes\n\nFiles: example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2343b), SKILL.md (11748b), _meta.json (141b)\n\nFile v0.6.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.6.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.6.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.6.0\",\n  \"publishedAt\": 1785764156316\n}\n\nFile v0.6.0:skill-card.md\n\n## Description:\n\nDeploys Morpho markets backed by Api3 oracles.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[api3dao](https://clawhub.ai/user/api3dao)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and DeFi operators use this skill to configure, validate, and deploy Morpho markets backed by Api3 oracle feeds, including oracle checks and transaction execution options.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can broadcast irreversible blockchain transactions for oracle deployment and Morpho market creation.\n\nMitigation: Use Safe or Etherscan when possible, verify chain IDs, contract addresses, oracle feeds, IRM, LLTV, gas costs, and transaction targets before approving any transaction.\n\nRisk: The script execution path uses WALLET_MNEMONIC from a local environment file.\n\nMitigation: Use a dedicated low-value deployment account, never use a production seed phrase, and avoid installing dependencies after secrets are placed in the project.\n\nRisk: Incorrect token, oracle, or feed addresses can create an unusable or unsafe market.\n\nMitigation: Validate Api3ReaderProxyV1 addresses, run the Morpho Oracle Tester, and confirm token addresses are ERC-20 token contracts rather than oracle proxy addresses.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation)\n- [Api3 Market](https://market.api3.org/)\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester)\n- [Morpho Blue Addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and configuration file edits]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires pnpm, ts-node, WALLET_MNEMONIC, and completed oracle and market parameter JSON files.]\n\n## Skill Version(s):\n\n0.6.0 (source: SKILL.md metadata and server release evidence; package.json reports 1.0.0)\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\nFile v0.6.0:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.6.0:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.6.0:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.32.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.6.0:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.5.0: 16 files, 11973 bytes\n\nFiles: example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2348b), SKILL.md (11748b), _meta.json (141b)\n\nFile v0.5.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.5.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.5.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.5.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.5.0\",\n  \"publishedAt\": 1785335699812\n}\n\nFile v0.5.0:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[api3dao](https://clawhub.ai/user/api3dao) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and protocol operators use this skill to walk through validating Api3 data feeds, preparing Morpho oracle parameters, deploying or manually submitting an oracle transaction, and creating a Morpho market. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A full wallet mnemonic in a local .env file can expose all funds controlled by that seed phrase if the machine or project directory is compromised. <br>\nMitigation: Use a dedicated low-value deployment wallet or Safe/manual signing flow, avoid primary seed phrases, and remove local mnemonic material after use. <br>\nRisk: Incorrect chain, token, oracle, IRM, or LLTV values can create irreversible or high-impact on-chain transactions. <br>\nMitigation: Verify chain ID and every address against trusted sources, test on a non-production network first, and prefer Safe or Etherscan/manual review before signing. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation) <br>\n- [Api3 Market](https://market.api3.org) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, code] <br>\n**Output Format:** [Markdown guidance with command snippets, URLs, transaction details, and JSON configuration instructions] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May instruct the user to edit oracle-params.json and market-params.json and may report transaction hashes, oracle addresses, and market IDs.] <br>\n\n## Skill Version(s): <br>\n0.5.0 (source: server release metadata and SKILL.md frontmatter) <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\nFile v0.5.0:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.5.0:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.5.0:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.31.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.5.0:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.4.1: 16 files, 11920 bytes\n\nFiles: example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2331b), SKILL.md (11748b), _meta.json (141b)\n\nFile v0.4.1:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.4.1\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.4.1:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.4.1:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.4.1\",\n  \"publishedAt\": 1785251096349\n}\n\nFile v0.4.1:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[api3dao](https://clawhub.ai/user/api3dao) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and DeFi operators use this skill to validate Api3 oracle feeds, prepare Morpho oracle parameters, deploy or select an oracle, and create a Morpho market through guided steps. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can help submit live blockchain transactions using a raw wallet mnemonic. <br>\nMitigation: Use a dedicated low-value deployer wallet, never a personal or treasury seed phrase, and prefer Safe or Etherscan signing over the mnemonic script path. <br>\nRisk: Incorrect oracle or market parameters can create an unintended on-chain market. <br>\nMitigation: Review oracle-params.json and market-params.json carefully, verify Api3 feed addresses with the Morpho Oracle Tester, and confirm token contract addresses are not Api3 reader proxy addresses. <br>\nRisk: Unpinned dependencies can change behavior between installs. <br>\nMitigation: Pin dependencies before using the skill for mainnet work. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation) <br>\n- [Api3 Market](https://market.api3.org) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Guidance, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with inline shell commands and JSON configuration references] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides parameter collection, feed validation, oracle deployment choices, and Morpho market creation.] <br>\n\n## Skill Version(s): <br>\n0.4.1 (source: SKILL.md frontmatter, server release metadata) <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\nFile v0.4.1:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.4.1:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.4.1:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.30.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.4.1:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.4.0: 16 files, 11860 bytes\n\nFiles: _meta.json (141b), example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2186b), SKILL.md (11748b)\n\nFile v0.4.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.4.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.4.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.4.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.4.0\",\n  \"publishedAt\": 1785250570017\n}\n\nFile v0.4.0:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[api3dao](https://clawhub.ai/user/api3dao) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and DeFi operators use this skill to validate API3 feeds, deploy a Morpho oracle, and create a Morpho market while confirming parameters before transactions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A script-based deployment path uses WALLET_MNEMONIC and can submit irreversible on-chain transactions that spend gas. <br>\nMitigation: Use a dedicated deployment wallet with minimal funds, never use a primary wallet seed phrase, and require explicit review before any transaction is submitted. <br>\nRisk: Incorrect chain, contract address, oracle parameter, IRM, or LLTV values can deploy the wrong oracle or create an unsafe market. <br>\nMitigation: Verify every chain, token contract, oracle address, IRM, and LLTV independently before running deployment or market creation commands. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/api3dao/skills/morpho-market-creation) <br>\n- [API3 Market](https://market.api3.org) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue Addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON configuration file edits] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires pnpm, ts-node, and WALLET_MNEMONIC for script-based deployment paths.] <br>\n\n## Skill Version(s): <br>\n0.4.0 (source: release evidence, SKILL.md metadata) <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\nFile v0.4.0:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.4.0:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.4.0:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.30.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.4.0:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.3.2: 16 files, 11933 bytes\n\nFiles: _meta.json (141b), example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2363b), SKILL.md (11748b)\n\nFile v0.3.2:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.1.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.3.2:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.3.2:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.3.2\",\n  \"publishedAt\": 1785250231577\n}\n\nFile v0.3.2:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[api3dao](https://clawhub.ai/user/api3dao) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and protocol operators use this skill to validate Api3 oracle feeds, deploy a Morpho oracle, and create a Morpho market with the confirmed parameters. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can handle high-value wallet credentials and submit blockchain transactions. <br>\nMitigation: Prefer Safe, Etherscan, a hardware wallet, or a browser wallet; if scripts are used, use a dedicated low-value wallet and avoid placing valuable seed phrases in .env. <br>\nRisk: Incorrect contract addresses, oracle parameters, market parameters, chain selection, or transaction details can create unintended onchain effects. <br>\nMitigation: Review every address, parameter, chain, and transaction in an external wallet or trusted block explorer before submitting. <br>\nRisk: The security verdict is suspicious because the skill uses wallet credentials and unpinned blockchain transaction code. <br>\nMitigation: Install only after reviewing the transaction paths and dependencies. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation) <br>\n- [Api3 Market](https://market.api3.org) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, code] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON configuration updates] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires pnpm, ts-node, WALLET_MNEMONIC, and reviewed oracle and market parameter files.] <br>\n\n## Skill Version(s): <br>\n0.3.2 (source: server release evidence) <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\nFile v0.3.2:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.3.2:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.3.2:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.30.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.3.2:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.3.1: 16 files, 11930 bytes\n\nFiles: _meta.json (141b), example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2340b), SKILL.md (11748b)\n\nFile v0.3.1:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.1.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.3.1:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.3.1\",\n  \"publishedAt\": 1785250171012\n}\n\nFile v0.3.1:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[api3dao](https://clawhub.ai/user/api3dao) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and protocol operators use this skill to validate Api3 oracle feeds, prepare Morpho oracle and market parameters, and choose between Safe, Etherscan, or script-based transaction paths for creating Morpho markets. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The script-based path uses WALLET_MNEMONIC from a local .env file and can submit live blockchain transactions. <br>\nMitigation: Prefer Safe or Etherscan execution, avoid storing a real wallet seed phrase in .env, and use a dedicated low-value deployer wallet if script execution is necessary. <br>\nRisk: Incorrect chain, token, oracle, IRM, LLTV, or contract addresses can create an unintended or unsafe Morpho market. <br>\nMitigation: Independently verify all chain, token, oracle, IRM, LLTV, and contract addresses before approving any transaction. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation) <br>\n- [Api3 Market integration page pattern](https://market.api3.org/<CHAIN_ALIAS>/<TOKEN>-usd/integrate) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands, URLs, parameter prompts, and transaction result summaries] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires pnpm, ts-node, WALLET_MNEMONIC for script-based transaction paths, and completed oracle-params.json and market-params.json files.] <br>\n\n## Skill Version(s): <br>\n0.3.1 (source: server release evidence) <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\nFile v0.3.1:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.3.1:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.3.1:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.28.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.3.1:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.3.0: 16 files, 12016 bytes\n\nFiles: _meta.json (141b), example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2551b), SKILL.md (11748b)\n\nFile v0.3.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.1.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.3.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.3.0\",\n  \"publishedAt\": 1783927378943\n}\n\nFile v0.3.0:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[metobom](https://clawhub.ai/user/metobom) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and DeFi operators use this skill to validate API3 feeds, deploy a Morpho-compatible oracle, and create a Morpho market with confirmed token, oracle, IRM, and LLTV parameters. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A wallet seed phrase may be used for script-based oracle deployment and market creation. <br>\nMitigation: Prefer Safe, hardware wallet, or external wallet flows; if a mnemonic is used, keep it out of commits and shared logs. <br>\nRisk: Incorrect chain, token, oracle, IRM, or LLTV parameters can create an unintended or unsafe market. <br>\nMitigation: Verify every chain, address, oracle parameter, token address, and LLTV before signing, and rehearse with a testnet or low-risk wallet before mainnet execution. <br>\nRisk: Signed blockchain transactions are irreversible once broadcast. <br>\nMitigation: Require explicit approval before transaction execution and review the transaction details in Safe, Etherscan, or the signing wallet before submitting. <br>\n\n\n## Reference(s): <br>\n- [Morpho Market Creation on ClawHub](https://clawhub.ai/metobom/skills/morpho-market-creation) <br>\n- [API3 Market Integration Example](https://market.api3.org/ethereum/eth-usd/integrate) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue Addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands, configuration file instructions, transaction hashes, oracle addresses, and market IDs] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires pnpm and ts-node; script-based transaction paths require WALLET_MNEMONIC, while Safe or Etherscan flows can avoid placing a seed phrase in .env.] <br>\n\n## Skill Version(s): <br>\n0.3.0 (source: server release metadata) <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\nFile v0.3.0:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.3.0:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.3.0:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.28.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.3.0:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.2.0: 16 files, 11960 bytes\n\nFiles: example.env (16b), market-params.json (259b), oracle-params.json (582b), package.json (253b), pnpm-workspace.yaml (35b), README.md (600b), scripts/create-market.ts (2605b), scripts/deploy-oracle.ts (3431b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (865b), scripts/read-data-feed.ts (1300b), scripts/utils.ts (1185b), skill-card.md (2419b), SKILL.md (11748b), _meta.json (141b)\n\nFile v0.2.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.1.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. If a token is not listed in the dropdown, tell the user they can find the token's contract address on the chain's block explorer and add it via the **Add asset** button by simply inputting the token address. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - **WARNING:** `loanToken` and `collateralToken` must be the actual ERC-20 token contract addresses — NOT the Api3ReaderProxyV1 addresses (`<COLLATERAL_PROXY_ADDRESS>` / `<LOAN_PROXY_ADDRESS>`) collected in Phase 3. Those proxy addresses are oracle feeds and belong only in the oracle parameters. Explicitly remind the user of this distinction, and if a provided token address matches one of the proxy addresses, flag it and ask them to re-check.\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.2.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.2.0\",\n  \"publishedAt\": 1783016846180\n}\n\nFile v0.2.0:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by Api3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[metobom](https://clawhub.ai/user/metobom) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and DeFi operators use this skill to validate Api3 feeds, deploy a Morpho oracle, and create a Morpho market with guided checks before transactions are submitted. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can use a local wallet mnemonic to submit irreversible blockchain transactions. <br>\nMitigation: Use a dedicated low-value deployment wallet, never a primary seed phrase, and prefer the Safe or Etherscan paths when possible. <br>\nRisk: Incorrect chain, token, oracle, IRM, LLTV, gas, or contract address values can create an unintended or unsafe market. <br>\nMitigation: Independently verify all deployment parameters and contract addresses before approving any transaction. <br>\nRisk: Api3 reader proxy addresses and ERC-20 token contract addresses serve different roles and may be confused during setup. <br>\nMitigation: Confirm oracle feed addresses in the oracle parameters and separately confirm ERC-20 token addresses in the market parameters. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/metobom/skills/morpho-market-creation) <br>\n- [Api3 Market integration pages](https://market.api3.org/) <br>\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester) <br>\n- [Morpho Blue addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, Code] <br>\n**Output Format:** [Markdown guidance with shell commands, JSON configuration edits, URLs, transaction hashes, and deployed contract identifiers] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires pnpm, ts-node, and WALLET_MNEMONIC when using the script-based transaction path.] <br>\n\n## Skill Version(s): <br>\n0.2.0 (source: server release metadata) <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\nFile v0.2.0:market-params.json\n\n{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}\n\nFile v0.2.0:oracle-params.json\n\n{\n  \"baseVault\": \"0x0000000000000000000000000000000000000000\",\n  \"baseVaultConversionSample\": \"1\",\n  \"baseFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"baseFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"baseTokenDecimals\": \"18\",\n  \"quoteVault\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteVaultConversionSample\": \"1\",\n  \"quoteFeed1\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteFeed2\": \"0x0000000000000000000000000000000000000000\",\n  \"quoteTokenDecimals\": \"6\",\n  \"salt\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n\nFile v0.2.0:package.json\n\n{\n  \"name\": \"morpho-market-creation\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@api3/dapi-management\": \"4.22.0\",\n    \"@morpho-org/blue-sdk\": \"latest\",\n    \"dotenv\": \"^17.4.2\",\n    \"ethers\": \"^6.16.0\"\n  }\n}\n\nFile v0.2.0:pnpm-workspace.yaml\n\nallowBuilds:\n  unrs-resolver: false\n\nArchive v0.1.0: 14 files, 10965 bytes\n\nFiles: example.env (16b), market-params.json (260b), oracle-params.json (583b), package.json (283b), README.md (600b), scripts/create-market.ts (2616b), scripts/deploy-oracle.ts (3443b), scripts/get-chains.ts (350b), scripts/get-dapis.ts (262b), scripts/get-oracle-contract-link.ts (876b), scripts/read-data-feed.ts (1271b), skill-card.md (2285b), SKILL.md (11154b), _meta.json (141b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by API3 oracles.\nmetadata:\n  version: 0.1.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if you think packages are already installed.**\n- Inform the user that before any scripts can run, the required packages must be installed. Show them the list:\n  - `@api3/dapi-management`\n  - `@morpho-org/blue-sdk`\n  - `dotenv`\n  - `ethers`\n- Ask for approval to run `pnpm install`. Wait for an affirmative response. Once approved, run the command regardless of whether packages may already be installed:\n```\nexec command=\"cd {baseDir} && pnpm install\"\n```\n- If the output contains `[ERR_PNPM_IGNORED_BUILDS] Ignored build scripts: unrs-resolver...`, this is expected and not a real failure — the ignored build script is not needed for this skill. Treat it as success and continue.\n- If the command fails for any other reason, inform the user and ask what to do. This step cannot be skipped.\n\n---\n\n## Phase 2: Collect and Validate Parameters\n\n### Part 2.1\n- Ask the user in a single message for: the chain they want to deploy on, the collateral token symbol, and the loan token symbol. Wait for all three answers before continuing.\n\n### Part 2.2\n- Run `get-dapis.ts` and `get-chains.ts` to fetch the list of available feeds and supported chains:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\"\n```\n- If script fails, let user know about the problem and ask what to do. This data is necessary for validating their input, so skipping is not an option.\n\n### Part 2.3\n- Validate `CHAIN_ALIAS`:\n  - Search the output of `get-chains.ts` — first by `alias` field (case-insensitive), then by `name` field.\n  - Match found: set `CHAIN_ALIAS`, `CHAIN_NAME`, `CHAIN_ID` and confirm the matched values with the user. If they say no, ask them to re-enter the chain and repeat.\n  - No match: tell the user and ask them to re-enter the chain name or alias.\n\n- Validate feeds:\n  - Search the output of `get-dapis.ts` for `<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD` (case-insensitive).\n  - Both found: keep `COLLATERAL_TOKEN` and `LOAN_TOKEN` as bare token symbols only, and show the user the matched feed names (`<COLLATERAL_TOKEN>/USD` and `<LOAN_TOKEN>/USD`) for confirmation.\n  - Either missing: tell the user which feed was not found, ask for a different token symbol, and repeat for the missing feed.\n\n### Part 2.4\n- Show the user all confirmed parameters:\n  - Chain: `<CHAIN_NAME>` (`<CHAIN_ALIAS>`, ID: `<CHAIN_ID>`)\n  - Collateral Token: `<COLLATERAL_TOKEN>`\n  - Loan Token: `<LOAN_TOKEN>`\n  - Matched Feeds: `<COLLATERAL_TOKEN>/USD`, `<LOAN_TOKEN>/USD`\n- Ask the user to confirm that they want to proceed. If yes, proceed to Phase 3. If no, ask the user what they want to do.\n\n---\n\n## Phase 3: Test Oracle\n\n### Part 3.1\n- Warn the user that the found Api3 data feeds must be active on Api3 Market. Ask if they want to continue. If no, ask the user what they want to do.\n\n### Part 3.2\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<COLLATERAL_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `COLLATERAL_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the collateral feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n- Ask the user to open https://market.api3.org/<CHAIN_ALIAS>/<LOAN_TOKEN>-usd/integrate, copy the **Api3ReaderProxyV1 address**, and share it here.\n  - Validate: must start with `0x` and be exactly 42 characters. If invalid, tell the user and ask them to re-enter.\n  - Set `LOAN_PROXY_ADDRESS` to the validated value.\n- Run `read-data-feed.ts` to verify the loan feed is active:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the value and timestamp from the output and ask the user if it looks correct. If no, ask them to recheck the URL and re-enter the address, then repeat.\n\n### Part 3.3\n- Direct the user to open https://oracles.morpho.dev/oracle-tester and select `<CHAIN_NAME>` as the chain. Ask them to select the collateral and loan assets from the dropdowns — they should confirm those contract addresses match the intended assets. Then paste `<COLLATERAL_PROXY_ADDRESS>` into **Base Feed1** and `<LOAN_PROXY_ADDRESS>` into **Quote Feed1**. Wait for confirmation before continuing.\n- Ask the user to click **Run Oracle Tests** and report whether all tests passed.\n  - If any failed: ask them to recheck the feed addresses from the integration URLs, correct them on the tester, and retry. Wait until all tests pass.\n- Ask the user to click **Generate Safe Payload** to use later if needed. Proceed to Phase 4.\n\n---\n\n## Phase 4: Deploy Oracle\n\n### Part 4.1\n- Ask the user how they want to deploy the oracle, offering three options:\n  - **Option 1 — Gnosis Safe** — upload the payload JSON to Safe{Wallet}\n  - **Option 2 — Etherscan** — execute via Etherscan\n  - **Option 3 — Script** — deploy on their behalf using a script\n- Wait for the user to choose an option before continuing.\n\n### Part 4.2 — Option 1: Gnosis Safe\n- Instruct the user to download the generated payload JSON, then open Safe{Wallet}, click **New Transaction**, select **Transaction Builder**, upload the downloaded payload JSON, and follow the prompts to submit the transaction.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 2: Etherscan\n- Run `get-oracle-contract-link.ts` to get the correct Etherscan URL:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Instruct the user to open the provided Etherscan URL, connect their wallet, find the `createMorphoChainlinkOracleV2` function and fill in the parameters exactly as shown in the Morpho Oracle Tester.\n- Proceed to Phase 5.\n\n### Part 4.2 — Option 3: Script\n- Ask the user to open `{baseDir}/oracle-params.json` and fill in the oracle constructor parameters using the values from the Morpho Oracle Tester: set `baseFeed1` to `<COLLATERAL_PROXY_ADDRESS>` and `quoteFeed1` to `<LOAN_PROXY_ADDRESS>`, and fill in the remaining fields (decimals, vaults, salt) to match. Also ask them to set `WALLET_MNEMONIC` in the `.env` file. Wait for confirmation.\n- Ask for approval to run `deploy-oracle.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user: transaction hash and deployed oracle address.\n- Proceed to Phase 5.\n\n---\n\n## Phase 5: Create Market\n\n### Part 5.1\n- Ask the user to open `{baseDir}/market-params.json` and fill in the market parameters:\n  - `loanToken` — contract address of the loan token (e.g. can be found at /tokens path of block explorer)\n  - `collateralToken` — contract address of the collateral token (e.g. can be found at /tokens path of block explorer)\n  - `oracle` — the oracle address deployed in Phase 4\n  - `irm` — governance-approved Interest Rate Model address for `<CHAIN_NAME>` (tell the user to check https://docs.morpho.org/get-started/resources/addresses/#morpho-blue Adaptive Curve IRM model address)\n  - `lltv` — liquidation LTV as a percentage number; suggested to be one of the governance-approved values: `0`, `38.5`, `62.5`, `77`, `86`, `91.5`, `94.5`, `96.5`, `98`\n- Ask them to confirm `WALLET_MNEMONIC` is still set in the `.env` file. Wait for confirmation.\n\n### Part 5.2\n- Ask for approval to run `create-market.ts`. Wait for an affirmative response, then run:\n```\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/create-market.ts <CHAIN_ALIAS>\"\n```\n- If the script fails, let user know about the problem and ask what to do.\n- Show the user the transaction hash and the market ID from the output.\n\nFile v0.1.0:README.md\n\n# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1780929219908\n}\n\nFile v0.1.0:skill-card.md\n\n## Description: <br>\nDeploys Morpho markets backed by API3 oracles. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[metobom](https://clawhub.ai/user/metobom) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and DeFi operators use this skill to collect Morpho market parameters, validate API3 oracle feeds, and choose a deployment path for creating an oracle-backed Morpho market. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can broadcast irreversible blockchain transactions. <br>\nMitigation: Prefer the Safe or Etherscan flow, and verify chain, c","readmeExcerpt":"Skill: morpho-market-creation Owner: api3dao Summary: Deploys Morpho markets backed by Api3 oracles. Tags: latest:0.6.0 Version history: v0.6.0 | 2026-08-03T13:35:56.316Z | auto morpho-market-creation 0.6.0 - Removed obsolete skill-card.md file. - Minor updates to SKILL.md; no changes to workflow or command logic. - No user-facing features or workflow updates in this release. v0.5.0 | 2026-07-29T14:34:59.812Z | auto ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"exec command=\"cd {baseDir} && pnpm install\""},{"language":"text","snippet":"exec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-dapis.ts\"\nexec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-chains.ts\""},{"language":"text","snippet":"exec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <COLLATERAL_PROXY_ADDRESS> <CHAIN_ALIAS>\""},{"language":"text","snippet":"exec command=\"cd {baseDir} && ts-node {baseDir}/scripts/read-data-feed.ts <LOAN_PROXY_ADDRESS> <CHAIN_ALIAS>\""},{"language":"text","snippet":"exec command=\"cd {baseDir} && ts-node {baseDir}/scripts/get-oracle-contract-link.ts <CHAIN_ALIAS>\""},{"language":"text","snippet":"exec command=\"cd {baseDir} && ts-node {baseDir}/scripts/deploy-oracle.ts <CHAIN_ALIAS>\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: morpho-market-creation\ndescription: Deploys Morpho markets backed by Api3 oracles.\nmetadata:\n  version: 0.6.0\n  clawdis:\n    requires:\n      bins:\n        - ts-node\n        - pnpm\n      env:\n        - WALLET_MNEMONIC\n    primaryEnv: WALLET_MNEMONIC\n---\n\n# Morpho Market Creation\n\n## Variables\n\n| Variable | Description |\n|---|---|\n| `CHAIN_NAME` | Human-readable chain name (e.g. `Ethereum`) |\n| `CHAIN_ALIAS` | Chain alias from the chain list (e.g. `ethereum`) |\n| `CHAIN_ID` | Numeric chain ID (e.g. `1`) |\n| `COLLATERAL_TOKEN` | Collateral asset symbol (e.g. `ETH`, `USDC`) |\n| `LOAN_TOKEN` | Loan asset symbol (e.g. `DAI`, `USDT`) |\n| `COLLATERAL_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the collateral/USD feed — starts with `0x`, exactly 42 characters |\n| `LOAN_PROXY_ADDRESS` | Api3ReaderProxyV1 address for the loan/USD feed — starts with `0x`, exactly 42 characters |\n\n---\n\n# Rules\n- **NEVER** read .env files or ask for secrets such as WALLET_MNEMONIC.\n- **NEVER** read, list, or search inside `node_modules/`, `pnpm-lock.yaml`, or `pnpm-workspace.yaml`,they are not needed for this skill nor relevant to the user.\n- **ALWAYS** use the `exec` tool to run commands. Never use Bash or shell directly.\n- **ALWAYS** run scripts in skill's directory, which is referenced as `{baseDir}` variable and name is given in this file's name field at top. Prefix every command with `cd {baseDir} &&` to ensure it runs from the correct directory.\n- **ALWAYS** substitute actual variable values into every `exec` command before running it.\n- **ALWAYS** after asking any question, stop and wait for the user's response. Do not assume a response or continue until the user has replied.\n- **ALWAYS** complete the current phase fully before moving to the next. Never skip a phase or assume it is already done.\n- Treat affirmative responses as approval (e.g. \"yes\", \"sure\", \"ok\", \"go ahead\", \"yep\"). Treat negative responses as rejection (e.g. \"no\", \"nope\", \"cancel\", \"stop\"). If intent is unclear, ask once more before acting.\n- **NEVER** wrap URLs in markdown formatting (backticks, asterisks, brackets, etc.) or add trailing punctuation when sharing them with the user — share the raw URL as plain text so it stays clickable and isn't corrupted with extra characters.\n- **ALWAYS** lowercase `<CHAIN_ALIAS>` and the token symbol (`<COLLATERAL_TOKEN>` / `<LOAN_TOKEN>`) when substituting them into market.api3.org URL paths (e.g. `https://market.api3.org/ethereum/eth-usd/integrate`), even if the confirmed values are stored/displayed with different casing.\n\n## Phase 0: Introduction\n\n- Introduce the skill: you will walk the user through deploying a Morpho Market backed by Api3 oracles, step by step. You will ask for approval before installing packages and before executing transactions.\n- Ask if they are ready to begin and wait for an affirmative response before continuing.\n\n---\n\n## Phase 1: Package Installation\n\n### Part 1.1\n\n- **You must always run this step. Do not skip it, even if y"},{"path":"README.md","content":"# Morpho Market Deploy\n\nHelper skill for deploying Morpho markets backed by API3 oracle feeds.\n\n## Requirements\n\n- `pnpm`\n- `ts-node`\n- `WALLET_MNEMONIC` in `.env` (see `example.env`)\n- completed `oracle-params.json` and `market-params.json`\n\n## Scripts\n\n- `get-dapis.ts` and `get-chains.ts` to validate feeds and networks\n- `read-data-feed.ts` to verify API3 reader proxies\n- `get-oracle-contract-link.ts` to open the factory contract write page\n- `deploy-oracle.ts` to deploy the oracle contract from `oracle-params.json`\n- `create-market.ts` to create the Morpho market from `market-params.json`"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7701b4mvc79x412gf9v4n6td889pe5\",\n  \"slug\": \"morpho-market-creation\",\n  \"version\": \"0.6.0\",\n  \"publishedAt\": 1785764156316\n}"},{"path":"skill-card.md","content":"## Description:\n\nDeploys Morpho markets backed by Api3 oracles.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[api3dao](https://clawhub.ai/user/api3dao)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and DeFi operators use this skill to configure, validate, and deploy Morpho markets backed by Api3 oracle feeds, including oracle checks and transaction execution options.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can broadcast irreversible blockchain transactions for oracle deployment and Morpho market creation.\n\nMitigation: Use Safe or Etherscan when possible, verify chain IDs, contract addresses, oracle feeds, IRM, LLTV, gas costs, and transaction targets before approving any transaction.\n\nRisk: The script execution path uses WALLET_MNEMONIC from a local environment file.\n\nMitigation: Use a dedicated low-value deployment account, never use a production seed phrase, and avoid installing dependencies after secrets are placed in the project.\n\nRisk: Incorrect token, oracle, or feed addresses can create an unusable or unsafe market.\n\nMitigation: Validate Api3ReaderProxyV1 addresses, run the Morpho Oracle Tester, and confirm token addresses are ERC-20 token contracts rather than oracle proxy addresses.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/api3dao/skills/morpho-market-creation)\n- [Api3 Market](https://market.api3.org/)\n- [Morpho Oracle Tester](https://oracles.morpho.dev/oracle-tester)\n- [Morpho Blue Addresses](https://docs.morpho.org/get-started/resources/addresses/#morpho-blue)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and configuration file edits]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires pnpm, ts-node, WALLET_MNEMONIC, and completed oracle and market parameter JSON files.]\n\n## Skill Version(s):\n\n0.6.0 (source: SKILL.md metadata and server release evidence; package.json reports 1.0.0)\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."},{"path":"market-params.json","content":"{\n  \"loanToken\": \"0x0000000000000000000000000000000000000000\",\n  \"collateralToken\": \"0x0000000000000000000000000000000000000000\",\n  \"oracle\": \"0x0000000000000000000000000000000000000000\",\n  \"irm\": \"0x0000000000000000000000000000000000000000\",\n  \"lltv\": 96.5\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Deploys Morpho markets backed by Api3 oracles. Skill: morpho-market-creation Owner: api3dao Summary: Deploys Morpho markets backed by Api3 oracles. Tags: latest:0.6.0 Version history: v0.6.0 | 2026-08-03T13:35:56.316Z | auto morpho-market-creation 0.6.0 - Removed obsolete skill-card.md file. - Minor updates to SKILL.md; no changes to workflow or command logic. - No user-facing features or workflow updates in this release. v0.5.0 | 2026-07-29T14:34:59.812Z | auto","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1423,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T23:26:50.094Z","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-10T23:26:50.094Z","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-11T01:45:56.367Z","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"}]}}}