
tres-asc845-swap-reprice-skill
Reprice swap transaction legs under ASC 845 (Nonmonetary Transactions) to ensure clearing accounts net to zero. Use this skill whenever the user wants to: reprice swaps, fix clearing account residuals, apply equal-value exchange to swap legs, run setBatchUseCounterpartyFiatValue, zero out a clearing account, apply ASC 845, fix swap pricing mismatches, ensure no gain/loss on swaps, or close a month where a swaps/trade clearing account has a residual balance. Also trigger when the user mentions "counterparty fiat value", "swap repricing", "clearing account net to zero", or "equal value exchange".
- Installs
- 49
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/anthropics/claude-plugins-community --skill tres-asc845-swap-reprice-skill- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads tres-asc845-swap-reprice-skill automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
ASC 845 Swap Repricing Skill
Purpose
Implements equal-value exchange under ASC 845 (Nonmonetary Transactions) for swap transactions in TRES Finance. In a simultaneous swap, the fair value of the asset surrendered (outflow) is the best evidence of the fair value of the asset received (inflow). This skill reprices inflow legs to match outflow legs so that clearing accounts net to zero.
When to Use
- A swaps/trade clearing account has a non-zero residual after month-end
- User wants to apply ASC 845 to a population of swap transactions
- User says "setBatchUseCounterpartyFiatValue" or similar
MCP Server
All GraphQL calls use the user-tres-finance MCP server (execute tool).
Variable keys and nested input fields MUST use camelCase (e.g. timestamp_Gte, not timestamp_gte).
Prerequisites
- TRES Finance MCP connection (
user-tres-finance) - The user must specify:
- Target ERP account — the clearing account to zero out (e.g. "Swaps Clearing Account", NS #818)
- Transaction scope — either a date range (timestamp_Gte / timestamp_Lte) or specific tx hashes
- Confirmation — user must approve before mutations are executed
Workflow
Step 1: Gather Parameters
Ask the user for:
- Target ERP account name or ID (the clearing account)
- Date range OR list of transaction hashes
- Activity tags (optional) — filter to only transactions with specific classification activities
(e.g. "STAKING LOCKUP", "SWAP"). None, one, or many may be selected. If omitted, all activities
are included. Use
tx_Classification_Activity_Inon the TRES query. - Currency (default: USD)
- Whether to run in dry-run (preview only) or execute mode
Step 2: Query Subtransactions
Use the TRES subTransaction query to fetch all subtransactions in scope. Include these fields:
{
id
amount
balanceFactor
timestamp
fiatValue
isManualFiatValue
belongsTo { id name }
asset { assetClass { symbol } }
tx { id identifier classification { activity } }
flowRule {
ruleName
integrationAccount { name value }
}
}
If activity tags were specified, pass them as tx_Classification_Activity_In: ["STAKING LOCKUP", "SWAP"]
on the query. Note: transactions with classification: null will be excluded when this filter is used,
so only apply it when the user explicitly requests it.
Paginate in batches of 50 (to avoid timeouts). Save the combined results to a JSON file for the orchestrator script.
Step 3: Run the Orchestrator Script
From the skill scripts/ directory, run orchestrate_reprice.py (handles MCP response shapes, account filter, preview, and mutation JSON):
cd "${CLAUDE_PLUGIN_ROOT}/skills/tres-asc845-swap-reprice-skill/scripts" && \
python3 orchestrate_reprice.py \
--input /path/to/swap_reprice_input.json \
--account-name "Swaps Clearing Account" \
--output /path/to/reprice_plan.json \
--mutations-output /path/to/reprice_mutations.json
Use --account-value instead of --account-name when filtering by ERP account number. Pass --activity-tags SWAP "STAKING LOCKUP" when the user requested activity filters.
The script prints a preview to stdout and writes:
reprice_plan.json— full plan with per-transaction adjustmentsreprice_mutations.json— ready-to-executesetManualFiatValuevariables
For lower-level repricing only (no orchestration), use reprice_swaps.py directly — see scripts/reprice_swaps.py for flags.
Step 4: Repricing Logic (ASC 845)
The orchestrator implements the logic below. Read scripts/reprice_swaps.py for the canonical implementation.
The core principle: calculate the difference between total outflow fiat and total inflow fiat, then distribute that difference across inflows in proportion to their token amounts. This preserves the original pricing as a base and makes the minimum adjustment needed.
For each parent transaction:
Case 1: One outflow, one inflow
inflow.newFiatValue = outflow.fiatValue
Case 2: One outflow, many inflows
difference = outflow.fiatValue - sum(inflow.fiatValue for each inflow)
totalInflowTokens = sum(inflow.amount for each inflow)
for each inflow:
tokenProportion = inflow.amount / totalInflowTokens
inflow.newFiatValue = inflow.fiatValue + (difference * tokenProportion)
Case 3: Many outflows, one inflow
inflow.newFiatValue = sum(outflow.fiatValue for each outflow)
Case 4: Many outflows, many inflows
totalOutflowFiat = sum(outflow.fiatValue for each outflow)
totalInflowFiat = sum(inflow.fiatValue for each inflow)
difference = totalOutflowFiat - totalInflowFiat
totalInflowTokens = sum(inflow.amount for each inflow)
for each inflow:
tokenProportion = inflow.amount / totalInflowTokens
inflow.newFiatValue = inflow.fiatValue + (difference * tokenProportion)
Worked example (Case 2):
Before: Outflow = 100 tokens @ $100 | Inflows = 25 tokens @ $25, 25 @ $25, 35 @ $35 (total $85)
Difference = $100 - $85 = $15 | Total inflow tokens = 85
After: Inflow 1: $25 + ($15 × 25/85) = $25 + $4.41 = $29.41
Inflow 2: $25 + ($15 × 25/85) = $25 + $4.41 = $29.41
Inflow 3: $35 + ($15 × 35/85) = $35 + $6.18 = $41.18
Total inflows after = $100.00 ✓ (clearing account nets to zero)
Edge cases:
- If
totalInflowTokens == 0, distribute the difference equally across inflows - If a subtransaction already has
isManualFiatValue == true, flag it for user review (it was already manually repriced) - Skip transactions with only outflows or only inflows (not a complete swap)
- Last inflow in the group receives the remainder to absorb rounding (ensures exact match)
Step 5: Preview the Reprice Plan
Present the orchestrator stdout summary and/or the plan JSON to the user:
TX Identifier | Outflow Total | Inflow Before | Inflow After | Adjustment
------------- | ------------- | ------------- | ------------ | ----------
0xabc... | $1,234.56 | $1,230.00 | $1,234.56 | +$4.56
0xdef... | $5,678.90 | $5,670.00 | $5,678.90 | +$8.90
Also show aggregate stats:
- Total transactions affected
- Total outflow fiat
- Total inflow fiat (before)
- Total inflow fiat (after)
- Net clearing account residual (before → after, should go to $0)
- Count of already-manually-priced subtxs being overwritten
Step 6: Execute (with user confirmation)
Never run mutations without explicit user confirmation.
Only after the user confirms, execute setManualFiatValue for each inflow subtransaction (use variables from reprice_mutations.json):
mutation SetManualFiatValue($id: ID!, $newFiatValue: String!, $currency: String) {
setManualFiatValue(id: $id, newFiatValue: $newFiatValue, currency: $currency) {
subTransaction {
id
fiatValue
isManualFiatValue
}
}
}
Execute one at a time (not batch) to handle locked-period errors gracefully.
If setBatchManualFiatValue is preferred for speed, group inflows by asset
where a uniform per-unit price applies.
Important: setManualFiatValue takes newFiatValue as a string.
setBatchManualFiatValue takes ids (list) and newUnitValue (Float) and computes
newUnitValue * amount — only use this if all subtxs in the batch should have the same unit price.
Step 7: Verify
Re-query the subtransactions and re-aggregate to confirm the clearing account now nets to zero.
Error Handling
- Locked period: If a subtransaction is in a locked period, warn the user. They must unlock
via
deleteLockedPeriod, apply changes, then re-lock viacreateLockedPeriod. - Missing fiat values: If outflow fiatValue is null, skip the transaction and flag it.
- Zero-value legs: If outflow total is $0, skip (nothing to propagate).
- Already manual: Flag but still overwrite — only after the user confirmed the batch.
Script Reference
| Script | Role |
|---|---|
scripts/orchestrate_reprice.py | Primary entry — parse MCP JSON, filter, preview, write plan + mutations |
scripts/reprice_swaps.py | Core ASC 845 repricing engine (imported by orchestrator; usable standalone) |
FAQ
What does the tres-asc845-swap-reprice-skill skill do?
Reprice swap transaction legs under ASC 845 (Nonmonetary Transactions) to ensure clearing accounts net to zero. Use this skill whenever the user wants to: reprice swaps, fix clearing account residuals, apply equal-value exchange to swap legs, run setBatchUseCounterpartyFiatValue, zero out a clearing account, apply ASC 845, fix swap pricing mismatches, ensure no gain/loss on swaps, or close a month where a swaps/trade clearing account has a residual balance. Also trigger when the user mentions "counterparty fiat value", "swap repricing", "clearing account net to zero", or "equal value exchange".
How do I install tres-asc845-swap-reprice-skill?
Run npx skills add https://github.com/anthropics/claude-plugins-community --skill tres-asc845-swap-reprice-skill in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/tres-asc845-swap-reprice-skill/ (personal) or .claude/skills/tres-asc845-swap-reprice-skill/ (project).
Which AI agents can use tres-asc845-swap-reprice-skill?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is tres-asc845-swap-reprice-skill safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains tres-asc845-swap-reprice-skill?
It is published by anthropics in anthropics/claude-plugins-community. It has 49 recorded installs.
More from anthropics/claude-plugins-community
eli5
anthropics/claude-plugins-community
Explain a topic like I'm a 5 year old. Use when the user types /eli5 or asks for a dead-simple picture explainer of how something works.
html-plan
anthropics/claude-plugins-community
Open the skill to read its SKILL.md instructions.
quickdesign
anthropics/claude-plugins-community
Open the skill to read its SKILL.md instructions.
tres-asset-balance-validation
anthropics/claude-plugins-community
Validate wallet balances in TRES Finance against DeBank and generate a discrepancy report. Use this skill whenever the user asks to validate, verify, cross-check, or audit their TRES balances against on-chain data or DeBank. Also trigger when the user asks if their balances are correct or wants to see discrepancies. Only EVM-compatible wallets are supported.
tres-cost-basis
anthropics/claude-plugins-community
Open the skill to read its SKILL.md instructions.
tres-rollup-rules
anthropics/claude-plugins-community
Open the skill to read its SKILL.md instructions.
Popular business & finance skills
sales-enablement
coreyhaines31/marketingskills
When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'battle card,' 'battlecard,' 'competitive one-pager,' 'win-loss analysis,' 'why are we losing deals,' 'loss reasons,' 'how do I respond to this objection,' 'prospect just said,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps,' 'cold call script,' or 'voicemail script.' Use this for any document or asset that helps a sales team close deals. For public competitor comparison pages, see competitors. For running buyer interviews or churn research, see customer-research. For marketing website copy, see copywriting. For cold outreach emails, see cold-email. For the offer being sold (bonuses, guarantees, pricing structure),
revops
coreyhaines31/marketingskills
When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'outbound pipeline stages,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and processes that connect marketing to revenue. For cold outreach emails, see cold-email. For email drip campaigns, see emails. For pricing decisions, see pricing.
sales-funnel-blueprint
autonnel/autonnel-skills
Turn an offer into a concrete multi-step sales funnel spec - page-by-page structure, price ladder, copy outline and the metrics each step must hit. Use when asked to build a sales funnel, marketing funnel, landing page flow, lead magnet funnel, webinar funnel, tripwire or VSL funnel, when planning a product launch page flow, or when someone asks "what pages do I need" for selling something online.
pricing
coreyhaines31/marketingskills
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' 'should I offer a free plan,' 'pricing page teardown,' 'pricing page audit,' 'is my pricing page AI-readable,' or 'can AI read my pricing.' Use this whenever someone is figuring out what to charge, how to structure their plans, or wants to audit a pricing page (for humans and for the AI agents that shortlist tools). For in-app upgrade screens, see paywalls. For offer construction (bonuses, guarantees, value framing, naming) on services/courses/coaching/high-ticket B2B, see offers.
cross-border-ecommerce
nexscope-ai/ecommerce-skills
Cross-border e-commerce expansion advisor. Scores target markets on 8 weighted dimensions (market size, ecommerce penetration, competition, regulatory complexity, logistics infrastructure, payment ecosystem, cultural distance, IP protection), compares 5 fulfillment models with cost and transit data, provides country-by-country tax/duty compliance guides (EU VAT/IOSS, UK VAT, US sales tax, CA GST, AU GST, JP consumption tax), maps local payment preferences by market, and builds a phased expansion roadmap. No API key required.
pricing-strategy
coreyhaines31/marketingskills
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' or 'should I offer a free plan.' Use this whenever someone is figuring out what to charge or how to structure their plans. For in-app upgrade screens, see paywall-upgrade-cro.