Instructions for AI coding agents (Grok, Cursor, Claude Code, Codex, Copilot and others) working in this repo or using it as a building block. Humans: see README.md.
Blockchain Lab Hub: static GitHub Pages site with 75 free services (AI briefs via Grok, gas/RPC/chain monitors, finders, feeds), machine-readable services.json, health data, and the org-wide llms.txt and blocks.json catalogue.
- Kind: web-app, dataset · stability:
stable· licence: MIT - Machine-readable manifest:
blocks/hub.json(schema: BLOCKS-SCHEMA) - How it fits with the other Blockchains repos: Build with Blocks
pip install -q playwright && python -m playwright install chromiumpython scripts/gen_site.py && git diff --exit-code -- '*.html' sitemap.xml robots.txt
python tests/validate.py
python tests/serve.py 43117 & sleep 2; BASE=http://127.0.0.1:43117 python tests/e2e.py
GH_TOKEN=$(gh auth token) python scripts/blocks.py # rebuild blocks.json, llms.txt, llms-full.txt from every repo's blocks.json + AGENTS.md (token optional)Tests hit live public networks/APIs (the org rule is no mocks). A failure can be an upstream outage: re-run before changing code.
| Path | What |
|---|---|
scripts/gen_site.py |
generates every page + sitemap/robots |
scripts/job_*.py |
scheduled data jobs (daily, gas, rpc, health, ai…) |
scripts/blocks.py |
aggregates blocks.json, llms.txt and llms-full.txt; /blocks/ page is in gen_site.py |
services.json |
service catalogue |
data/ |
published data |
llms.txt, llms-full.txt, blocks.json |
org-wide AI entry points, generated by scripts/blocks.py (not this repo's own manifest) |
blocks/hub.json |
this repo's own block manifest |
blocks/index.html |
human-readable blocks catalogue (generated by gen_site.py, renders /blocks.json) |
tests/ |
validate.py, e2e.py, serve.py |
- Pages are generated by
scripts/gen_site.py; commit regenerated HTML. - No servers, no trackers; everything is static + scheduled Actions.
- New service: page in
gen_site.py, entry inservices.json, a check intests/e2e.py(the hub test expects the card count to match). - New repo block: add
blocks.jsonto that repo, then runpython scripts/blocks.py.
- Run the e2e locally after changing pages.
- Hand-edit generated pages.
- Invent data, mock network responses in shipped code, or hard-code values that should come from the live source; every repo here is 'no mocks, real data'.
- Commit secrets, keys or
.envfiles. Rungitleaksbefore pushing; CI and the org policy reject leaks.
- services.json (http):
catalogue of every service with id, name, url, category - blocks.json (http):
aggregated blocks.json of every live Blockchains repo - llms.txt (http):
org-wide doc map for LLMs (+ llms-full.txt) - data/*.json (http):
gas.json, liveness.json, rpc-latency.json, incidents.json, events.json, jobs.json, grants.json, depeg.json, status.json, ai/*.json - feeds (http):
incident RSS + /events/events.ics
See the README section Use as a building block for a copy-paste example.
- Blockchains/blockchainlab-api: data source for many pages
- Blockchains/blockchainlab-tools: tools are linked from the hub
- Blockchains/sites-monitor: status of the custom domains
- Blockchains/.github: BLOCKS-SCHEMA and BUILD-WITH-BLOCKS docs