跳到正文
cccskills
免费在 GitHub 公开

denylist-stuck-messages

Add message IDs to the relayer denylist. Use after investigating stuck messages with /investigate-stuck-messages, or when you have specific message IDs to denylist.

中文简介正在准备中。当前显示原文说明。

集成工具Slack

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md5.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Denylist Stuck Messages

Add message IDs to the relayer denylist configuration, create a PR, and deploy.

When to Use

  1. After investigation:

    • User ran /investigate-stuck-messages and wants to denylist the found messages
    • User says "denylist these" or "add these to blacklist"
  2. Direct denylist request:

    • User provides specific message IDs to denylist
    • User pastes message IDs from explorer or logs

Input Parameters

/denylist-stuck-messages <message_ids> [app_context=NAME] [reason=REASON]
ParameterRequiredDefaultDescription
message_idsYes-Space or newline separated message IDs (0x...)
app_contextNoInferred or "Unknown"App context name for the comment
reasonNo"stuck in prepare queue"Reason for denylisting (for comment)
environmentNomainnet3Deployment environment

Examples:

/denylist-stuck-messages 0xabc123 0xdef456 app_context=USDC/mainnet-cctp-v2-standard
/denylist-stuck-messages
0xabc123
0xdef456
0x789ghi

Workflow

Step 1: Parse Message IDs

Extract all message IDs from the input. Valid formats:

  • Space-separated: 0xabc 0xdef 0x123
  • Newline-separated
  • Comma-separated: 0xabc, 0xdef, 0x123

Validate each ID:

  • Must start with 0x
  • Must be 66 characters (0x + 64 hex chars)

Step 2: Confirm with User

Ask the user to confirm:

Ready to denylist X messages for [APP_CONTEXT]:

| Message ID |
|------------|
| 0xabc123... |
| 0xdef456... |

Proceed?

Options:

  1. "Yes, denylist all" (Recommended)
  2. "Let me modify the list"
  3. "Cancel"

Step 3: Get User's GitHub Handle

Ask for GitHub handle if not known:

What is your GitHub handle for the branch name?

Step 4: Update Blacklist Configuration

Edit typescript/infra/config/environments/mainnet3/customBlacklist.ts:

  1. Read the current file
  2. Add new message IDs to the blacklistedMessageIds array
  3. Include a comment with:
    • App context name
    • Date (YYYY-MM-DD format)
    • Reason

Example addition:

  // [APP_CONTEXT] [REASON] [YYYY-MM-DD]
  '0xabc123...',
  '0xdef456...',

Add entries near the end of the array, before the closing bracket.

Step 5: Create Branch and Pull Request

# Checkout main and pull latest
git checkout main && git pull origin main

# Create branch
git checkout -b <github_handle>/denylist-<app_context>

# Stage changes
git add typescript/infra/config/environments/mainnet3/customBlacklist.ts

# Commit
git commit -m "chore: denylist <APP_CONTEXT> stuck messages

Added X message IDs to denylist for <APP_CONTEXT> route.
Reason: <REASON>
"

# Push and create PR
git push -u origin HEAD
gh pr create --title "chore: denylist <APP_CONTEXT> stuck messages" --body "$(cat <<'EOF'
## Summary
- Added X message IDs to the relayer denylist
- App context: `<APP_CONTEXT>`
- Reason: <REASON>

## Message IDs
<list of message IDs>

## Test plan
- [ ] Review message IDs are correct
- [ ] Deploy relayer with updated denylist

EOF
)"

Step 6: Output Slack Message

Before asking about deployment, output the Slack message:

**Slack Message (copy/paste to #relayer-alerts):**

:no_entry_sign: *Denylist PR created*

App context: `<APP_CONTEXT>`
Messages denylisted: X
Reason: <REASON>

PR: <PR_URL>

Step 7: Ask About Deployment

Ask the user:

PR created. Deploy the relayer now with the updated denylist?

Options:

  1. "Yes, deploy now" (Recommended)
  2. "No, I'll deploy later"

If user confirms, run:

pnpm --dir typescript/infra exec tsx ./scripts/agents/deploy-agents.ts -e mainnet3 --context hyperlane --role relayer

If user skips, output the command for later use.

Step 8: Update Slack Message After Deploy

If deployed, update the Slack message:

:no_entry_sign: *Denylist deployed*

App context: `<APP_CONTEXT>`
Messages denylisted: X
Reason: <REASON>

PR: <PR_URL>

Grouping by Destination

If message IDs are for multiple destinations (from investigation output), group them in the blacklist file:

  // [APP_CONTEXT] stuck messages [YYYY-MM-DD]
  // dest: arbitrum
  '0xabc123...',
  '0xdef456...',
  // dest: optimism
  '0x789ghi...',
  '0xjkl012...',

Error Handling

  • Invalid message ID format: Show which IDs are invalid, ask user to fix
  • Git conflicts: Pull latest main and retry
  • PR creation fails: Check gh auth status
  • Deployment fails: Show error, suggest manual deployment

Prerequisites

  • gh CLI authenticated
  • Git configured with push access to the repo
  • For deployment: kubectl configured with mainnet cluster access

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Write a changeset file in the `hyperlane-registry` repo for a PR that adds, updates, or modifies warp route config / chain metadata / addresses. Canonical pattern — never run the interactive `pnpm changeset` CLI; write the file directly. Referenced by any skill that opens a registry PR.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Trigger Docker image builds for Hyperlane agent, monorepo, or node service images. Use when the user wants to build new Docker images for a branch, commit, or tag.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

The low-level on-chain probes for identifying what an owner address is — cast code → EOA / EIP-7702-delegated EOA / contract, VERSION() → Gnosis Safe, read-only get-owner-ica.ts derive → ICA derivation, getAccountInfo → Sealevel account existence — with how to interpret each result. The primitive layer beneath validate-owners / resolve-artifacts / update-owners, which each apply their own per-chain or per-artifact policy on top.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Review code changes using Hyperlane monorepo coding standards. Use when reviewing PRs, checking your own changes, or doing self-review before committing.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Debug why a Hyperlane message is not being processed. Use when given a message ID or explorer URL to investigate delivery failures, gas estimation errors, validator issues, or other processing problems.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Debug RPC provider health issues for a chain. Use when alerts mention RPC failures, high latency, stale blocks, or provider errors. Diagnoses the issue and recommends fixes.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

查看 hyperlane-xyz 的全部技能

报告此技能的问题