本文へ移動
cccskills
無料GitHub で公開

refund-and-dispute

Move money back to a customer in Stripe, or respond to a dispute, with the checks that belong in front of an irreversible write — read the charge first, fix the exact amount, and clear Stripe's human confirmation step. Use when the user asks to refund a payment, cancel and refund a subscription, or handle a chargeback or dispute.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

A refund is not a retryable call

Every other Stripe read can be run again for free. A refund cannot. Treat the write as the last step of a short checklist, never as the first attempt at understanding the request.

1. Read the charge before you touch it

The checks live on the charge, so a pi_ id is not where this starts: read the PaymentIntent, follow latest_charge, and read that charge. Skipping the hop is how an agent misses an open dispute, because refunded, amount_refunded, and disputed are not PaymentIntent fields and reading them off one yields undefined rather than an error.

A latest_charge of null ends the job rather than starting it: the PaymentIntent was never confirmed, or no attempt produced a charge, so there is nothing to refund. Say that and stop.

On the charge, check four fields:

  • amount and currency: the only authority for what can be refunded.
  • amount_refunded: a charge refunded in part looks fully refundable from a dashboard glance.
  • status and refunded: a failed or already-refunded charge needs a different answer, not a write.
  • disputed: if a dispute is open, refunding is the wrong instrument. See step 5.

Confirm the mode with get_stripe_account_info first. A live-mode refund issued because the id was assumed to be a sandbox id cannot be undone.

2. Fix the amount in the smallest currency unit, explicitly

Omitting amount refunds the whole charge. A partial refund takes an integer in the smallest unit of the charge's currency, so a $12.34 refund is 1234 and a 1234 yen refund is 1234. Never derive the figure from a human-readable total in the conversation when the charge object is one read away, and say the figure and currency back to the user before writing.

3. State the intent, then write once

Before calling stripe_api_write, tell the user in one line what you are about to do: the charge id, the amount, the currency, the mode, and the reason (duplicate, fraudulent, or requested_by_customer). The reason is not decoration; fraudulent affects how Stripe treats the customer later, so do not pick it for a routine cancellation.

4. Expect Stripe's confirmation step and let the human do it

Stripe requires human confirmation before it performs certain writes, refunds among them. The call comes back with a confirmation URL instead of a refund. When that happens:

  • Pass the URL to the user and stop. They review the real amount on Stripe's own page and approve it there.
  • The approval expires after 24 hours.
  • After they approve, retry the same call once. Approval alone does not perform the refund.

Do not loop retrying while you wait, and do not route around the step by asking for an API key. The confirmation is the control that makes an agent with write access safe.

If a write errors ambiguously, list the charge's refunds before retrying and check whether one already landed. Reporting a refund that did not happen and issuing a second one are both worse than a slow answer.

5. A dispute is not a refund

A chargeback is the issuer taking the money back on the customer's word. Opening a refund on a disputed charge can cost you the amount twice and still lose the dispute. Read the dispute, then either submit evidence through its evidence fields or accept it deliberately. Say which one you did and why.

6. Report what actually changed

The refund id, the amount and currency, the status (pending and succeeded mean different things to the customer), and the mode. Tell the user the money typically reaches the customer in five to ten business days, because the next question is always when it arrives.

Anti-patterns

  • Refunding to make a dispute go away. It does not, and it can double the loss.
  • "Refund the last payment." Name the charge you picked and why, or the user cannot catch you picking the wrong one.
  • Guessing a partial amount from the thread. Read the charge.
  • Running the checklist against a PaymentIntent. The refund and dispute fields live on the charge; a PaymentIntent answers those questions with undefined, which reads like "no".
  • Treating a confirmation URL as an error. It is the system working.
  • Refunding when the user asked to cancel. Cancelling a subscription stops future invoices and refunds nothing. Do the one that was asked for, and say which.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

10x

無料

Personalized audit that teaches the advanced Superset features the user isn't using yet (automations, parallel agents, tasks, multi-host, terminal remote control, custom commands, MCP, pages) and sets them up live. Use when the user wants to get more out of Superset, asks "what else can Superset do", "how do I 10x my workflow", "what am I missing", or wants to learn a specific Superset feature.

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

automate

無料

Turn a recurring chore into a Superset automation. Drafts the agent prompt, confirms the schedule or event trigger and the target, creates it with the CLI, and reviews the first run together. Use when the user wants a scheduled or recurring agent, a daily or weekly job, or an agent that reacts to a Slack message, GitHub pull request, Linear issue, Sentry issue or incoming email, or says things like "every morning do X", "automate this", "set up a cron agent", "run this on a schedule", "when someone opens a PR, do X".

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

browser

無料

Open, navigate, screenshot, read, click, and type in web pages from an agent. Use when the user asks to open a URL, preview or verify a running web app, check a page's console, fill a form, click through a web flow, or automate anything in a browser, including "open localhost:3000", "screenshot the page", "what does the console say", "click the submit button", "I'm logged in on Chrome". Drives the in-app browser pane of a Superset workspace by default and Browser Use for browsers the panes cannot reach.

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

Write Stripe code against what the API does today — plan the product shape, confirm every parameter from Stripe's own docs and schemas, and keep the agent in a sandbox. Use when adding checkout, billing, subscriptions, invoicing, or webhooks to a codebase, or when debugging Stripe integration code that compiles but behaves wrong.

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

Verify UI behavior end-to-end by driving the running desktop app over the Chrome DevTools Protocol. Use when asked to verify, reproduce, or confirm a UI change, bug, or regression in the real app rather than in tests.

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

ci-triage

無料

Diagnose a failing GitHub Actions run — find the first real error in the logs, tell a flake apart from a genuine failure, and identify the commit that broke it. Use when checks are red on a PR, a workflow failed, the build is broken, CI is flaky, or the user asks why a run failed or whether a failure is real.

日本語の概要は準備中です。原文の説明を表示しています。

superset-sh/superset1.5万2026年10月13日 更新

superset-sh のスキルをすべて見る

このスキルの問題を報告する