Agent skill

Split Rewards Mip

by moonwell-fi in moonwell-fi/moonwell-contracts-v2

Split a rewards-distribution MIP that exceeds Moonbeam's 16,777,216 (2^24) per-tx gas cap into chain-destination chunks (e.g.

BSD-3-ClauseAuto-check passed

Install Split Rewards Mip

skills CLI
$ npx skills add moonwell-fi/moonwell-contracts-v2 --skill split-rewards-mip -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install moonwell-fi/moonwell-contracts-v2 split-rewards-mip --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/moonwell-fi/moonwell-contracts-v2.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/split-rewards-mip .claude/skills/split-rewards-mip && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
split-rewards-mip
GitHub stars
109
Token cost
~1.1k tokens
SKILL.md length
474 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Split a rewards-distribution MIP that exceeds Moonbeam's 16,777,216 (2^24) per-tx gas cap into chain-destination chunks (e.g.

  • Works in 9 steps: Pre-check the gas estimate → Plan the split → Rebalance the bridge amounts → …
  • SKILL.md covers Inputs, Workflow and Common pitfalls
  • Calls git and make; reaches moonwell-reward-automation.moonwell.workers.dev

What it does

Split Rewards Mip is an agent skill from moonwell-fi/moonwell-contracts-v2. Split a rewards-distribution MIP that exceeds Moonbeam's 16,777,216 (2^24) per-tx gas cap into chain-destination chunks (e.g. x51 → x51a/x51b/x51c). Walks through the cast estimate precheck, generates new folders/JSON/SH/SOL, and rebalances the bridgeToRecipient amounts in TG-flow order so each split's first outflow is fully funded.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The licence is BSD-3-Clause.

Example prompts

  • “/split-rewards-mip”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Pre-check the gas estimate
  2. Plan the split
  3. Rebalance the bridge amounts
  4. Generate new folders
  5. Regenerate the JSON for each split
  6. Update mips.json
  7. Re-run gas estimate per split
  8. Verify with audit-rewards
  9. Simulate each split

What it can do on your machine

Read from SKILL.md and the folder at commit 9a8b980. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • moonwell-reward-automation.moonwell.workers.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Split Rewards Mip loads about 1.1k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 474 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from moonwell-fi/moonwell-contracts-v2 at commit 9a8b980, republished under its BSD-3-Clause licence (© moonwell-fi). 474 words, ~1,110 tokens.

Download SKILL.mdSave it as .claude/skills/split-rewards-mip/SKILL.md (or your agent's skills folder).
name
split-rewards-mip
description
Split a rewards-distribution MIP that exceeds Moonbeam's 16,777,216 (2^24) per-tx gas cap into chain-destination chunks (e.g. x51 → x51a/x51b/x51c). Walks through the cast estimate precheck, generates new folders/JSON/SH/SOL, and rebalances the bridgeToRecipient amounts in TG-flow order so each split's first outflow is fully funded.

Split Rewards MIP

Use when a rewards-distribution MIP's propose() gas estimate exceeds ~15M (Moonbeam's per-tx cap is 16,777,216). Above that, the tx is silently dropped by Goldsky/Alchemy/public RPC, or rejected at submit on Alchemy/public Moonbeam RPC.

Inputs

  • The original MIP folder name (e.g. mip-x51).
  • Suggested split scheme — usually by destination chain. Example for x51:
    • x51a = Moonbeam-only payload + Optimism rewards bridge
    • x51b = Base rewards bridge
    • x51c = Base bad-debt repayment

Workflow

1. Pre-check the gas estimate
bash
cast estimate <governor-address> "propose(...)" --rpc-url $MOONBEAM_RPC_URL

If this returns > ~15M, splitting is required. If it's between 14M and 16M, recommend splitting anyway — Moonbeam block-cap headroom is unforgiving.

2. Plan the split

Decide chain-destination boundaries. The build order in _buildExternalChainActions is fixed and cannot be reordered:

transferFrom → setRewardSpeeds → withdrawWell → transferReserves → multiRewarder → merkleCampaigns

For each split, identify which actions move into it. Each split's Moonbeam payload runs independently as a separate propose().

3. Rebalance the bridge amounts

Critical math: bridgeToRecipient for each destination chain in each split must cover that split's FIRST Base/Optimism TEMPORAL_GOVERNOR outflow — NOT the net TG balance after all actions.

Why: transferFrom(TG → MRD) runs BEFORE withdrawWell brings WELL back into TG. A bridge sized only for the net balance will revert on the first transfer with ERC20: transfer amount exceeds balance.

Trace TG inflow/outflow step-by-step. Show the math explicitly to the user for verification.

4. Generate new folders

For each split (e.g. x51a, x51b, x51c):

  • proposals/mips/mip-x51<letter>/x51<letter>.sh
  • proposals/mips/mip-x51<letter>/x51<letter>.json
  • proposals/mips/mip-x51<letter>/x51<letter>.md
  • proposals/mips/mip-x51<letter>/mip-x51<letter>.sol (if standalone — copies the parent)

Mark every .sh executable in git: git update-index --chmod=+x proposals/mips/mip-x51<letter>/x51<letter>.sh.

5. Regenerate the JSON for each split

Pull from the rewards automation worker:

https://moonwell-reward-automation.moonwell.workers.dev/?type=json&timestamp=<unix>

Filter the worker output to the actions that belong to this split. Sanity-check: no negative withdrawWell, no nativeValue: 0.

Show full SKILL.md (205 more words)Show less
6. Update mips.json

Add an entry per split with id: 0 (in-development sentinel). Path points to the artifact:

json
{
  "envpath": "proposals/mips/mip-x51a/x51a.sh",
  "governor": "MultichainGovernor",
  "id": 0,
  "path": "mip-x51a.sol/mipx51a.json",
  "proposalType": "HybridProposal"
}

Keep the array sorted with id: 0 entries at the top, then descending by id.

7. Re-run gas estimate per split

After splitting, run cast estimate on each split's propose() to confirm all are below 15M. If any one is still over, sub-split it further.

8. Verify with audit-rewards

Run make audit-rewards PROPOSAL=mip-x51a (and b, c) on each split. The audit runs in CI via proposal-summary.yml and verifies:

  • TG flow conservation
  • MRD budget = Σ speeds × duration
  • Safety-module budget = stkEPS × duration
  • Moonbeam bridge fan-out
  • 4-week epoch
  • No negative amounts
9. Simulate each split

Use the /simulate-mip skill once per split.

Common pitfalls

  • Net-balance bridge sizing: see step 3 above. Always size to the first outflow.
  • Forgot exec bit: forge test --ffi will fail with Permission denied on the new .sh files. Always git update-index --chmod=+x.
  • Stale cached IDs in mips.json: keep id: 0 until the proposal lands on-chain. Reviewers will catch real IDs in unmerged PRs.
  • Double-counting bridged WELL: when one split bridges WELL that the next split assumes already arrived in TG, fork sims will pass but on-chain ordering matters. Document the sequencing in each split's .md.

© moonwell-fi, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/split-rewards-mip of moonwell-fi/moonwell-contracts-v2.

Open the folder on GitHubat commit 9a8b980

Compare with similar skills

Split Rewards Mip next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Split Rewards Mip compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Split Rewards Mip this skillmoonwell-fi/moonwell-contracts-v2109—~1.1kAutomated safety check: PassBSD-3-Clause
Distributed Triagepytorch/pytorch104k—~2.8kAutomated safety check: PassCustom licence
Recognition Rewardssickn33/agentic-awesome-skills47k1 repos~3.4kAutomated safety check: PassMIT
Distributed Tracingwshobson/agents40k12 repos~527Automated safety check: PassMIT
Distribute Skill To All Agentssickn33/agentic-awesome-skills47k1 repos~1.2kAutomated safety check: PassMIT
Code Splittingthedaviddias/Front-End-Checklist74k—~492Automated safety check: PassMIT

Similar skills

  • Distributed Triage

    pytorch/pytorch

    Sub-triages issues in the oncall:distributed queue by assigning distributed module labels, routing to sub-oncalls, and marking triaged.

    104k GitHub stars~2.8k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Recognition Rewards

    sickn33/agentic-awesome-skills

    Recognition register: employee, reward type, category, visibility, message and points awarded.

    47k GitHub starsUsed in 1 repo~3.4k tokens
    Auto-check passed
  • Distributed Tracing

    wshobson/agents

    Implement distributed tracing with Jaeger and Tempo to track requests across microservices and identify performance bottlenecks.

    40k GitHub starsUsed in 12 repos~527 tokens
    DevOps & CloudAuto-check passed
  • Distribute Skill To All Agents

    sickn33/agentic-awesome-skills

    Distribute a skill across configured agent skill folders while respecting local symlink layouts.

    47k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Code Splitting

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing large SPA bundles, new dependency additions, or routes that feel slow to hydrate.

    74k GitHub stars~492 tokensUpdated 3 days ago
    Auto-check passed
  • Distributed Training

    aiming-lab/AutoResearchClaw

    Multi-GPU and distributed training patterns with PyTorch DDP.

    15k GitHub stars~216 tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check passed

More from moonwell-fi/moonwell-contracts-v2

  • Simulate Mip

    moonwell-fi/moonwell-contracts-v2

    Run a Moonwell governance proposal simulation against the canonical fork command (DOVALIDATE=true DOPRINT=true DOBUILD=true DORUN=false forge script ...

    109 GitHub stars~906 tokensUpdated yesterday
    Auto-check passed

Questions about Split Rewards Mip

What does Split Rewards Mip do?

Split a rewards-distribution MIP that exceeds Moonbeam's 16,777,216 (2^24) per-tx gas cap into chain-destination chunks (e.g. Split Rewards Mip is an agent skill from moonwell-fi/moonwell-contracts-v2.g.

How do I install Split Rewards Mip in Claude Code?

Run `npx skills add moonwell-fi/moonwell-contracts-v2 --skill split-rewards-mip -a claude-code`. Or copy the skill folder (.claude/skills/split-rewards-mip in moonwell-fi/moonwell-contracts-v2) into .claude/skills/split-rewards-mip in your project. Claude Code loads it when a task matches its description.

How do I install Split Rewards Mip in Codex?

Run `npx skills add moonwell-fi/moonwell-contracts-v2 --skill split-rewards-mip -a codex`. Or copy the skill folder (.claude/skills/split-rewards-mip in moonwell-fi/moonwell-contracts-v2) into .agents/skills/split-rewards-mip in your project. Codex loads it when a task matches its description.

Can I use Split Rewards Mip in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add moonwell-fi/moonwell-contracts-v2 --skill split-rewards-mip -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/split-rewards-mip, .gemini/skills/split-rewards-mip, .github/skills/split-rewards-mip and .opencode/skills/split-rewards-mip in your project.

What does Split Rewards Mip need to run?

Going by SKILL.md and its folder, Split Rewards Mip needs the command-line tools its instructions call (git and make).

Does Split Rewards Mip access the network?

SKILL.md names 1 domain. In commands or code: moonwell-reward-automation.moonwell.workers.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Split Rewards Mip safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Split Rewards Mip use?

Split Rewards Mip is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Split Rewards Mip use?

About 1.1k tokens (SKILL.md is roughly 4.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Split Rewards Mip?

Skills that share tags, products or a category with Split Rewards Mip: Distributed Triage (pytorch/pytorch, 104k stars), Recognition Rewards (sickn33/agentic-awesome-skills, 47k stars), Distributed Tracing (wshobson/agents, 40k stars) and Distribute Skill To All Agents (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Split Rewards Mip?

moonwell-fi (a GitHub organization) maintains it in moonwell-fi/moonwell-contracts-v2, which has 109 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.

Source: moonwell-fi/moonwell-contracts-v2 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.