agentsclimarketplace

Address daily digest

Skill Spacetime-Technology/chia-skills/skills/address-daily-digest

Compose and deliver a daily (or weekly) summary of activity at one or more Chia addresses — inflows, outflows, ending balance, USD value at receive time. Use when the user wants a recurring report instead of per-event alerts, or asks for a "daily summary" / "weekly digest" of their wallet. Accepts addresses, period_hours, currency, channel as arguments for programmatic invocation.From its SKILL.md

Install
npx -y skills add Spacetime-Technology/chia-skills --skill address-daily-digest

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.0 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Address daily digest

You are composing a recurring summary of one or more Chia addresses — inflows, outflows, ending balance, USD/fiat values — and delivering it through whichever notification channel is installed. Designed to be scheduled once a day or once a week.

This skill follows the conventions in this repo's SKILLS.md. Read that if anything below is unclear.

Required capabilities

  • chia-explorer (mcp__chia-explorer__*) — mandatory.
  • A notification MCP — pick whichever is installed. Email is the natural fit for digests; if email isn't configured the skill will use a chat channel or fall back to a file at ~/.chia-skills/digests/<date>.md.

Resolve inputs

You need: $addresses, $period_hours, $currency, $channel.

  • $addresses — one address or a comma-separated list. Required.
  • $period_hours — window to summarise. Default 24 (daily). Use 168 for weekly.
  • $currency — three-letter code for fiat valuation. Default usd.
  • $channel — notification channel, default auto.

Resolve: arguments → context → ask user. If $addresses missing after asking, emit STATUS: aborted, REASON: missing required inputs.

Validate each address (xch1... or txch1...). Drop invalid entries and warn the user inline; continue with the valid ones.

Load or initialise state

State file: ~/.chia-skills/state/address-daily-digest__<sha1_of_sorted_addresses>.json.

Shape:

{
  "addresses": ["xch1...", "xch1..."],
  "last_run_iso": "2026-05-18T08:00:00Z",
  "last_run_height": 6532109,
  "currency": "usd",
  "skill_version": "0.1.0"
}

On first run: record current peak and now. Send a "digest watch started" confirmation with current balances, no historical events. Don't fabricate a back-dated report.

Define the window

Window end = current chain peak (and now for time).

Window start = last_run_height (and last_run_iso for time).

If period_hours is set and now - last_run_iso < period_hours - 5 minutes, this run is early — skip and emit STATUS: no_change, REASON: window not elapsed. (A 5-minute jitter tolerance for cron drift.)

Collect activity

For each address:

  1. Get all coin records created in the window (received).
  2. Get all coin records spent in the window (sent).
  3. Classify each (XCH / CAT / NFT / DID) via puzzle-classification tools.
  4. Compute ending balance via the balance tool.

For CATs and NFTs, label by asset_id / launcher_id. Unknown CATs: include the asset_id, mark "unknown CAT".

Apply fiat values

Fetch current XCH spot price in $currency once.

For receive-time valuations (more useful for tax / accounting than current valuation), the skill cannot retroactively look up historical XCH prices — chia-explorer's price tool is spot-only. Be explicit about this in the message body: "Fiat values reflect current spot price, not the price at receive time. For tax exports with historical prices, use the address-tax-export skill (roadmap)." Don't quietly mislabel.

Compose the digest

Email-friendly format. Markdown-light, ASCII tables.

Chia digest — 2026-05-19 → 2026-05-20 (24h)
Address: xch1yxq...8yl

INFLOWS (3)
  +1.250 XCH     block 6,532,210   ~$62.50
  +500 USDS      block 6,532,210   (CAT)
  +1 NFT         block 6,532,217   launcher 0xabc...

OUTFLOWS (1)
  -0.050 XCH     block 6,532,217   ~$2.50  fee 50,000 mojos

NET: +1.200 XCH (~$60.00)
BALANCE NOW: 12.347 XCH (~$617.35 at $50.00/XCH)

Fiat reflects current spot, not receive-time price.

For multi-address digests, repeat the per-address block and add a top-level summary:

Across 2 addresses, 24h period:
  Inflows:  3.500 XCH + 500 USDS + 1 NFT
  Outflows: 0.050 XCH
  Net:      +3.450 XCH (~$172.50)

Deliver

Pick channel by priority (email > slack > discord > push > webhook > inline file).

Subject line for email:

Chia digest — <date> (<N> addresses, <N> events)

If sending to a file (no channels available), write to ~/.chia-skills/digests/<iso8601-date>.md.

Update state

Set last_run_iso = now, last_run_height = current_peak. Atomic write.

Scheduling

Wire to:

  • schedule skill / cron — daily at a fixed time (e.g. 08:00 local). Weekly at the same.
  • Manual — re-invoke for an ad-hoc summary, but you'll get whatever happened since the last automated run.

Hard rules

  • Read-only. Never sign or push.
  • Honest about pricing. Spot price ≠ receive-time price. Say so.
  • Don't quietly skip invalid addresses. Tell the user which ones were dropped.
  • First run is a "watch started" note, not a report.

Recovery patterns

  • One address fails to query. Skip it, note the failure in the digest, continue with the rest. Emit STATUS: partial.
  • All addresses fail. Emit STATUS: failed, REASON: all chia-explorer calls failed.
  • Channel delivery fails. Save the rendered digest to ~/.chia-skills/digests/, emit STATUS: partial.

Output

STATUS: success | no_change | partial | failed | aborted
ADDRESSES: <comma-separated list>
INFLOWS: <count>
OUTFLOWS: <count>
NET_XCH: <decimal, positive or negative>
BALANCE_XCH: <sum across addresses>
CURRENCY: <code>
CHANNEL: <channel used> | inline | none
ARTIFACT: <absolute path to saved digest file> | none
REASON: <one line, only when STATUS is failed, partial, aborted, or no_change>

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.