Skip to content

feat: add yield-agentkit-builder skill#12

Open
Ishita-02 wants to merge 22 commits into
mainfrom
eng-2284-builder-skill
Open

feat: add yield-agentkit-builder skill#12
Ishita-02 wants to merge 22 commits into
mainfrom
eng-2284-builder-skill

Conversation

@Ishita-02

@Ishita-02 Ishita-02 commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added a Codex plugin manifest for the Yield AgentKit plugin.
  • Documentation

    • Added comprehensive "yield-agentkit-builder" skill documentation including README, setup guides, and 12 reference documents covering API field mapping, integration patterns, MCP tools, output formatting, signing patterns, API policies, and common pitfalls.
    • Added blockchain-specific integration guides for 12 networks (EVM, Solana, Cosmos, Substrate, TON, Tron, and others).
    • Added transaction lifecycle, yield discovery, and dashboard configuration guides.
    • Updated YieldDto risk field documentation to reference Staking Rewards / Credora ratings.

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds the yield-agentkit-builder Codex plugin manifest and a complete skill definition with comprehensive reference documentation for generating production-ready Yield.xyz integrations across 12 blockchains. Includes 24 reference documents covering setup, API basics, policies, MCP tooling, transaction lifecycle, product-type integration patterns, chain-specific signing guides, output formatting, yield discovery, and common pitfalls. Also updates YieldDto risk field references in two existing skill files.

Changes

yield-agentkit-builder Codex Plugin & Skill

Layer / File(s) Summary
Codex plugin manifest
yield-agentkit-plugin/.codex-plugin/plugin.json
New plugin.json declares plugin identity, wires skills and mcpServers paths, and defines interface metadata with capabilities and default prompts for discovering and managing Yield.xyz positions.
Skill entry: README and SKILL.md
yield-agentkit-skills/skills/yield-agentkit-builder/README.md, SKILL.md
README describes skill purpose, prerequisites, installation, test prompts, and folder structure. SKILL.md establishes critical builder rules (production URL only, mandatory user API keys, live spec discovery, transaction immutability, safe port/dependency/pagination handling) and the complete step-by-step workflow from MCP registration through smoke testing.
Setup prerequisites and MCP/API configuration
yield-agentkit-skills/skills/yield-agentkit-builder/references/setup.md
Walks builders through MCP registration, API key acquisition, testnet discovery, optional SDK installation, and four integration path options (Widget, TypeScript SDK, Direct REST, Programmatic Access) with resource links.
API fundamentals: field mapping and rate limits
api-field-mapping.md, api-limits.md
api-field-mapping.md documents production base URL, endpoint catalog, required headers, and error envelopes. api-limits.md provides rate-limit tiers, exponential backoff patterns, caching durations by data type, and polling guidance.
Policies, guardrails, and safety enforcement
policies.md
Specifies rate limits, caching recommendations, pagination (20 default/100 max), risk level classifications, six mandatory pre-execution checks, seven safety rules (no unsignedTransaction mutation, sequential stepIndex, required hash submission, Shield validation, cooldown respect), and TypeScript guardrail enforcement pattern with USD limits and risk filtering.
MCP tool classification and decision flows
mcp-tools.md
Categorizes five safe doc tools vs 17 disallowed action tools with REST equivalents, includes decision flow routing builder questions to appropriate tools/resources, and explains why action tools are excluded during code generation.
Cross-chain transaction lifecycle and signing fundamentals
transaction-lifecycle.md, signing-patterns.md
End-to-end workflow covering yield discovery, schema inspection, action calls, unsigned transaction handling, branching by executionPattern, EVM/Solana/Cosmos/Tron signing flows, hash submission, status polling, multi-step sequencing, balance reading, and pending action execution. Establishes cross-chain signing principles, format guidance, and unified validator object schema.
Product-type integration architectures
integration-patterns.md
Prescribes deployment patterns for six use cases: Custody (server-side signing, FeeWrapper, Shield validation), Consumer Wallet (Widget, SDK, external provider support), Neobank/Fintech (multi-tenant REST, Programmatic Access, fee configuration), Yield Aggregator (API-level filtering, APY sorting, aggressive caching), RWA/KYC (gated discovery, KYC approval checks), and Enterprise Backend (idempotency recovery, monitoring, disaster recovery, compliance guardrails).
Per-chain signing and integration guides (12 blockchains)
yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/evm.md, solana.md, cosmos.md, substrate.md, sui.md, stellar.md, cardano.md, tezos.md, ton.md, tron.md, near.md, aptos.md
Detailed guides for EVM (JSON parsing, field stripping), Solana (VersionedTransaction fallback, Phantom wallet), Cosmos (Protobuf SignDoc, cosmosPubKey), Substrate (JSON extrinsic, nomination pools), Sui (Base64 BCS), Stellar (Base64 XDR), Cardano (hex-encoded CBOR), Tezos (forged bytes), TON (BOC-encoded JSON), Tron (tronweb v6, resources), NEAR (JSON format), and Aptos (currently no live yields).
Yield discovery, types, and dashboard configuration
yield-types.md, dashboard-and-api-keys.md
yield-types.md documents /v1/yields parameters, query patterns, eight yield type classifications, and KYC-gated approval requirements. dashboard-and-api-keys.md explains configuration-driven behavior (API key → project → enabled yields) and verification flows.
Output formatting and UI expectations
output-formats.md
Codifies UI display rules: number formatting conventions (APY, TVL, USD values, lockup/cooldown), yield table ordering by APY descending, transaction summary contents, reward rate breakdown with incentive flagging, and portfolio UI ordering with prominent claimable rewards and CTAs.
Common pitfalls, error handling, and troubleshooting
common-pitfalls.md
Documents 16 failure modes (wrong API base URL, field mismatches, wei handling, browser-wallet gas, missing submit-hash, unsignedTransaction mutation, hardcoded validators, schema omission, MCP action tool misuse, multi-step ordering, HTTP status attribution, React 19 requirement, widget yield pre-selection, wrong chain-argument shape) with symptoms, causes, and step-by-step fixes.
Documentation updates to existing skill files
yield-agentkit-plugin/yield-agentkit/SKILL.md, yield-agentkit-skills/skills/yield-agentkit/SKILL.md
Updates YieldDto risk field documentation references from "Exponential.fi / Credora ratings" to "Staking Rewards / Credora ratings".

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • stakekit/agentkit#8: Introduces MCP server toolset and multi-network yields discovery that the builder skill documentation extends and operationalizes for code generation.

Suggested reviewers

  • jdomingos
  • Philippoes
  • 0xYoki
  • xhakti

Poem

🐇 Hippity-hop, the builder arrives with care,
Twelve chains documented, no hardcoded snare!
Submit that hash, sign in stepIndex order,
Fetch the live spec at each boundary and border.
From EVM to Substrate, from Solana to Tron,
The rabbit's guide ensures your integrations are strong! 🌿

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and concisely describes the main change: addition of a new yield-agentkit-builder skill with comprehensive documentation and plugin configuration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch eng-2284-builder-skill

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (4)
yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md (1)

208-231: ⚡ Quick win

Consider adding explicit user confirmation for MCP auto-registration.

Lines 217 and 226–227 instruct the skill to automatically register the Yield.xyz MCP server and write to the user's .mcp.json configuration file without asking. While this speeds up onboarding, it modifies the user's agent configuration autonomously.

Best practice: Before auto-configuring critical infrastructure (MCP server, config files, etc.), at least inform the user of what will be modified and offer a chance to review or decline. For example:

"I'll now register the Yield.xyz MCP server in your .mcp.json file. This allows me to fetch the live API spec. OK to proceed?"

This respects the user's agency and prevents surprises if their configuration is unexpectedly changed.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md` around lines
208 - 231, The SKILL.md documentation instructs automatic MCP server
registration without user confirmation, which violates best practice for
modifying user configuration files. Revise the Step 0 section to add explicit
user confirmation before auto-registering the yield-agentkit MCP server. Replace
the instruction "Do this automatically — do not ask the user to run the command
themselves" with guidance that first informs the user what will be modified
(their .mcp.json file), shows them exactly what changes will be made, and
obtains their explicit approval before proceeding. Include example phrasing like
"I'll now register the Yield.xyz MCP server in your .mcp.json file. This allows
me to fetch the live API spec. OK to proceed?" to demonstrate the expected user
interaction pattern.
yield-agentkit-skills/skills/yield-agentkit-builder/references/signing-patterns.md (1)

139-156: ⚡ Quick win

Add language specifier to the transaction lifecycle code block.

The code block at line 143 should have a language identifier (e.g., ```text) for better rendering and linter compliance.

📝 Proposed fix
 ## Transaction Lifecycle (All Chains)
 
 Regardless of chain or wallet, every transaction follows this lifecycle:
 
-```
+```text
 1. POST /v1/actions/enter (or /exit, /manage)
    -> Returns transactions[] with unsignedTransaction
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/signing-patterns.md`
around lines 139 - 156, In the Transaction Lifecycle (All Chains) section of the
signing-patterns.md file, add a language specifier to the code block. Change the
opening fence from ``` to ```text to provide proper language identification for
the markdown renderer and ensure linter compliance. This applies to the code
block containing the numbered transaction lifecycle steps starting with "1. POST
/v1/actions/enter".
yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md (2)

228-268: ⚡ Quick win

Add language specifier to the React dependency code block.

The code block at line 233 should have a language identifier (```json) for better syntax highlighting and linter compliance.

📝 Proposed fix
 pin React 19+:
 
-```
+```json
 {
   "dependencies": {
     "react": "^19.0.0",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md`
around lines 228 - 268, The code block containing the package.json configuration
structure in the common-pitfalls.md file is missing a language specifier. Add
the `json` language identifier to the opening triple backticks of the code block
that starts with the JSON object containing the "dependencies" and
"devDependencies" sections. Change the opening fence from bare triple backticks
to triple backticks followed by `json` to enable proper syntax highlighting and
linter compliance.

160-178: ⚡ Quick win

Add language specifier to the error-handling code block.

The code block at line 100 should have a language identifier (```typescript) for better syntax highlighting and linter compliance.

📝 Proposed fix
 **Fix:** Always extract errors defensively:
-```
+```typescript
 function extractWalletError(err: unknown): string {
   if (err instanceof Error) return err.message;
   if (typeof err === "object" && err !== null) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md`
around lines 160 - 178, Add the language specifier typescript to the markdown
code block fence that contains the extractWalletError function in the
common-pitfalls.md file. Change the opening fence from ``` to ```typescript to
enable proper syntax highlighting and ensure linter compliance for the code
block demonstrating the error handling solution.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md`:
- Line 41: The documentation incorrectly uses the plural term "operationIds"
when referring to OpenAPI specification field names. Change "operationIds" to
"operationId" (singular) in the mcp-tools.md reference to align with the OpenAPI
3.0 specification standard terminology, which uses the singular form
"operationId" to identify individual operations.

---

Nitpick comments:
In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md`:
- Around line 228-268: The code block containing the package.json configuration
structure in the common-pitfalls.md file is missing a language specifier. Add
the `json` language identifier to the opening triple backticks of the code block
that starts with the JSON object containing the "dependencies" and
"devDependencies" sections. Change the opening fence from bare triple backticks
to triple backticks followed by `json` to enable proper syntax highlighting and
linter compliance.
- Around line 160-178: Add the language specifier typescript to the markdown
code block fence that contains the extractWalletError function in the
common-pitfalls.md file. Change the opening fence from ``` to ```typescript to
enable proper syntax highlighting and ensure linter compliance for the code
block demonstrating the error handling solution.

In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/signing-patterns.md`:
- Around line 139-156: In the Transaction Lifecycle (All Chains) section of the
signing-patterns.md file, add a language specifier to the code block. Change the
opening fence from ``` to ```text to provide proper language identification for
the markdown renderer and ensure linter compliance. This applies to the code
block containing the numbered transaction lifecycle steps starting with "1. POST
/v1/actions/enter".

In `@yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md`:
- Around line 208-231: The SKILL.md documentation instructs automatic MCP server
registration without user confirmation, which violates best practice for
modifying user configuration files. Revise the Step 0 section to add explicit
user confirmation before auto-registering the yield-agentkit MCP server. Replace
the instruction "Do this automatically — do not ask the user to run the command
themselves" with guidance that first informs the user what will be modified
(their .mcp.json file), shows them exactly what changes will be made, and
obtains their explicit approval before proceeding. Include example phrasing like
"I'll now register the Yield.xyz MCP server in your .mcp.json file. This allows
me to fetch the live API spec. OK to proceed?" to demonstrate the expected user
interaction pattern.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 481dcc40-cf0d-433b-8d73-b54a2ea6a6a3

📥 Commits

Reviewing files that changed from the base of the PR and between a1b5fa7 and 7ea06e9.

📒 Files selected for processing (11)
  • yield-agentkit-plugin/.codex-plugin/plugin.json
  • yield-agentkit-skills/skills/yield-agentkit-builder/README.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/api-field-mapping.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/integration-patterns.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/output-formats.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/policies.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/setup.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/signing-patterns.md

Comment thread yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md (1)

238-261: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Require explicit user confirmation before auto-registering the MCP server.

Line 247 instructs the agent to register the MCP server "automatically — do not ask the user to run the command themselves." However, this modifies the user's system-wide or project-local MCP configuration files (~/.mcp.json or .mcp.json), which is a material side effect that should require explicit user consent.

Recommended approach:

  1. Inform the user that the skill needs the yield-agentkit MCP server
  2. Show the registration command that would be run
  3. Ask for explicit approval before executing it
  4. After confirmation, run the registration and verify the connection
  5. Only if registration succeeds should the workflow continue; if it fails, stop and surface the error

This preserves the user's control over their configuration while still automating the registration once approved.

📝 Suggested rewording
 ### Step 0 — Register the Yield.xyz MCP Server (do this FIRST, automatically)

 **The very first action in every builder session** — before asking for an API key,
 before asking what the user is building — is to ensure the `yield-agentkit` MCP
 server is registered with the user's agent. This is **not optional**. The skill's
 doc tools (`yield_get_api_spec`, `yield_get_chain_guide`,
 `yield_get_transaction_guide`, etc.) come from that MCP server, and without them the
 skill will generate code from memory rather than from the live spec.

-**Do this automatically — do not ask the user to run the command themselves.**
-Run the appropriate registration command for their agent, then verify it connected.
+**Inform the user that registration is required, show the command, request explicit
+approval, then execute it.** After the user confirms, run the appropriate registration
+command for their agent and verify it connected.

 For Claude Code:
 ```bash
 claude mcp add yield-agentkit --transport http https://mcp.yield.xyz/mcp
 claude mcp list   # verify "yield-agentkit" shows "✓ Connected"

For other agents (Codex, Gemini CLI, etc.), write the yield-agentkit entry into
-the appropriate MCP config file (~/.mcp.json or project-local .mcp.json).
+the appropriate MCP config file (~/.mcp.json or project-local .mcp.json), after
+asking the user's permission
.

If registration fails, stop and surface the error to the user — do not attempt to
build anything until the MCP is connected. Full details and config snippets are in
references/setup.md.


</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md around lines
238 - 261, The Step 0 MCP server registration instructions currently direct the
agent to register automatically without user consent, but this modifies
system-wide or project-local configuration files and requires explicit user
approval. Update the section to require explicit user confirmation before
registration by informing the user that the skill needs the MCP server,
displaying the registration command that would be executed, requesting explicit
approval, executing the registration upon confirmation, verifying the
connection, and stopping with an error message if registration fails.
Specifically, revise the instructions for both Claude Code and other agents
(Codex, Gemini CLI, etc.) to insert an explicit permission-request step before
the configuration file modifications occur.


</details>

<!-- cr-comment:v1:2616d835c4df19400a5e758b -->

_Source: Linters/SAST tools_

</blockquote></details>

</blockquote></details>
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md`:
- Around line 238-261: The Step 0 MCP server registration instructions currently
direct the agent to register automatically without user consent, but this
modifies system-wide or project-local configuration files and requires explicit
user approval. Update the section to require explicit user confirmation before
registration by informing the user that the skill needs the MCP server,
displaying the registration command that would be executed, requesting explicit
approval, executing the registration upon confirmation, verifying the
connection, and stopping with an error message if registration fails.
Specifically, revise the instructions for both Claude Code and other agents
(Codex, Gemini CLI, etc.) to insert an explicit permission-request step before
the configuration file modifications occur.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a61ca2c9-3cc8-4c93-882e-b220665b412e

📥 Commits

Reviewing files that changed from the base of the PR and between ba702fd and 7e11a63.

📒 Files selected for processing (3)
  • yield-agentkit-skills/skills/yield-agentkit-builder/README.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md
✅ Files skipped from review due to trivial changes (1)
  • yield-agentkit-skills/skills/yield-agentkit-builder/README.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md

Ishita-02 and others added 11 commits June 17, 2026 13:33
Migrate the static reference content from the MCP into the skill, rewrite mcp-tools.md
routing to the 5 surviving live tools, and narrow detailed builder guidance to Yield
(Perps/Borrow now point at the live spec, noting their different action model and
submit vs submit-hash). Add dashboard-and-api-keys.md (the API key/dashboard governs
which yields & features are enabled) and an RWA/KYC builder flow.

Audit every reference against live prod and correct, with evidence:
- widget: SKApp + CSS import + theme (not StakeKitWidget); React 19+
- SDK: sdk.configure() singleton (not new Sdk()); add github.com/stakekit/sdk
- REST enter body: yieldId/address/arguments (verified against docs.json)
- yield types: snake_case enum (+ liquid_staking), high level, DTO as source of truth;
  drop fabricated statistics.tvlUsd from the response shape
- chain args are FLAT in arguments (no additionalAddresses); cosmosPubKey/tezosPubKey
  flat; bech32 cosmospub1...; validatorAddresses (array) on polkadot/tron; bittensor
  needs subnetId; cardano validatorAddress required / amount optional
- EVM: hex gas/fee fields; per-type args (liquidity_pool amounts[], CLP exit
  percentage+tokenId, vault receiverAddress/useMaxAllowance); >2-step flows
- error envelope {statusCode,timestamp,path,message,validation?,details?}; 412 IS a real
  code (action blocked); validation=400 not 422; bad/disabled yield=400 not 404
- pagination max limit 100, response key items; sort=rewardRateDesc (no apy sort key)
- verified/replaced stale yieldIds; aptos has no live yields; document previously
  uncovered endpoints (tokens, providers, campaigns, history, kyc/status, submit)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ny language)

Dogfood pass — simulated real integrations (Python backend, React/viem wallet,
non-EVM signing, onboarding) against live prod and closed the gaps that blocked a
zero→working build.

Correctness:
- remove fabricated webhook guidance (no webhook/event endpoints exist) → poll
  GET /v1/transactions/{id}; mark rate-limit tiers illustrative (confirm via header)
- remove fabricated POST /v1/programmatic/.../fee-config endpoint → fees are
  dashboard-configured, applied server-side (reconcile with dashboard-and-api-keys.md)
- executionPattern has 3 values (synchronous/asynchronous/batch) — branch on it
  instead of always sequential-waiting
- gasEstimate is a JSON string (parse it); mechanics.arguments.enter is .fields[]
  (array), entryLimits under mechanics and nullable
- reconcile L2 gas handling (strip gas fields on L2, keep on mainnet) across files

Completeness:
- Quickstart spine in SKILL.md (discover→schema→enter→sign→submit-hash→poll); route
  to chains/ and api-field-mapping.md from the reference table
- transaction-lifecycle: polling loop + terminal states, multi-step sequencing on
  Yield CONFIRMED, two broadcast paths (submit-hash vs submit), idempotency/retries
- EVM signing for Python (eth-account: drop `from`, gasLimit→gas) and viem/wagmi
  (gasLimit→gas, useWaitForTransactionReceipt); clarify "never modify" = semantics,
  not library key-shape; note executionMode individual|batched for smart accounts
- runnable non-EVM signing: Cosmos (SignDoc.decode→signDirect→TxRaw→broadcast, real
  bech32 pubkey, sign SignDoc verbatim), Tron (v6 named import + confirmation poll),
  Solana (bs58 key import, unified deserialize/sign/submit)
- testnets in setup.md (base-sepolia/ethereum-sepolia/stellar-testnet; match by id)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The MCP is a Yield MCP (no perps/borrow action/data tools — only api_spec can fetch
their specs). Removing Perps/Borrow framing from the skill streamlines it and matches
what the tools actually do.

- SKILL.md: Yield-only description/scope; single api.yield.xyz base URL; remove the
  "which product" step (collapse to Yield use-case); drop perps/borrow spec examples
  and the submit-vs-submit-hash note; renumber workflow steps 0–5
- README.md: present as a Yield integration skill (drop the three-products framing)
- mcp-tools.md: yield_get_api_spec presented as the Yield spec; drop perps-widget
- dashboard-and-api-keys.md: features bullet no longer lists Perps/Borrow

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iders)

Document the @stakekit/widget `externalProviders` prop — how to plug in your own
address + signer (custody/HSM, embedded/agent wallet, host-app wallet) and skip the
built-in connect-wallet flow. Grounded in the widget repo's SKExternalProviders/SKWallet
types: provider implements signMessage/switchChain/sendTransaction(skTx, txMeta) — your
infra signs+broadcasts and returns the hash; the widget handles action lifecycle and
submit-hash. Also note disableInjectedProviderDiscovery, validatorsConfig,
mapWalletListFn, and the React Native @stakekit/use-inject-provider + WebView path.

Soften the widget "less customization" tradeoff in setup.md (BYO wallet IS supported)
and point to the new section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Company name is Yield.xyz. "the StakeKit UI" → "the prebuilt Yield.xyz UI". The literal
@stakekit/* npm packages and github.com/stakekit/* URLs are real identifiers, kept as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Make recommended packages and tools clickable (verified live before adding):
- @stakekit/widget → npm + repo (was unlinked across 17 mentions)
- @stakekit/use-inject-provider → npm (React Native section)
- @yieldxyz/sdk → npm link in SKILL.md SDK option
- consolidated "Packages & resources" list in setup.md (packages, repos, docs,
  dashboard, live spec)
- fix dead @solana/web3.js doc link (404) → npm

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Link-check turned up 5 stale URLs in the signing tables (all verified replacements):
- Phantom docs.phantom.app/... (404) → docs.phantom.com
- WalletConnect Web3Modal docs.walletconnect.com/web3modal (404) → docs.reown.com/appkit/overview (rebrand)
- Coinbase docs.cloud.coinbase.com/... (404) → github.com/coinbase/coinbase-wallet-sdk
- @solana/web3.js v1 solana-labs.github.io (404) → github.com/solana-labs/solana-web3.js
- CosmosKit cosmoskit.com (dead) → github.com/cosmology-tech/cosmos-kit

All Yield.xyz npm packages and github.com/stakekit/* repo links verified 200.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…→ pending → manage

Verified against docs.yield.xyz, the live spec, and the official api-recipes Yields
example. Make the end-to-end loop correct and connected:

- distinguish ActionDto.status (CANCELED/CREATED/WAITING_FOR_NEXT/PROCESSING/FAILED/
  SUCCESS/STALE — completes at SUCCESS, never "CONFIRMED") from TransactionDto.status
  (poll transactions for CONFIRMED/FAILED/SKIPPED) — these were conflated
- close the pending-action loop: POST /v1/actions/manage with action=pendingAction.type,
  passthrough=pendingAction.passthrough (verbatim), arguments only if the pending action
  carries a schema → its transactions[] re-enter the sign → submit-hash → poll loop
- fix PendingActionDto shape: { intent, type, passthrough, arguments?, amount? } — no
  `description` field (use type/amount)
- add BalanceDto + BalanceType (active/entering/exiting/withdrawable/claimable/locked;
  only active earns); batch item shape includes outputTokenBalance; balances max 25 queries
- connect discovery as the lifecycle entry (GET /v1/yields paginated → GET /v1/yields/{id}
  schema); point to api-recipes for a full runnable example
- api-field-mapping: single-yield balances is POST (canonical), GET also works

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
yield-agentkit-skills/skills/yield-agentkit-builder/references/yield-types.md (1)

82-82: ⚡ Quick win

Specify language syntax for fenced code blocks.

Seven code blocks lack language specification (bash, curl, etc.), which prevents syntax highlighting and violates markdown linting standards.

🔧 Add language identifiers to code blocks
  **Top 20 USDC yields across Base + Arbitrum + Optimism, lending or vault, sorted by APY desc:**
- ```
+ ```bash
  GET /v1/yields?networks=base,arbitrum,optimism&inputToken=USDC&types=lending,vault&sort=rewardRateDesc&limit=20
- ```
+ ```

  **All stablecoin yields (USDC/USDT/DAI) on Ethereum, sorted by APY desc:**
- ```
+ ```bash
  GET /v1/yields?network=ethereum&inputTokens=USDC,USDT,DAI&sort=rewardRateDesc&limit=50
- ```
+ ```

  **Search: yields whose name contains "morpho", sorted by APY desc:**
- ```
+ ```bash
  GET /v1/yields?search=morpho&sort=rewardRateDesc
- ```
+ ```

  **Batch-fetch 20 specific yield IDs in one call** (instead of 20 individual `/v1/yields/{id}` calls):
- ```
+ ```bash
  GET /v1/yields?yieldIds=base-usdc-aave-v3-lending,ethereum-eth-lido-staking,...
- ```
+ ```

  **Only yields with no lockup (instant exit):**
- ```
+ ```bash
  GET /v1/yields?hasCooldownPeriod=false&sort=rewardRateDesc
- ```
+ ```

  **Highest-rate staking across all chains:**
- ```
+ ```bash
  GET /v1/yields?type=staking&sort=rewardRateDesc&limit=50
- ```
+ ```

  Values are case-sensitive **snake_case** — confirm the current set with `yield_get_api_spec`:

- ```
+ ```plaintext
  staking  liquid_staking  restaking  lending  vault
  real_world_asset  concentrated_liquidity_pool  liquidity_pool
- ```
+ ```

Also applies to: 87-87, 92-92, 97-97, 102-102, 107-107, 131-131

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/yield-types.md`
at line 82, Seven fenced code blocks in the yield-types.md file are missing
language identifiers, which prevents proper syntax highlighting and violates
markdown standards. Add language specifications to all code blocks: use `bash`
as the language identifier for all code blocks containing API GET request
examples (those starting with "GET /v1/yields"), and use `plaintext` for the
code block containing the list of yield type values (staking, liquid_staking,
restaking, lending, vault, real_world_asset, concentrated_liquidity_pool,
liquidity_pool). This is done by adding the language name immediately after the
opening triple backticks in each code block (e.g., ```bash or ```plaintext).

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@yield-agentkit-skills/skills/yield-agentkit-builder/references/yield-types.md`:
- Line 82: Seven fenced code blocks in the yield-types.md file are missing
language identifiers, which prevents proper syntax highlighting and violates
markdown standards. Add language specifications to all code blocks: use `bash`
as the language identifier for all code blocks containing API GET request
examples (those starting with "GET /v1/yields"), and use `plaintext` for the
code block containing the list of yield type values (staking, liquid_staking,
restaking, lending, vault, real_world_asset, concentrated_liquidity_pool,
liquidity_pool). This is done by adding the language name immediately after the
opening triple backticks in each code block (e.g., ```bash or ```plaintext).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 43ecb532-ff76-43d5-9f6f-5d52a51c391b

📥 Commits

Reviewing files that changed from the base of the PR and between bdc1e4a and e096786.

📒 Files selected for processing (26)
  • yield-agentkit-skills/skills/yield-agentkit-builder/README.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/SKILL.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/api-field-mapping.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/api-limits.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/aptos.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/cardano.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/cosmos.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/evm.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/near.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/solana.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/stellar.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/substrate.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/sui.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/tezos.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/ton.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/tron.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/dashboard-and-api-keys.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/integration-patterns.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/mcp-tools.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/output-formats.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/policies.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/setup.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/signing-patterns.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/transaction-lifecycle.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/yield-types.md
✅ Files skipped from review due to trivial changes (7)
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/dashboard-and-api-keys.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/ton.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/api-field-mapping.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/chains/stellar.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/output-formats.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/common-pitfalls.md
  • yield-agentkit-skills/skills/yield-agentkit-builder/references/setup.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • yield-agentkit-skills/skills/yield-agentkit-builder/README.md

Philippoes and others added 7 commits June 17, 2026 12:09
Four adversarial QA agents (consistency, live-accuracy, coverage, end-to-end dogfood)
verified the skill is canonical truth on the big-ticket items and found a focused set
of real bugs — fixed here:

- status.enter/status.exit are NOT query filters (live → 400); read per-item or use
  sort=statusEnterDesc — removed from the discovery filter list
- provider/providers filter matches `providerId` (aave/compound/morpho), not the
  version slug (aave-v3 → total 0); fixed example values + response-shape providerId
- add the `prime` query param to the /v1/yields table
- mechanics.arguments.exit (and .enter) can be null — gate exit on status.exit AND
  arguments.exit != null; some yields exit only via a pendingAction
- outputTokenBalance is optional on balance items; REDELEGATE isn't a real
  PendingActionDto.type → use DELEGATE/RESTAKE; CLP exit tokenId comes from BalanceDto.tokenId
- missing-chain-arg error is 400 (not 422) — fixed cosmos/tezos/tron guides
- /risk returns { updatedAt, stakingRewards?: { rating, score, ... } } (letter grade,
  often absent) — replaced the invented risk.level Low/Medium/High shape in policies.md
- README: 16 pitfalls (not 12), full folder tree incl chains/, Tron in signing coverage
- signing-patterns: 80+ networks (was 90+); ton.md signing stub de-stubbed

Note: liquid_staking kept / fixed_yield kept absent per product decision (not bugs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- SKILL.md: merge the two "inspect the live API" workflow steps into one and trim
  Step "Generate Code" to point at the Quickstart for the lifecycle instead of
  re-listing it (the Quickstart already has the canonical flow). Steps renumber to
  0–4; saves runtime tokens on the always-loaded file.
- Aptos guide: it's a per-key enablement state, not "unsupported" — Aptos yields
  exist and can be enabled on a key (see dashboard-and-api-keys.md). Reframed the
  "no live yields / not integrable" callout accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…per-key

Yields are enabled/disabled per API key, so no chain guide should claim a network has
no yields or "isn't integrable." Removed the Aptos "may not be enabled / 0 results"
callout and trailing caveat; Aptos now reads like every other chain guide (Available
Yields → `aptos-apt-native-staking`). Swept the chain guides — no no-yields/not-
integrable framing remains. (The `400 "not enabled for this project"` error itself is
still documented where it belongs — dashboard-and-api-keys.md / common-pitfalls — as an
error a builder may hit, not as a claim that a network lacks yields.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The skill is settled — drop the "the MCP used to expose ~10 tools / those have been
removed" notes and the "(Former MCP tool)" mapping column. They were transition scaffolding;
the doc now presents the 5 doc tools + reference files as the design, no removal markers.
The forward-useful Need→Read static-guidance table stays.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#2

Reframe the wrong-base-URL and wrong-field-name pitfalls to keep the protective guard
(use yieldId/address/arguments, not integrationId/addresses/args — agents hallucinate
the old names from training data) without narrating "the legacy API used X". Table header
"Wrong (legacy)" → "Don't use / Use". Remaining `legacy`/`deprecated` mentions are real
protocol/API terms (EVM type 0=legacy, Solana legacy-vs-v0 tx, older-lib descriptors,
the metadata.deprecated field) — left as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…on skills

Add routing in 'When This Skill Activates': autonomous/agentic execution (own wallet, discovers AND executes, policy-gated signing) -> yield-agentkit-privy / -moonpay / -rwakit-privy; this skill = the integration surface (discovery, tx construction, your own signing infra).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants