Agent Browser
quran/quran.com-frontend-next
Automates browser interactions for web testing, form filling, screenshots, and data extraction.
Implement Zhin.js plugins with Plugin Runtime. An agent skill from zhinjs/zhin.
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install zhinjs/zhin zhin-plugin-standard-development --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .claude/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .claude/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-developmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install zhinjs/zhin zhin-plugin-standard-development --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .agents/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .agents/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install zhinjs/zhin zhin-plugin-standard-development --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .cursor/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .cursor/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/zhinjs/zhin.git --path .github/skills/zhin-plugin-standard-development--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install zhinjs/zhin zhin-plugin-standard-development --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .gemini/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .gemini/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install zhinjs/zhin zhin-plugin-standard-developmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .github/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .github/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install zhinjs/zhin zhin-plugin-standard-development --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhinjs/zhin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/zhin-plugin-standard-development .opencode/skills/zhin-plugin-standard-development && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "zhin-plugin-standard-development" agent skill from https://github.com/zhinjs/zhin/tree/main/.github/skills/zhin-plugin-standard-development into .opencode/skills/zhin-plugin-standard-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zhin-plugin-standard-development", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
zhin-plugin-standard-developmentImplement Zhin.js plugins with Plugin Runtime. An agent skill from zhinjs/zhin.
Zhin Plugin Standard Development is an agent skill from zhinjs/zhin. Implement Zhin.js plugins with Plugin Runtime. Use when asked to create a plugin or add commands, middleware, handlers, components, schedules, Agent capabilities, config, database, HTTP Host integration, or Console pages. 适用于 definePlugin / 约定目录能力落地。
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including reference files and assets (for example `assets/ai-tool-template.ts`, `assets/cron-template.ts` and `assets/database-service-template.ts`).
It sits in Productivity & Automation. The repository describes itself as: AI-native TypeScript bot framework — one codebase for 20+ chat platforms (QQ, Discord, Telegram, Slack, WeChat…). Opt-in AI agent with MCP, tools & security policies. <10MB core. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fd5029a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Zhin Plugin Standard Development loads about 1.6k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 71 tokens; SKILL.md has 431 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from zhinjs/zhin at commit fd5029a, republished under its MIT licence (© zhinjs). 431 words, ~1,611 tokens.
.claude/skills/zhin-plugin-standard-development/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.把需求落成符合仓库约定的可运行插件。唯一创作面是 Plugin Runtime。
zhin runtime start 是唯一启动路径。插件即 package:package.json#zhin 声明 manifest,
plugin.ts 必须 default-export definePlugin(),否则装配抛
does not default-export a Plugin definition。
能力按命名目录发现(每个能力固定 index.ts 入口并 default export),不要命令式注册:
| 目录 | API |
|---|---|
commands/**/index.ts | defineCommand()(目录路径即路由;[name] / [[name]] / [...name] / [[...name]] 传参,类型与默认值在 params 中声明) |
middlewares/<name>/index.ts | defineMiddleware() |
handlers/<name>/index.ts | defineHandler() |
components/<name>/index.tsx | defineComponent() |
tools/<name>/index.ts | defineAgentTool() |
mcps/<name>/index.ts | defineMcp() |
schedules/<name>/index.ts | defineSchedule();也可在 plugin.ts 注入 |
hooks/<name>/index.ts | defineHook() |
pages/<name>/index.tsx | definePage()(nav/ / footer/ 为布局槽) |
skills/<name>/SKILL.md | Markdown Skill |
agents/<name>/agent.json | Agent 元数据;提示词和边界文件与其同目录 |
DI:context.resources(Scope + Token)。清理:context.lifecycle。
禁止使用 usePlugin() / getPlugin() / MessageCommand / addCron(new Cron) /
declareConfig 经典路径;zhin.js/node 与 bootstrapNode 已删除且不再导出。
迁移旧代码用 migrate-zhin-plugin-runtime。
配套资产:
官方指令摘要:.github/instructions/zhin-plugin.instructions.md。
plugin.ts default-export definePlugin;package.json#zhin 正确define* APIusePlugin / MessageCommand / 经典 Plugin 生命周期.js;Host token 先 has 再 usecontext.lifecycle(或 setup 返回 disposer)| 类型 | 重点 | 位置 |
|---|---|---|
| 命令 | defineCommand,路径即路由 | commands/**/index.ts |
| 中间件 / 入站过滤 | defineMiddleware,target: 'inbound' | middlewares/<name>/index.ts |
| 出站改写 | target: 'outbound' | middlewares/<name>/index.ts |
| 定时 | defineSchedule,或 setup 注入 | schedules/<name>/index.ts / plugin.ts |
| Handler | defineHandler,显式声明事件 | handlers/<name>/index.ts |
| Hook | defineHook | hooks/<name>/index.ts |
| 组件 | defineComponent | components/<name>/index.tsx |
| AI 工具 | defineAgentTool | tools/<name>/index.ts |
| Skill | SKILL.md,按需披露专用工具 | skills/<name>/SKILL.md |
| Agent | agent.json + 提示词与边界文件 | agents/<name>/ |
| 服务 / DI | resources.provide | plugin.ts setup |
| 数据库 | databaseHostToken,start 前 define 表 | plugin.ts setup |
| Web | definePage | pages/<name>/index.tsx |
多类型并存时先定主职责,再考虑拆分子包。
packages/host/;可选服务:plugins/services/ / plugins/utils/plugins/ 对应分类examples/minimal-bot / examples/single-file-botHost(database / schedule / outbound / agentTools)一律可选:has(token) 再 use(token)。
schema.json + context.config.get()outboundHostToken(不旁路发送链)definePlugin({ requires: [...] })明确职责、用户入口(命令 / 中间件 / 页)、是否持久化。无复杂度时也直接使用最小约定入口,例如 commands/<name>/index.ts,不要先写命令式注册再迁移。
plugin.ts 只装配与生命周期,业务在约定目录。
execute 读 params / args / input(含 session 字段若需要)commands/[note]/index.ts 形成 <note>,commands/add/[note]/index.ts 形成 add <note>。只有插件显式配置 commandNamespace: 'remind' 时,才分别形成 remind <note> 与 remind add <note>;默认没有命名空间。动态参数至多一个且必须位于末段。await next()inputSchema 与 execute 入参一致;副作用边界清晰definePage + 客户端与 Node 分离结构在「单文件 vs 拆模块」间犹豫时看 实现分支参考。 已混乱的旧插件改用 refactoring / migrate skill,不要硬扩。
package.json#zhin + plugin.ts default export.jsusePlugin / MessageCommand 新增pnpm --filter <pkg> test 或 Sandbox 手测命令原文pnpm check:plugin-capability-publishpages/| 触发 | 一线 | 仍失败 |
|---|---|---|
| 命令无响应 | 查路径路由、zhin.features 是否含 @zhin.js/command、前缀配置 | 对照 minimal-bot / first-plugin 文档 |
does not default-export a Plugin definition | 改成 export default definePlugin(...) | 查 entry 路径 |
| Host use 炸 | 先 has(token);确认 Host 插件已装 | 查精简安装分档 |
tsc 导入错 | 加 .js;查 exports | 对照官方插件 package.json |
| 控制台页 404 | 查 definePage / catalog 注册 | 查 Host entries API |
usePlugin / MessageCommand / bootstrapNodeMessage.$reply / Adapter.sendMessage 发送链createGenerationStore© zhinjs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 14 other files (references, assets) in .github/skills/zhin-plugin-standard-development of zhinjs/zhin.
Open the folder on GitHubat commit fd5029a
Zhin Plugin Standard Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Zhin Plugin Standard Development this skillzhinjs/zhin | 137 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Agent Browserquran/quran.com-frontend-next | 1.9k | 42 repos | ~3.3k | Automated safety check: Pass | None | |
| Process Inboxtelegramdesktop/tdesktop | 33k | 2 repos | ~4.5k | Automated safety check: Pass | GPL-3.0 | |
| Perform Tasktelegramdesktop/tdesktop | 33k | 2 repos | ~3k | Automated safety check: Pass | GPL-3.0 | |
| Brave Searchbadlogic/pi-skills | 2.6k | 6 repos | ~592 | Automated safety check: Pass | MIT | |
| Continuetelegramdesktop/tdesktop | 33k | 2 repos | ~9.4k | Automated safety check: Pass | GPL-3.0 |
quran/quran.com-frontend-next
Automates browser interactions for web testing, form filling, screenshots, and data extraction.
telegramdesktop/tdesktop
Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.
telegramdesktop/tdesktop
Resolve, start or resume, implement, review, test, and publish exactly one existing ai-tdesktop task by short slug or full dated id, including rare blocked retries and split-required results.
badlogic/pi-skills
Web search and content extraction via Brave Search API. An agent skill from badlogic/pi-skills.
telegramdesktop/tdesktop
Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.
openclaw/openclaw
Feishu document read/write workflows. An agent skill from openclaw/openclaw.
zhinjs/zhin
Refactor existing Zhin.js plugins into a cleaner standard structure.
zhinjs/zhin
Migrate legacy Zhin.js plugins and projects to the convention-based Plugin Runtime — from usePlugin/getPlugin/addCommand/addMiddleware/addComponent/addTool/addCron/declareConfig/useContext and…
zhinjs/zhin
Audit Zhin.js changes for security, performance, lifecycle, and architecture regressions.
zhinjs/zhin
使用 gh CLI 处理内置 GitHub Tool 未覆盖的 Issue、PR、Release、Workflow、搜索和 API 操作。
zhinjs/zhin
企业微信平台管理能力。当用户在企业微信中请求用户信息查询、部门架构查询、 发送文本消息时使用。即使用户没有提到企业微信,只要上下文是企业微信/WeCom 场景且涉及用户查询、部门管理或消息发送,就应触发。
zhinjs/zhin
签到积分系统查询能力。当用户想查看自己的积分、签到排行榜、连签天数、 或了解签到奖励时使用。日常签到通过聊天命令触发,此技能提供积分查询的 AI 工具。
Categories
Implement Zhin.js plugins with Plugin Runtime. An agent skill from zhinjs/zhin. Zhin Plugin Standard Development is an agent skill from zhinjs/zhin.js plugins with Plugin Runtime.
Zhin Plugin Standard Development fits situations like: asked to create a plugin; agent capabilities; HTTP Host integration.
Run `npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a claude-code`. Or copy the skill folder (.github/skills/zhin-plugin-standard-development in zhinjs/zhin) into .claude/skills/zhin-plugin-standard-development in your project. Claude Code loads it when a task matches its description.
Run `npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a codex`. Or copy the skill folder (.github/skills/zhin-plugin-standard-development in zhinjs/zhin) into .agents/skills/zhin-plugin-standard-development in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zhinjs/zhin --skill zhin-plugin-standard-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/zhin-plugin-standard-development, .gemini/skills/zhin-plugin-standard-development, .github/skills/zhin-plugin-standard-development and .opencode/skills/zhin-plugin-standard-development in your project.
Going by SKILL.md and its folder, Zhin Plugin Standard Development needs TypeScript for the scripts in its folder and the command-line tools its instructions call (pnpm). Our summary lists: Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Zhin Plugin Standard Development is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Zhin Plugin Standard Development: Agent Browser (quran/quran.com-frontend-next, 1.9k stars), Process Inbox (telegramdesktop/tdesktop, 33k stars), Perform Task (telegramdesktop/tdesktop, 33k stars) and Brave Search (badlogic/pi-skills, 2.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
zhinjs (a GitHub organization) maintains it in zhinjs/zhin, which has 137 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 23, 2026.
Source: zhinjs/zhin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.