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 Peiiii/nextclaw --skill qq-group-speaker-distinctiongit clone --depth 1 https://github.com/Peiiii/nextclawWrote 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/peiiii/nextclaw/qq-group-speaker-distinction)<a href="https://agentmods.dev/skills/peiiii/nextclaw/qq-group-speaker-distinction"><img src="https://agentmods.dev/badge/skills/peiiii/nextclaw/qq-group-speaker-distinction/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/peiiii/nextclaw/qq-group-speaker-distinction"><img src="https://agentmods.dev/badge/skills/peiiii/nextclaw/qq-group-speaker-distinction.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00032 | $0.00392 |
| Opus 5 | $0.00016 | $0.00196 |
| Sonnet 5 | $0.00006 | $0.00078 |
| Haiku 4.5 | $0.00003 | $0.00039 |
Grade A, and why
qq-group-speaker-distinction 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 11d 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.
What it actually says
QQ Group Speaker Distinction
Use this skill when the user says "do not isolate by user in group chat" but still needs speaker separation.
Core Rule
- Keep one session key per group:
qq:group:{group_id}. - Attach speaker identity on each inbound message before it enters model context.
- Speaker identity must include stable
user_id; nickname is only a display field.
Minimal Implementation
const sessionKey = `qq:group:${groupId}`;
const speakerTag = `[speaker:user_id=${userId};name=${displayName ?? "unknown"}]`;
const modelInput = `${speakerTag} ${rawText}`;
Add one system instruction for QQ group sessions:
- "Use
[speaker:...]to distinguish participants. Do not merge different speakers."
Anti-Patterns
- Using
qq:group:{group_id}:user:{user_id}when shared group context is required. - Passing only nickname without stable
user_id. - Stripping speaker tags before session append or model input.
Validation Checklist
- Log
group_id,user_id, finalsession_key, and final model input. - Send two messages from different users in the same group.
- Confirm both messages hit the same
session_key. - Confirm each model input line has the correct
speaker:user_id=...tag.
Best-Practice Memory Split
- Conversation context: keyed by
group_idonly. - Optional profile memory: keyed by
group_id + user_idfor preference lookup only.
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.
- 11d ago First seen · 45 lines · 32 tokens per session scan A d821a8dd561c
qq-group-speaker-distinction is a skill published in the GitHub repository Peiiii/nextclaw (256 stars, last pushed today), licensed MIT. It adds 32 tokens to every session and 392 once invoked, about $0.0002 per session on Opus 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-30.
Other skills, from other repositories
openclaw-github-dedupe
Investigate a cluster of GitHub issues and PRs, determine canonical candidates, post duplicate/related status, preserve contributor credit, and execute cleanup actions. Supports autonomous mode for provided-link-only closeout, merge/fix follow-through, changelog, and post-merge issue/PR cleanup.
openclaw-pr-batch-sweep
Select, review, repair, validate, and land batches of up to 20 low-risk OpenClaw contributor pull requests using Vincent's maintainer preferences and bounded sub-agent lanes. Use for "next 20", broad contributor PR sweeps, merge-candidate mining, or continued PR-batch work where drafts, maintainer work, trivial…
tmux-lane-orchestrator
Manage one tmux agent lane from its matching ops pane, inspect live pane state and Codex logs on cold start, and produce concise manager summaries for OpenClaw and adjacent project work.
ghcrawl-cluster-operator
Use when inspecting a ghcrawl SQLite store, pulling GitHub issue/PR data, refreshing summaries, embeddings, and clusters, or extracting one cluster and its evidence through the ghcrawl CLI.
opik-optimizer
Optimize LLM prompts, tools, and agents in Opik using standardized optimizer workflows (prompt optimization, tool optimization, and parameter tuning), dataset/metric wiring, and result interpretation.
org-branch-cleanup
Audit and safely prune stale branches across a GitHub organization with immutable snapshots, conservative merged-PR classification, live SHA/protection/open-PR revalidation, resumable deletion ledgers, and post-delete verification. Use when a maintainer asks to clean up old, dead, merged, bot-created, or abandoned…