{"id":51323800,"url":"https://github.com/dasein108/ai-crypto-scoring","last_synced_at":"2026-07-01T16:02:38.951Z","repository":{"id":363336668,"uuid":"1262877974","full_name":"dasein108/ai-crypto-scoring","owner":"dasein108","description":"EVM-first crypto token research CLI: resolves a ticker/name/address, runs on-chain + free-API collectors, and emits provenance-tracked JSON/Markdown — CPD 2.0 risk, 6-pillar quality score, holders, liquidity, locks/unlocks. Drivable directly or via two Claude Code skills.","archived":false,"fork":false,"pushed_at":"2026-06-08T12:16:06.000Z","size":329,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T14:13:44.485Z","etag":null,"topics":["blockchain","claude-code","claude-skills","cli","crypto","defi","due-diligence","ethereum","evm","llm-agents","onchain-analytics","python","risk-scoring","token-analysis","web3"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dasein108.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-08T12:07:42.000Z","updated_at":"2026-06-08T12:16:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dasein108/ai-crypto-scoring","commit_stats":null,"previous_names":["dasein108/ai-crypto-scoring"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dasein108/ai-crypto-scoring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasein108%2Fai-crypto-scoring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasein108%2Fai-crypto-scoring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasein108%2Fai-crypto-scoring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasein108%2Fai-crypto-scoring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasein108","download_url":"https://codeload.github.com/dasein108/ai-crypto-scoring/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasein108%2Fai-crypto-scoring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35013184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","claude-code","claude-skills","cli","crypto","defi","due-diligence","ethereum","evm","llm-agents","onchain-analytics","python","risk-scoring","token-analysis","web3"],"created_at":"2026-07-01T16:02:37.306Z","updated_at":"2026-07-01T16:02:38.936Z","avatar_url":"https://github.com/dasein108.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# token-research\n\nAn **EVM-first crypto token research CLI**. Give it a ticker, project name, or token address; it resolves a canonical identity, runs domain-specific collectors against a provider registry, and emits structured **JSON** (or Markdown for `deep-report`) with full provenance, warnings, and explicit coverage gaps.\n\nIt runs **fully free with zero API keys**. An RPC URL and optional provider keys only widen coverage.\n\nThere are **two ways to use it**:\n\n1. **[Through an AI agent](#use-it-with-an-llm-the-skills) (Claude Code / Claude.ai)** — natural-language requests routed by two bundled skills. Best for \"research this token\", \"is it safe?\", \"compare these three\".\n2. **[Directly on the CLI](#use-it-on-the-cli)** — deterministic commands you script yourself. Best for pipelines, watchlists, and reproducible output.\n\nBoth drive the *same engine*; the skills are a thin routing/reading layer on top of the CLI.\n\n---\n\n## Quickstart\n\n```bash\npython3 -m venv .venv\n. .venv/bin/activate\npip install -e .[dev]\n\n# Resolve + full dossier (Markdown is deep-report only)\ntoken-research deep-report MORPHO --chain ethereum \\\n  --address 0x58D97B57BB95320F9a05dC918Aef65434969c2B2 --format markdown\n```\n\nRun without installing:\n\n```bash\nPYTHONPATH=src python3 -m token_research deep-report ETH --format markdown\n```\n\nOffline (no network, deterministic — good for smoke checks):\n\n```bash\nTOKEN_RESEARCH_OFFLINE=1 token-research resolve ETH\n```\n\nRequires Python ≥ 3.11. Only runtime dependency is `python-dotenv`. The CEX price-history / momentum / portfolio features need the opt-in `[ccxt]` extra (`pip install -e \".[ccxt]\"`).\n\n---\n\n## Use it with an LLM (the skills)\n\nThe repo ships **two Claude Code skills** in [`.claude/skills/`](.claude/skills/). They turn a plain-language request into the right command(s) and read the structured output back. Open this folder in Claude Code (or any agent that loads `.claude/skills/`) and just ask — the agent picks the skill.\n\n| Skill | Engine | What it covers | When it fires |\n|---|---|---|---|\n| **[`token-research`](.claude/skills/token-research/SKILL.md)** | the CLI (on-chain truth) | EVM token risk, 6-pillar score, holders, liquidity, locks/unlocks, full dossiers, compare | EVM token with a known/derivable address (Ethereum / Base / Arbitrum / Optimism) |\n| **[`cpd-crypto-analysis`](.claude/skills/cpd-crypto-analysis/SKILL.md)** | web research (sourced claims) | evidence-first CPD trust/due-diligence scoring | non-EVM L1 (HBAR, SOL, ATOM…), pre-TGE programs, purely qualitative trust questions |\n\n### How routing works\n\nThe skills split the decision on **one axis — the data regime** (not the question):\n\n```\nIs it an EVM token with a known/derivable address?\n ├─ yes → token-research skill   (canonical on-chain numbers)\n └─ no  → cpd-crypto-analysis    (sourced trust narrative)\n```\n\nThe CLI's documented refusals (non-EVM, pre-TGE) are the **hand-off signal** to the web engine, not a failure. A complete report often uses **both**: the CLI for the numbers, CPD for the sourced trust layer — they share one source of truth ([`docs/risk_revenue_estimation.md`](docs/risk_revenue_estimation.md)), so where they diverge, that divergence is itself a finding.\n\n### What to ask\n\n| You say… | Skill + mode | Runs |\n|---|---|---|\n| \"Is MORPHO worth a look?\" | `token-research` · quick | `score` + `risk`, reads the headline pillars |\n| \"Full dossier on ONDO\" | `token-research` · deep | `deep-report` (all collectors + narrative) |\n| \"Compare PENDLE vs MORPHO vs ONDO\" | `token-research` · compare | `score`/`compare` per token, diffed in a table |\n| \"Is HBAR / this pre-TGE program trustworthy?\" | `cpd-crypto-analysis` | evidence-first CPD scorecard |\n\nFull rationale and the routing contract: **[docs/skills-architecture.md](docs/skills-architecture.md)**.\n\n---\n\n## Use it on the CLI\n\n```\ntoken-research \u003ccommand\u003e \u003cquery\u003e [options]\n```\n\n`\u003cquery\u003e` is a ticker (`ETH`), project name (`Ondo`), or token address (`0x…`). Always pass `--address` and `--chain` when you know them — it pins the exact contract and skips resolver guesswork (squatter-token defense). Default output is JSON; `deep-report` also takes `--format markdown`.\n\n### Commands at a glance\n\n**Identity \u0026 market**\n`resolve` · `identity` · `price` · `pools` · `liquidity` · `supply` · `holders`\n\n**Flows \u0026 entities**\n`flows` (Dune-keyed) · `labels` · `relations`\n\n**Locks \u0026 supply pressure**\n`locks` · `staking` · `unlocks` (`--with-premium` for Tokenomist)\n\n**Fundamentals \u0026 scoring**\n`yields` · `compare` · `risk` · `prelaunch` · `score` (6-pillar) · `fairlaunch` · `deep-report`\n\n**Trader layer**\n`trend` · `signal` · `screen` · `chain-report`\n\n**Portfolio research (paper-mode, opt-in `[ccxt]`)**\n`momentum-screen` · `momentum-rank` · `momentum-backtest` · `price-history` · `portfolio-build` · `portfolio-rebalance`\n\n➡ **Authoritative surface — every command, flag, and output field: [docs/cli-reference.md](docs/cli-reference.md).**\n\n### The four scoring systems\n\nThey answer different questions — don't read one as another. See [docs/scoring-overview.md](docs/scoring-overview.md).\n\n| Command | Question |\n|---|---|\n| `score` | Structural quality (6-pillar composite, 0–100) |\n| `risk` | Trust / rug risk (CPD 2.0 tier + %) |\n| `signal` | Entry / exit timing (composite −10…+10) |\n| `fairlaunch` | Launch fairness (15-point rubric) |\n\n### Output contract\n\nEvery command returns the same shape: `metrics`, `sources`, `warnings`, `coverage_gaps`, `resolved_identity`, `generated_at`. Three rules when reading it: **trace don't trust** (every metric carries its source — RPC \u003e explorer \u003e vendor), **coverage gaps are signal** (they penalize the composite — surface them), **pillars over composite** (report the weak pillar, not just the number).\n\n---\n\n## Worked examples\n\nTwo real dossiers, kept as reference specimens in [`examples/`](examples/):\n\n- [examples/morpho-deep-analysis.md](examples/morpho-deep-analysis.md) — mature DeFi lending token (the run that drove 7 scoring-model fixes)\n- [examples/ondo-analysis.md](examples/ondo-analysis.md) — RWA token (Treasuries + Global Markets)\n\nOlder one-off write-ups and the pre-TGE / non-EVM case studies are kept under [`archived/`](archived/).\n\n---\n\n## Documentation\n\n- **[docs/getting-started.md](docs/getting-started.md)** — install, `.env`, which keys actually matter, first run.\n- **[docs/walkthrough.md](docs/walkthrough.md)** — research a token end-to-end and read the output.\n- **[docs/scoring-overview.md](docs/scoring-overview.md)** — the four scoring systems and when to use each.\n- **[docs/skills-architecture.md](docs/skills-architecture.md)** — the two engines, skill modes, and the routing rule.\n- **[docs/cli-reference.md](docs/cli-reference.md)** — the authoritative command surface.\n- **[docs/README.md](docs/README.md)** — full documentation index.\n\n---\n\n## Repository layout\n\n```\nsrc/token_research/   the CLI engine (providers, commands, scoring)\n.claude/skills/       the two LLM skills (token-research + cpd-crypto-analysis)\ndocs/                 maintained knowledge base (see docs/README.md)\nexamples/             two canonical worked dossiers\narchived/             produced artifacts + regenerable runtime data, kept for reference\ntests/                pytest suite (offline by default)\n```\n\nThe CLI writes its runtime data (raw API caches, generated reports, trend snapshots, price cache) to `.token-research/` by default — gitignored and regenerated on each run. Override with `TOKEN_RESEARCH_DATA_DIR`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasein108%2Fai-crypto-scoring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasein108%2Fai-crypto-scoring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasein108%2Fai-crypto-scoring/lists"}