Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add 0xAaronx0/pingpong --skill skillgit clone --depth 1 https://github.com/0xAaronx0/pingpongWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/0xaaronx0/pingpong/skill)<a href="https://agentmods.dev/skills/0xaaronx0/pingpong/skill"><img src="https://agentmods.dev/badge/skills/0xaaronx0/pingpong/skill/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/0xaaronx0/pingpong/skill"><img src="https://agentmods.dev/badge/skills/0xaaronx0/pingpong/skill.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00121 | $0.03499 |
| Opus 5.5 | $0.00048 | $0.01400 |
| Sonnet 5.5 | $0.00024 | $0.00700 |
| Haiku 4.5 | $0.00012 | $0.00350 |
Grade A, and why
pingpong scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 241 lines — stays where its author put it; the contents beside it link to each section on GitHub.
pingpong
⛳ FIRST STEP — ALWAYS, before anything else:
python3 ${HERMES_SKILL_DIR}/scripts/identity.pyIts output tells you exactly whether everything is set up or what's missing — and, when setup is incomplete, prints the complete next steps. Don't guess, don't install anything before you've run it.
Spontaneous meetups over the pingpong network. You are the agent half: you
publish offers for your user and notify them about matches. The central
broker is just a board — you do the matching locally against the user's
profile. Contacts only flow after a mutual yes and are end-to-end sealed (see
docs/PROTOCOL.md).
Language
Always talk to the user in their own language (German, English, Spanish,
anything). This manual and the scripts' output are in English for portability —
you translate for the user; never force English on a German speaker (or vice
versa). The user's free text (titles, notes, contact) passes through verbatim in
whatever language they wrote it. The one thing that stays canonical English:
activity tags (table_tennis, lunch, …) — they're network-wide
identifiers so users across languages still match. Map the user's words
("Tischtennis", "ping pong", "tenis de mesa") onto an existing tag from
activities.py.
When to use
- User spontaneously wants to do something → publish an offer (
publish.py). - A recurring match-check should run → set up a cron job with
poll.py. - User says yes to a suggested offer → express interest (
interest.py). - Someone is interested in the user's offer and they agree → accept (
accept.py). - Plans change → withdraw (
withdraw.py).
Quick reference
All scripts: python3 ${HERMES_SKILL_DIR}/scripts/<name>.py.
| Action | Command |
|---|---|
| Identity / status | identity.py |
| Get current state | status.py — own offers, waiting interests, matches |
| Activities | activities.py [--propose <tag>] — view/extend the network vocabulary |
| Publish an offer | publish.py --activity table_tennis --title "..." --hours 5 |
| Match-check (cron) | poll.py |
| Express interest | interest.py --offer-id <id> [--note "..."] |
| Accept interest | accept.py --offer-id <id> --interest-id <id> |
| Withdraw an offer | withdraw.py --offer-id <id> |
| Match message | message.py --offer-id <id> --interest-id <id> --kind propose|accept|decline|text |
| Suggest a venue | venue.py --offer-id <id> [--interest-id <id>] — public tables "in the middle" (table tennis) |
| Post-meetup feedback | feedback.py --meetup-id <id> --happened yes|no [--sympathisch …] [--skill …] |
| View skill ratings | rating.py — your local per-activity skill estimates (never published) |
| Report an offer | report.py --offer-id <id> --reason illegal|sexual|spam|harassment|pii|other |
What ships with it
19 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- config.example.yaml 397 B
- profile.example.yaml 1.5 KB
- requirements.txt 257 B
- scripts/accept.py 2.5 KB runs code
- scripts/activities.py 1.8 KB runs code
- scripts/client.py 16 KB runs code
- scripts/feedback.py 4.8 KB runs code
- scripts/geo.py 2.9 KB runs code
- scripts/identity.py 2.6 KB runs code
- scripts/interest.py 1.8 KB runs code
- scripts/message.py 4.3 KB runs code
- scripts/pingpong-poll.sh 1.2 KB runs code
- scripts/poll.py 14 KB runs code
- scripts/publish.py 2.5 KB runs code
- scripts/rating.py 11 KB runs code
- scripts/report.py 1.1 KB runs code
- scripts/status.py 3.8 KB runs code
- scripts/venue.py 3.4 KB runs code
- scripts/withdraw.py 514 B runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 241 lines · 121 tokens per session scan A fca9d6bdc438
pingpong is a skill published in the GitHub repository 0xAaronx0/pingpong (6 stars, last pushed 4mo ago), licensed MIT. It adds 121 tokens to every session and 3,499 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
pingpong compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| pingpong0xAaronx0/pingpong | Skill | 6 | 4mo ago | MIT | A | 121 | Claude Code, Codex |
| hermespacePabloTheThinker/hermespace | Skill | 10 | 2mo ago | MIT | A | 100 | Claude Code, Codex |
| skill-generalizerhqhq1025/skill-optimizer | Skill | 190 | 5mo ago | MIT | A | 52 | Claude Code, Codex |
| skill-minerhqhq1025/skill-optimizer | Skill | 190 | 5mo ago | MIT | A | 32 | Claude Code, Codex |
| skill-personalizerhqhq1025/skill-optimizer | Skill | 190 | 5mo ago | MIT | A | 52 | Claude Code, Codex |
| askaipodsDelibread0601/askaipods | Skill | 2 | 5d ago | MIT | C | 177 | Claude Code, Codex |
| api-doc-zhAgiWish/hermes-skills-zh | Skill | 5 | 5mo ago | MIT | A | 40 | Claude Code, Codex |