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

product-comparison产品比较

Agent Skill

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

总安装

593

周安装

24

GitHub Stars

19

下载量

186
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill product-comparison

简介

用于查找、检索和筛选产品对比维度和评分标准。product-comparison 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

  • 适合在选购指南、决策支持或内部评估报告中应用。
  • 通过 GitHub 安装,支持 Codex、Claude、Cursor 和 Gemini CLI 等宿主环境。
  • 使用时需统一衡量指标与权重分配以保证公平性。
  • 安装前建议确认权限范围,防止误用未授权评测数据。

SKILL.md

Product Comparison

Overview

Build a side-by-side product comparison feature where shoppers select 2–4 products and see their attributes in a sticky-header table. Attribute rows that are identical across all selected products can be hidden to reduce noise. The comparison state is stored in the URL so it can be shared or bookmarked.

When to Use This Skill

  • When selling products with many technical specifications (electronics, appliances, cameras)
  • When conversion research shows shoppers are considering multiple products before purchasing
  • When the product catalog has well-structured attribute data that lends itself to comparison
  • When building a B2B store where buyers need to justify purchase decisions to stakeholders
  • When implementing a "Compare" checkbox on product listing pages

Core Instructions

Step 1: Determine the merchant's platform and choose the right approach

PlatformRecommended ApproachWhy
ShopifyInstall Comparify or Product Compare app (both free tiers available)Shopify doesn't have built-in comparison; these apps add Compare buttons to product cards, a floating comparison tray, and a full comparison table page; they pull product metafields for spec data
WooCommerceInstall YITH WooCommerce Compare (free) or WooCommerce Products CompareYITH Compare is the most popular free option — adds Compare checkboxes to product cards, a comparison table page using WooCommerce product attributes, and a "show differences only" toggle
BigCommerceEnable the built-in Compare feature in Storefront → My Themes → Customize (Cornerstone theme)BigCommerce and Cornerstone include native product comparison — enable it in the Theme Editor; it uses product custom fields as comparison attributes
Custom / HeadlessBuild a URL-state comparison tray + comparison table page with your product attribute dataFull control over attribute display, difference highlighting, and table layout; see implementation below

Step 2: Enable and configure comparison on your platform


Shopify

Using Comparify app:

  1. Install Comparify – Product Comparison from the Shopify App Store (free tier available)
  2. In the app settings, select which product metafields to display as comparison rows (e.g., material, weight, dimensions, warranty)

- If you haven't set up metafields yet: go to Settings → Custom data → Products and create metafields for your specs

  1. The app automatically adds a "Compare" checkbox to product cards in your collection pages
  2. Shoppers select up to 4 products, click "Compare" in the floating tray, and land on a full comparison table
  3. Configure which attributes appear as rows and in what order in the app's Table Settings

Preparing your product data:

  • Add spec data as product metafields (recommended) or in the product description with consistent formatting
  • For variant specs, add them as variant metafields (e.g., weight per size)

WooCommerce

Using YITH WooCommerce Compare (free):

  1. Install and activate from WordPress.org
  2. Go to YITH → Compare → Settings
  3. Under Fields to compare, select which WooCommerce product attributes and custom fields to show as rows (e.g., Color, Material, Dimensions, Weight)
  4. Set Maximum products to 4
  5. Enable Highlight differences to visually call out rows where products differ
  6. The plugin adds a "Compare" button to product cards on your shop page and archives
  7. A floating comparison bar appears at the bottom of the page as shoppers add products

Preparing your product data:

  • Add comparison attributes via Products → Attributes — create attributes like "Material", "Warranty", "Compatible with" and assign values to each product
  • Products must use the same attribute names for comparison rows to align correctly

BigCommerce

Built-in comparison (Cornerstone theme):

  1. Go to Storefront → My Themes → Customize
  2. Navigate to Global → Product Compare (or Category Page → Product Compare depending on your theme version)
  3. Toggle Enable product comparison to On
  4. Set the Maximum products (default is 4)
  5. Configure which Product Custom Fields appear as comparison rows in Products → Product Custom Fields settings
  6. Shoppers see a "Compare" checkbox on product cards; the floating compare tray appears automatically

Adding spec data:

  • Go to Products → [product] → Custom Fields and add name/value pairs (e.g., "Screen Size: 15.6 inches", "Battery Life: 10 hours")
  • Use the same field names across comparable products so they align in the comparison table

Custom / Headless

Comparison tray (floating bar as products are selected):

// ComparisonTray.jsx
export function ComparisonTray({ selectedProducts, onRemove, onClear }) {
  if (selectedProducts.length === 0) return null;

  const compareUrl = `/compare?${selectedProducts.map(p => `compare=${p.id}`).join('&')}`;

  return (
    <div className="comparison-tray" aria-live="polite" aria-label="Products selected for comparison">
      <div className="tray-products">
        {selectedProducts.map(product => (
          <div key={product.id} className="tray-product">
            <img src={product.image} alt={product.name} width="48" height="48" />
            <button onClick={() => onRemove(product.id)} aria-label={`Remove ${product.name} from comparison`}>&times;</button>
          </div>
        ))}
        {Array.from({ length: Math.max(0, 4 - selectedProducts.length) }).map((_, i) => (
          <div key={`empty-${i}`} className="tray-placeholder" aria-hidden="true">+</div>
        ))}
      </div>
      <div className="tray-actions">
        <a href={compareUrl} className="btn-primary" aria-disabled={selectedProducts.length < 2}>
          Compare ({selectedProducts.length})
        </a>
        <button onClick={onClear}>Clear all</button>
      </div>
    </div>
  );
}

Comparison table with sticky headers and difference highlighting:

export function ProductComparisonTable({ products, attributeGroups, showOnlyDifferences }) {
  function isRowIdentical(attrKey) {
    const values = products.map(p => p.attributes[attrKey]);
    return values.every(v => v === values[0]);
  }

  return (
    <div className="comparison-wrapper" style={{ overflowX: 'auto' }}>
      <table className="comparison-table">
        <caption className="sr-only">
          Side-by-side comparison of {products.map(p => p.name).join(', ')}
        </caption>
        <thead>
          <tr>
            <th scope="col" className="attr-col">Attribute</th>
            {products.map(product => (
              <th key={product.id} scope="col">
                <img src={product.image} alt={product.name} width="80" height="80" />
                <a href={product.url}>{product.name}</a>
                <strong>${product.price}</strong>
                <button className="btn-primary">Add to Cart</button>
              </th>
            ))}
          </tr>
        </thead>
        <tbody>
          {attributeGroups.map(group => (
            <>
              <tr key={`group-${group.label}`}>
                <th scope="rowgroup" colSpan={products.length + 1}>{group.label}</th>
              </tr>
              {group.attributes.map(attrKey => {
                if (showOnlyDifferences && isRowIdentical(attrKey)) return null;
                return (
                  <tr key={attrKey} className={isRowIdentical(attrKey) ? 'identical-row' : 'different-row'}>
                    <th scope="row">{attrKey.replace(/_/g, ' ')}</th>
                    {products.map(p => (
                      <td key={p.id}>{p.attributes[attrKey] ?? 'N/A'}</td>
                    ))}
                  </tr>
                );
              })}
            </>
          ))}
        </tbody>
      </table>
    </div>
  );
}

URL state for comparison (use replaceState to avoid polluting back-button history):

function toggleCompare(productId) {
  const params = new URLSearchParams(window.location.search);
  const current = params.getAll('compare');
  if (current.includes(productId)) {
    params.delete('compare');
    current.filter(id => id !== productId).forEach(id => params.append('compare', id));
  } else if (current.length < 4) {
    params.append('compare', productId);
  }
  window.history.replaceState({}, '', `${window.location.pathname}?${params.toString()}`);
}

Best Practices

  • Limit comparison to 2–4 products — more than 4 columns breaks table layout on most screens; enforce this in the UI
  • Group attributes by category — organize specs into groups (Display, Performance, Battery) to prevent a 50-row flat table
  • Offer "show differences only" toggle — rows where all products share the same value add noise; provide an easy toggle
  • Make the table horizontally scrollable on mobile — use overflow-x: auto on a wrapper; never hide columns to fit small screens
  • Pre-populate from listing page — when a shopper clicks "Compare Now" after selecting items on the PLP, navigate with IDs in the URL
  • Use consistent attribute naming — specs across products must use identical field names (e.g., "Screen Size" not sometimes "Display Size") for table rows to align

Common Pitfalls

ProblemSolution
Table overflows on mobileWrap in a scrollable container; use position: sticky for the first column (attribute labels)
Attributes missing for some productsUse "N/A" as the value — never skip the cell as it breaks column alignment
Comparison tray covers page contentAdd padding-bottom to the page body equal to the tray height when the tray is visible
Products have different attribute setsNormalize attribute keys across all compared products; fill missing values with null

Related Skills

  • @product-page-design
  • @faceted-navigation
  • @accessibility-commerce
  • @recently-viewed-products

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

36.52%
按下载量换算68

Claude

32.99%
按下载量换算61

Cursor

18.67%
按下载量换算35

Gemini CLI

9.69%
按下载量换算18

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

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

安装前确认

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

来源信息

继续浏览同类 Skills