

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# CLAUDE.md23## Project4Agent Reach — Python CLI + library that gives AI agents read/search access to 13 internet platforms.5Positioning: installer + doctor + config tool. NOT a wrapper — after install, agents call upstream tools directly.6Repo: github.com/Panniantong/Agent-Reach | License: MIT | Version: 1.5.078## Commands9- `pip install -e .` — Dev install10- `pytest tests/ -v` — All tests11- `pytest tests/test_cli.py -v` — CLI tests only12- `bash test.sh` — Full integration test (creates venv, installs, runs doctor + channel tests)13- `python -m agent_reach.cli doctor` — Run diagnostics14- `python -m agent_reach.cli install --env=auto` — Auto-configure1516## Structure17- `agent_reach/cli.py` — CLI entry point (argparse)18- `agent_reach/core.py` — Core read/search routing logic19- `agent_reach/config.py` — Config management (YAML, env vars)20- `agent_reach/doctor.py` — Diagnostics engine21- `agent_reach/channels/` — One file per platform (twitter.py, reddit.py, youtube.py, etc.)22- `agent_reach/channels/base.py` — Base channel class (all channels inherit from this)23- `agent_reach/integrations/mcp_server.py` — MCP server integration24- `agent_reach/skill/` — OpenClaw skill files25- `agent_reach/guides/` — Usage guides26- `tests/` — pytest tests27- `config/mcporter.json` — MCP tool config2829## Conventions30- Python 3.10+ with type hints31- Each channel is a single file in `channels/`, inherits from `BaseChannel`32- Channel contract: must implement `can_handle(url)`, `read(url)`, `search(query)`, `check()` methods33- Use `loguru` for logging, `rich` for CLI output34- Commit format: `type(scope): message` (one commit = one thing)35- All upstream tool calls go through public API/CLI, never hack internals3637## Rules38- NEVER modify upstream open source projects' source code39- Agent Reach is a "glue layer" — only route and call, don't reimagine40- Version in THREE places must match: `pyproject.toml`, `__init__.py`, `tests/test_cli.py`41- Always new branch for changes, PR to main, never push to main directly42- Run `pytest tests/ -v` before committing — all tests must pass43- Cookie-based auth (Twitter, XHS): use Cookie-Editor export method only, no QR scan44- XHS login: Cookie-Editor browser export only (QR will hang)45
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 14 days ago | |
| Adit-Jain-srm/NightmareNetCLAUDE.md · 46 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 14 days ago | |
| tyrchen/geektime-bootcamp-aiw7/genslides/backend/CLAUDE.md · 230 | CLAUDE.md | testlint-formatstylearch+6 | 100/100 | 9 days ago | |
| dotCMS/coreCLAUDE.md · 949 | CLAUDE.md | setupbuildteststyle+7 | 99/100 | today | |
| dotCMS/corecore-web/libs/sdk/react/CLAUDE.md · 949 | CLAUDE.md | setupbuildtestlint-format+9 | 97/100 | 14 days ago | |
| supabase/supabase.claude/CLAUDE.md · 108k | CLAUDE.md | testlint-formatstylearch+1 | 97/100 | 14 days ago | |
| dotCMS/corecore-web/libs/sdk/client/CLAUDE.md · 949 | CLAUDE.md | setupbuildtestlint-format+9 | 97/100 | 14 days ago | |
| modelcontextprotocol/serversCLAUDE.md · 90k | CLAUDE.md | setupbuildtestlint-format+6 | 97/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/panniantong-agent-reach-claude)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.