Pinvou/pinvou-agent is an open-source desktop workspace where an AI agent helps with work, visual design, and software development. People use it to work with files and knowledge, create editable visual artifacts, connect coding agents to projects, and extend the workspace with tools, MCP servers, skills, and workflows; the catalogue skills add capabilities to that environment.
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 Pinvou/pinvou-agent --skill wecomcli-todogit clone --depth 1 https://github.com/Pinvou/pinvou-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/pinvou/pinvou-agent/wecomcli-todo)<a href="https://agentmods.dev/skills/pinvou/pinvou-agent/wecomcli-todo"><img src="https://agentmods.dev/badge/skills/pinvou/pinvou-agent/wecomcli-todo/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/pinvou/pinvou-agent/wecomcli-todo"><img src="https://agentmods.dev/badge/skills/pinvou/pinvou-agent/wecomcli-todo.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.00083 | $0.01461 |
| Opus 5 | $0.00042 | $0.00731 |
| Sonnet 5 | $0.00017 | $0.00292 |
| Haiku 4.5 | $0.00008 | $0.00146 |
Grade A, and why
wecomcli-todo 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 9d 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.
This is a copy
100% identical to wecomcli-todo — 2 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.
企业微信待办管理
执行任何
wecom-cli命令前,必须先读取并完成wecomcli-shared技能的公共前置检查。
使用 wecom-cli 管理企业微信待办。
查询与定位
- 查询范围仅限企业微信待办系统中已经存在的记录。
- 可按创建时间、截止时间、完成状态和标题/描述关键词查询;关键词是字面匹配,不是语义搜索。
- 用户问"我有哪些待办""未完成待办有哪些"或"接下来有哪些待办"时,使用
todo list查询待办系统中的记录。 - 删除、完成或更新时,若上下文没有
todo_id,先用todo list定位;已有todo_id且需要确认最新详情或状态时,使用todo get。
接口路由表
[重要事项] 执行任何操作前,必须先定位「接口路由表」指向的参考文档并完整读取,再执行命令,避免出现参数错误。严禁凭路由表描述或自身记忆猜测拼参数。
| 用户意图 | 参考位置 |
|---|---|
| 创建待办(可选分派) | references/todo-create.md |
| 删除待办 / 退出待办 / 从我的待办中移除 | references/todo-delete.md |
| 完成当前用户自己的部分 / 将整条待办全部完成 | references/todo-finish.md |
已有 todo_id 时确认待办详情和最新状态 |
references/todo-get.md |
| 查看待办列表;按创建时间、截止时间、完成状态或关键词筛选;为后续操作定位待办 | references/todo-list.md |
| 修改待办内容 / 分派人名单 / 截止时间(不含参与人状态) | references/todo-update.md |
deadline 对象规范
待办的截止时间统一以 deadline 对象表达。涉及"设置截止时间"、"修改截止时间"、"清空截止时间"或读取待办的截止信息时,按本节规范处理。
结构
| 字段 | 类型 | 必填 | 语义 |
|---|---|---|---|
type |
string | 是 | 枚举:date(仅日期,如果用户没有提及具体时分秒,则一定选择date) / datetime(用户提及了具体时刻) |
value |
string | 是 | type=date 时格式 YYYY-MM-DD;type=datetime 时格式 YYYY-MM-DD HH:mm:ss |
在 deadline / remind_at_deadline 字段上的语义
- 设置或修改
deadline:整体可选;若提供则其内部type与value必填。 - 清空已设置的截止时间:将
deadline字段更新为空对象{};不更新该字段则保持原值不变。 - 作为返回字段:未设置截止时间的待办,
deadline字段不返回或为null。 - 提醒时机(
remind_at_deadline):remind_at_deadline与deadline是一对,必须一起出现——脱离deadline单独传remind_at_deadline不会生效,不要这么传。remind_at_deadline只决定提醒时机,入参层面没有"关闭提醒"这一档(是否真正提醒由后台判断,可能因不满足条件而不提醒,以返回的extra_info为准):remind_at_deadline=true(仅deadline.type=datetime可传)→ 在截止时刻提醒。remind_at_deadline=false或不传 → 按后台默认的提前时间提醒(不是关闭提醒)。deadline.type=date或未传deadline时不要传true。
从用户输入推断 deadline
日期/星期直接限定待办中的任务或事件时,也视为截止日期。例如"周三开会要带笔记本"应将周三写入 deadline。
- 待办提醒时间 = 截止时间:明确要"定时提醒的待办 / 到某时提醒的待办 / 待办提醒"且给出具体时刻时,用户预期提醒时间落为
deadline.type=datetime,并传remind_at_deadline=true;只给日期或未给提醒/截止时间时不追问,不传remind_at_deadline=true。 - 普通截止时间:只说截止/到期时间,或给出任务发生日期时,仅填写
deadline、不传remind_at_deadline;此时按后台默认提前时间提醒。 - 时间格式:具体截止/提醒时刻 →
deadline.type=datetime、value="YYYY-MM-DD HH:mm:ss";只有截止日期 →type=date、value="YYYY-MM-DD"。 - 未提截止/提醒或任务发生时间:
deadline整体不传,remind_at_deadline也不传,不追问。 - xx 时间截止,并提前 yy 提醒:
deadline永远填用户说的 xx 截止时间,不要填提前后的提醒时间。当前入参不能直接设置"提前 yy";创建/更新后用返回的extra_info判断系统提醒时间是否刚好满足 yy,不满足或无extra_info时回复:目前不支持直接创建您需要的提醒时间,已为您设置截止时间为 XX,请到企业微信待办功能中手动修改提醒时间。(XX 填本次deadline.value)
What ships with it
6 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.
- 9d ago First seen · 77 lines · 83 tokens per session scan A 2d64577107b5
wecomcli-todo is a skill published in the GitHub repository Pinvou/pinvou-agent (1,712 stars, last pushed yesterday), licensed MIT. It adds 83 tokens to every session and 1,461 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to wecomcli-todo, differing in 2 lines, and is treated as a copy.
Other skills, from other repositories
schedule
A skill for creating and managing scheduled tasks, including tasks that run automatically at regular times.
viraid
Viraid virtual assistant -- reads new messages from M's VIRAID Telegram channel, analyzes and categorizes each message (CRM action, calendar, task, research, note), enriches with workspace context (CRM contacts, calendar policy, pipeline), proposes actions for approval, then executes (write tasks, log CRM…
thread
Open, log, close, find threads in the operational threads registry. Triggers on 'open a thread', 'log to the [name] thread', 'close the [name] thread', 'thread list', 'thread find'. NOT for: single emails (use /email-draft), notes (use /zk), CRM logs (use /crm).
skill-creator
A skill for creating, editing, improving, and testing skills for coding agents.
algorithmic-art
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright…
claude-api
Build apps with the Claude API or Anthropic SDK. TRIGGER when: code imports anthropic/@anthropic-ai/sdk/claudeagentsdk, or user asks to use Claude API, Anthropic SDKs, or Agent SDK. DO NOT TRIGGER when: code imports openai/other AI SDK, general programming, or ML/data-science tasks.