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 agentmods add skills/ebibibi/ebi-agent-chat-relay/python-qualitynpx skills add ebibibi/ebi-agent-chat-relay --skill python-qualitygit clone --depth 1 https://github.com/ebibibi/ebi-agent-chat-relayWhat 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 | $0.00022 | $0.00977 |
| Opus 5 | $0.00011 | $0.00489 |
| Sonnet 5 | $0.00004 | $0.00195 |
| Haiku 4.5 | $0.00002 | $0.00098 |
Grade A, and why
python-quality scanned grade A with 1 finding 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 2d 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
stdout=asyncio.subprocess.PIPE, How it starts
The opening of the file, as written. The whole thing — 173 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Python Quality — Patterns & Standards
Coding standards and Pythonic patterns for claude-code-discord-bridge development. Based on PEP 8, modern Python 3.12+ idioms, and project conventions.
When to Activate
- Writing new Python code in this project
- Reviewing code for quality
- Refactoring existing code
Project-Specific Standards
Type Hints (Mandatory)
from __future__ import annotations # Required in EVERY file
# Good: Full type annotations
async def run_claude_in_thread(
thread: discord.Thread,
runner: ClaudeRunner,
repo: SessionRepository,
prompt: str,
session_id: str | None,
) -> str | None:
...
# Bad: Missing annotations
async def run_claude_in_thread(thread, runner, repo, prompt, session_id):
...
Union Types (3.12+ Syntax)
# Good: Modern syntax
def process(value: str | None) -> dict[str, list[int]]:
...
# Bad: Old-style typing
from typing import Optional, Dict, List
def process(value: Optional[str]) -> Dict[str, List[int]]:
...
Dataclasses for State
from dataclasses import dataclass, field
@dataclass
class SessionState:
session_id: str | None = None
thread_id: int = 0
accumulated_text: str = ""
active_tools: dict[str, discord.Message] = field(default_factory=dict)
Error Handling
import contextlib
# Discord API calls that may fail: suppress gracefully
with contextlib.suppress(discord.HTTPException):
await message.add_reaction(emoji)
# Business logic: handle explicitly
try:
async for event in runner.run(prompt):
process(event)
except Exception:
logger.exception("Failed to run CLI for thread %d", thread.id)
await thread.send(embed=error_embed("An unexpected error occurred."))
Logging (Not Print)
import logging
logger = logging.getLogger(__name__)
# Good
logger.info("Starting CLI: %s", " ".join(args[:6]))
logger.warning("Session %s timed out after %ds", session_id, timeout)
logger.exception("Unexpected error in thread %d", thread.id)
# Bad — never use print() in library 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.
- 2d ago First seen · 173 lines · 22 tokens per session scan A 78524c481416
python-quality is a skill published in the GitHub repository ebibibi/ebi-agent-chat-relay (56 stars, last pushed 3d ago), licensed MIT. It adds 22 tokens to every session and 977 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
switch
How to take part in a Switch room. Load this skill before your first Switch action and whenever Switch comes up — the user mentions Switch, a Switch room or another Switch agent; you are asked to list, join, read or post in a room, create a room or room group, work with references, links or roles, or inspect an agent…
configure
Set up the Switch connector for Claude Code — register this Claude Code instance as a Switch agent and write the credentials the bundled MCP server and hooks read. Use when the user asks to configure Switch, set up the plugin, register with a Switch server, or when the Switch tools report no identity.
openbot-data-access
Governs how the OpenBot browser app reads and writes server data — every request goes through client in app/src/lib/client.ts, every read is a queryOptions factory in app/src/lib/ /queries.ts, every write is a mutationOptions factory in app/src/lib/ /mutations.ts, and components consume them through…
openbot-screen-layout
The default layout for every OpenBot configuration screen — PageShell and its prose/wide widths, PageSection and PageRows, Item row composition, the settings-row pattern where a summary and a chevron open a dialog, and the size and variant vocabulary. This is what a new screen looks like unless an instruction says…
codex-delegate
Delegate a coding task to the OpenAI Codex CLI as a background implementer, then review its diff and land it yourself. Use this whenever the user wants to hand implementation work to Codex — phrasings like "have Codex do X", "delegate this to Codex", "run it through Codex", or "use Codex to implement/fix/refactor" …
warp-delegate
Delegate a coding task to the Warp Agent CLI (oz) as a background implementer, then review its diff and land it yourself. Use this whenever the user wants to hand implementation work to Warp - phrasings like "have Warp implement X", "delegate this to the Warp CLI", "run it through Warp", "use oz to…