Tracker for a configured protocol's ecosystem velocity — new GitHub integrations, npm adoption, notable announcements. Defaults to x402; operators swap in their own protocol via memory/topics/tracked-protocol.md.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add anajuliabit/aeon --skill x402-monitor --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of X402 Monitor?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anajuliabit-x402-monitor)More formats (shields.io, HTML) on the badges page.
---
name: Protocol Monitor (x402 default)
category: crypto
description: Tracker for a configured protocol's ecosystem velocity — new GitHub integrations, npm adoption, notable announcements. Defaults to x402; operators swap in their own protocol via memory/topics/tracked-protocol.md.
var: ""
tags: [dev, protocol, ecosystem]
---
> **${var}** — Optional protocol name override (must match a stanza in `memory/topics/tracked-protocol.md`). If empty, uses the default protocol declared in that file.
Today is ${today}. Read `memory/MEMORY.md` before starting.
## Voice
If `soul/SOUL.md` and `soul/STYLE.md` are populated, read both and match the operator's voice for the notification. If they are empty templates or absent, write in a clear, direct, neutral tone — short sentences, no hedging, no corporate launch-language.
## Why this skill exists
Some protocols are moving fast enough that "is the ecosystem still spreading or stalling?" needs a weekly answer. This skill turns that question into a recurring measurement: new repos integrating the protocol, npm adoption velocity, notable announcements, and a composite momentum score. The skill is parameterized — by default it tracks **x402** (HTTP-native micropayments for AI agents), but the operator can repoint it at any protocol by editing `memory/topics/tracked-protocol.md`.
## Config
This skill is driven entirely by `memory/topics/tracked-protocol.md`. If the file doesn't exist, create the seed below and continue with the x402 default:
```markdown
# Tracked Protocol
## Default
x402
## Protocols
### x402
- **Search queries (GitHub):**
- `x402`
- `"x402 protocol"`
- **npm packages to watch:**
- `@coinbase/x402`
- `x402`
- `paykit`
- **WebSearch queries:**
- `x402 payment agent`
- `"x402 protocol" site:github.com OR site:npmjs.com OR site:blog`
- **One-line context:** HTTP-native micropayments rail for AI agents. Stablecoin payments per API call.
### <your-protocol>
- **Search queries (GitHub):** ...
- **npm packages to watch:** ...
- **WebSearch queries:** ...
- **One-line context:** ...
```
If `${var}` is set, select that stanza. Otherwise use the `Default` stanza.
If the resolved stanza is missing any of `Search queries`, `npm packages`, or `WebSearch queries`, log `PROTOCOL_MONITOR_NO_CONFIG: incomplete stanza for <protocol>` and exit (no notification).
## State
Per-protocol state lives at `memory/topics/protocol-state-<protocol>.md`. If it doesn't exist, create with this seed:
```markdown
# <protocol> Ecosystem Tracker
*Last run: never*
## Known Integrations
(populated on first run)
## Key Stats
- npm <pkg>: unknown weekly downloads
- GitHub repos matching <query>: unknown
- Notable announcements: (none recorded)
## Signal Log
(populated on first run)
```
Extract:
- `known_integrations` — list of repos/projects already integrating the protocol
- `npm_last_known` — last recorded weekly downloads per watched package (or "unknown")
- `gh_repo_count_last` — last recorded GitHub repo count
## Steps
### 1. Search GitHub for fresh integrations
For each `Search query` in the resolved stanza:
```bash
gh search repos "<query>" --sort=updated --limit=20 \
--json=fullName,description,stargazersCount,updatedAt,language
```
Fallback if `gh search repos` fails:
```bash
gh api "search/repositories?q=<query>+in:readme+in:description&sort=updated&per_page=20" \
--jq '.items[] | {full_name, description, stargazers_count, updated_at, language}'
```
From the union of results:
- Filter to repos updated in the last 7 days
- Cross-check against `known_integrations` — mark anything NEW (not in baseline)
- Note star count and brief description for each
### 2. Fetch npm download trend
For each `npm package` in the resolved stanza, use **WebFetch** (not curl — sandbox-resilient and these endpoints are unauthenticated):
```
https://api.npmjs.org/downloads/point/last-week/<pkg>
```
Returns JSON with a `downloads` field. Record this week's count per package. Compute delta vs `npm_last_known`.
If a package returns 404, skip it (the package may have been renamed) and note in the log.
### 3. WebSearch for protocol news
For each `WebSearch query` in the resolved stanza, run WebSearch (limit to past 7 days where the tool supports it).
From results, extract:
- New integrations or launches
- Developer blog posts or tutorials
- Protocol updates or spec changes
- Notable company/project announcements
Flag any result that's genuinely new vs baseline.
### 4. Synthesize the signal
Rate ecosystem momentum this week:
| Signal | Points |
|--------|--------|
| New GitHub repo integrating the protocol (updated last 7d, not in baseline) | +2 each |
| npm weekly downloads up vs last known (per package) | +3 |
| Notable announcement (company, product, protocol update) | +2 each |
| New developer tutorial / blog post | +1 each |
| Mentioned in trending context (adjacent narrative) | +1 |
**Momentum levels:**
- 0–2: quiet week
- 3–6: building
- 7–10: accelerating
- 11+: breakout
### 5. Update `memory/topics/protocol-state-<protocol>.md`
Rewrite with:
- Updated `*Last run: ${today}*`
- Updated `Known Integrations` (add newly discovered)
- Updated `npm_last_known` per package
- Updated `gh_repo_count_last`
- Appended entry to `Signal Log`
### 6. Notify
Write to `.pending-notify-temp/protocol-monitor-${protocol}-${today}.md` (create dir if needed), then:
```bash
./notify -f .pending-notify-temp/protocol-monitor-${protocol}-${today}.md
```
Format (voice per the Voice section above):
```
<protocol> pulse — ${today}
momentum: <level> (<score> pts)
new integrations (<count>):
- <full_name>: <description_one_line> (<stars>★)
npm <pkg>: <downloads>/wk (<delta> vs last week, or "first data point")
npm <pkg2>: ...
signals:
- <one-line summary of top news item>
- <one-line summary of next>
quiet week. ecosystem still compounding. ← only if momentum == 0
state: memory/topics/protocol-state-<protocol>.md
```
Keep total under 900 chars. Do NOT use `./notify "$(cat ...)"` — write the file first, pass `-f path`.
If momentum score is 0, no new repos, no news: log `PROTOCOL_MONITOR_OK: quiet` and skip notification.
### 7. Log to `memory/logs/${today}.md`
```markdown
## Protocol Monitor — <protocol>
- **New repos (7d):** <count>
- **npm downloads:** <pkg>=<n>/wk (delta <±n>); <pkg2>=<n>/wk
- **Notable signals:** <count>
- **Momentum score:** <score> (<level>)
- **Notification:** sent / skipped (quiet)
- PROTOCOL_MONITOR_OK
```
## Required Env Vars
None. Uses `gh` CLI (GITHUB_TOKEN via workflow), WebFetch, WebSearch.
## Sandbox Note
- `gh search repos` and `gh api` use the gh CLI — handles auth internally, no env-var expansion in headers.
- npm API: use **WebFetch** (not curl — sandbox may block outbound). WebFetch bypasses the sandbox network gate.
- WebSearch: built-in tool, always available.
## What to watch for (recurring signal classes)
- New repos with the protocol name in README/description, updated in last 7 days — primary adoption signal
- npm download velocity — measures developer install rate, more reliable than tweet volume
- Corporate-backing materialization (cloud / payments / standards-body integrations)
- Cross-domain adoptions (the protocol escaping its original niche)
- Protocol updates — spec changes, new SDK versions, EIPs / RFCs
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!