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/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/playa-0v0/cyrene-agent/cyrene-plugin-dev"><img src="https://agentmods.dev/badge/skills/playa-0v0/cyrene-agent/cyrene-plugin-dev.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.00061 | $0.02349 |
| Opus 5.5 | $0.00024 | $0.00940 |
| Sonnet 5.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 1mo 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.
- 1mo 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 (597 stars, last pushed 1mo ago), licensed MIT. It adds 61 tokens to every session and 2,349 once invoked, about $0.0002 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-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…
update-skills
Create or update repository skills and instructions when major learnings are discovered during a session. Use when the user says "learn!", when a significant pattern or pitfall is identified, or when reusable domain knowledge should be captured for future sessions.
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.