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

financial-audit-trail财务审计追踪

Agent Skill

用于辅助安全审计、权限检查、凭据风险、认证流程和常见漏洞排查。它适合让 Agent 梳理敏感配置、检查依赖风险、分析鉴权逻辑或生成安全复核清单。使用时不能把工具输出直接当最终结论,涉及密钥、令牌、用户数据或生产系统时,应先确认最小权限、脱敏方式和操作边界。

总安装

710

周安装

29

GitHub Stars

19

下载量

230
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill financial-audit-trail

简介

辅助安全审计、权限检查与凭据风险排查,适合梳理敏感配置和分析鉴权逻辑。

  • 可生成安全复核清单并检查依赖风险与常见漏洞。
  • 不能将工具输出直接视为最终结论,需人工复核关键判断。
  • 涉及密钥、令牌或生产系统时,须确认最小权限与脱敏方式。
  • financial-audit-trail 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Financial Audit Trail

Overview

A financial audit trail records every change to financial data — orders, payments, refunds, manual price adjustments, and invoice approvals — with who made the change, when, from what IP, and what the record looked like before and after. This infrastructure is required for PCI-DSS logging compliance, SOX ITGC evidence, GDPR erasure audit trails, and financial statement audits. Every major e-commerce platform generates some audit history; the gap is usually in completeness, manual change attribution, and export format for auditors.

When to Use This Skill

  • When your finance team cannot reconstruct who changed an order total, applied a manual discount, or voided an invoice
  • When preparing for an external audit and needing to produce a complete, searchable transaction history for a specific time period
  • When building SOX-compliant financial systems that require evidence of control operation
  • When implementing PCI-DSS logging requirements for access to cardholder data environments
  • When GDPR erasure requests require proof that a customer's financial data was actually anonymized
  • When investigating discrepancies between your e-commerce revenue and the payment processor's settlement report

Core Instructions

Step 1: Determine the merchant's platform and what is already captured

PlatformBuilt-in Audit CapabilityWhat You Need to Add
ShopifyOrder timeline records all events (created, payment captured, refunded, edited); admin action attribution is limitedExport timeline data via Admin API; for admin changes, enable Staff activity logging under Settings
WooCommerceOrder notes show customer-visible actions; system notes show some status changesInstall WooCommerce Admin Audit Log or Simple History plugin for full admin action tracking
BigCommerceStore logs in Advanced Settings → Store Logs for system events; order history available via APIFor admin action attribution, export via API and combine with server access logs
Custom / HeadlessNothing built inMust build — see Custom section

Step 2: Extract and supplement platform audit data


Shopify

Enabling and accessing audit data:

  1. Go to Settings → Activity (Shopify admin) to see recent staff activity
  2. For more granular data, install Shopify Audit or use the Admin API:

- GET /admin/api/2024-04/events.json returns all store events - Filter by verb (confirmed, placed, edited, refunded, etc.) and subject_type (Order, Refund, Customer)

  1. Each order has a Timeline section showing all state changes with timestamps

Export for auditors:

  1. Go to Orders → Export to download order data as CSV
  2. For detailed refund records: Orders → [specific order] → Timeline shows each action
  3. Use the Shopify Admin API to extract the full event stream:
// Fetch all financial events for a date range
const events = await shopify.event.list({
  verb: 'confirmed,placed,refunded,voided',
  created_at_min: '2026-01-01T00:00:00Z',
  created_at_max: '2026-12-31T23:59:59Z',
  limit: 250,
});

Staff action tracking (Shopify Plus):

  • Go to Settings → Users and permissions → Staff activity log
  • This shows admin actions including order edits, price adjustments, and refunds with user attribution

WooCommerce

WooCommerce order notes provide some audit history, but do not track which admin user made a change. Install a dedicated audit plugin.

Simple History plugin (free, recommended):

  1. Install Simple History from the WordPress plugin directory
  2. It automatically logs:

- Order status changes with user attribution - Product price changes - WooCommerce setting changes - User login/logout events

  1. Go to Dashboard → Simple History to view the log
  2. Export as CSV via Simple History → Settings → Export

WooCommerce Admin Audit Log (premium, ~$50/year):

  1. Install from WooCommerce.com or a third-party marketplace
  2. Provides more granular logging including:

- Manual order total edits - Discount application with staff user attribution - Refund amounts and approving user

  1. Export in CSV or PDF for auditors

Manual order edit tracking: For any manual financial change (discount applied, total adjusted), add an Order Note (internal, not visible to customer) documenting:

  • What was changed
  • Why it was changed
  • Who approved it

This is the minimum acceptable evidence for an auditor when automated logging is not in place.


BigCommerce

Accessing store logs:

  1. Go to Advanced Settings → Store Logs
  2. Filter by log type: Order (financial changes), User (admin activity), System
  3. Export as CSV

Order history via API: Use the BigCommerce Orders API to extract a complete order history with status transitions:

// Get all orders modified in a date range
const orders = await bigcommerce.get('/v2/orders', {
  min_date_modified: '2026-01-01T00:00:00+00:00',
  max_date_modified: '2026-12-31T23:59:59+00:00',
  status_id: '',  // all statuses
  limit: 250,
});

Combine with the Order Transactions API (/v2/orders/{id}/transactions) to get payment captures, refunds, and voids.


Custom / Headless

For custom storefronts, implement an append-only audit log that records every financial mutation. The key design requirements are: immutable (app role has no UPDATE or DELETE), includes before/after state, and supports tamper detection.

CREATE TABLE financial_audit_events (
  id             UUID        NOT NULL DEFAULT gen_random_uuid(),
  seq            BIGSERIAL   NOT NULL,          -- Monotonic — gap detection
  occurred_at    TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  event_type     VARCHAR(64) NOT NULL,           -- 'order.total_changed', 'refund.issued'
  aggregate_type VARCHAR(32) NOT NULL,           -- 'order', 'payment', 'refund'
  aggregate_id   VARCHAR(128) NOT NULL,
  actor_id       VARCHAR(128) NOT NULL,          -- user ID or 'system'
  actor_role     VARCHAR(64),
  actor_ip       INET,
  before_state   JSONB,                          -- Snapshot before change
  after_state    JSONB,                          -- Snapshot after change
  delta          JSONB,                          -- Only changed fields
  correlation_id UUID,                           -- Tie events in same request
  hash           VARCHAR(64),                    -- SHA-256 for tamper detection
  PRIMARY KEY (id)
);

-- Grant INSERT and SELECT only — never UPDATE or DELETE
GRANT INSERT, SELECT ON financial_audit_events TO app_role;
REVOKE UPDATE, DELETE ON financial_audit_events FROM app_role;

CREATE INDEX idx_fae_aggregate ON financial_audit_events (aggregate_type, aggregate_id, occurred_at DESC);
CREATE INDEX idx_fae_actor ON financial_audit_events (actor_id, occurred_at DESC);
CREATE INDEX idx_fae_seq ON financial_audit_events (seq);

Audit logger with tamper-detection hashing:

import { createHash } from 'crypto';

async function recordAuditEvent(input: {
  eventType: string;
  aggregateType: string;
  aggregateId: string;
  actorId: string;
  actorRole?: string;
  actorIp?: string;
  beforeState?: object | null;
  afterState?: object | null;
  correlationId?: string;
}): Promise<void> {
  const prevEvent = await db.financialAuditEvents.findFirst({
    where: { aggregate_type: input.aggregateType, aggregate_id: input.aggregateId },
    orderBy: { seq: 'desc' },
    select: { seq: true, hash: true },
  });

  const occurredAt = new Date().toISOString();
  const hashInput = [
    String(prevEvent?.seq ?? 0),
    occurredAt,
    input.eventType,
    input.aggregateId,
    input.actorId,
    JSON.stringify(input.afterState ?? null),
  ].join('|');

  const hash = createHash('sha256').update(hashInput).digest('hex');

  await db.financialAuditEvents.insert({
    occurred_at: occurredAt,
    event_type: input.eventType,
    aggregate_type: input.aggregateType,
    aggregate_id: input.aggregateId,
    actor_id: input.actorId,
    actor_role: input.actorRole ?? null,
    actor_ip: input.actorIp ?? null,
    before_state: input.beforeState ?? null,
    after_state: input.afterState ?? null,
    correlation_id: input.correlationId ?? null,
    hash,
    prev_hash: prevEvent?.hash ?? null,
  });
}

Export for auditors:

async function exportAuditTrail(from: Date, to: Date, format: 'json' | 'csv'): Promise<Buffer> {
  const events = await db.financialAuditEvents.findAll({
    where: { occurred_at: { gte: from, lte: to } },
    orderBy: { seq: 'asc' },
  });

  if (format === 'json') return Buffer.from(JSON.stringify(events, null, 2));

  // CSV for auditor delivery
  const rows = events.map(e => ({
    'Date/Time': e.occurred_at,
    'Event Type': e.event_type,
    'Record Type': e.aggregate_type,
    'Record ID': e.aggregate_id,
    'Actor': e.actor_id,
    'Actor Role': e.actor_role ?? '',
    'IP Address': e.actor_ip ?? '',
    'Before': e.before_state ? JSON.stringify(e.before_state) : '',
    'After': e.after_state ? JSON.stringify(e.after_state) : '',
    'Delta': e.delta ? JSON.stringify(e.delta) : '',
  }));
  return buildCsv(rows);
}

Best Practices

  • Include before_state and after_state on every mutation — storing only a delta is not enough for compliance; auditors need to reconstruct the full state of a record at any point in time
  • Revoke UPDATE and DELETE at the database level — application-layer checks can be bypassed; the only reliable immutability guarantee is a database permission the application role does not have
  • Capture the actor's IP address alongside user ID — when investigating fraud, the IP is often more useful; log both
  • Log correlation_id from the HTTP request — if a single API request creates multiple audit events, a shared correlation_id lets you reconstruct the full causal chain
  • Export and verify a sample monthly — generate a compliance export on the first of each month and verify chain hashes; this gives you a tested evidence package before auditors request one
  • Store audit events in a separate database schema — prevents an application bug or a DBA mistake from accidentally affecting audit records alongside production data

Common Pitfalls

ProblemSolution
Audit events missing because developers call db.update() directlyThe audit logger must be called in the service layer, not the controller; add a code review checklist item that flags direct db.update calls on financial tables
before_state is null because the developer only captures state after the changeFetch and snapshot the record BEFORE the mutation inside the same database transaction
Audit table grows to hundreds of millions of rows, slowing queriesPartition the table by occurred_at (monthly partitions); keep 12 months on hot storage, archive older partitions to S3 + Athena
An attacker who compromises the app role can delete audit rowsRevoke DELETE from all roles; consider a secondary write-only log stream to an external service (CloudWatch Logs, Datadog)
Compliance export takes hours to generatePre-build indexed views for common audit report patterns; ensure the occurred_at index is used in range queries

Related Skills

  • @financial-compliance-sox
  • @pci-dss-compliance
  • @data-retention-policies
  • @gdpr-ecommerce

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

39.77%
按下载量换算91

Claude

28.3%
按下载量换算65

Cursor

18.26%
按下载量换算42

Gemini CLI

9.02%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

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

来源信息

继续浏览同类 Skills