agentsclimarketplace

Address daily digest

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

Claude Code skills that turn chia-explorer into finished workflows: address watches, price alerts, offer safety checks, NFT provenance, invoice watching.

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.

What its author says it does

Copied from the file, not written here

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.

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>

Keep looking

Skills are one crate of 328,083. 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.