You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/warp-route-check/skill.md
+119Lines changed: 119 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -398,6 +398,117 @@ hyperlane warp check \
398
398
399
399
**NOTE**: Warp check may show provider errors for newly added chains - this is expected.
400
400
401
+
### Step 8b: Test transferRemote on Fork
402
+
403
+
After verifying configuration with`warp check`, test that an actual token transfer works on the forked chains. This catches issues that config checks miss: broken `transferRemote` calldata, token accounting bugs (lock/mint/burn/unlock), and message dispatch failures.
404
+
405
+
#### 8b.1 Pick an Origin → Destination Pair
406
+
407
+
Choose one origin → destination pair from the warp route. Prefer a pair where both chains have transactions (i.e., both were modified), so you're testing the freshly configured path.
408
+
409
+
#### 8b.2 Bypass ISM on Destination (Required for Self-Relay)
410
+
411
+
Forked mainnet chains have real multisig ISMs that require validator signatures. Since there are no validators on anvil forks, you must set a permissive ISM on the destination so self-relay can deliver the message.
412
+
413
+
```bash
414
+
# 1. Get the mailbox address for the destination chain from the forked registry
**NOTE**: If the warp router has a custom ISMset (not using the mailbox default), you'll need to impersonate the router owner and call `setInterchainSecurityModule(address)` on the router instead.
452
+
453
+
#### 8b.3 Fund the Test Sender
454
+
455
+
```bash
456
+
# Generate a test private key (or use a well-known anvil key)
-**Success**: The CLI should log `Transfer was self-relayed!`and show the message ID
502
+
-**Failure**: Check the error output. Common issues:
503
+
-`Ownable: caller isnot the owner` on ISM bypass → wrong mailbox owner or router has custom ISM
504
+
-`insufficient funds` → test sender not funded with tokens (for collateral routes)
505
+
-`message already delivered` → ISM bypass not working, retry with router-level ISM override
506
+
- Timeout waiting for delivery → self-relay failed, check ISM was properly set
507
+
508
+
**Capture output** to `/tmp/warp-transfer-test.log`for the final report.
509
+
510
+
**NOTE**: This step is optional but strongly recommended. If it fails due to ISM complexity (e.g., routing ISMs, aggregation ISMs), document the failure and move on — the config check in Step 8 still validates the deployment.
511
+
401
512
### Step 9: Interpret Results
402
513
403
514
Analyze the warp check output carefully:
@@ -516,6 +627,14 @@ Create a comprehensive markdown report with the following sections:
516
627
517
628
[List of chains not modified and their expected violations]
518
629
630
+
## Transfer Test Results
631
+
632
+
-**Origin → Destination**: <chain-a> → <chain-b>
633
+
-**Amount**: <amount>
634
+
-**Result**: ✅ Success / ❌ Failed (reason)
635
+
-**Message ID**: <id> (if successful)
636
+
-**ISM Bypass**: Yes (TestIsm deployed at <address>set on destination mailbox)
prompt: "Use agent teams to run /claude-security-review, then use /inline-pr-comments to post findings as a consolidated PR review with inline comments"
135
+
prompt: 'Use agent teams to run /claude-security-review, then use /inline-pr-comments to post findings as a consolidated PR review with inline comments'
prompt: "When you have specific code feedback on changed lines, use /inline-pr-comments to deliver it as a consolidated GitHub review with inline comments."
274
+
prompt: 'When you have specific code feedback on changed lines, use /inline-pr-comments to deliver it as a consolidated GitHub review with inline comments.'
0 commit comments