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 ggg123124/vrchat-assistant --skill presence-statusgit clone --depth 1 https://github.com/ggg123124/vrchat-assistantWrote 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/ggg123124/vrchat-assistant/presence-status)<a href="https://agentmods.dev/skills/ggg123124/vrchat-assistant/presence-status"><img src="https://agentmods.dev/badge/skills/ggg123124/vrchat-assistant/presence-status/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/ggg123124/vrchat-assistant/presence-status"><img src="https://agentmods.dev/badge/skills/ggg123124/vrchat-assistant/presence-status.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.00000 | $0.01438 |
| Opus 5.5 | $0.00000 | $0.00575 |
| Sonnet 5.5 | $0.00000 | $0.00288 |
| Haiku 4.5 | $0.00000 | $0.00144 |
Grade A, and why
presence-status 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 23d 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 — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.
presence-status —— 按「自己是否在游戏内」自动切换自定义状态文字
本文档给调用本插件的 AI Agent 看:这个插件能做什么、怎么用。
为什么需要它
本服务常驻登录 VRChat 账号(云服务器 24h 在线)时,自己在好友眼里长期是
"在网站上活跃"(位置 offline:offline)。使用者要求:
- 不在游戏内(挂机,服务还开着)→ 状态文字显示"挂机"提示(如
Bot挂机); - 回到游戏内 → 恢复成上次下线时的那条状态文字(不是写死一套固定文案)。
核心的动态状态引擎(get_dynamic_status / set_dynamic_status)只支持 {online}
(在线好友数)一个变量,无法区分"自己是否在游戏里";本插件补上这个能力。
能力
- get_presence_status:查询配置、核心自我在场判定(
in_game/not_in_game/unknown)、 已捕获的"上次下线时状态"savedText、最近一次写入与错误。 - set_presence_status:设置开关、挂机文案、轮询间隔、恢复用文字;可
syncNow立即同步一次。
配置项(存插件私有表 plg_presence-status_settings,跨重启保留):
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
false |
是否启用自动切换(默认关闭,需显式开启) |
idleTemplate |
挂机中(服务在线) |
不在游戏内时写入的状态文字(≤64 字符) |
pollSeconds |
60 |
轮询间隔秒(下限 20,上限 3600) |
savedText |
(自动捕获) | 回到游戏内时要恢复的文字。出游戏时自动捕获当前文案;也可手动指定(空串=清空,回到游戏后不改文字) |
工作方式:捕获 + 恢复(转换点触发)
在游戏内 ──检测到出游戏──▶ ① 读当前状态文字并捕获为 savedText(= 你上次下线的状态)
② 写入 idleTemplate(如 Bot挂机)
不在游戏 ──检测到进游戏──▶ 写回 savedText
- 只在转换点动作:进/出游戏各触发一次,之后不反复改写——你在别处手动改的状态文字会被保留 (不会被每次轮询抢回去)。
- 判定源:核心服务
dashboard.selfPresence的三态(见core/self-presence.js)。 - 不确定就不动:
unknown(无位置记录 / 位置陈旧超 1 小时 / 解析失败)时不翻转现状。 - 没有可恢复值时保护现状:
savedText为空(或恰好等于idleTemplate)时回到游戏内—— 若当前文案是你自己写的(非空、且不是本插件写入的挂机文案),保持不动并把它记为新的基线; 只有当现状已为空、或现状正是本插件写入的挂机文案时,才写入空串(避免把挂机文案留在"人在游戏里"的状态上)。 - 只改状态文字(
statusDescription),status种类原样回传,不改变在线形态。 - 与动态状态引擎互斥:核心
set_dynamic_status(按在线好友数改状态文字)与本插件写的是同一个statusDescription,代码里互不知情——两者同时启用时,挂机期间好友上下线会把挂机文案覆盖成"在线 N 人", 回到游戏时本插件再写回捕获值,挂机提示因此不可靠。建议只启用其一(两个工具的 description 里也有同样提醒)。 - 防抖:两次 PUT 之间最小间隔 65 秒(与核心动态状态引擎同阈值);目标文案已在位时不重复提交;
重启后从插件表恢复
lastState/savedText,不会因重启重复动作。 - 延迟:插件契约 v1.3 的 8 个 API 面没有事件订阅能力,因此按
pollSeconds轮询(默认 60s) ——进游戏方向最坏延迟约等于轮询间隔;出游戏方向还要先过核心的出游戏确认窗口 (core/self-presence.js的VRC_MONITOR_SELF_PRESENCE_OFFLINE_GRACE_SECONDS,默认 360s;窗口内一律判unknown、 本插件据此跳过写入),故最坏延迟 ≈ 轮询间隔 + 确认窗口(默认约 420s)。轮询只查本地 SQL(不产生 VRChat API 调用), 每个转换点最多 2 次 API 调用(/auth/user+PUT /users/{id})。
What ships with it
3 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.
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.
- 23d ago Changed · +2 lines b44ee41c5a23
- 27d ago First seen · 80 lines · 0 tokens per session scan A 8287fb7d072c
presence-status is a skill published in the GitHub repository ggg123124/vrchat-assistant (26 stars, last pushed 5d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,438 tokens. 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-09-19.
Other skills, from other repositories
mnemosyne
Persistent cross-session memory via Mnemosyne — store, recall, and consolidate facts, preferences, and context.
mnemosyne-memory-override
Hard rule override that forces Mnemosyne for all durable memory storage. The legacy memory tool is DEPRECATED for user preferences, credentials, and project conventions. Use memory ONLY for ephemeral session state.
hermes-tweet
Use Xquik in Hermes Agent for public X research, monitoring, thread summaries, creator discovery & approved actions. Not affiliated with X Corp. Use when the user requests X data or a named action. Trigger with "search X", "monitor X", "post tweet", or "X trends".
mnemosyne-maintenance
Use when: upgrading Mnemosyne, diagnosing slow/hung consolidation (mnemosynesleep), fixing missing embeddings, or troubleshooting import/version mismatches.
holix-sdd-propose
Create Spec-Driven Development changes (OpenSpec-style) — multi-project openspec, understanding gate, assigned tasks before coding.
holix-cron
Schedule recurring agent tasks via Holix built-in gateway cron (not crontab or custom scripts).