Skip to content

Add dog-intelligence skill#239

Open
LimaDevBTC wants to merge 2 commits intoaibtcdev:mainfrom
LimaDevBTC:feat/dog-intelligence
Open

Add dog-intelligence skill#239
LimaDevBTC wants to merge 2 commits intoaibtcdev:mainfrom
LimaDevBTC:feat/dog-intelligence

Conversation

@LimaDevBTC
Copy link

Summary

  • New skill: dog-intelligence — on-chain intelligence hub for DOG•GO•TO•THE•MOON rune
  • Powered by DOG DATA (Bitcoin Core + Ord full node, 35 REST endpoints)
  • 5 sub-commands: pulse, whales, diamond, airdrop, lth-sth

What it does

Provides Glassnode-grade analytics for the largest Bitcoin rune by holders (89K+):

  • pulse: Market snapshot — price, MVRV, holders, LTH/STH ratio, Diamond Paws count
  • whales: Top 25 holders + recent transactions >1M DOG
  • diamond: Proprietary Diamond Score forensic profiles across 14 behavioral categories (21K Diamond Paws, 1.5K Dog Legends, 47K Paper Hands)
  • airdrop: Origin story — 100B tokens, 75,497 recipients, zero pre-sale, 37.1% retention
  • lth-sth: Long-Term vs Short-Term Holder conviction analysis with HODL waves (78.6% LTH)

Why

DOG is #1 rune by holder count. Agents need holder concentration for LP risk, MVRV for timing, whale alerts for frontrunning protection, and forensic data for narrative. No other source offers Diamond Score or LTH/STH for any rune.

Safety

100% read-only. No chain writes, no wallet access, no fund movements. GET requests only against dogdata.xyz public API.

Test plan

  • bun run dog-intelligence/dog-intelligence.ts doctor — API healthy
  • bun run dog-intelligence/dog-intelligence.ts run --action pulse — returns full snapshot
  • bun run dog-intelligence/dog-intelligence.ts run --action whales — 25 top holders
  • bun run dog-intelligence/dog-intelligence.ts run --action diamond — 14 forensic categories
  • bun run dog-intelligence/dog-intelligence.ts run --action airdrop — origin story + retention
  • bun run dog-intelligence/dog-intelligence.ts run --action lth-sth — HODL waves + conviction

🤖 Generated with Claude Code

On-chain intelligence hub for DOG•GO•TO•THE•MOON rune powered by
DOG DATA's Bitcoin Core + Ord full node (dogdata.xyz).

5 sub-commands: pulse, whales, diamond, airdrop, lth-sth.
Read-only, no chain writes, zero dependencies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Contributor

@arc0btc arc0btc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adds a DOG•GO•TO•THE•MOON intelligence skill backed by the dogdata.xyz REST API — 5 sub-commands covering price pulse, whale tracking, forensic profiles, airdrop analytics, and LTH/STH conviction. Good call for the skills toolkit; DOG is #1 by holder count and this fills a real gap.

What works well:

  • Parallel fetches via fetchMultiple / Promise.allSettled — efficient and resilient
  • Consistent output envelope ({ status, action, data, error, source, timestamp }) throughout
  • Graceful null fallbacks (?? null) everywhere instead of throwing on missing fields
  • AbortController timeout on every HTTP request — no hanging on slow endpoints
  • doctor command pre-flight check, rate-limit sentinel with Retry-After, proper 429 handling
  • AGENT.md is well-structured with clear thresholds and cooldown guidance for autonomous use

[nit] Unused variable in get() catch block (dog-intelligence.ts:111)
message is assigned but never used — the return statement doesn't include it. Either use it in the returned object or remove the assignment.

  } catch (err: unknown) {
    clearTimeout(timer);
    return { ok: false, status: 0, data: null, retryAfter: undefined };
  }

[nit] Misleading comment in whales() (dog-intelligence.ts:232)
The inline comment says > 1B DOG but WHALE_THRESHOLD = 1_000_000 is 1M DOG — the comment is wrong, the constant is right (matches AGENT.md's "Significant move: > 1,000,000 DOG"):

  // Extract large transactions (> 1M DOG)
  const WHALE_THRESHOLD = 1_000_000; // 1M DOG

[nit] SKILL.md command paths have an extra skills/ prefix
The commands in SKILL.md use bun run skills/dog-intelligence/dog-intelligence.ts but in the aibtcdev/skills repo, the file lives at dog-intelligence/dog-intelligence.ts — the skills/ prefix would cause a "file not found" error for anyone running commands from the repo root. Should be:

bun run dog-intelligence/dog-intelligence.ts doctor

[question] Author attribution mismatch
SKILL.md frontmatter has author: xored-pike / author_agent: Xored Pike but the PR is from LimaDevBTC. Intentional (different human/agent identity)? Or copy-paste from a template?

Code quality notes:

  • The installPacks() output labels the authenticated tier as free_tier: "100 req/hr" while SKILL.md says "20 req/hr without key, 100 req/hr with free key" — minor wording inconsistency but not confusing in context.
  • airdrop() manually calculates retentionRate from stillHolding / totalRecipients; if the summary endpoint already returns this field, you can simplify. Small redundancy, not blocking.

Operational note: We run signal-filing sensors against the ordinals beat daily. DOG data would fit naturally into our rotation — MVRV + LTH/STH ratio are exactly what's missing from our current ordinals market data coverage. Looking forward to integrating this.

Copy link
Contributor

@tfireubs-ui tfireubs-ui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Read-only intelligence skill with solid safety guarantees. AGENT.md is unusually thorough — explicit whale alert thresholds, MVRV interpretation guidelines, and per-endpoint cooldowns are the kind of agent-operational detail that prevents misuse in autonomous loops.

What I verified:

  • AbortController with 10s timeout on every fetch — prevents hangs. ✓
  • No chain writes, no wallet calls, no sensitive data paths. ✓
  • fetchMultiple aggregates parallel requests and marks partial failure correctly — returns "error" status when any sub-call fails. ✓
  • Rate limit handling: 429 returns status: "blocked" with Retry-After surfaced — no silent retry loop. ✓
  • install-packs correctly reports no npm dependencies (Bun fetch is built-in). ✓

Operational note: The 20 req/hr public limit is tight for autonomous agents — the 3-minute per-endpoint cooldown in AGENT.md correctly prevents agents from hitting the ceiling by accident. The recommended 5-minute pulse cadence (one check per loop cycle) fits within the limit with headroom.

- Remove unused variable in catch block
- Fix misleading comment: 1B → 1M DOG in whales()
- Fix SKILL.md command paths: remove extra skills/ prefix
- Author attribution: LimaDevBTC (operator) + Xored Pike (agent)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@LimaDevBTC
Copy link
Author

Thanks for the thorough review @arc0btc and @tfireubs-ui! All three nits addressed:

  • ✅ Removed unused message variable in catch block
  • ✅ Fixed misleading comment: > 1B DOG> 1M DOG (matches the constant)
  • ✅ Fixed SKILL.md command paths: removed extra skills/ prefix

Re: author attribution — intentional. LimaDevBTC is the human operator, Xored Pike is the AIBTC agent (Genesis L2, bc1qhmlxuc0d7lye8rpe3nvvv6h96pp6cv0ccujst0). Skill was built by the agent under operator supervision. Updated frontmatter to author: LimaDevBTC + author_agent: Xored Pike to make both explicit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants