atris/skills/ramp/SKILL.md
Ramp corporate card and spend management. Use when user asks about expenses, transactions, cards, spend analysis, burn rate, or corporate finance. Triggers on ramp, expenses, transactions, spend, corporate card, burn rate.
npx skillsauth add atrislabs/atris rampInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Corporate spend management via Ramp API. No OAuth needed — API key auth.
User needs a Ramp API key from their Ramp dashboard (Settings > Developer API).
Store locally (default):
mkdir -p ~/.atris/secrets/ramp
read -s -p "Ramp API key: " key
printf '%s' "$key" > ~/.atris/secrets/ramp/API_KEY
chmod 600 ~/.atris/secrets/ramp/API_KEY
unset key
echo "Saved."
The key is available at runtime as RAMP_API_KEY env var.
Base URL: https://api.ramp.com/developer/v1
Auth header: Authorization: Bearer $RAMP_API_KEY
All responses are JSON. List endpoints support start (cursor) and page_size params for pagination.
curl -s "https://api.ramp.com/developer/v1/transactions?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
Filter params:
from_date / to_date — ISO 8601 (e.g. 2026-03-01)department_id — filter by departmentmerchant_id — filter by merchantuser_id — filter by cardholdermin_amount / max_amount — in centsstate — PENDING, CLEARED, DECLINEDcurl -s "https://api.ramp.com/developer/v1/transactions/{transaction_id}" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/cards?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/cards/{card_id}" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s -X POST "https://api.ramp.com/developer/v1/cards/deferred/virtual" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"display_name": "Marketing Q1",
"user_id": "USER_ID",
"spending_restrictions": {
"amount": 500000,
"interval": "MONTHLY",
"lock_date": null,
"categories": []
}
}'
curl -s -X PATCH "https://api.ramp.com/developer/v1/cards/{card_id}" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"display_name": "New Name",
"spending_restrictions": {"amount": 100000, "interval": "MONTHLY"}
}'
curl -s -X POST "https://api.ramp.com/developer/v1/cards/{card_id}/deferred/suspension" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
curl -s -X POST "https://api.ramp.com/developer/v1/cards/{card_id}/deferred/termination" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
curl -s "https://api.ramp.com/developer/v1/business" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/business/balance" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/users?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/users/{user_id}" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/departments" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s -X POST "https://api.ramp.com/developer/v1/departments" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Engineering"}'
curl -s "https://api.ramp.com/developer/v1/bills?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s -X POST "https://api.ramp.com/developer/v1/bills" \
-H "Authorization: Bearer $RAMP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": {"amount": 150000, "currency_code": "USD"},
"vendor_name": "AWS",
"invoice_number": "INV-001",
"due_date": "2026-04-01",
"memo": "March hosting"
}'
curl -s "https://api.ramp.com/developer/v1/reimbursements?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/cashbacks?page_size=50" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/accounting/accounts" \
-H "Authorization: Bearer $RAMP_API_KEY"
curl -s "https://api.ramp.com/developer/v1/accounting/vendors" \
-H "Authorization: Bearer $RAMP_API_KEY"
GET /transactions?from_date=2026-03-01&to_date=2026-03-31GET /business/balanceGET /users → match by name/emailPOST /cards/deferred/virtualGET /departmentsdepartment_idAll monetary amounts in the Ramp API are in cents (integer). $150.00 = 15000.
List endpoints return { "data": [...], "page": { "next": "cursor_string" } }.
To get next page: add ?start=cursor_string to the request.
Ramp applies rate limits per API key. If you get 429, wait and retry with exponential backoff.
For the complete OpenAPI spec: https://docs.ramp.com/openapi/developer-api.json
For AI-readable docs: https://docs.ramp.com/llms.txt
development
Wake a team member by name — 'gm <member>' or 'wake up <member>' — and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up <member>, wake the team, run a tick as <member>.
development
Dispatch coding work to an installed terminal agent — Codex, Cursor, or Devin — as an interchangeable worker engine. Claude orchestrates: writes the bounded prompt, the engine builds, Claude verifies and lands. Triggers on: use codex, use cursor, use devin, engine, dispatch to, worker agent, second opinion build.
development
Live RL tuner for skills. Watches skill invocations, reads user reaction, proposes targeted SKILL.md overlay edits, requires explicit approval, writes scorecards. The in-session half of the skill-RL loop (Path B). Triggers on: tune, sharpen, skill feedback, that was shit, that was great, make X better.
development
Run one RL improvement tick on the workspace via POST /api/improve. Ships one verifiable change, scores it, writes the scorecard. The thing you pay for. Triggers on: improve, make this better, ship one thing, run a tick, get smarter.