cowork-plugin-customizer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cowork Plugin Customization

Cowork 插件定制

Adapt a generic plugin template to a specific organization by replacing customization points with actual tool names, configuring MCP servers, and applying organization-specific customizations.
Finding the plugin: To find the plugin's source files, run
find mnt/.local-plugins mnt/.plugins -type d -name "*<plugin-name>*"
to locate the plugin directory, then read its files to understand its structure before making changes. If you cannot find the plugin directory, the user is likely running this conversation in a remote container. Abort and let them know: "Customizing plugins is currently only available in the desktop app's Cowork mode."
将通用插件模板适配到特定组织,方法是将定制点替换为实际工具名称、配置MCP服务器,并应用组织专属的定制内容。
查找插件:要查找插件的源文件,运行
find mnt/.local-plugins mnt/.plugins -type d -name "*<plugin-name>*"
定位插件目录,然后读取其文件以了解结构后再进行修改。如果无法找到插件目录,用户很可能是在远程容器中运行此会话,请终止操作并告知用户:"目前仅桌面应用的Cowork模式支持插件定制。"

Overview

概述

Generic plugins mark customization points with a
~~
prefix. Any line or value starting with
~~
is a placeholder that should be replaced during customization (e.g.,
~~Jira
Asana
,
~~your-team-channel
#engineering
). To find all customization points in a plugin, use:
bash
grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'
Important: Never change the name of the plugin or skill being customized. Only replace
~~
-prefixed placeholder values and update content — do not rename directories, files, or the plugin/skill name fields.
Nontechnical output: All user-facing output (todo list items, questions, summaries) must be written in plain, nontechnical language. Never mention
~~
prefixes, placeholders, or customization points to the user. Frame everything in terms of learning about the organization and its tools.
The process:
  1. Gather context — use knowledge MCPs to learn what tools and processes the organization uses
  2. Create todo list — grep for
    ~~\w
    to find all customization points and build a todo list
  3. Complete todo items — apply gathered context, falling back to user questions when unclear
  4. Search for useful MCPs — find and connect MCPs for identified tools
If an answer cannot be found via knowledge MCPs or user input, leave the customization point unchanged for a future customization cycle.
通用插件使用
~~
前缀标记定制点。任何以
~~
开头的行或值都是需要在定制过程中替换的占位符(例如
~~Jira
Asana
~~your-team-channel
#engineering
)。要查找插件中的所有定制点,请使用:
bash
grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'
重要提示:切勿更改正在定制的插件或技能的名称。仅替换以
~~
为前缀的占位符值并更新内容——不要重命名目录、文件或插件/技能名称字段。
非技术输出:所有面向用户的输出(待办事项、问题、摘要)必须使用通俗易懂的非技术语言撰写。切勿向用户提及
~~
前缀、占位符或定制点。所有内容都要围绕了解组织及其工具来表述。
定制流程:
  1. 收集上下文信息——使用知识类MCP了解组织使用的工具和流程
  2. 创建待办事项列表——通过grep查找
    ~~\w
    定位所有定制点并构建待办事项列表
  3. 完成待办事项——应用收集到的上下文信息,信息不明确时向用户提问
  4. 搜索可用的MCP——为已识别的工具查找并关联对应的MCP
如果无法通过知识类MCP或用户输入找到答案,请保留定制点的原有值,留到后续定制周期处理。

Customization Workflow

定制工作流

Phase 1: Gather Context from Knowledge MCPs

阶段1:从知识类MCP收集上下文信息

Use company-internal knowledge MCPs to collect information. See
references/search-strategies.md
for detailed query patterns by category.
What to gather:
  • Tool names for each
    ~~
    -prefixed placeholder
  • Organizational processes and workflows
  • Team conventions (naming, statuses, estimation scales)
  • Configuration values (workspace IDs, project names, team identifiers)
Sources to search:
  1. Chat/Slack MCPs — tool mentions, integrations, workflow discussions
  2. Document MCPs — onboarding docs, tool guides, setup instructions
  3. Email MCPs — license notifications, admin emails, setup invitations
Record all findings for use in Phase 3.
使用公司内部的知识类MCP收集信息。有关按分类划分的详细查询模式,请参阅
references/search-strategies.md
需要收集的信息:
  • 每个
    ~~
    前缀占位符对应的工具名称
  • 组织的流程和工作流
  • 团队约定(命名、状态、估算标准)
  • 配置值(工作区ID、项目名称、团队标识符)
信息来源:
  1. 聊天/Slack类MCP——工具提及、集成、工作流讨论内容
  2. 文档类MCP——入职文档、工具指南、设置说明
  3. 邮件类MCP——许可证通知、管理员邮件、设置邀请
记录所有收集到的信息,以便在阶段3中使用。

Phase 2: Create Todo List from Customization Points

阶段2:根据定制点创建待办事项列表

Run
grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'
to find all customization points. Group them by theme and create a todo list with user-friendly descriptions that focus on learning about the organization:
  • Good: "Learn how standup prep works at Company"
  • Bad: "Replace placeholders in commands/standup-prep.md"
运行
grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'
查找所有定制点。按主题分组,并创建用户友好的待办事项列表,内容聚焦于了解组织:
  • 正确示例:"了解Company的站会准备流程"
  • 错误示例:"替换commands/standup-prep.md中的占位符"

Phase 3: Complete Todo Items

阶段3:完成待办事项

Work through each item using Phase 1 context.
If knowledge MCPs provided a clear answer: Apply directly without confirmation.
Otherwise: Use AskUserQuestion. Don't assume "industry standard" defaults are correct — if knowledge MCPs didn't provide a specific answer, ask. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include
None
or
Other
as options.
Types of changes:
  1. Customization point replacements:
    ~~Jira
    Asana
    ,
    ~~your-org-channel
    #engineering
  2. URL pattern updates:
    tickets.example.com/your-team/123
    app.asana.com/0/PROJECT_ID/TASK_ID
  3. Organization-specific values: Workspace IDs, project names, team identifiers
If user doesn't know or skips, leave the
~~
-prefixed value unchanged.
使用阶段1收集的上下文信息逐一处理每个待办事项。
如果知识类MCP提供了明确答案:直接应用,无需确认。
否则:使用AskUserQuestion功能。不要假设“行业标准”默认值是正确的——如果知识类MCP未提供具体答案,请向用户提问。注意:AskUserQuestion始终包含“跳过”按钮和用于自定义回答的自由文本输入框,因此请勿将“无”或“其他”作为选项。
更改类型:
  1. 定制点替换
    ~~Jira
    Asana
    ~~your-org-channel
    #engineering
  2. URL模式更新
    tickets.example.com/your-team/123
    app.asana.com/0/PROJECT_ID/TASK_ID
  3. 组织专属值:工作区ID、项目名称、团队标识符
如果用户不知道答案或选择跳过,请保留
~~
前缀的原有值。

Phase 4: Search for Useful MCPs

阶段4:搜索可用的MCP

After all customization points have been resolved, connect MCPs for the tools that were identified. See
references/mcp-servers.md
for the full workflow, category-to-keywords mapping, and config file format.
For each tool identified during customization:
  1. Search the registry:
    search_mcp_registry(keywords=[...])
    using category keywords from
    references/mcp-servers.md
    , or search for the specific tool name if already known
  2. If unconnected:
    suggest_connectors(directoryUuids=["chosen-uuid"])
    — user completes OAuth
  3. Update the plugin's MCP config file (check
    plugin.json
    for custom location, otherwise
    .mcp.json
    at root)
Collect all MCP results and present them together in the summary output (see below) — don't present MCPs one at a time during this phase.
Note: First-party integrations (Gmail, Google Calendar, Google Drive) are connected at the user level and don't need plugin
.mcp.json
entries.
解决所有定制点后,为已识别的工具关联对应的MCP。有关完整工作流、分类与关键词映射以及配置文件格式,请参阅
references/mcp-servers.md
针对定制过程中识别出的每个工具:
  1. 搜索注册表:使用
    references/mcp-servers.md
    中的分类关键词运行
    search_mcp_registry(keywords=[...])
    ,如果已知具体工具名称,也可直接搜索该名称
  2. 如果未关联:运行
    suggest_connectors(directoryUuids=["chosen-uuid"])
    ——用户完成OAuth授权
  3. 更新插件的MCP配置文件(请检查
    plugin.json
    中的自定义位置,否则为根目录下的
    .mcp.json
收集所有MCP结果,在最终的摘要输出中一并展示(见下文)——在此阶段不要逐个展示MCP。
注意:第一方集成(Gmail、Google Calendar、Google Drive)是在用户层面关联的,无需在插件的
.mcp.json
中添加条目。

Packaging the Plugin

插件打包

After all customizations are applied, package the plugin as a
.plugin
file for the user:
  1. Zip the plugin directory (excluding
    setup/
    since it's no longer needed):
    bash
    cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x "setup/*" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin
  2. Present the file to the user with the
    .plugin
    extension so they can install it directly. (Presenting the .plugin file will show to the user as a rich preview where they can look through the plugin files, and they can accept the customization by pressing a button.)
Important: Always create the zip in
/tmp/
first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions and leave behind temporary files.
Naming: Use the original plugin directory name for the
.plugin
file (e.g., if the plugin directory is
coder
, the output file should be
coder.plugin
). Do not rename the plugin or its files during customization — only replace placeholder values and update content.
完成所有定制后,将插件打包为
.plugin
文件提供给用户:
  1. 压缩插件目录(排除
    setup/
    目录,因为它已不再需要):
    bash
    cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x "setup/*" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin
  2. 向用户提供该文件,确保文件扩展名为
    .plugin
    ,以便用户直接安装。(提供
    .plugin
    文件时会向用户显示富文本预览,用户可以浏览插件文件,并通过点击按钮确认接受定制内容。)
重要提示:始终先在
/tmp/
目录中创建压缩包,再复制到输出文件夹。直接写入输出文件夹可能会因权限问题失败,并留下临时文件。
命名规则:使用插件目录的原始名称作为
.plugin
文件的名称(例如,如果插件目录为
coder
,则输出文件应为
coder.plugin
)。定制过程中请勿重命名插件或其文件——仅替换占位符值并更新内容。

Summary Output

摘要输出

After customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected during setup and which ones the user should still connect:
markdown
undefined
定制完成后,向用户展示按来源分组的信息摘要。务必包含MCP部分,说明设置过程中已关联的MCP以及用户仍需关联的MCP:
markdown
undefined

From searching Slack

从Slack搜索到的信息

  • You use Asana for project management
  • Sprint cycles are 2 weeks
  • 您使用Asana进行项目管理
  • 迭代周期为2周

From searching documents

从文档搜索到的信息

  • Story points use T-shirt sizes
  • 故事点采用T恤尺码估算方式

From your answers

从您的回答中了解到的信息

  • Ticket statuses are: Backlog, In Progress, In Review, Done

Then present the MCPs that were connected during setup and any that the user should still connect, with instructions on how to connect them.

If no knowledge MCPs were available in Phase 1, and the user had to answer at least one question manually, include a note at the end:
> By the way, connecting sources like Slack or Microsoft Teams would let me find answers automatically next time you customize a plugin.
  • 工单状态包括:待办、进行中、评审中、已完成

然后展示设置过程中已关联的MCP以及用户仍需关联的MCP,并提供关联说明。

如果在阶段1中没有可用的知识类MCP,且用户至少手动回答了一个问题,请在末尾添加以下提示:
> 顺便提一下,关联Slack或Microsoft Teams等数据源后,下次您定制插件时我就能自动查找答案了。

Additional Resources

其他参考资源

  • references/mcp-servers.md
    — MCP discovery workflow, category-to-keywords mapping, config file locations
  • references/search-strategies.md
    — Knowledge MCP query patterns for finding tool names and org values
  • examples/customized-mcp.json
    — Example fully configured
    .mcp.json
  • references/mcp-servers.md
    — MCP发现工作流、分类与关键词映射、配置文件位置
  • references/search-strategies.md
    — 用于查找工具名称和组织专属值的知识类MCP查询模式
  • examples/customized-mcp.json
    — 完整配置的
    .mcp.json
    示例