eli5
無料Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a dead-simple picture explainer of how something works.
日本語の概要は準備中です。原文の説明を表示しています。
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".
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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.
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).
user-tres-finance)Ask the user for:
tx_Classification_Activity_In on the TRES query.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.
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-execute setManualFiatValue variablesFor lower-level repricing only (no orchestration), use reprice_swaps.py directly — see scripts/reprice_swaps.py for flags.
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:
totalInflowTokens == 0, distribute the difference equally across inflowsisManualFiatValue == true, flag it for user review (it was already manually repriced)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:
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.
Re-query the subtransactions and re-aggregate to confirm the clearing account now nets to zero.
deleteLockedPeriod, apply changes, then re-lock via createLockedPeriod.| 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) |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a dead-simple picture explainer of how something works.
日本語の概要は準備中です。原文の説明を表示しています。
Write an implementation plan as one interactive HTML page - a tree of claims (why › what › how › where), each proved by one exhibit (UI mockup, state machine, call stack, schema or code), with the decisions the user has to make placed on the claim they change. Use when the user types /html-plan, or asks for a plan, RFC or design before building something that touches more than a couple of files.
日本語の概要は準備中です。原文の説明を表示しています。
Use the `quickdesign` CLI to generate AI media — UGC promo videos, image edits, product creatives, video upscales — through Seedance, Kling, Sora2, Nano Banana, and GPT Image. Invoke this skill whenever the user asks for a talking-avatar video, multi-segment ad / promo / explainer, image edit (object swap, angle change, state change), product photoshoot, or video upscale via QuickDesign.
日本語の概要は準備中です。原文の説明を表示しています。
Use only when the user explicitly asks for a TestDino audit of Playwright automated test code. Routes through the audit tools the TestDino MCP server exposes (get_audit_report + submit_audit_report, or the legacy test_audit). For generic code review or non-Playwright targets, do a normal review instead.
日本語の概要は準備中です。原文の説明を表示しています。
Use when the user wants to check TestDino connection status, validate their PAT, discover available organizations and projects, or find the right projectId. Always call this first when the project context is ambiguous before any other TestDino tool.
日本語の概要は準備中です。原文の説明を表示しています。
Use when the user wants to manage a manual execution run or update case-level results inside a run — listing runs, creating runs for a release, inspecting a run, assigning cases, or marking case results (passed/failed/blocked/skipped/retest/untested). Accepts counter-style IDs like RUN-12 and TC-156.
日本語の概要は準備中です。原文の説明を表示しています。