Automated summary
Guides building a verified, idempotent Ramp webhook receiver with raw-body HMAC-SHA256 validation, fast acknowledgement, durable processing, and reconciliation.
Strengths
- Covers the full subscription lifecycle, including the `pending_verification` challenge that must be echoed and submitted before activation.
- Requires verifying `X-Ramp-Signature` over exact raw bytes with constant-time comparison before any parsing.
- Makes operational constraints explicit: respond within 10 seconds, up to 10 retries, reused event IDs, and out-of-order delivery.
- Ships a concrete test matrix (duplicates, invalid signature, secret rotation, queue failure) plus a scheduled reconciliation job.
Limitations
- Assumes approved Ramp API access (sandbox or production) and current official docs; the skill does not supply endpoint schemas itself.
- Restricted to file tools (Read, Glob, Grep, Write, Edit), so it neither deploys anything nor calls Ramp APIs directly.
- The error-handling table is truncated in the source document, so some failure cases must be re-derived from the official docs.
Use it when you need to implement or harden a Ramp webhook endpoint handling transaction, bill, reimbursement, or spend-request events.
Avoid it for read-only Ramp REST polling integrations or for webhooks from providers other than Ramp.
Security analysis
SafeThe skill is a procedural guide for building a Ramp webhook receiver. Its allowed tools are limited to local file inspection and editing (Read, Glob, Grep, Write, Edit); there is no shell, network, or credential-exfiltration instruction anywhere. Guidance emphasizes raw-body HMAC verification with constant-time comparison, secret-manager storage, explicit owner approval before live operations, and treating unresolved vendor behavior as a stop condition. Writes are scoped to approved local drafts/artifacts with rollback boundaries, so no meaningful execution risk is present.
No concerns found
How this analysis is madeExamples
Add a Ramp webhook receiver to our Node service: verify X-Ramp-Signature against the exact raw request body, dedupe by X-Ramp-Webhook-ID, durably enqueue, and only then return 2xx within 10 seconds.Verify Ramp signature handling in our handler — some deliveries get rejected. Review the code and make sure it hashes the unparsed raw body with HMAC-SHA256 using the subscription secret and compares in constant time.Walk me through completing the pending_verification challenge for our Ramp bill.updated subscription, then write tests for duplicate events, out-of-order delivery, invalid signatures, and secret rotation.name: ramp-webhooks-events description: >- Build a verified, idempotent Ramp webhook receiver with raw-body HMAC validation, fast acknowledgement, durable processing, and reconciliation. Use when handling transaction, bill, reimbursement, spend-request, or other Ramp events. Trigger with "Ramp webhooks" or "verify Ramp signature". allowed-tools: Read,Glob,Grep,Write,Edit version: 2.0.0 argument-hint: "[integration-or-environment]" model: inherit effort: high author: Jeremy Longshore jeremy@intentsolutions.io license: MIT compatibility: Requires current Ramp Developer API documentation and approved access for any live financial, card, identity, accounting, application, or configuration change tags: [saas, ramp, webhooks, events, idempotency]
Ramp Webhook Verification and Processing
Overview
Verify authenticity before parsing, acknowledge only after durable receipt, and treat each event as a notification to reconcile current resource state. Design for retries, duplicates, and out-of-order delivery.
Prerequisites
- Identify the Ramp application, environment, business entities, affected data and workflows, accountable owner, and rollback boundary.
- Read
references/official-docs.mdand re-check endpoint schemas, scopes, limits, and support status before a live operation. - Use synthetic fixtures or Ramp sandbox until production access and business effects are explicitly approved.
- Prepare approved secret storage and a sanitized evidence location.
Current Contract
- New subscriptions begin
pending_verification; Ramp sends a challenge that must be returned and submitted to activate the subscription. - Business deliveries include
X-Ramp-Webhook-IDandX-Ramp-Signature; the latter is HMAC-SHA256 of the exact raw request body using the subscription secret. - Receivers must respond within 10 seconds. Ramp retries 429, 5xx, timeouts, and connection errors up to 10 total attempts with exponential backoff and jitter.
- The same event ID is reused across retries, and events may arrive out of order.
Instructions
-
Select only documented event types and underlying read scopes; register an HTTPS endpoint and store the returned webhook secret in an approved secret manager.
-
Complete the challenge flow and record subscription ID, state, business, events, scopes, endpoint, secret version, and owner without logging the secret.
-
Capture exact raw bytes, verify
X-Ramp-Signaturewith constant-time comparison, validate expected event/business, then deduplicate by stable event ID. -
Durably enqueue the verified event before returning 2xx within 10 seconds; process asynchronously and fetch current resource state when business action needs full or ordered data.
-
Test duplicates, invalid signature, unknown event, out-of-order events, 429/5xx retry, secret rotation, queue failure, and scheduled API reconciliation.
Tool Discipline
- Use Glob to locate candidate code, manifests, fixtures, and evidence without widening scope.
- Use Grep to find relevant endpoints, fields, permissions, identifiers, errors, and stale assumptions.
- Use Read to inspect the smallest required local files and authoritative evidence.
- Use Write only for a new approved local draft, test, configuration, or evidence artifact.
- Use Edit only for a bounded approved change with a known rollback.
- Local file tools do not authorize a Ramp operation or replace owner approval.
Approval Boundaries
Application/security owners approve endpoint and secret handling; data/finance owners approve subscribed objects and downstream actions. Production mock events require care because live receivers can process them as real activity.
Output
A subscription inventory, challenge receipt, raw-body verification design, event ledger, durable queue, retry and dedupe tests, reconciliation job, rotation plan, and monitoring.
Error Handling
| Condition | Response | |---|---| | Signature differs after parsing | Verify the original bytes before middleware mutation or JSON reserialization. | | Processing exceeds 10 seconds | Persist the verified event and acknowledge; move business work to an asynchronous consumer. | | An older event arrives after a newer one | Fetch current object state and apply a monotonic business transition rather than trusting arrival order. |
Examples
Example 1
Receive transactions.ready_to_sync, verify and enqueue it, fetch current transaction state, and create one idempotent ERP work item.
Example 2
Rotate a subscription secret while proving invalid signatures fail and duplicate event IDs never duplicate effects.
Validation
- Pending verification reaches active state through the documented challenge.
- Invalid signatures and unexpected business/event types fail before processing.
- Durable receipt, 2xx timing, duplicate, retry, and out-of-order behavior are proven.
- Periodic reconciliation detects events missed during extended downtime.
Resources
- Official documentation and contract notes
- Re-check the dated contract and current OpenAPI schema before any live request.
- Treat unresolved vendor behavior, authority, or financial state as a stop condition.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/verified-ramp-webhook-receiver-mtz9jqq1/download' --output '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md.part' && mv '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md.part' '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Environment declared by the author: Requires current Ramp Developer API documentation and approved access for any live financial, card, identity, accounting, application, or configuration change
Tools declared by the author (check availability in your agent): Read,Glob,Grep,Write,Edit
Original excerpt: Prerequisites
- Identify the Ramp application, environment, business entities, affected data and workflows, accountable owner, and rollback boundary.
- Read
references/official-docs.mdand re-check endpoint schemas, scopes, limits, and support status before a live operation. - Use synthetic fixtures or Ramp sandbox until production access and business effects are explicitly approved.
- Prepare approved secret storage and a sanitized evidence location.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md' && test -s '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ramp-webhooks-events' && cp -R '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1' '.claude/skills/ramp-webhooks-events'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1'openskills read 'verified-ramp-webhook-receiver-mtz9jqq1'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.