vercel-labs/channel-forward-parity
Webhook route parity audit for channel delivery changes: ensure terminal paths log, record lastForward, classify failures, and refresh stale sandbox port URLs.
npx skills add https://github.com/vercel-labs/vercel-openclaw --skill channel-forward-parity
Use this before modifying any channel webhook route or the shared drain-channel workflow.
src/server/channels/last-forward.tssrc/server/workflows/channels/drain-channel-workflow.tssrc/app/api/channels/slack/webhook/route.tssrc/app/api/channels/telegram/webhook/route.tssrc/app/api/channels/discord/webhook/route.tssrc/app/api/channels/whatsapp/webhook/route.tssrc/app/api/channels/summary/route.tssrc/server/admin/why-not-ready.tsProduce a table:
| Channel | Branch | Logs event | Updates lastForward | Classification | Stale URL refresh | Evidence |
|---|---|---|---|---|---|---|
Also include correlation coverage:
| Channel | Branch | requestId/deliveryId propagated | workflowRunId propagated | Logs event | Updates lastForward | Classification | Stale URL refresh | Evidence |
|---|---|---|---|---|---|---|---|---|
lastForward.lastForward; do not double-record above it.export const runtime = "nodejs" to route handlers.channels.<ch>_workflow_started, channels.forward_attempt, and channels.forward_outcome can be correlated by requestId/deliveryId and workflowRunId when available.npx workflow cannot inspect the run, parity evidence must fall back to Vercel logs plus /api/admin/logs.npx sandbox failure as sandbox-unreachable until the app admin SSH/exec fallback has been attempted or marked unavailable.vercel, npx workflow, or npx sandbox output. If .vercel/project.json points at a different release, require explicit project/team/deployment targeting evidence.recordChannelLastForward coverage.sandbox-not-listening branch for exactly one stale-port refresh per request.Take vercel-labs/channel-forward-parity from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.