--- name: docs-watch description: Check docs.celo.org, docs.minipay.xyz, and other live sources for drift against this repo's cached reference files (contracts, network info, docs sitemap, ecosystem, grants, MiniPay, wFIAT access) and fix or flag it. Use when asked to check docs updates, run the docs watch, or on the scheduled weekly run. --- # celopedia-skills docs upstream watch Goal: detect when the facts mirrored into `skills/celopedia-skill/references/` have drifted from their live sources, and surface every finding — mechanical fixes and ambiguous/high-stakes flags alike — in **one reviewable pull request per run**, opened against `celo-org/celopedia-skills:main` (the canonical upstream repo, not a fork), so a human can approve, edit, or close it. This builds on the process already documented in this repo's `README.md` ("Contributing" section: check docs.celo.org → update the file → bump version → open a PR) but replaces its own ad hoc reports/issues with a single PR as the one place everything gets reviewed. ## Sources checked | # | Source | Fetch command (see `live-data-sources.md` for more) | Reference file | |---|---|---|---| | 1 | Docs sitemap | `curl -s https://docs.celo.org/llms.txt` | `docs-map.md` | | 2 | Contract addresses | `https://docs.celo.org/tooling/contracts/core-contracts` + `token-contracts` + `l1-contracts` + `uniswap-contracts` (WebFetch) | `contracts.md` | | 3 | Network info | `https://docs.celo.org/build-on-celo/network-overview` (WebFetch) | `network-info.md` | | 4 | Ecosystem / TVL | `curl -s https://api.llama.fi/protocols \| jq '[.[] \| select(.chains[]? == "Celo")]'` | `ecosystem.md` | | 5 | Grant programs | `curl -s https://www.celopg.eco/programs` (WebFetch) | `grants-funding.md` | | 6 | MiniPay docs | `https://docs.minipay.xyz/` page tree + `getting-started/submit-your-miniapp.html` + `getting-started/best-practices.html` + `technical-references/deeplinks.html` (WebFetch) | `minipay-docs-map.md`, `minipay-requirements.md`, `minipay-common-mistakes.md` | | 7 | wFIAT access (Ripio tokens on Celo) | the commands in `wfiat-access.md` → _Re-verify_ (x402 `/supported` + `/api/config`, Ripio Ramp `/api/countries`, Textile RFQ levels, GeckoTerminal pools, LI.FI quotes, Aave `getReservesList`, CapyFi `eth_getCode`) | `wfiat-access.md`, plus the x402 token rows in `ai-agents.md` and `SKILL.md` | ### Source 6 — MiniPay: classify carefully MiniPay's docs mix **structure** (which pages and deeplinks exist) with **policy** (what is required to get listed). They do not get the same treatment: - `reference update` — a docs page added / removed / renamed, or a new or changed **deeplink**. These are structural facts; edit `minipay-docs-map.md` directly. - `needs review` — any change to a **listing requirement**: supported or mandatory tokens, the SLA, the dependency-security policy, the submission form URL or fields, whitelisting rules, the minimum viewport, or the performance bar. These are policy, not data, and they drive what the skill tells builders to build. **Never auto-edit `minipay-requirements.md` or `minipay-common-mistakes.md` from a docs diff** — describe what changed versus what's cached and let a human decide. - Also check that the URLs cited in `minipay-requirements.md` and `minipay-docs-map.md` still resolve (`curl -o /dev/null -w "%{http_code}"`). A dead URL is a `reference update` only if the replacement is unambiguous; otherwise flag it. ### Source 7 — wFIAT access: track structure, not prices `wfiat-access.md` mixes **structural facts** (which route exists for which token) with **liquidity snapshots** (pool TVL, Textile max size) that move hourly. Only structure drives edits: - `reference update` — a route appears or disappears for a token: a Textile pair goes from zero to non-zero buy depth (or back), LI.FI starts or stops returning a same-chain route into a token, a new Celo DEX pool for a token shows up, the Ripio Ramp adds/removes a country or a Celo token, the x402 `/supported` list adds/removes an asset. Edit the per-token table and the matching path section. When the x402 list changes, update `ai-agents.md` (_Enabled tokens_ table and Token-support line) and the x402 line in `SKILL.md` in the same run so the three never disagree. - Liquidity numbers: update a figure only when it moves by **more than 2×** or crosses zero, and restamp `Last verified`. Smaller moves are `no action` — they would make every run a PR. - `needs review` — anything that changes money-path behaviour for an integrator: an x402 asset's `assetTransferMethod` or `eip2612GasSponsoring` flag changes, a wFIAT token address changes, the Ripio BridgeDeposit address (`0x465e642387d3d73a57CDc1368fFA53A800bA5D47`) stops returning code, or a yield venue for wFIAT appears **on Celo** (Aave reserve list gains a wFIAT, or CapyFi's Comptroller address gains code on Celo). Never auto-edit these. - A source that answers with an error (Textile, ramp.ripio.com, li.quest are third-party APIs) counts as **blocked** for that source, same as sources 5–6. ## Procedure 1. **Load the snapshot** at `.claude/skills/docs-watch/snapshot.md` — the facts we currently rely on, with the date each was last verified. 2. **Fetch each source** above and extract the same facts the corresponding reference file documents (page list, address table, chain params, protocol list, program status table). 3. **Diff** each source against both the snapshot and the current content of its reference file. 4. **Classify every delta:** - `no action` — cosmetic/unrelated (e.g. a docs page's prose changed but not its existence or URL). Not mentioned in the PR. - `reference update` — mechanical, unambiguous fact change: a sitemap page added/removed/renamed, a DeFi protocol added/removed from the Celo chain list, a grant program's Live/Past status flipped, a new fee-currency token added. Edit the reference file directly with the corrected fact, on the run's branch (see step 5) — do not commit or PR per-item. - `needs review` — anything ambiguous or high-stakes (a contract address that doesn't match, a chain ID / fee-currency address change, anything touching `contracts.md` core protocol addresses or `network-info.md` chain IDs). Do **not** edit the file — never guess a fix for these. Instead, write a clearly-marked entry describing exactly what was observed vs. what's cached, for the "Needs review" section of the PR body (step 5). 5. **Every run ends one of three ways** — always distinguishable from each other by whether/how a PR shows up, since this skill never writes report files: - **Drift found** (any `reference update` and/or `needs review` delta): open **one** pull request for the whole run. 1. Create a branch off `main` (e.g. `docs-watch/`). 2. Apply all `reference update` edits on that branch, and bump `version` in `skills/celopedia-skill/SKILL.md` (patch bump for a pure data refresh) if any reference file changed. 3. Update the snapshot (step 6) on the same branch. 4. Push the branch directly to `celo-org/celopedia-skills` (this checkout has push access — no fork needed) and open the PR: `gh pr create --repo celo-org/celopedia-skills --base main --head --title "docs-watch: weekly refresh — " --body "..."` 5. The PR body is the report — no separate report file. Structure it as: a one-line "what changed" summary at the top, one section per source with its deltas and classification, a clearly separated **Needs review** section for anything requiring human judgment (the reviewer approves, pushes edits, or closes the PR), and the mechanical edits already applied in the diff. 6. **One PR covers the whole run** — don't split `reference update` and `needs review` findings into separate PRs. - **Blocked** (one or more sources unreachable — network error, 403, timeout, etc. — so deltas couldn't be assessed for those sources): open a small pull request too, so a blocked run is never silently indistinguishable from a clean one. 1. Branch off `main` (e.g. `docs-watch/blocked-`), and only edit the "Last attempt" line in `snapshot.md` (step 6) — no reference files, no version bump, since nothing was actually verified. 2. Push and open the PR with title `docs-watch: blocked — ` and a body listing exactly which sources failed and how (status code / error), plus which sources (if any) *did* succeed this run. 3. This PR is informational, not something to merge for content — the reviewer's real fix is the underlying blocker (e.g. a network egress allow-list). Merging just records the attempt; closing without merging is equally fine. - **Clean** (every source reachable, every delta `no action`): do not open a PR or commit anything — stay completely silent. End with a short summary in the final message instead. 6. **Update the snapshot**, on whichever branch step 5 used: - On a **drift-found** or **clean** run where sources were reachable: update the per-source facts with newly-verified values and set `Last verified: ` for each source checked. - On a **blocked** run: leave the per-source facts untouched (they weren't actually re-verified), and only update the top-of-file `Last attempt: — BLOCKED ()` line. - Keep the file small — only the facts checked above, not a full copy of the reference files. ## Notes - `live-data-sources.md` already documents the priority order (live API > official docs > hardcoded references > ecosystem directory) — this skill exists to keep the "hardcoded references" tier honest, not to replace live lookups elsewhere. - Never guess a contract address or chain parameter to "fix" a `needs review` item — that tier exists specifically so factual corrections to security-sensitive data always get a human's eyes first.