Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问许可证需确认审计提醒

returns-refund-policy退货退款政策

Agent Skill

returns-refund-policy 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

480

周安装

20

GitHub Stars

19

下载量

160
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:returns-refund-policy(退货退款政策)
来源仓库:https://github.com/finsilabs/awesome-ecommerce-skills
仓库路径:skills/returns-refund-policy
安装命令:
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill returns-refund-policy
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill returns-refund-policy

简介

returns-refund-policy 用于查找、检索和筛选退货退款政策相关内容。

  • 适用于电商平台、客服或法务场景中,辅助制定或解释退换货规则。
  • 通过 GitHub 安装,使用 npx skills add 命令添加对应仓库的技能。
  • 使用前应确认权限范围和维护状态,注意是否涉及敏感信息访问或自动化操作。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Returns & Refund Policy Engine

Overview

A returns and refund policy engine enforces your rules automatically: different return windows per product category, restocking fees for specific item types, final-sale exclusions, and extended windows for loyalty members. This prevents your customer service team from manually evaluating every return request and ensures consistent policy enforcement. Most platforms can implement these rules through their returns apps combined with product tags and customer segments.

When to Use This Skill

  • When your return logic is inconsistent because it's handled case-by-case by customer service
  • When you need different return windows for different product categories (electronics vs. apparel vs. consumables)
  • When implementing tiered return policies where loyalty members get extended windows or waived restocking fees
  • When building an automated approval workflow that handles most returns without human intervention
  • When compliance or legal requirements mandate that return policies be auditable and version-controlled

Core Instructions

Step 1: Determine your platform and choose the right returns tool

PlatformRecommended ToolWhy
ShopifyLoop Returns or AfterShip ReturnsLoop is the most feature-complete: supports per-product-type policies, restocking fees, final-sale blocking, and loyalty tier overrides
WooCommerceReturnGo or WooCommerce Returns and Warranty RequestsReturnGo supports custom policy rules per product category and automated approval logic
BigCommerceAfterShip Returns Center or Loop ReturnsBoth support per-category policy rules and restocking fees
Custom / HeadlessBuild a policy evaluation engine + Shippo for return labelsStore policies in a database; evaluate them programmatically when return requests come in

Step 2: Define your return policy rules

Before configuring any tool, define your policy matrix clearly:

Product CategoryReturn WindowRestocking FeeAuto-ApproveNotes
Default (apparel, accessories)30 days from delivery0%YesMost items
Electronics15 days from delivery15%No — manual reviewOpened electronics
Final Sale0 daysNoNo returns
VIP / Gold members60 days from delivery0%YesOverride for loyalty tier
Defective / Wrong item90 days from delivery0%YesCustomer not at fault

Step 3: Configure policy rules in your returns app

Shopify — Loop Returns

  1. Install Loop Returns from the Shopify App Store
  2. Go to Loop → Policy → Return Windows:

- Default: 30 days - Click "Add Rule" → set "Product tag is 'electronics'" → return window: 15 days - Click "Add Rule" → set "Product tag is 'final-sale'" → return window: 0 days (no returns)

  1. Tag your products accordingly in Shopify admin (Products → Tags)
  2. Go to Loop → Policy → Restocking Fees:

- Add a rule: "Product tag is 'electronics'" → restocking fee: 15%

  1. Go to Loop → Policy → Customer Segments:

- Add a rule: "Customer tag is 'gold-member' or 'vip'" → return window override: 60 days, restocking fee: 0%

  1. Enable auto-approval for eligible returns in Loop → Settings → Automation: "Auto-approve returns that meet policy conditions"
  2. Loop generates the return label automatically when a return is approved

Testing your policy:

  • Use Loop's Policy Simulator (Loop → Policy → Test Policy) to verify that a hypothetical return request (product type, customer tag, days since delivery) applies the correct rule

WooCommerce — ReturnGo

  1. Install ReturnGo from retgo.com (or WordPress.org)
  2. Go to ReturnGo → Return Policy:

- Set default return window: 30 days - Under "Custom Rules", add product-category-based rules: - Category "Electronics" → 15 days, 15% restocking fee, requires manual review - Category "Final Sale" → 0 days (no returns allowed)

  1. Under "Customer Rules": add tag-based overrides:

- Customer tag "wholesale" → 14 days, 10% restocking fee

  1. Configure auto-approval: ReturnGo → Automation → enable "Auto-approve returns that match policy"
  2. Test by creating a return request as a customer to verify rules apply correctly

Configuring final-sale in WooCommerce:

  • Create a product category or tag called "final-sale"
  • In ReturnGo, add a rule blocking returns for this category/tag
  • On the product page, display the "Final Sale — No Returns" message using a product badge plugin

BigCommerce — AfterShip Returns Center

  1. Install AfterShip Returns Center from the BigCommerce App Marketplace
  2. Go to AfterShip → Policy:

- Set the default return window and configure exceptions by product type

  1. AfterShip's policy engine supports return windows and auto-approval rules based on product tags
  2. For restocking fees: AfterShip includes restocking fee configuration in their paid plans

Step 4: Handle return window calculation correctly

The single most important setting: the return window should start from the delivery date, not the order date or ship date.

Why this matters:

  • Shipping a package takes 2–10 days depending on the service
  • A 30-day return window starting from order date may leave the customer with only 20 days to actually return the item
  • Most consumer protection laws (EU 14-day right of withdrawal, UK 14 days) count from delivery

Verify this in your returns app:

  • Loop Returns: go to Loop → Settings → Return Window → "Starts from: Delivery Date" ✓
  • ReturnGo: go to Settings → Policy → "Return window starts from: Delivered date" ✓
  • AfterShip: go to Settings → Return Policy → "Start date: Order delivered date" ✓

If your returns app doesn't have tracking integration to detect delivery, use "Order Date + carrier average transit time" as an approximation.

Step 5: Communicate policies clearly

  1. Returns page: Create a dedicated /returns or /return-policy page with your policy matrix in a table format — customers reference this before purchasing
  2. Product pages: Show a brief returns statement near the "Add to Cart" button: "30-day free returns" or "Final Sale — No Returns" for final sale items
  3. Order confirmation email: Include a link to your returns page and a brief "30-day returns" statement
  4. Return window expiry reminder: Set up an automated email 7 days before a customer's return window closes — Loop and AfterShip both support this

Step 6: Custom / Headless — policy evaluation logic

// Return policy rules stored in database and evaluated programmatically
interface ReturnPolicy {
  id: string;
  name: string;
  priority: number;           // higher = evaluated first
  conditions: {
    productTags?: string[];   // match any of these tags
    customerTags?: string[];  // match any of these customer tags
    orderTags?: string[];     // e.g., ['final-sale']
  };
  windowDays: number;         // 0 = no returns allowed
  restockingFeePct: number;   // 0–100
  autoApprove: boolean;
}

async function evaluateReturnEligibility(params: {
  orderId: string;
  productId: string;
  customerId: string;
  returnReason: string;
  deliveredAt: Date;
}): Promise<{
  eligible: boolean;
  policy: ReturnPolicy | null;
  restockingFeeCents: number;
  requiresManualReview: boolean;
  daysRemaining: number;
  reason?: string;
}> {
  const order = await db.orders.findById(params.orderId);
  const product = await db.products.findById(params.productId, { include: ['tags'] });
  const customer = await db.customers.findById(params.customerId, { include: ['tags'] });

  // Find highest-priority matching policy
  const policies = await db.returnPolicies.findAll({ is_active: true }, { orderBy: ['priority', 'desc'] });
  const policy = policies.find(p => {
    const productMatch = !p.conditions.productTags?.length ||
      p.conditions.productTags.some(tag => product.tags.includes(tag));
    const customerMatch = !p.conditions.customerTags?.length ||
      p.conditions.customerTags.some(tag => customer.tags.includes(tag));
    const orderMatch = !p.conditions.orderTags?.length ||
      p.conditions.orderTags.some(tag => order.tags?.includes(tag));
    return productMatch && customerMatch && orderMatch;
  }) ?? null;

  if (!policy || policy.windowDays === 0) {
    return { eligible: false, policy, restockingFeeCents: 0, requiresManualReview: false, daysRemaining: 0, reason: 'FINAL_SALE_OR_NO_POLICY' };
  }

  // Calculate days since delivery
  const daysSinceDelivery = Math.floor((Date.now() - params.deliveredAt.getTime()) / 86400000);
  const daysRemaining = policy.windowDays - daysSinceDelivery;

  if (daysRemaining < 0) {
    return { eligible: false, policy, restockingFeeCents: 0, requiresManualReview: false, daysRemaining: 0, reason: 'WINDOW_EXPIRED' };
  }

  // Calculate restocking fee on the item's original price
  const orderLine = await db.orderLines.findOne({ order_id: params.orderId, product_id: params.productId });
  const itemValueCents = orderLine.unit_price_cents * orderLine.quantity;
  const restockingFeeCents = Math.round(itemValueCents * (policy.restockingFeePct / 100));

  return {
    eligible: true,
    policy,
    restockingFeeCents,
    requiresManualReview: !policy.autoApprove,
    daysRemaining,
  };
}

Best Practices

  • Start the return window from delivery date, not order date — this is more fair to customers, reduces disputes, and aligns with consumer protection laws in most jurisdictions
  • Version every policy change — when you update a return policy, log the old policy with a timestamp; apply the policy that was in effect at the time of purchase when a customer files a return
  • Display restocking fees before the customer confirms the return — show "A 15% restocking fee ($12.75) will be deducted from your refund" during the return initiation flow, not after
  • Cap auto-approval by refund value — even with auto-approval enabled, route returns over $500 to manual review to catch potential fraud
  • Notify customers proactively about expiring windows — a "Your 30-day return window closes in 7 days" email for recent purchases reduces frustrated customers who missed the window

Common Pitfalls

ProblemSolution
Return window calculated from order date instead of delivery dateCheck your returns app settings explicitly for "return window starts from" — default in some tools is order date; change to delivery date
Multiple policies match and the wrong one appliesSort by priority DESC and take the first match; document the priority hierarchy in your admin; test edge cases (VIP member buying electronics)
Customer disputes restocking feeShow the fee amount and the policy name ("Electronics Policy — 15% restocking fee") in the return confirmation email so customers have documentation
Final sale tag not applied consistentlyCreate a process: every product added to a sale must have the "final-sale" tag applied; audit monthly using a product tag report

Related Skills

  • @returns-management
  • @order-management-system
  • @b2b-commerce

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

33.91%
按下载量换算54

Claude

31.72%
按下载量换算51

Cursor

20.48%
按下载量换算33

Gemini CLI

9.04%
按下载量换算14

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills