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 Playa-0v0/Cyrene-Agent --skill cyrene-plugin-devgit clone --depth 1 https://github.com/Playa-0v0/Cyrene-AgentWrote 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/playa-0v0/cyrene-agent/cyrene-plugin-dev)<a href="https://agentmods.dev/skills/playa-0v0/cyrene-agent/cyrene-plugin-dev"><img src="https://agentmods.dev/badge/skills/playa-0v0/cyrene-agent/cyrene-plugin-dev.svg" alt="Measured on agentmods" 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.00061 | $0.02349 |
| Opus 5 | $0.00030 | $0.01175 |
| Sonnet 5 | $0.00012 | $0.00470 |
| Haiku 4.5 | $0.00006 | $0.00235 |
Grade A, and why
cyrene-plugin-dev 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 4d 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 — 144 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Cyrene 插件开发
本 Skill 指导如何为 Cyrene 开发运行时插件:从需求到可安装的 zip 包,一次做对。
何时使用
- 用户想给 Cyrene 加新能力,且明确走插件形式(而不是改本体源码)
- 用户拿来的插件报错,需要排查(启用失败、工具不生效、弹窗异常)
- 用户询问插件怎么写、能做什么
不使用:改 Cyrene 本体源码的普通开发任务;只是使用已装插件。
前置知识:先读再写
动手前必须先读本 Skill 目录下的参考文件(自包含,打包版也可用):
references/getting-started.md—— 快速上手教程,含最小可用模板和常见坑速查references/api-spec.md—— 完整接口规范(manifest 字段表、ctx API、生命周期、zip 导入限制)references/example-walkthrough.md—— 官方示例插件 system-status 走读,覆盖工具 + 弹窗 + IPC 全部知识点;写新插件前通读一遍
开发版仓库中另有 docs/plugins/ 文档和 examples/ 官方示例(system-status 为 JS 全功能走读;weather-tool、long-term-memory、scheduled-automation、local-asr-contract 为 TypeScript + SDK 示例,分别覆盖 Secrets/轮次事件冻结分页/调度任务/语音租约契约),以 references/ 为准。
开发流程
1. 明确插件形态
先和用户确认要做的是哪类能力,通常是一种或多种组合:
| 形态 | 特征 |
|---|---|
| 纯工具插件 | 只注册 registerTool,AI 对话中自动调用(最常见) |
| 带界面插件 | 额外实现 open() 弹独立窗口 |
| 事件驱动插件 | ctx.events.on/emit:监听宿主生命周期(如关机前收尾)、与其他插件互通 |
| 动态上下文插件 | ctx.registerPromptProvider:让昔涟主动感知实时状态(天气/日程/番茄钟),无需用户开口问 |
| 调用 LLM 的插件 | manifest 声明 "deps": ["llm"] |
| 渠道插件 | ctx.registerChannelAdapter(进阶,先确认用户真的需要) |
| 数据服务插件 | deps 声明后经 ctx.deps 使用:secrets(密钥保管)、conversations(只读对话分页)、workspace(工作区只读绑定)、scheduler(自有定时任务) |
| 语音输入插件 | deps: ["speech-input"]:自带 ASR 模型,取独占语音租约后把识别文本提交进正常对话 |
2. 搭骨架
在一个独立目录(如 examples/<plugin-id>/ 或用户指定目录)创建:
<plugin-id>/
manifest.json
index.cjs
manifest 必填字段:apiVersion: 1、id、name、version(严格三段式 SemVer)、description、author、entry。author 填开发者或团队名称,会展示在聊天窗口的插件卡片中;id 全小写连字符,它决定工具 id 前缀和安装目录名。可选字段 icon(裸文件名,png/jpg/webp/svg,≤2MiB)在插件卡片左侧展示图标,不合法时静默忽略不影响加载。
3. 实现
铁律(违反会直接启用失败或行为异常):
- 工具 id 必须以
<插件id>_开头,如插件my-plugin的工具叫my-plugin_hello - 工具的
description是写给 AI 看的:写清"什么场景该用",含参数说明 - 只读工具
risk: "safe"+effectKind: "read";有副作用的用effectKind: "write" - 弹窗用
BrowserWindow加载插件目录内的 HTML,nodeIntegration: true+contextIsolation: false - 窗口实例、定时器、子进程必须在
unregister()里清理,且该函数要能重复调用不崩;后台资源优先用ctx.onDispose(() => ...)登记兜底清理、ctx.signal传给后台任务,交给框架托管停止时机 - 渲染进程与插件通信:IPC 通道名是
plugin:<插件id>:<channel> - 事件发布只能用短名(框架自动补
plugin:<插件id>:前缀),不能伪造host:*或其他插件的事件;监听器单个最多 5 秒 - 提示词 Provider 只写本轮有用的实时事实、短而精;单项配额 2 秒 / 16000 字符,超时或失败只跳过自身
- 数据采集优先 Node 原生(
os、fs),不够再用 PowerShell / nvidia-smi 等子进程;子进程要设超时并处理失败降级
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.
- 4d ago First seen · 144 lines · 61 tokens per session scan A 44261c9e1d17
cyrene-plugin-dev is a skill published in the GitHub repository Playa-0v0/Cyrene-Agent (554 stars, last pushed today), licensed MIT. It adds 61 tokens to every session and 2,349 once invoked, about $0.0003 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-09-03.
Other skills, from other repositories
project-setup-info-local
Comprehensive setup steps to help the user create complete project structures in a VS Code workspace; this tool is designed for full project initialization and scaffolding, not for creating individual files. When to use this tool: user wants to create a new complete project from scratch; setting up entire project…
github-copilot-upgrader
Use this to update the Github Copilot CLI/SDK.
commit
Commit staged or unstaged changes with an AI-generated commit message that matches the repository's existing commit style. Use when the user asks to 'commit', 'commit changes', 'create a commit', 'save my work', or 'check in code'.
sync
Sync the current session branch with its upstream branch, or publish the current session branch to a remote. Use when the user asks to sync a branch, pull latest changes, rebase onto upstream, push current branch, publish branch, or set upstream.
generate-run-commands
Generate or modify run commands for the current session. Use when the user wants to set up or update run commands that appear in the session's Run button.
merge
Merge changes from the topic branch to the merge base branch. Use when the user wants to merge their session's work back to the base branch.