From 58edc49a4ad4f37e5e9116919b187207ada2c4b2 Mon Sep 17 00:00:00 2001 From: Jeffrey8864 <1187141927@qq.com> Date: Wed, 14 Oct 2026 14:36:54 +0800 Subject: [PATCH 1/2] feat(experts): add knowledge-work expert templates converted from Claude plugins - Add four new bundled expert templates: cowork-plugin-management, design, engineering, and productivity (SOUL.md, manifest.json, CONNECTORS.md, LICENSE, skills/) - Templates converted from Anthropic's open-source Claude Code knowledge-work plugins; Apache-2.0 LICENSE files kept for upstream attribution - .mcp.json and upstream packaging docs intentionally dropped: Octop experts reference platform connectors at agent-creation time - Ignore local .conda-octop environment directory --- .gitignore | 2 + .../cowork-plugin-management/AGENTS.md | 27 + .../library/cowork-plugin-management/LICENSE | 202 ++ .../library/cowork-plugin-management/SOUL.md | 18 + .../cowork-plugin-management/manifest.json | 88 + .../cowork-plugin-customizer/LICENSE.txt | 202 ++ .../skills/cowork-plugin-customizer/SKILL.md | 149 + .../examples/customized-mcp.json | 40 + .../references/mcp-servers.md | 91 + .../references/search-strategies.md | 51 + .../skills/create-cowork-plugin/SKILL.md | 270 ++ .../references/component-schemas.md | 396 +++ .../references/example-plugins.md | 352 ++ .../agents/experts/library/design/AGENTS.md | 27 + .../experts/library/design/CONNECTORS.md | 18 + .../agents/experts/library/design/LICENSE | 212 ++ .../agents/experts/library/design/SOUL.md | 23 + .../experts/library/design/manifest.json | 88 + .../skills/accessibility-review/SKILL.md | 128 + .../design/skills/design-critique/SKILL.md | 118 + .../design/skills/design-handoff/SKILL.md | 131 + .../design/skills/design-system/SKILL.md | 190 + .../design/skills/research-synthesis/SKILL.md | 92 + .../design/skills/user-research/SKILL.md | 41 + .../library/design/skills/ux-copy/SKILL.md | 107 + .../experts/library/engineering/AGENTS.md | 27 + .../experts/library/engineering/CONNECTORS.md | 19 + .../experts/library/engineering/LICENSE | 212 ++ .../experts/library/engineering/SOUL.md | 26 + .../experts/library/engineering/manifest.json | 88 + .../engineering/skills/architecture/SKILL.md | 85 + .../engineering/skills/code-review/SKILL.md | 118 + .../library/engineering/skills/debug/SKILL.md | 95 + .../skills/deploy-checklist/SKILL.md | 78 + .../engineering/skills/documentation/SKILL.md | 49 + .../skills/incident-response/SKILL.md | 158 + .../engineering/skills/standup/SKILL.md | 75 + .../engineering/skills/system-design/SKILL.md | 42 + .../engineering/skills/tech-debt/SKILL.md | 32 + .../skills/testing-strategy/SKILL.md | 33 + .../experts/library/productivity/AGENTS.md | 31 + .../library/productivity/CONNECTORS.md | 18 + .../experts/library/productivity/LICENSE | 202 ++ .../experts/library/productivity/SOUL.md | 22 + .../library/productivity/manifest.json | 88 + .../productivity/skills/dashboard.html | 3111 +++++++++++++++++ .../skills/memory-management/SKILL.md | 323 ++ .../productivity/skills/start/SKILL.md | 158 + .../skills/task-management/SKILL.md | 91 + .../productivity/skills/update/SKILL.md | 168 + 50 files changed, 8412 insertions(+) create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/AGENTS.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/SOUL.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/manifest.json create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md create mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md create mode 100644 src/octop/infra/agents/experts/library/design/AGENTS.md create mode 100644 src/octop/infra/agents/experts/library/design/CONNECTORS.md create mode 100644 src/octop/infra/agents/experts/library/design/LICENSE create mode 100644 src/octop/infra/agents/experts/library/design/SOUL.md create mode 100644 src/octop/infra/agents/experts/library/design/manifest.json create mode 100644 src/octop/infra/agents/experts/library/design/skills/accessibility-review/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/design-critique/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/design-handoff/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/design-system/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/research-synthesis/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/user-research/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/design/skills/ux-copy/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/AGENTS.md create mode 100644 src/octop/infra/agents/experts/library/engineering/CONNECTORS.md create mode 100644 src/octop/infra/agents/experts/library/engineering/LICENSE create mode 100644 src/octop/infra/agents/experts/library/engineering/SOUL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/manifest.json create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/architecture/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/code-review/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/debug/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/deploy-checklist/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/documentation/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/incident-response/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/standup/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/system-design/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/tech-debt/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/engineering/skills/testing-strategy/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/productivity/AGENTS.md create mode 100644 src/octop/infra/agents/experts/library/productivity/CONNECTORS.md create mode 100644 src/octop/infra/agents/experts/library/productivity/LICENSE create mode 100644 src/octop/infra/agents/experts/library/productivity/SOUL.md create mode 100644 src/octop/infra/agents/experts/library/productivity/manifest.json create mode 100644 src/octop/infra/agents/experts/library/productivity/skills/dashboard.html create mode 100644 src/octop/infra/agents/experts/library/productivity/skills/memory-management/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/productivity/skills/start/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/productivity/skills/task-management/SKILL.md create mode 100644 src/octop/infra/agents/experts/library/productivity/skills/update/SKILL.md diff --git a/.gitignore b/.gitignore index 0613b2f37..e9a69969f 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,5 @@ fnos/native/app/site-packages/ docs/superpowers/ scripts/lh_image_install_octop_tencentos.sh .worktrees/ +# Local conda environment +.conda-octop/ diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/AGENTS.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/AGENTS.md new file mode 100644 index 000000000..b4cac1db1 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/AGENTS.md @@ -0,0 +1,27 @@ +# 插件管理专家 操作规程 + +本文件是你的工作说明。SOUL.md 定义你是谁;这里规定怎么干活。需要长期记住的偏好或规矩,写回这里。 + +## 产出格式 + +- 交付完整可运行的插件文件树:`.claude-plugin/plugin.json` 清单、`skills//SKILL.md`、按需的 `agents/`、`CONNECTORS.md`。 +- 产出物统一放在本工作区内,作为用户可下载的文件交付;不假设 `mnt/.local-plugins` 或 `outputs/` 目录存在(那是 Cowork 桌面环境的东西)。 +- MCP 配置只写类别与占位说明,不编造端点或凭据;真实端点由用户填写。 + +## 工作流 + +- 新建插件 → 走 `create-cowork-plugin` 技能流程:先问清目标用户、工具类别与工作流,再脚手架。 +- 改造现有插件 → 走 `cowork-plugin-customizer`:先读现有清单与技能,再做差异化调整,不整包重写。 +- 上游技能步骤与本地环境冲突时(路径、交付方式),按上一节的本仓规则执行并向用户说明偏差。 + +## 偏好回写 + +用户提到以下信息时,记录到本节,后续直接使用: + +- 团队工具链(源码管理 / 跟踪 / 聊天 / 知识库各用什么) +- 插件命名与目录约定 +- 交付粒度偏好(完整文件树 vs 单文件补丁) + +## 交付 + +- 先给文件树总览,再逐个给文件内容;清单(manifest)最后给,便于用户复核。 diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE b/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/SOUL.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/SOUL.md new file mode 100644 index 000000000..ec798d649 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/SOUL.md @@ -0,0 +1,18 @@ +You are the **Plugin Management Expert** inside Octop: you help users create, customize, and manage agent plugin packages. + +**Tone:** Practical and scaffolding-oriented. Deliver complete, runnable file trees and checklists — not abstract advice. + +**Core rule:** Pick the matching bundled skill and follow it end to end. Ask for the target audience, tool categories, and workflow only when the user has not described them. + +**Bundled skills:** + +| Skill | Use when | +|-------|----------| +| `create-cowork-plugin` | Building a new plugin from scratch — manifest, skills, connectors | +| `cowork-plugin-customizer` | Adapting an existing plugin to an organization's tools and workflows | + +**Octop adaptation note:** the upstream skills assume the Claude Code / Cowork desktop layout (`.claude-plugin/plugin.json`, mounted plugin directories, an outputs folder for delivering `.plugin` files). Keep the upstream package format when producing plugin files — that is the deliverable format — but run entirely inside this workspace: read and write files here, do not expect `mnt/...` or `outputs/` directories, and hand over results as workspace files the user can download. + +**Boundaries:** +- Do not invent MCP endpoints or credentials; plugins produced here should reference connector categories, with real endpoints filled in by the user +- When upstream skill instructions conflict with this workspace (paths, delivery mechanism), this note wins; flag the deviation to the user diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/manifest.json b/src/octop/infra/agents/experts/library/cowork-plugin-management/manifest.json new file mode 100644 index 000000000..e708213b9 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/manifest.json @@ -0,0 +1,88 @@ +{ + "id": "cowork-plugin-management", + "label": { + "zh": "插件管理专家", + "en": "Plugin Management Expert" + }, + "description": { + "zh": "创建、定制和管理插件:脚手架、组件 schema(skills / agents / hooks / MCP)、连接器配置与模板适配。部分上游技能假设 Cowork 桌面环境,本地使用时按通用插件规范在工作区内输出。", + "en": "Create, customize, and manage plugins: scaffolding, component schemas (skills / agents / hooks / MCP), connector configuration, and template adaptation. Some upstream skills assume the Cowork desktop environment; locally they deliver results as workspace files." + }, + "welcome_message": { + "zh": "想为团队定制一个插件?从描述需求开始", + "en": "Want a plugin tailored to your team? Start by describing the need" + }, + "icon_name": "puzzle", + "icon_url": "/experts/avatars/scene-tech.svg", + "color": "#ea580c", + "prompt_files": [ + "SOUL.md", + "AGENTS.md" + ], + "task_examples": { + "zh": [ + "帮我从零创建一个新插件:清单、skills 目录和连接器说明", + "把这个插件改造成适配我们团队工具链的版本", + "检查我插件清单里的 MCP 配置写法,指出问题并给出修复" + ], + "en": [ + "Scaffold a new plugin from scratch: manifest, skills directory, and connector docs", + "Adapt this plugin to our team's toolchain", + "Review the MCP configuration in my plugin manifest, flag issues, and suggest fixes" + ] + }, + "quick_prompts": [ + { + "title": { + "zh": "新建插件", + "en": "New plugin" + }, + "description": { + "zh": "从零脚手架一个插件", + "en": "Scaffold a plugin from scratch" + }, + "prompt": { + "zh": "帮我从零创建一个新插件:清单、skills 目录和连接器说明", + "en": "Scaffold a new plugin: manifest, skills directory, and connector docs" + }, + "color": "#ffedd5", + "icon_name": "puzzle" + }, + { + "title": { + "zh": "定制插件", + "en": "Customize plugin" + }, + "description": { + "zh": "适配团队工具链", + "en": "Adapt to your team's toolchain" + }, + "prompt": { + "zh": "把这个插件改造成适配我们团队工具链的版本", + "en": "Adapt this plugin to our team's toolchain" + }, + "color": "#ffedd5", + "icon_name": "puzzle" + }, + { + "title": { + "zh": "检查配置", + "en": "Check config" + }, + "description": { + "zh": "审查清单里的 MCP 配置", + "en": "Review the MCP configuration in a manifest" + }, + "prompt": { + "zh": "检查我插件清单里的 MCP 配置写法,指出问题并给出修复", + "en": "Review the MCP configuration in my plugin manifest, flag issues, and suggest fixes" + }, + "color": "#ffedd5", + "icon_name": "puzzle" + } + ], + "source": { + "type": "knowledge-work-plugins", + "plugin": "cowork-plugin-management" + } +} diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt new file mode 100644 index 000000000..7a4a3ea24 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md new file mode 100644 index 000000000..ddbe87ed8 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md @@ -0,0 +1,149 @@ +--- +name: cowork-plugin-customizer +description: > + Customize a Claude Code plugin for a specific organization's tools and workflows. + Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings, + customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration. +compatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins). +--- + +# Cowork Plugin Customization + +Customize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin. + +> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -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." + +## Determining the Customization Mode + +After locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'` + +> **Default rule**: If `~~` placeholders exist, default to **Generic plugin setup** unless the user explicitly asks to customize a specific part of the plugin. + +**1. Generic plugin setup** — The plugin contains `~~`-prefixed placeholders. These are customization points in a template that need to be replaced with real values (e.g., `~~Jira` → `Asana`, `~~your-team-channel` → `#engineering`). + +**2. Scoped customization** — No `~~` placeholders exist, and the user asked to customize a specific part of the plugin (e.g., "customize the connectors", "update the standup skill", "change the ticket tool"). Read the plugin files to find the relevant section(s) and focus only on those. Do not scan the entire plugin or present unrelated customization items. + +> **Legacy `commands/` directories**: Some plugins include a `commands/` directory. The Cowork UI now presents these alongside skills as a single "Skills" concept, so treat `commands/*.md` files the same way you would `skills/*/SKILL.md` files when customizing. + +**3. General customization** — No `~~` placeholders exist, and the user wants to modify the plugin broadly. Read the plugin's files to understand its current configuration, then ask the user what they'd like to change. + +> **Important**: Never change the name of the plugin or skill being customized. 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 the plugin's capabilities and the organization's tools. + +## Customization Workflow + +### Phase 0: Gather User Intent (scoped and general customization only) + +For **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request (e.g., "customize the standup skill — we do async standups in #eng-updates every morning"). + +- **If the user provided context**: Record it and use it to pre-fill answers in Phase 3 — skip asking questions that the user already answered here. +- **If the user did not provide context**: Ask a single open-ended question using AskUserQuestion before proceeding. Tailor the question to what they asked to customize — e.g., "What changes do you have in mind for the brief skill?" or "What would you like to change about how this plugin works?" Keep it short and specific to their request. + + Use their response (if any) as additional context throughout the remaining phases. + +### Phase 1: Gather Context from Knowledge MCPs + +Use company-internal knowledge MCPs to collect information relevant to the customization scope. See `references/search-strategies.md` for detailed query patterns by category. + +**What to gather** (scope to what's relevant): + +- Tool names and services the organization uses +- 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. + +### Phase 2: Create Todo List + +Build a todo list of changes to make, scoped appropriately: + +- **For scoped customization**: Only include items related to the specific section the user asked about. +- **For generic plugin setup**: Run `grep -rn '~~\w' /path/to/plugin --include='*.md' --include='*.json'` to find all placeholder customization points. Group them by theme. +- **For general customization**: Read the plugin files, understand the current config, and based on the user's request, identify what needs to change. + +Use user-friendly descriptions that focus on the plugin's purpose: + +- **Good**: "Learn how standup prep works at Company" +- **Bad**: "Replace placeholders in skills/standup-prep/SKILL.md" + +### Phase 3: Complete Todo Items + +Work through each item using context from Phase 0 and Phase 1. + +**If the user's free-form input (Phase 0) or knowledge MCPs (Phase 1) provided a clear answer**: Apply directly without confirmation. + +**Otherwise**: Use AskUserQuestion. Don't assume "industry standard" defaults are correct — if neither the user's input nor knowledge MCPs provided 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. **Placeholder replacements** (generic setup): `~~Jira` → `Asana`, `~~your-org-channel` → `#engineering` +2. **Content updates**: Modifying instructions, skills, workflows, or references to match the organization +3. **URL pattern updates**: `tickets.example.com/your-team/123` → `app.asana.com/0/PROJECT_ID/TASK_ID` +4. **Configuration values**: Workspace IDs, project names, team identifiers + +If user doesn't know or skips, leave the value unchanged (or the `~~`-prefixed placeholder, for generic setup). + +### Phase 4: Search for Useful MCPs + +After customization items have been resolved, connect MCPs for any tools that were identified or changed. 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 auth +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. + +## 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. + +## 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 +## From searching Slack + +- You use Asana for project management +- Sprint cycles are 2 weeks + +## From searching documents + +- Story points use T-shirt sizes + +## 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. + +## 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` diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json new file mode 100644 index 000000000..f9aef7c1d --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json @@ -0,0 +1,40 @@ +{ + "mcpServers": { + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/", + "headers": { + "Authorization": "Bearer ${GITHUB_TOKEN}" + } + }, + "asana": { + "type": "sse", + "url": "https://mcp.asana.com/sse" + }, + "slack": { + "type": "http", + "url": "https://slack.mcp.claude.com/mcp" + }, + "figma": { + "type": "http", + "url": "https://mcp.figma.com/mcp" + }, + "datadog": { + "type": "http", + "url": "https://api.datadoghq.com/mcp", + "headers": { + "DD-API-KEY": "${DATADOG_API_KEY}", + "DD-APPLICATION-KEY": "${DATADOG_APP_KEY}" + } + } + }, + "recommendedCategories": [ + "source-control", + "project-management", + "chat", + "documents", + "wiki-knowledge-base", + "design-graphics", + "analytics-bi" + ] +} diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md new file mode 100644 index 000000000..d5da6f97c --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md @@ -0,0 +1,91 @@ +# MCP Discovery and Connection + +How to find and connect MCPs during plugin customization. + +## Available Tools + +### `search_mcp_registry` +Search the MCP directory for available connectors. + +**Input:** `{ "keywords": ["array", "of", "search", "terms"] }` + +**Output:** Up to 10 results, each with: +- `name`: MCP display name +- `description`: One-liner description +- `tools`: List of tool names the MCP provides +- `url`: MCP endpoint URL (use this in `.mcp.json`) +- `directoryUuid`: UUID for use with suggest_connectors +- `connected`: Boolean - whether user has this MCP connected + +### `suggest_connectors` +Display Connect buttons to let users install/connect MCPs. + +**Input:** `{ "directoryUuids": ["uuid1", "uuid2"] }` + +**Output:** Renders UI with Connect buttons for each MCP + +## Category-to-Keywords Mapping + +| Category | Search Keywords | +|----------|-----------------| +| `project-management` | `["asana", "jira", "linear", "monday", "tasks"]` | +| `software-coding` | `["github", "gitlab", "bitbucket", "code"]` | +| `chat` | `["slack", "teams", "discord"]` | +| `documents` | `["google docs", "notion", "confluence"]` | +| `calendar` | `["google calendar", "calendar"]` | +| `email` | `["gmail", "outlook", "email"]` | +| `design-graphics` | `["figma", "sketch", "design"]` | +| `analytics-bi` | `["datadog", "grafana", "analytics"]` | +| `crm` | `["salesforce", "hubspot", "crm"]` | +| `wiki-knowledge-base` | `["notion", "confluence", "outline", "wiki"]` | +| `data-warehouse` | `["bigquery", "snowflake", "redshift"]` | +| `conversation-intelligence` | `["gong", "chorus", "call recording"]` | + +## Workflow + +1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`) +2. **Check earlier phase findings**: Did you already learn which tool they use? + - **Yes**: Search for that specific tool to get its `url`, skip to step 5 + - **No**: Continue to step 3 +3. **Search**: Call `search_mcp_registry` with mapped keywords +4. **Present choices and ask user**: Show all results, ask which they use +5. **Connect if needed**: If not connected, call `suggest_connectors` +6. **Update MCP config**: Add config using the `url` from search results + +## Updating Plugin MCP Configuration + +### Finding the Config File + +1. **Check `plugin.json`** for an `mcpServers` field: + ```json + { + "name": "my-plugin", + "mcpServers": "./config/servers.json" + } + ``` + If present, edit the file at that path. + +2. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default). + +3. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root. + +### Config File Format + +Both wrapped and unwrapped formats are supported: + +```json +{ + "mcpServers": { + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/" + } + } +} +``` + +Use the `url` field from `search_mcp_registry` results. + +### Directory Entries Without a URL + +Some directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match. \ No newline at end of file diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md new file mode 100644 index 000000000..2e8e2de58 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md @@ -0,0 +1,51 @@ +# Knowledge MCP Search Strategies + +Query patterns for gathering organizational context during plugin customization. + +## Finding Tool Names + +**Source control:** +- Search: "GitHub" OR "GitLab" OR "Bitbucket" +- Search: "pull request" OR "merge request" +- Look for: repository links, CI/CD mentions + +**Project management:** +- Search: "Asana" OR "Jira" OR "Linear" OR "Monday" +- Search: "sprint" AND "tickets" +- Look for: task links, project board mentions + +**Chat:** +- Search: "Slack" OR "Teams" OR "Discord" +- Look for: channel mentions, integration discussions + +**Analytics:** +- Search: "Datadog" OR "Grafana" OR "Mixpanel" +- Search: "monitoring" OR "observability" +- Look for: dashboard links, alert configurations + +**Design:** +- Search: "Figma" OR "Sketch" OR "Adobe XD" +- Look for: design file links, handoff discussions + +**CRM:** +- Search: "Salesforce" OR "HubSpot" +- Look for: deal mentions, customer record links + +## Finding Organization Values + +**Workspace/project IDs:** +- Search for existing integrations or bookmarked links +- Look for admin/setup documentation + +**Team conventions:** +- Search: "story points" OR "estimation" +- Search: "workflow" OR "ticket status" +- Look for engineering process docs + +**Channel/team names:** +- Search: "standup" OR "engineering" OR "releases" +- Look for channel naming patterns + +## When Knowledge MCPs Are Unavailable + +If no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. 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. diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md new file mode 100644 index 000000000..ebd86a567 --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md @@ -0,0 +1,270 @@ +--- +name: create-cowork-plugin +description: > + Guide users through creating a new plugin from scratch in a cowork session. + Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin. + This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file. +compatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files. +--- + +# Create Cowork Plugin + +Build a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a ready-to-install `.plugin` file at the end. + +## Overview + +A plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full plugin architecture and a five-phase workflow for creating one conversationally. + +The process: + +1. **Discovery** — understand what the user wants to build +2. **Component Planning** — determine which component types are needed +3. **Design & Clarifying Questions** — specify each component in detail +4. **Implementation** — create all plugin files +5. **Review & Package** — deliver the `.plugin` file + +> **Nontechnical output**: Keep all user-facing conversation in plain language. Do not expose implementation details like file paths, directory structures, or schema fields unless the user asks. Frame everything in terms of what the plugin will do. + +## Plugin Architecture + +### Directory Structure + +Every plugin follows this layout: + +``` +plugin-name/ +├── .claude-plugin/ +│ └── plugin.json # Required: plugin manifest +├── skills/ # Skills (subdirectories with SKILL.md) +│ └── skill-name/ +│ ├── SKILL.md +│ └── references/ +├── agents/ # Subagent definitions (.md files) +├── .mcp.json # MCP server definitions +└── README.md # Plugin documentation +``` + +> **Legacy `commands/` format**: Older plugins may include a `commands/` directory with single-file `.md` slash commands. This format still works, but new plugins should use `skills/*/SKILL.md` instead — the Cowork UI presents both as a single "Skills" concept, and the skills format supports progressive disclosure via `references/`. + +**Rules:** + +- `.claude-plugin/plugin.json` is always required +- Component directories (`skills/`, `agents/`) go at the plugin root, not inside `.claude-plugin/` +- Only create directories for components the plugin actually uses +- Use kebab-case for all directory and file names + +### plugin.json Manifest + +Located at `.claude-plugin/plugin.json`. Minimal required field is `name`. + +```json +{ + "name": "plugin-name", + "version": "0.1.0", + "description": "Brief explanation of plugin purpose", + "author": { + "name": "Author Name" + } +} +``` + +**Name rules:** kebab-case, lowercase with hyphens, no spaces or special characters. +**Version:** semver format (MAJOR.MINOR.PATCH). Start at `0.1.0`. + +Optional fields: `homepage`, `repository`, `license`, `keywords`. + +Custom component paths can be specified (supplements, does not replace, auto-discovery): + +```json +{ + "commands": "./custom-commands", + "agents": ["./agents", "./specialized-agents"], + "hooks": "./config/hooks.json", + "mcpServers": "./.mcp.json" +} +``` + +### Component Schemas + +Detailed schemas for each component type are in `references/component-schemas.md`. Summary: + +| Component | Location | Format | +| ---------------------------------- | ------------------- | --------------------------- | +| Skills | `skills/*/SKILL.md` | Markdown + YAML frontmatter | +| MCP Servers | `.mcp.json` | JSON | +| Agents (uncommonly used in Cowork) | `agents/*.md` | Markdown + YAML frontmatter | +| Hooks (rarely used in Cowork) | `hooks/hooks.json` | JSON | +| Commands (legacy) | `commands/*.md` | Markdown + YAML frontmatter | + +This schema is shared with Claude Code's plugin system, but you're creating a plugin for Claude Cowork, a desktop app for doing knowledge work. +Cowork users will usually find skills the most useful. **Scaffold new plugins with `skills/*/SKILL.md` — do not create `commands/` unless the user explicitly needs the legacy single-file format.** + +### Customizable plugins with `~~` placeholders + +> **Do not use or ask about this pattern by default.** Only introduce `~~` placeholders if the user explicitly says they want people outside their organization to use the plugin. +> You can mention this is an option if it seems like the user wants to distribute the plugin externally, but do not proactively ask about this with AskUserQuestion. + +When a plugin is intended to be shared with others outside their company, it might have parts that need to be adapted to individual users. +You might need to reference external tools by category rather than specific product (e.g., "project tracker" instead of "Jira"). +When sharing is needed, use generic language and mark these as requiring customization with two tilde characters such as `create an issue in ~~project tracker`. +If used any tool categories, write a `CONNECTORS.md` file at the plugin root to explain: + +```markdown +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user +connects in that category. Plugins are tool-agnostic — they describe +workflows in terms of categories rather than specific products. + +## Connectors for this plugin + +| Category | Placeholder | Options | +| --------------- | ------------------- | ------------------------------- | +| Chat | `~~chat` | Slack, Microsoft Teams, Discord | +| Project tracker | `~~project tracker` | Linear, Asana, Jira | +``` + +### ${CLAUDE_PLUGIN_ROOT} Variable + +Use `${CLAUDE_PLUGIN_ROOT}` for all intra-plugin path references in hooks and MCP configs. Never hardcode absolute paths. + +## Guided Workflow + +When you ask the user something, use AskUserQuestion. Don't assume "industry standard" defaults are correct. 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. + +### Phase 1: Discovery + +**Goal**: Understand what the user wants to build and why. + +Ask (only what is unclear — skip questions if the user's initial request already answers them): + +- What should this plugin do? What problem does it solve? +- Who will use it and in what context? +- Does it integrate with any external tools or services? +- Is there a similar plugin or workflow to reference? + +Summarize understanding and confirm before proceeding. + +**Output**: Clear statement of plugin purpose and scope. + +### Phase 2: Component Planning + +**Goal**: Determine which component types the plugin needs. + +Based on the discovery answers, determine: + +- **Skills** — Does it need specialized knowledge that Claude should load on-demand, or user-initiated actions? (domain expertise, reference schemas, workflow guides, deploy/configure/analyze/review actions) +- **MCP Servers** — Does it need external service integration? (databases, APIs, SaaS tools) +- **Agents (uncommon)** — Are there autonomous multi-step tasks? (validation, generation, analysis) +- **Hooks (rare)** — Should something happen automatically on certain events? (enforce policies, load context, validate operations) + +Present a component plan table, including component types you decided not to create: + +``` +| Component | Count | Purpose | +|-----------|-------|---------| +| Skills | 3 | Domain knowledge for X, /do-thing, /check-thing | +| Agents | 0 | Not needed | +| Hooks | 1 | Validate writes | +| MCP | 1 | Connect to service Y | +``` + +Get user confirmation or adjustments before proceeding. + +**Output**: Confirmed list of components to create. + +### Phase 3: Design & Clarifying Questions + +**Goal**: Specify each component in detail. Resolve all ambiguities before implementation. + +For each component type in the plan, ask targeted design questions. Present questions grouped by component type. Wait for answers before proceeding. + +**Skills:** + +- What user queries should trigger this skill? +- What knowledge domains does it cover? +- Should it include reference files for detailed content? +- If the skill represents a user-initiated action: what arguments does it accept, and what tools does it need? (Read, Write, Bash, Grep, etc.) + +**Agents:** + +- Should each agent trigger proactively or only when requested? +- What tools does it need? +- What should the output format be? + +**Hooks:** + +- Which events? (PreToolUse, PostToolUse, Stop, SessionStart, etc.) +- What behavior — validate, block, modify, add context? +- Prompt-based (LLM-driven) or command-based (deterministic script)? + +**MCP Servers:** + +- What server type? (stdio for local, SSE for hosted with OAuth, HTTP for REST APIs) +- What authentication method? +- What tools should be exposed? + +If the user says "whatever you think is best," provide specific recommendations and get explicit confirmation. + +**Output**: Detailed specification for every component. + +### Phase 4: Implementation + +**Goal**: Create all plugin files following best practices. + +**Order of operations:** + +1. Create the plugin directory structure +2. Create `plugin.json` manifest +3. Create each component (see `references/component-schemas.md` for exact formats) +4. Create `README.md` documenting the plugin + +**Implementation guidelines:** + +- **Skills** use progressive disclosure: lean SKILL.md body (under 3,000 words), detailed content in `references/`. Frontmatter description must be third-person with specific trigger phrases. Skill bodies are instructions FOR Claude, not messages to the user — write them as directives about what to do. +- **Agents** need a description with `` blocks showing triggering conditions, plus a system prompt in the markdown body. +- **Hooks** config goes in `hooks/hooks.json`. Use `${CLAUDE_PLUGIN_ROOT}` for script paths. Prefer prompt-based hooks for complex logic. +- **MCP configs** go in `.mcp.json` at plugin root. Use `${CLAUDE_PLUGIN_ROOT}` for local server paths. Document required env vars in README. + +### Phase 5: Review & Package + +**Goal**: Deliver the finished plugin. + +1. Summarize what was created — list each component and its purpose +2. Ask if the user wants any adjustments +3. Run `claude plugin validate ` to check the plugin structure. If this command is unavailable (e.g., when running inside Cowork), verify the structure manually: + - `.claude-plugin/plugin.json` exists and contains valid JSON with at least a `name` field + - The `name` field is kebab-case (lowercase letters, numbers, and hyphens only) + - Any component directories referenced by the plugin (`commands/`, `skills/`, `agents/`, `hooks/`) actually exist and contain files in the expected formats — `.md` for commands/skills/agents, `.json` for hooks + - Each skill subdirectory contains a `SKILL.md` + - Report what passed and what didn't, the same way the CLI validator would + + Fix any errors before proceeding. +4. Package as a `.plugin` file: + +```bash +cd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x "*.DS_Store" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin +``` + +> **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. + +> **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`). + +The `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button. + +## Best Practices + +- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components. +- **Progressive disclosure for skills**: Core knowledge in SKILL.md, detailed reference material in `references/`, working examples in `examples/`. +- **Clear trigger phrases**: Skill descriptions should include specific phrases users would say. Agent descriptions should include `` blocks. +- **Skills are for Claude**: Write skill body content as instructions for Claude to follow, not documentation for the user to read. +- **Imperative writing style**: Use verb-first instructions in skills ("Parse the config file," not "You should parse the config file"). +- **Portability**: Always use `${CLAUDE_PLUGIN_ROOT}` for intra-plugin paths, never hardcoded paths. +- **Security**: Use environment variables for credentials, HTTPS for remote servers, least-privilege tool access. + +## Additional Resources + +- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md) +- **`references/example-plugins.md`** — Three complete example plugin structures at different complexity levels diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md new file mode 100644 index 000000000..c8eec4e0f --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md @@ -0,0 +1,396 @@ +# Component Schemas + +Detailed format specifications for every plugin component type. Reference this when implementing components in Phase 4. + +## Skills + +**Location**: `skills/skill-name/SKILL.md` +**Format**: Markdown with YAML frontmatter + +### Frontmatter Fields + +| Field | Required | Type | Description | +| ------------- | -------- | ------ | ------------------------------------------------------- | +| `name` | Yes | String | Skill identifier (lowercase, hyphens; matches dir name) | +| `description` | Yes | String | Third-person description with trigger phrases | +| `metadata` | No | Map | Arbitrary key-value pairs (e.g., `version`, `author`) | + +### Example Skill + +```yaml +--- +name: api-design +description: > + This skill should be used when the user asks to "design an API", + "create API endpoints", "review API structure", or needs guidance + on REST API best practices, endpoint naming, or request/response design. +metadata: + version: "0.1.0" +--- +``` + +### Writing Style Rules + +- **Frontmatter description**: Third-person ("This skill should be used when..."), with specific trigger phrases in quotes. +- **Body**: Imperative/infinitive form ("Parse the config file," not "You should parse the config file"). +- **Length**: Keep SKILL.md body under 3,000 words (ideally 1,500-2,000). Move detailed content to `references/`. + +### Skill Directory Structure + +``` +skill-name/ +├── SKILL.md # Core knowledge (required) +├── references/ # Detailed docs loaded on demand +│ ├── patterns.md +│ └── advanced.md +├── examples/ # Working code examples +│ └── sample-config.json +└── scripts/ # Utility scripts + └── validate.sh +``` + +### Progressive Disclosure Levels + +1. **Metadata** (always in context): name + description (~100 words) +2. **SKILL.md body** (when skill triggers): core knowledge (<5k words) +3. **Bundled resources** (as needed): references, examples, scripts (unlimited) + +## Agents + +**Location**: `agents/agent-name.md` +**Format**: Markdown with YAML frontmatter + +### Frontmatter Fields + +| Field | Required | Type | Description | +| ------------- | -------- | ------ | --------------------------------------------------- | +| `name` | Yes | String | Lowercase, hyphens, 3-50 chars | +| `description` | Yes | String | Triggering conditions with `` blocks | +| `model` | Yes | String | `inherit`, `sonnet`, `opus`, or `haiku` | +| `color` | Yes | String | `blue`, `cyan`, `green`, `yellow`, `magenta`, `red` | +| `tools` | No | Array | Restrict to specific tools | + +### Example Agent + +```markdown +--- +name: code-reviewer +description: Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices. + + +Context: User has just written a new module +user: "Can you do a deep review of this code?" +assistant: "I'll use the code-reviewer agent to provide a thorough analysis." + +User explicitly requested a detailed review, which matches this agent's specialty. + + + + +Context: User is about to merge a PR +user: "Review this before I merge" +assistant: "Let me run a comprehensive review using the code-reviewer agent." + +Pre-merge review benefits from the agent's structured analysis process. + + + +model: inherit +color: blue +tools: ["Read", "Grep", "Glob"] +--- + +You are a code review specialist focused on identifying issues across security, performance, maintainability, and correctness. + +**Your Core Responsibilities:** + +1. Analyze code structure and organization +2. Identify security vulnerabilities +3. Flag performance concerns +4. Check adherence to best practices + +**Analysis Process:** + +1. Read all files in scope +2. Identify patterns and anti-patterns +3. Categorize findings by severity +4. Provide specific remediation suggestions + +**Output Format:** +Present findings grouped by severity (Critical, Warning, Info) with: + +- File path and line number +- Description of the issue +- Suggested fix +``` + +### Agent Naming Rules + +- 3-50 characters +- Lowercase letters, numbers, hyphens only +- Must start and end with alphanumeric +- No underscores, spaces, or special characters + +### Color Guidelines + +- Blue/Cyan: Analysis, review +- Green: Success-oriented tasks +- Yellow: Caution, validation +- Red: Critical, security +- Magenta: Creative, generation + +## Hooks + +**Location**: `hooks/hooks.json` +**Format**: JSON + +### Available Events + +| Event | When it fires | +| ------------------ | ------------------------------- | +| `PreToolUse` | Before a tool call executes | +| `PostToolUse` | After a tool call completes | +| `Stop` | When Claude finishes a response | +| `SubagentStop` | When a subagent finishes | +| `SessionStart` | When a session begins | +| `SessionEnd` | When a session ends | +| `UserPromptSubmit` | When the user sends a message | +| `PreCompact` | Before context compaction | +| `Notification` | When a notification fires | + +### Hook Types + +**Prompt-based** (recommended for complex logic): + +```json +{ + "type": "prompt", + "prompt": "Evaluate whether this file write follows project conventions: $TOOL_INPUT", + "timeout": 30 +} +``` + +Supported events: Stop, SubagentStop, UserPromptSubmit, PreToolUse. + +**Command-based** (deterministic checks): + +```json +{ + "type": "command", + "command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate.sh", + "timeout": 60 +} +``` + +### Example hooks.json + +```json +{ + "PreToolUse": [ + { + "matcher": "Write|Edit", + "hooks": [ + { + "type": "prompt", + "prompt": "Check that this file write follows project coding standards. If it violates standards, explain why and block.", + "timeout": 30 + } + ] + } + ], + "SessionStart": [ + { + "matcher": "", + "hooks": [ + { + "type": "command", + "command": "cat ${CLAUDE_PLUGIN_ROOT}/context/project-context.md", + "timeout": 10 + } + ] + } + ] +} +``` + +### Hook Output Format (Command Hooks) + +Command hooks return JSON to stdout: + +```json +{ + "decision": "block", + "reason": "File write violates naming convention" +} +``` + +Decisions: `approve`, `block`, `ask_user` (ask for confirmation). + +## MCP Servers + +**Location**: `.mcp.json` at plugin root +**Format**: JSON + +### Server Types + +**stdio** (local process): + +```json +{ + "mcpServers": { + "my-server": { + "command": "node", + "args": ["${CLAUDE_PLUGIN_ROOT}/servers/server.js"], + "env": { + "API_KEY": "${API_KEY}" + } + } + } +} +``` + +**SSE** (remote server, server-sent events transport): + +```json +{ + "mcpServers": { + "asana": { + "type": "sse", + "url": "https://mcp.asana.com/sse" + } + } +} +``` + +**HTTP** (remote server, streamable HTTP transport): + +```json +{ + "mcpServers": { + "api-service": { + "type": "http", + "url": "https://api.example.com/mcp", + "headers": { + "Authorization": "Bearer ${API_TOKEN}" + } + } + } +} +``` + +### Environment Variable Expansion + +All MCP configs support `${VAR_NAME}` substitution: + +- `${CLAUDE_PLUGIN_ROOT}` — plugin directory (always use for portability) +- `${ANY_ENV_VAR}` — user environment variables + +Document all required environment variables in the plugin README. + +### Directory Servers Without a URL + +Some MCP directory entries have no `url` because the endpoint is dynamic. Plugins can reference these servers by **name** instead — if the server name in the plugin's MCP config matches the directory entry name, it is treated the same as a URL match. + +## Commands (Legacy) + +> **Prefer `skills/*/SKILL.md` for new plugins.** The Cowork UI now presents commands and skills as a single "Skills" concept. The `commands/` format still works, but only use it if you specifically need the single-file format with `$ARGUMENTS`/`$1` substitution and inline bash execution. + +**Location**: `commands/command-name.md` +**Format**: Markdown with optional YAML frontmatter + +### Frontmatter Fields + +| Field | Required | Type | Description | +| --------------- | -------- | --------------- | --------------------------------------------------- | +| `description` | No | String | Brief description shown in `/help` (under 60 chars) | +| `allowed-tools` | No | String or Array | Tools the command can use | +| `model` | No | String | Model override: `sonnet`, `opus`, `haiku` | +| `argument-hint` | No | String | Documents expected arguments for autocomplete | + +### Example Command + +```markdown +--- +description: Review code for security issues +allowed-tools: Read, Grep, Bash(git:*) +argument-hint: [file-path] +--- + +Review @$1 for security vulnerabilities including: + +- SQL injection +- XSS attacks +- Authentication bypass +- Insecure data handling + +Provide specific line numbers, severity ratings, and remediation suggestions. +``` + +### Key Rules + +- Commands are instructions FOR Claude, not messages for the user. Write them as directives. +- `$ARGUMENTS` captures all arguments as a single string; `$1`, `$2`, `$3` capture positional arguments. +- `@path` syntax includes file contents in the command context. +- `!` backtick syntax executes bash inline for dynamic context (e.g., `` !`git diff --name-only` ``). +- Use `${CLAUDE_PLUGIN_ROOT}` to reference plugin files portably. + +### allowed-tools Patterns + +```yaml +# Specific tools +allowed-tools: Read, Write, Edit, Bash(git:*) + +# Bash with specific commands only +allowed-tools: Bash(npm:*), Read + +# MCP tools (specific) +allowed-tools: ["mcp__plugin_name_server__tool_name"] +``` + +## CONNECTORS.md + +**Location**: Plugin root +**When to create**: When the plugin references external tools by category rather than specific product + +### Format + +```markdown +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user +connects in that category. For example, `~~project tracker` might mean +Asana, Linear, Jira, or any other project tracker with an MCP server. + +Plugins are tool-agnostic — they describe workflows in terms of categories +rather than specific products. + +## Connectors for this plugin + +| Category | Placeholder | Included servers | Other options | +| --------------- | ------------------- | ---------------- | ------------------------ | +| Chat | `~~chat` | Slack | Microsoft Teams, Discord | +| Project tracker | `~~project tracker` | Linear | Asana, Jira, Monday | +``` + +### Using ~~ Placeholders + +In plugin files (skills, agents), reference tools generically: + +```markdown +Check ~~project tracker for open tickets assigned to the user. +Post a summary to ~~chat in the team channel. +``` + +During customization (via the cowork-plugin-customizer skill), these get replaced with specific tool names. + +## README.md + +Every plugin should include a README with: + +1. **Overview** — what the plugin does +2. **Components** — list of skills, agents, hooks, MCP servers +3. **Setup** — any required environment variables or configuration +4. **Usage** — how to trigger each skill +5. **Customization** — if CONNECTORS.md exists, mention it diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md new file mode 100644 index 000000000..34c0052ae --- /dev/null +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md @@ -0,0 +1,352 @@ +# Example Plugins + +Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4. + +## Minimal Plugin: Single Skill + +A simple plugin with one skill and no other components. + +### Structure + +``` +meeting-notes/ +├── .claude-plugin/ +│ └── plugin.json +├── skills/ +│ └── meeting-notes/ +│ └── SKILL.md +└── README.md +``` + +### plugin.json + +```json +{ + "name": "meeting-notes", + "version": "0.1.0", + "description": "Generate structured meeting notes from transcripts", + "author": { + "name": "User" + } +} +``` + +### skills/meeting-notes/SKILL.md + +```markdown +--- +name: meeting-notes +description: > + Generate structured meeting notes from a transcript. Use when the user asks + to "summarize this meeting", "create meeting notes", "extract action items + from this transcript", or provides a meeting transcript file. +--- + +Read the transcript file the user provided and generate structured meeting notes. + +Include these sections: + +1. **Attendees** — list all participants mentioned +2. **Summary** — 2-3 sentence overview of the meeting +3. **Key Decisions** — numbered list of decisions made +4. **Action Items** — table with columns: Owner, Task, Due Date +5. **Open Questions** — anything unresolved + +Write the notes to a new file named after the transcript with `-notes` appended. +``` + +--- + +## Standard Plugin: Skills + MCP + +A plugin that combines domain knowledge, user-initiated actions, and external service integration. + +### Structure + +``` +code-quality/ +├── .claude-plugin/ +│ └── plugin.json +├── skills/ +│ ├── coding-standards/ +│ │ ├── SKILL.md +│ │ └── references/ +│ │ └── style-rules.md +│ ├── review-changes/ +│ │ └── SKILL.md +│ └── fix-lint/ +│ └── SKILL.md +├── .mcp.json +└── README.md +``` + +### plugin.json + +```json +{ + "name": "code-quality", + "version": "0.1.0", + "description": "Enforce coding standards with reviews, linting, and style guidance", + "author": { + "name": "User" + } +} +``` + +### skills/review-changes/SKILL.md + +```markdown +--- +name: review-changes +description: > + Review code changes for style and quality issues. Use when the user asks to + "review my changes", "check this diff", "review for style violations", or + wants a code quality pass on uncommitted work. +--- + +Run `git diff --name-only` to get the list of changed files. + +For each changed file: + +1. Read the file +2. Check against the coding-standards skill for style violations +3. Identify potential bugs or anti-patterns +4. Flag any security concerns + +Present a summary with: + +- File path +- Issue severity (Error, Warning, Info) +- Description and suggested fix +``` + +### skills/fix-lint/SKILL.md + +```markdown +--- +name: fix-lint +description: > + Auto-fix linting issues in changed files. Use when the user asks to + "fix lint errors", "clean up linting", or "auto-fix my lint issues". +--- + +Run the linter: `npm run lint -- --format json 2>&1` + +Parse the linter output and fix each issue: + +- For auto-fixable issues, apply the fix directly +- For manual-fix issues, make the correction following project conventions +- Skip issues that require architectural changes + +After all fixes, run the linter again to confirm clean output. +``` + +### skills/coding-standards/SKILL.md + +```yaml +--- +name: coding-standards +description: > + This skill should be used when the user asks about "coding standards", + "style guide", "naming conventions", "code formatting rules", or needs + guidance on project-specific code quality expectations. +metadata: + version: "0.1.0" +--- +``` + +```markdown +# Coding Standards + +Project coding standards and conventions for consistent, high-quality code. + +## Core Rules + +- Use camelCase for variables and functions +- Use PascalCase for classes and types +- Prefer const over let; avoid var +- Maximum line length: 100 characters +- Use explicit return types on all exported functions + +## Import Order + +1. External packages +2. Internal packages (aliased with @/) +3. Relative imports +4. Type-only imports last + +## Additional Resources + +- **`references/style-rules.md`** — complete style rules by language +``` + +### .mcp.json + +```json +{ + "mcpServers": { + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/" + } + } +} +``` + +--- + +## Full-Featured Plugin: All Component Types + +A plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors. + +### Structure + +``` +engineering-workflow/ +├── .claude-plugin/ +│ └── plugin.json +├── skills/ +│ ├── team-processes/ +│ │ ├── SKILL.md +│ │ └── references/ +│ │ └── workflow-guide.md +│ ├── standup-prep/ +│ │ └── SKILL.md +│ └── create-ticket/ +│ └── SKILL.md +├── agents/ +│ └── ticket-analyzer.md +├── hooks/ +│ └── hooks.json +├── .mcp.json +├── CONNECTORS.md +└── README.md +``` + +### plugin.json + +```json +{ + "name": "engineering-workflow", + "version": "0.1.0", + "description": "Streamline engineering workflows: standup prep, ticket management, and code quality", + "author": { + "name": "User" + }, + "keywords": ["engineering", "workflow", "tickets", "standup"] +} +``` + +### agents/ticket-analyzer.md + +```markdown +--- +name: ticket-analyzer +description: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog. + + +Context: User is preparing for sprint planning +user: "Help me triage these new tickets" +assistant: "I'll use the ticket-analyzer agent to review and categorize the tickets." + +Ticket triage requires systematic analysis across multiple dimensions, making the agent appropriate. + + + + +Context: User has a large backlog +user: "Prioritize my backlog for next sprint" +assistant: "Let me analyze the backlog using the ticket-analyzer agent to recommend priorities." + +Backlog prioritization is a multi-step autonomous task well-suited for the agent. + + + +model: inherit +color: cyan +tools: ["Read", "Grep"] +--- + +You are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies. + +**Your Core Responsibilities:** + +1. Categorize tickets by type (bug, feature, tech debt, improvement) +2. Estimate relative effort (S, M, L, XL) +3. Identify dependencies between tickets +4. Recommend priority ordering + +**Analysis Process:** + +1. Read all ticket descriptions +2. Categorize each by type +3. Estimate effort based on scope +4. Map dependencies +5. Rank by impact-to-effort ratio + +**Output Format:** +| Ticket | Type | Effort | Dependencies | Priority | +|--------|------|--------|-------------|----------| +| ... | ... | ... | ... | ... | + +Followed by a brief rationale for the top 5 priorities. +``` + +### hooks/hooks.json + +```json +{ + "SessionStart": [ + { + "matcher": "", + "hooks": [ + { + "type": "command", + "command": "echo '## Team Context\n\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'", + "timeout": 5 + } + ] + } + ] +} +``` + +### CONNECTORS.md + +```markdown +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user +connects in that category. Plugins are tool-agnostic. + +## Connectors for this plugin + +| Category | Placeholder | Included servers | Other options | +| --------------- | ------------------- | ---------------- | ------------------- | +| Project tracker | `~~project tracker` | Linear | Asana, Jira, Monday | +| Chat | `~~chat` | Slack | Microsoft Teams | +| Source control | `~~source control` | GitHub | GitLab, Bitbucket | +``` + +### .mcp.json + +```json +{ + "mcpServers": { + "linear": { + "type": "sse", + "url": "https://mcp.linear.app/sse" + }, + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/" + }, + "slack": { + "type": "http", + "url": "https://slack.mcp.claude.com/mcp" + } + } +} +``` diff --git a/src/octop/infra/agents/experts/library/design/AGENTS.md b/src/octop/infra/agents/experts/library/design/AGENTS.md new file mode 100644 index 000000000..7e0b51769 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/AGENTS.md @@ -0,0 +1,27 @@ +# 设计专家 操作规程 + +本文件是你的工作说明。SOUL.md 定义你是谁;这里规定怎么干活。需要长期记住的偏好或规矩,写回这里。 + +## 输入处理 + +- 截图、Figma 链接、文字描述都可以开工;缺的约束(平台、受众、品牌)一次性问全。 +- 不编造 Figma 的尺寸、tokens 或品牌规范;没有实测数据就明确标注"待确认"。 + +## 输出结构 + +- 评审反馈按维度组织:可用性 / 视觉层级 / 一致性 / 无障碍,每条给可执行的改法。 +- 无障碍结论必须引用具体 WCAG 条款并给修复步骤。 +- 交接文档必须含:尺寸、tokens、组件状态、交互说明、边界情况清单。 +- UX 文案给主方案 + 至少一个备选,并注明语气依据。 + +## 偏好回写 + +用户提到以下信息时,记录到本节,后续直接使用: + +- 品牌语气与文案规范 +- 设计系统命名约定(tokens、组件命名) +- 主要投放平台与无障碍基线(如 WCAG 2.1 AA) + +## 交付 + +- 结论先行:先说最关键的三个问题,再展开细节。 diff --git a/src/octop/infra/agents/experts/library/design/CONNECTORS.md b/src/octop/infra/agents/experts/library/design/CONNECTORS.md new file mode 100644 index 000000000..1443063b9 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/CONNECTORS.md @@ -0,0 +1,18 @@ +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user connects in that category. For example, `~~design tool` might mean Figma, Sketch, or any other design tool with an MCP server. + +Plugins are **tool-agnostic** — they describe workflows in terms of categories (design tool, project tracker, user feedback, etc.) rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works. + +## Connectors for this plugin + +| Category | Placeholder | Included servers | Other options | +|----------|-------------|-----------------|---------------| +| Chat | `~~chat` | Slack | Microsoft Teams | +| Design tool | `~~design tool` | Figma | Sketch, Adobe XD, Framer | +| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda | +| Project tracker | `~~project tracker` | Linear, Asana, Atlassian (Jira/Confluence) | Shortcut, ClickUp | +| User feedback | `~~user feedback` | Intercom | Productboard, Canny, UserVoice, Dovetail | +| Product analytics | `~~product analytics` | — | Amplitude, Mixpanel, Heap, FullStory | diff --git a/src/octop/infra/agents/experts/library/design/LICENSE b/src/octop/infra/agents/experts/library/design/LICENSE new file mode 100644 index 000000000..f53c679ac --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/LICENSE @@ -0,0 +1,212 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Syntax-file, code seperations,code vault integeted with css definition. +Pre-recordec, pre-tested, elements to capture elements into Packeted-User-Relations to capture - [ + +pre-requisites, statements, recorded-cams +, cams-data +, data, input() + +] diff --git a/src/octop/infra/agents/experts/library/design/SOUL.md b/src/octop/infra/agents/experts/library/design/SOUL.md new file mode 100644 index 000000000..6a2e3fc5e --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/SOUL.md @@ -0,0 +1,23 @@ +You are the **Design Expert** inside Octop, a design-productivity assistant. + +**Tone:** Specific, constructive, criteria-driven. Every piece of feedback ties to usability, visual hierarchy, consistency, or accessibility — never vague preferences. + +**Core rule:** When the user shares a design, screenshot, research data, or a design question, pick the matching bundled skill and follow its workflow. Ask for missing context (platform, audience, brand constraints) only when necessary. + +**Bundled skills:** + +| Skill | Use when | +|-------|----------| +| `design-critique` | Structured feedback on usability, hierarchy, consistency, principles | +| `design-system` | Auditing, documenting, or extending components, tokens, patterns | +| `ux-copy` | Microcopy — error messages, empty states, onboarding flows | +| `accessibility-review` | WCAG 2.1 AA audits — contrast, screen reader, keyboard navigation | +| `user-research` | Planning and conducting interviews, surveys, usability tests | +| `research-synthesis` | Turning transcripts and survey data into themes and insights | +| `design-handoff` | Developer handoff specs — measurements, tokens, states, edge cases | + +**Standalone-first:** screenshots, descriptions, and pasted transcripts are enough. If placeholders appear, read `CONNECTORS.md` at the workspace root and map the categories (design tool, user feedback, tracker, knowledge base, analytics) to whatever the user actually connected. + +**Boundaries:** +- Do not fabricate Figma measurements, tokens, or brand guidelines +- Every accessibility finding must cite the specific WCAG criterion and a remediation step diff --git a/src/octop/infra/agents/experts/library/design/manifest.json b/src/octop/infra/agents/experts/library/design/manifest.json new file mode 100644 index 000000000..16c5273d9 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/manifest.json @@ -0,0 +1,88 @@ +{ + "id": "design", + "label": { + "zh": "设计专家", + "en": "Design Expert" + }, + "description": { + "zh": "设计生产力工作流:设计评审、设计系统管理、UX 文案、无障碍审查、用户研究综合与开发交接。可独立使用,连接设计工具类连接器后体验更佳。", + "en": "Design productivity workflows: critique, design-system management, UX writing, accessibility review, research synthesis, and developer handoff. Works standalone; richer with design-tool connectors." + }, + "welcome_message": { + "zh": "发我一张截图或描述你的设计,我来给结构化反馈", + "en": "Share a screenshot or describe your design — I'll give structured feedback" + }, + "icon_name": "palette", + "icon_url": "/experts/avatars/scene-design.svg", + "color": "#9333ea", + "prompt_files": [ + "SOUL.md", + "AGENTS.md" + ], + "task_examples": { + "zh": [ + "评审这个页面的设计:可用性、视觉层级、一致性与无障碍", + "为支付流程的错误提示写一组 UX 文案,给出语气建议和备选方案", + "把这份设计整理成开发交接文档:尺寸、tokens、状态、交互与边界情况" + ], + "en": [ + "Critique this page design: usability, visual hierarchy, consistency, and accessibility", + "Write UX copy for payment-flow error messages, with tone guidance and alternatives", + "Turn this design into a developer handoff spec: measurements, tokens, states, interactions, and edge cases" + ] + }, + "quick_prompts": [ + { + "title": { + "zh": "设计评审", + "en": "Design critique" + }, + "description": { + "zh": "可用性、视觉层级、一致性与无障碍", + "en": "Usability, hierarchy, consistency, and accessibility" + }, + "prompt": { + "zh": "评审这个页面的设计:可用性、视觉层级、一致性与无障碍", + "en": "Critique this page design: usability, hierarchy, consistency, and accessibility" + }, + "color": "#f3e8ff", + "icon_name": "palette" + }, + { + "title": { + "zh": "UX 文案", + "en": "UX copy" + }, + "description": { + "zh": "错误提示、空状态与引导流程", + "en": "Error messages, empty states, and onboarding flows" + }, + "prompt": { + "zh": "为支付流程的错误提示写一组 UX 文案,给出语气建议和备选方案", + "en": "Write UX copy for payment-flow error messages, with tone guidance and alternatives" + }, + "color": "#f3e8ff", + "icon_name": "palette" + }, + { + "title": { + "zh": "开发交接", + "en": "Dev handoff" + }, + "description": { + "zh": "尺寸、tokens、状态与边界情况", + "en": "Measurements, tokens, states, and edge cases" + }, + "prompt": { + "zh": "把这份设计整理成开发交接文档:尺寸、tokens、状态、交互与边界情况", + "en": "Turn this design into a developer handoff spec: measurements, tokens, states, and edge cases" + }, + "color": "#f3e8ff", + "icon_name": "palette" + } + ], + "source": { + "type": "knowledge-work-plugins", + "plugin": "design" + } +} diff --git a/src/octop/infra/agents/experts/library/design/skills/accessibility-review/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/accessibility-review/SKILL.md new file mode 100644 index 000000000..3ef332cd8 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/accessibility-review/SKILL.md @@ -0,0 +1,128 @@ +--- +name: accessibility-review +description: Run a WCAG 2.1 AA accessibility audit on a design or page. Trigger with "audit accessibility", "check a11y", "is this accessible?", or when reviewing a design for color contrast, keyboard navigation, touch target size, or screen reader behavior before handoff. +argument-hint: "" +--- + +# /accessibility-review + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Audit a design or page for WCAG 2.1 AA accessibility compliance. + +## Usage + +``` +/accessibility-review $ARGUMENTS +``` + +Audit for accessibility: @$1 + +## WCAG 2.1 AA Quick Reference + +### Perceivable +- **1.1.1** Non-text content has alt text +- **1.3.1** Info and structure conveyed semantically +- **1.4.3** Contrast ratio >= 4.5:1 (normal text), >= 3:1 (large text) +- **1.4.11** Non-text contrast >= 3:1 (UI components, graphics) + +### Operable +- **2.1.1** All functionality available via keyboard +- **2.4.3** Logical focus order +- **2.4.7** Visible focus indicator +- **2.5.5** Touch target >= 44x44 CSS pixels + +### Understandable +- **3.2.1** Predictable on focus (no unexpected changes) +- **3.3.1** Error identification (describe the error) +- **3.3.2** Labels or instructions for inputs + +### Robust +- **4.1.2** Name, role, value for all UI components + +## Common Issues + +1. Insufficient color contrast +2. Missing form labels +3. No keyboard access to interactive elements +4. Missing alt text on meaningful images +5. Focus traps in modals +6. Missing ARIA landmarks +7. Auto-playing media without controls +8. Time limits without extension options + +## Testing Approach + +1. Automated scan (catches ~30% of issues) +2. Keyboard-only navigation +3. Screen reader testing (VoiceOver, NVDA) +4. Color contrast verification +5. Zoom to 200% — does layout break? + +## Output + +```markdown +## Accessibility Audit: [Design/Page Name] +**Standard:** WCAG 2.1 AA | **Date:** [Date] + +### Summary +**Issues found:** [X] | **Critical:** [X] | **Major:** [X] | **Minor:** [X] + +### Findings + +#### Perceivable +| # | Issue | WCAG Criterion | Severity | Recommendation | +|---|-------|---------------|----------|----------------| +| 1 | [Issue] | [1.4.3 Contrast] | 🔴 Critical | [Fix] | + +#### Operable +| # | Issue | WCAG Criterion | Severity | Recommendation | +|---|-------|---------------|----------|----------------| +| 1 | [Issue] | [2.1.1 Keyboard] | 🟡 Major | [Fix] | + +#### Understandable +| # | Issue | WCAG Criterion | Severity | Recommendation | +|---|-------|---------------|----------|----------------| +| 1 | [Issue] | [3.3.2 Labels] | 🟢 Minor | [Fix] | + +#### Robust +| # | Issue | WCAG Criterion | Severity | Recommendation | +|---|-------|---------------|----------|----------------| +| 1 | [Issue] | [4.1.2 Name, Role, Value] | 🟡 Major | [Fix] | + +### Color Contrast Check +| Element | Foreground | Background | Ratio | Required | Pass? | +|---------|-----------|------------|-------|----------|-------| +| [Body text] | [color] | [color] | [X]:1 | 4.5:1 | ✅/❌ | + +### Keyboard Navigation +| Element | Tab Order | Enter/Space | Escape | Arrow Keys | +|---------|-----------|-------------|--------|------------| +| [Element] | [Order] | [Behavior] | [Behavior] | [Behavior] | + +### Screen Reader +| Element | Announced As | Issue | +|---------|-------------|-------| +| [Element] | [What SR says] | [Problem if any] | + +### Priority Fixes +1. **[Critical fix]** — Affects [who] and blocks [what] +2. **[Major fix]** — Improves [what] for [who] +3. **[Minor fix]** — Nice to have +``` + +## If Connectors Available + +If **~~design tool** is connected: +- Inspect color values, font sizes, and touch targets directly from Figma +- Check component ARIA roles and keyboard behavior in the design spec + +If **~~project tracker** is connected: +- Create tickets for each accessibility finding with severity and WCAG criterion +- Link findings to existing accessibility remediation epics + +## Tips + +1. **Start with contrast and keyboard** — These catch the most common and impactful issues. +2. **Test with real assistive technology** — My audit is a great start, but manual testing with VoiceOver/NVDA catches things I can't. +3. **Prioritize by impact** — Fix issues that block users first, polish later. diff --git a/src/octop/infra/agents/experts/library/design/skills/design-critique/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/design-critique/SKILL.md new file mode 100644 index 000000000..b6eaac153 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/design-critique/SKILL.md @@ -0,0 +1,118 @@ +--- +name: design-critique +description: Get structured design feedback on usability, hierarchy, and consistency. Trigger with "review this design", "critique this mockup", "what do you think of this screen?", or when sharing a Figma link or screenshot for feedback at any stage from exploration to final polish. +argument-hint: "" +--- + +# /design-critique + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Get structured design feedback across multiple dimensions. + +## Usage + +``` +/design-critique $ARGUMENTS +``` + +Review the design: @$1 + +If a Figma URL is provided, pull the design from Figma. If a file is referenced, read it. Otherwise, ask the user to describe or share their design. + +## What I Need From You + +- **The design**: Figma URL, screenshot, or detailed description +- **Context**: What is this? Who is it for? What stage (exploration, refinement, final)? +- **Focus** (optional): "Focus on mobile" or "Focus on the onboarding flow" + +## Critique Framework + +### 1. First Impression (2 seconds) +- What draws the eye first? Is that correct? +- What's the emotional reaction? +- Is the purpose immediately clear? + +### 2. Usability +- Can the user accomplish their goal? +- Is the navigation intuitive? +- Are interactive elements obvious? +- Are there unnecessary steps? + +### 3. Visual Hierarchy +- Is there a clear reading order? +- Are the right elements emphasized? +- Is whitespace used effectively? +- Is typography creating the right hierarchy? + +### 4. Consistency +- Does it follow the design system? +- Are spacing, colors, and typography consistent? +- Do similar elements behave similarly? + +### 5. Accessibility +- Color contrast ratios +- Touch target sizes +- Text readability +- Alternative text for images + +## How to Give Feedback + +- **Be specific**: "The CTA competes with the navigation" not "the layout is confusing" +- **Explain why**: Connect feedback to design principles or user needs +- **Suggest alternatives**: Don't just identify problems, propose solutions +- **Acknowledge what works**: Good feedback includes positive observations +- **Match the stage**: Early exploration gets different feedback than final polish + +## Output + +```markdown +## Design Critique: [Design Name] + +### Overall Impression +[1-2 sentence first reaction — what works, what's the biggest opportunity] + +### Usability +| Finding | Severity | Recommendation | +|---------|----------|----------------| +| [Issue] | 🔴 Critical / 🟡 Moderate / 🟢 Minor | [Fix] | + +### Visual Hierarchy +- **What draws the eye first**: [Element] — [Is this correct?] +- **Reading flow**: [How does the eye move through the layout?] +- **Emphasis**: [Are the right things emphasized?] + +### Consistency +| Element | Issue | Recommendation | +|---------|-------|----------------| +| [Typography/spacing/color] | [Inconsistency] | [Fix] | + +### Accessibility +- **Color contrast**: [Pass/fail for key text] +- **Touch targets**: [Adequate size?] +- **Text readability**: [Font size, line height] + +### What Works Well +- [Positive observation 1] +- [Positive observation 2] + +### Priority Recommendations +1. **[Most impactful change]** — [Why and how] +2. **[Second priority]** — [Why and how] +3. **[Third priority]** — [Why and how] +``` + +## If Connectors Available + +If **~~design tool** is connected: +- Pull the design directly from Figma and inspect components, tokens, and layers +- Compare against the existing design system for consistency + +If **~~user feedback** is connected: +- Cross-reference design decisions with recent user feedback and support tickets + +## Tips + +1. **Share the context** — "This is a checkout flow for a B2B SaaS" helps me give relevant feedback. +2. **Specify your stage** — Early exploration gets different feedback than final polish. +3. **Ask me to focus** — "Just look at the navigation" gives you more depth on one area. diff --git a/src/octop/infra/agents/experts/library/design/skills/design-handoff/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/design-handoff/SKILL.md new file mode 100644 index 000000000..74d7d9ee7 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/design-handoff/SKILL.md @@ -0,0 +1,131 @@ +--- +name: design-handoff +description: Generate developer handoff specs from a design. Use when a design is ready for engineering and needs a spec sheet covering layout, design tokens, component props, interaction states, responsive breakpoints, edge cases, and animation details. +argument-hint: "" +--- + +# /design-handoff + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Generate comprehensive developer handoff documentation from a design. + +## Usage + +``` +/design-handoff $ARGUMENTS +``` + +Generate handoff specs for: @$1 + +If a Figma URL is provided, pull the design from Figma. Otherwise, work from the provided description or screenshot. + +## What to Include + +### Visual Specifications +- Exact measurements (padding, margins, widths) +- Design token references (colors, typography, spacing) +- Responsive breakpoints and behavior +- Component variants and states + +### Interaction Specifications +- Click/tap behavior +- Hover states +- Transitions and animations (duration, easing) +- Gesture support (swipe, pinch, long-press) + +### Content Specifications +- Character limits +- Truncation behavior +- Empty states +- Loading states +- Error states + +### Edge Cases +- Minimum/maximum content +- International text (longer strings) +- Slow connections +- Missing data + +### Accessibility +- Focus order +- ARIA labels and roles +- Keyboard interactions +- Screen reader announcements + +## Principles + +1. **Don't assume** — If it's not specified, the developer will guess. Specify everything. +2. **Use tokens, not values** — Reference `spacing-md` not `16px`. +3. **Show all states** — Default, hover, active, disabled, loading, error, empty. +4. **Describe the why** — "This collapses on mobile because users primarily use one-handed" helps developers make good judgment calls. + +## Output + +```markdown +## Handoff Spec: [Feature/Screen Name] + +### Overview +[What this screen/feature does, user context] + +### Layout +[Grid system, breakpoints, responsive behavior] + +### Design Tokens Used +| Token | Value | Usage | +|-------|-------|-------| +| `color-primary` | #[hex] | CTA buttons, links | +| `spacing-md` | [X]px | Between sections | +| `font-heading-lg` | [size/weight/family] | Page title | + +### Components +| Component | Variant | Props | Notes | +|-----------|---------|-------|-------| +| [Component] | [Variant] | [Props] | [Special behavior] | + +### States and Interactions +| Element | State | Behavior | +|---------|-------|----------| +| [CTA Button] | Hover | [Background darken 10%] | +| [CTA Button] | Loading | [Spinner, disabled] | +| [Form] | Error | [Red border, error message below] | + +### Responsive Behavior +| Breakpoint | Changes | +|------------|---------| +| Desktop (>1024px) | [Default layout] | +| Tablet (768-1024px) | [What changes] | +| Mobile (<768px) | [What changes] | + +### Edge Cases +- **Empty state**: [What to show when no data] +- **Long text**: [Truncation rules] +- **Loading**: [Skeleton or spinner] +- **Error**: [Error state appearance] + +### Animation / Motion +| Element | Trigger | Animation | Duration | Easing | +|---------|---------|-----------|----------|--------| +| [Element] | [Trigger] | [Description] | [ms] | [easing] | + +### Accessibility Notes +- [Focus order] +- [ARIA labels needed] +- [Keyboard interactions] +``` + +## If Connectors Available + +If **~~design tool** is connected: +- Pull exact measurements, tokens, and component specs from Figma +- Export assets and generate a complete spec sheet + +If **~~project tracker** is connected: +- Link the handoff to the implementation ticket +- Create sub-tasks for each section of the spec + +## Tips + +1. **Share the Figma link** — I can pull exact measurements, tokens, and component info. +2. **Mention edge cases** — "What happens with 100 items?" helps me spec boundary conditions. +3. **Specify the tech stack** — "We use React + Tailwind" helps me give relevant implementation notes. diff --git a/src/octop/infra/agents/experts/library/design/skills/design-system/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/design-system/SKILL.md new file mode 100644 index 000000000..0346fc139 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/design-system/SKILL.md @@ -0,0 +1,190 @@ +--- +name: design-system +description: Audit, document, or extend your design system. Use when checking for naming inconsistencies or hardcoded values across components, writing documentation for a component's variants, states, and accessibility notes, or designing a new pattern that fits the existing system. +argument-hint: "[audit | document | extend] " +--- + +# /design-system + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Manage your design system — audit for consistency, document components, or design new patterns. + +## Usage + +``` +/design-system audit # Full system audit +/design-system document [component] # Document a component +/design-system extend [pattern] # Design a new component or pattern +``` + +## Components of a Design System + +### Design Tokens +Atomic values that define the visual language: +- Colors (brand, semantic, neutral) +- Typography (scale, weights, line heights) +- Spacing (scale, component padding) +- Borders (radius, width) +- Shadows (elevation levels) +- Motion (durations, easings) + +### Components +Reusable UI elements with defined: +- Variants (primary, secondary, ghost) +- States (default, hover, active, disabled, loading, error) +- Sizes (sm, md, lg) +- Behavior (interactions, animations) +- Accessibility (ARIA, keyboard) + +### Patterns +Common UI solutions combining components: +- Forms (input groups, validation, submission) +- Navigation (sidebar, tabs, breadcrumbs) +- Data display (tables, cards, lists) +- Feedback (toasts, modals, inline messages) + +## Principles + +1. **Consistency over creativity** — The system exists so teams don't reinvent the wheel +2. **Flexibility within constraints** — Components should be composable, not rigid +3. **Document everything** — If it's not documented, it doesn't exist +4. **Version and migrate** — Breaking changes need migration paths + +## Output — Audit + +```markdown +## Design System Audit + +### Summary +**Components reviewed:** [X] | **Issues found:** [X] | **Score:** [X/100] + +### Naming Consistency +| Issue | Components | Recommendation | +|-------|------------|----------------| +| [Inconsistent naming] | [List] | [Standard to adopt] | + +### Token Coverage +| Category | Defined | Hardcoded Values Found | +|----------|---------|----------------------| +| Colors | [X] | [X] instances of hardcoded hex | +| Spacing | [X] | [X] instances of arbitrary values | +| Typography | [X] | [X] instances of custom fonts/sizes | + +### Component Completeness +| Component | States | Variants | Docs | Score | +|-----------|--------|----------|------|-------| +| Button | ✅ | ✅ | ⚠️ | 8/10 | +| Input | ✅ | ⚠️ | ❌ | 5/10 | + +### Priority Actions +1. [Most impactful improvement] +2. [Second priority] +3. [Third priority] +``` + +## Output — Document + +```markdown +## Component: [Name] + +### Description +[What this component is and when to use it] + +### Variants +| Variant | Use When | +|---------|----------| +| [Primary] | [Main actions] | +| [Secondary] | [Supporting actions] | + +### Props / Properties +| Property | Type | Default | Description | +|----------|------|---------|-------------| +| [prop] | [type] | [default] | [description] | + +### States +| State | Visual | Behavior | +|-------|--------|----------| +| Default | [description] | — | +| Hover | [description] | [interaction] | +| Active | [description] | [interaction] | +| Disabled | [description] | Non-interactive | +| Loading | [description] | [animation] | + +### Accessibility +- **Role**: [ARIA role] +- **Keyboard**: [Tab, Enter, Escape behavior] +- **Screen reader**: [Announced as...] + +### Do's and Don'ts +| ✅ Do | ❌ Don't | +|------|---------| +| [Best practice] | [Anti-pattern] | + +### Code Example +[Framework-appropriate code snippet] +``` + +## Output — Extend + +```markdown +## New Component: [Name] + +### Problem +[What user need or gap this component addresses] + +### Existing Patterns +| Related Component | Similarity | Why It's Not Enough | +|-------------------|-----------|---------------------| +| [Component] | [What's shared] | [What's missing] | + +### Proposed Design + +#### API / Props +| Property | Type | Default | Description | +|----------|------|---------|-------------| +| [prop] | [type] | [default] | [description] | + +#### Variants +| Variant | Use When | Visual | +|---------|----------|--------| +| [Variant] | [Scenario] | [Description] | + +#### States +| State | Behavior | Notes | +|-------|----------|-------| +| Default | [Description] | — | +| Hover | [Description] | [Interaction] | +| Disabled | [Description] | Non-interactive | +| Loading | [Description] | [Animation] | + +#### Tokens Used +- Colors: [Which tokens] +- Spacing: [Which tokens] +- Typography: [Which tokens] + +### Accessibility +- **Role**: [ARIA role] +- **Keyboard**: [Expected interactions] +- **Screen reader**: [Announced as...] + +### Open Questions +- [Decision that needs design review] +- [Edge case to resolve] +``` + +## If Connectors Available + +If **~~design tool** is connected: +- Audit components directly in Figma — check naming, variants, and token usage +- Pull component properties and layer structure for documentation + +If **~~knowledge base** is connected: +- Search for existing component documentation and usage guidelines +- Publish updated documentation to your wiki + +## Tips + +1. **Start with an audit** — Know where you are before deciding where to go. +2. **Document as you build** — It's easier to document a component while designing it. +3. **Prioritize coverage over perfection** — 80% of components documented beats 100% of 10 components. diff --git a/src/octop/infra/agents/experts/library/design/skills/research-synthesis/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/research-synthesis/SKILL.md new file mode 100644 index 000000000..4807340a6 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/research-synthesis/SKILL.md @@ -0,0 +1,92 @@ +--- +name: research-synthesis +description: Synthesize user research into themes, insights, and recommendations. Use when you have interview transcripts, survey results, usability test notes, support tickets, or NPS responses that need to be distilled into patterns, user segments, and prioritized next steps. +argument-hint: "" +--- + +# /research-synthesis + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Synthesize user research data into actionable insights. See the **user-research** skill for research methods, interview guides, and analysis frameworks. + +## Usage + +``` +/research-synthesis $ARGUMENTS +``` + +## What I Accept + +- Interview transcripts or notes +- Survey results (CSV, pasted data) +- Usability test recordings or notes +- Support tickets or feedback +- NPS/CSAT responses +- App store reviews + +## Output + +```markdown +## Research Synthesis: [Study Name] +**Method:** [Interviews / Survey / Usability Test] | **Participants:** [X] +**Date:** [Date range] | **Researcher:** [Name] + +### Executive Summary +[3-4 sentence overview of key findings] + +### Key Themes + +#### Theme 1: [Name] +**Prevalence:** [X of Y participants] +**Summary:** [What this theme is about] +**Supporting Evidence:** +- "[Quote]" — P[X] +- "[Quote]" — P[X] +**Implication:** [What this means for the product] + +#### Theme 2: [Name] +[Same format] + +### Insights → Opportunities + +| Insight | Opportunity | Impact | Effort | +|---------|-------------|--------|--------| +| [What we learned] | [What we could do] | High/Med/Low | High/Med/Low | + +### User Segments Identified +| Segment | Characteristics | Needs | Size | +|---------|----------------|-------|------| +| [Name] | [Description] | [Key needs] | [Rough %] | + +### Recommendations +1. **[High priority]** — [Why, based on which findings] +2. **[Medium priority]** — [Why] +3. **[Lower priority]** — [Why] + +### Questions for Further Research +- [What we still don't know] + +### Methodology Notes +[How the research was conducted, any limitations or biases to note] +``` + +## If Connectors Available + +If **~~user feedback** is connected: +- Pull support tickets, feature requests, and NPS responses to supplement research data +- Cross-reference themes with real user complaints and requests + +If **~~product analytics** is connected: +- Validate qualitative findings with usage data and behavioral metrics +- Quantify the impact of identified pain points + +If **~~knowledge base** is connected: +- Search for prior research studies and findings to compare against +- Publish the synthesis to your research repository + +## Tips + +1. **Include raw quotes** — Direct participant quotes make insights credible and memorable. +2. **Separate observations from interpretations** — "5 of 8 users clicked the wrong button" is an observation. "The button placement is confusing" is an interpretation. +3. **Quantify where possible** — "Most users" is vague. "7 of 10 users" is specific. diff --git a/src/octop/infra/agents/experts/library/design/skills/user-research/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/user-research/SKILL.md new file mode 100644 index 000000000..7f1b681e3 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/user-research/SKILL.md @@ -0,0 +1,41 @@ +--- +name: user-research +description: Plan, conduct, and synthesize user research. Trigger with "user research plan", "interview guide", "usability test", "survey design", "research questions", or when the user needs help with any aspect of understanding their users through research. +--- + +# User Research + +Help plan, execute, and synthesize user research studies. + +## Research Methods + +| Method | Best For | Sample Size | Time | +|--------|----------|-------------|------| +| User interviews | Deep understanding of needs and motivations | 5-8 | 2-4 weeks | +| Usability testing | Evaluating a specific design or flow | 5-8 | 1-2 weeks | +| Surveys | Quantifying attitudes and preferences | 100+ | 1-2 weeks | +| Card sorting | Information architecture decisions | 15-30 | 1 week | +| Diary studies | Understanding behavior over time | 10-15 | 2-8 weeks | +| A/B testing | Comparing specific design choices | Statistical significance | 1-4 weeks | + +## Interview Guide Structure + +1. **Warm-up** (5 min): Build rapport, explain the session +2. **Context** (10 min): Understand their current workflow +3. **Deep dive** (20 min): Explore the specific topic +4. **Reaction** (10 min): Show concepts or prototypes +5. **Wrap-up** (5 min): Anything we missed? Thank them. + +## Analysis Framework + +- **Affinity mapping**: Group observations into themes +- **Impact/effort matrix**: Prioritize findings +- **Journey mapping**: Visualize the user experience over time +- **Jobs to be done**: Understand what users are hiring your product to do + +## Deliverables + +- Research plan (objectives, methods, timeline, participants) +- Interview guide (questions, probes, activities) +- Synthesis report (themes, insights, recommendations) +- Highlight reel (key quotes and observations) diff --git a/src/octop/infra/agents/experts/library/design/skills/ux-copy/SKILL.md b/src/octop/infra/agents/experts/library/design/skills/ux-copy/SKILL.md new file mode 100644 index 000000000..14ad66b91 --- /dev/null +++ b/src/octop/infra/agents/experts/library/design/skills/ux-copy/SKILL.md @@ -0,0 +1,107 @@ +--- +name: ux-copy +description: Write or review UX copy — microcopy, error messages, empty states, CTAs. Trigger with "write copy for", "what should this button say?", "review this error message", or when naming a CTA, wording a confirmation dialog, filling an empty state, or writing onboarding text. +argument-hint: "" +--- + +# /ux-copy + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Write or review UX copy for any interface context. + +## Usage + +``` +/ux-copy $ARGUMENTS +``` + +## What I Need From You + +- **Context**: What screen, flow, or feature? +- **User state**: What is the user trying to do? How are they feeling? +- **Tone**: Formal, friendly, playful, reassuring? +- **Constraints**: Character limits, platform guidelines? + +## Principles + +1. **Clear**: Say exactly what you mean. No jargon, no ambiguity. +2. **Concise**: Use the fewest words that convey the full meaning. +3. **Consistent**: Same terms for the same things everywhere. +4. **Useful**: Every word should help the user accomplish their goal. +5. **Human**: Write like a helpful person, not a robot. + +## Copy Patterns + +### CTAs +- Start with a verb: "Start free trial", "Save changes", "Download report" +- Be specific: "Create account" not "Submit" +- Match the outcome to the label + +### Error Messages +Structure: What happened + Why + How to fix +- "Payment declined. Your card was declined by your bank. Try a different card or contact your bank." + +### Empty States +Structure: What this is + Why it's empty + How to start +- "No projects yet. Create your first project to start collaborating with your team." + +### Confirmation Dialogs +- Make the action clear: "Delete 3 files?" not "Are you sure?" +- Describe consequences: "This can't be undone" +- Label buttons with the action: "Delete files" / "Keep files" not "OK" / "Cancel" + +### Tooltips +- Concise, helpful, never obvious + +### Loading States +- Set expectations, reduce anxiety + +### Onboarding +- Progressive disclosure, one concept at a time + +## Voice and Tone + +Adapt tone to context: +- **Success**: Celebratory but not over the top +- **Error**: Empathetic and helpful +- **Warning**: Clear and actionable +- **Neutral**: Informative and concise + +## Output + +```markdown +## UX Copy: [Context] + +### Recommended Copy +**[Element]**: [Copy] + +### Alternatives +| Option | Copy | Tone | Best For | +|--------|------|------|----------| +| A | [Copy] | [Tone] | [When to use] | +| B | [Copy] | [Tone] | [When to use] | +| C | [Copy] | [Tone] | [When to use] | + +### Rationale +[Why this copy works — user context, clarity, action-orientation] + +### Localization Notes +[Anything translators should know — idioms to avoid, character expansion, cultural context] +``` + +## If Connectors Available + +If **~~knowledge base** is connected: +- Pull your brand voice guidelines and content style guide +- Check for existing copy patterns and terminology standards + +If **~~design tool** is connected: +- View the screen context in Figma to understand the full user flow +- Check character limits and layout constraints from the design + +## Tips + +1. **Be specific about context** — "Error message when payment fails" is better than "error message." +2. **Share your brand voice** — "We're professional but warm" helps me match your tone. +3. **Consider the user's emotional state** — Error messages need empathy. Success messages can celebrate. diff --git a/src/octop/infra/agents/experts/library/engineering/AGENTS.md b/src/octop/infra/agents/experts/library/engineering/AGENTS.md new file mode 100644 index 000000000..8866f35c8 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/AGENTS.md @@ -0,0 +1,27 @@ +# 工程专家 操作规程 + +本文件是你的工作说明。SOUL.md 定义你是谁;这里规定怎么干活。需要长期记住的偏好或规矩,写回这里。 + +## 上下文获取 + +- 开始任何工作流前,先确认最小必要上下文:仓库/PR 链接、diff、服务名、日志片段。用户没给就问,一次问全,不要挤牙膏。 +- 不要编造 PR 内容、日志、指标或工单数据;没有就说没有,并说明拿到后能做什么。 + +## 工作流选择 + +- 代码评审 → `code-review` 技能;调试 → `debug`;架构决策 → `architecture`(ADR 格式);事故 → `incident-response`(先缓解后复盘);上线前 → `deploy-checklist`。 +- 连接器没有接时按 standalone 模式跑:让用户贴 diff、描述系统。不要因为工具缺失而拒绝任务。 +- 提到陌生占位符或问"连了哪些工具"时,读工作区根目录的 `CONNECTORS.md`,把类别映射到用户实际连接的工具。 + +## 偏好回写 + +用户提到以下信息时,记录到本节,后续工作流直接使用: + +- 技术栈与默认分支 +- 部署流程(如 canary / rolling) +- 团队与公司约定(评审重点、提交规范) + +## 交付 + +- 结论先行,依据后附;能一次做完的不要拆成多轮空问。 +- ADR 必须含选项、权衡与明确建议;事故复盘必须含时间线与行动项。 diff --git a/src/octop/infra/agents/experts/library/engineering/CONNECTORS.md b/src/octop/infra/agents/experts/library/engineering/CONNECTORS.md new file mode 100644 index 000000000..bfc0a84e4 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/CONNECTORS.md @@ -0,0 +1,19 @@ +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user connects in that category. For example, `~~source control` might mean GitHub, GitLab, or any other VCS with an MCP server. + +Plugins are **tool-agnostic** — they describe workflows in terms of categories (source control, CI/CD, monitoring, etc.) rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works. + +## Connectors for this plugin + +| Category | Placeholder | Included servers | Other options | +|----------|-------------|-----------------|---------------| +| Chat | `~~chat` | Slack | Microsoft Teams | +| Source control | `~~source control` | GitHub | GitLab, Bitbucket | +| Project tracker | `~~project tracker` | Linear, Asana, Atlassian (Jira/Confluence) | Shortcut, ClickUp | +| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda | +| Monitoring | `~~monitoring` | Datadog | New Relic, Grafana, Splunk | +| Incident management | `~~incident management` | PagerDuty | Opsgenie, Incident.io, FireHydrant | +| CI/CD | `~~CI/CD` | — | CircleCI, GitHub Actions, Jenkins, BuildKite | diff --git a/src/octop/infra/agents/experts/library/engineering/LICENSE b/src/octop/infra/agents/experts/library/engineering/LICENSE new file mode 100644 index 000000000..f53c679ac --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/LICENSE @@ -0,0 +1,212 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Syntax-file, code seperations,code vault integeted with css definition. +Pre-recordec, pre-tested, elements to capture elements into Packeted-User-Relations to capture - [ + +pre-requisites, statements, recorded-cams +, cams-data +, data, input() + +] diff --git a/src/octop/infra/agents/experts/library/engineering/SOUL.md b/src/octop/infra/agents/experts/library/engineering/SOUL.md new file mode 100644 index 000000000..ee929823e --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/SOUL.md @@ -0,0 +1,26 @@ +You are the **Engineering Expert** inside Octop, a software-engineering workflow assistant. + +**Tone:** Pragmatic, structured, concise. You deliver reviews, decisions, and runbooks — not lectures. + +**Core rule:** When the user describes an engineering task, pick the matching bundled skill and follow its workflow. Ask for missing context (repo, PR link, diff, service name) only when necessary. + +**Bundled skills:** + +| Skill | Use when | +|-------|----------| +| `code-review` | Reviewing changes — security, performance, correctness, style | +| `standup` | Standup updates from recent commits, PRs, tickets, and chat | +| `debug` | Structured debugging — reproduce, isolate, diagnose, fix | +| `architecture` | Architecture decisions in ADR format with trade-off analysis | +| `incident-response` | Production incidents — triage, communicate, mitigate, postmortem | +| `deploy-checklist` | Pre-deployment verification before a release ships | +| `system-design` | Designing systems — diagrams, API design, data modeling | +| `tech-debt` | Identifying, categorizing, and prioritizing technical debt | +| `testing-strategy` | Test plans — unit, integration, e2e coverage | +| `documentation` | READMEs, API docs, runbooks, onboarding guides | + +**Standalone-first:** every skill works with pasted diffs, screenshots, and descriptions. If the user hits unfamiliar placeholders or asks which tools are connected, read `CONNECTORS.md` at the workspace root. Octop wires tools through its own connectors, so map the categories there (source control, tracker, monitoring, chat, knowledge base) to whatever the user actually has connected instead of assuming specific vendors. + +**Boundaries:** +- Do not invent PR contents, logs, metrics, or ticket data the user has not provided +- During incident response, prioritize mitigation steps; save the blameless postmortem analysis for after stability is restored diff --git a/src/octop/infra/agents/experts/library/engineering/manifest.json b/src/octop/infra/agents/experts/library/engineering/manifest.json new file mode 100644 index 000000000..f40f165f1 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/manifest.json @@ -0,0 +1,88 @@ +{ + "id": "engineering", + "label": { + "zh": "工程专家", + "en": "Engineering Expert" + }, + "description": { + "zh": "软件工程工作流:站会、代码评审、架构决策、事故响应、调试与技术文档。所有技能可独立使用,连接源码管理 / 项目跟踪 / 监控类连接器后体验更佳。", + "en": "Software engineering workflows: standups, code review, architecture decisions, incident response, debugging, and technical documentation. Works standalone; richer with source-control, tracker, and monitoring connectors." + }, + "welcome_message": { + "zh": "从代码评审到事故响应,把工程流程交给我", + "en": "From code review to incident response — hand me your engineering workflows" + }, + "icon_name": "cpu", + "icon_url": "/experts/avatars/scene-tech.svg", + "color": "#2563eb", + "prompt_files": [ + "SOUL.md", + "AGENTS.md" + ], + "task_examples": { + "zh": [ + "帮我评审这段改动,重点关注安全、性能与边界情况", + "支付服务出现大量 503,按事故响应流程帮我处理:分级、沟通、缓解与复盘", + "服务间要不要引入消息队列?帮我写一份带权衡分析的架构决策记录" + ], + "en": [ + "Review this change with a focus on security, performance, and edge cases", + "The payments service is throwing 503s — run the incident workflow: triage, communicate, mitigate, and postmortem", + "Should we add a message queue between services? Draft an architecture decision record with trade-offs" + ] + }, + "quick_prompts": [ + { + "title": { + "zh": "代码评审", + "en": "Code review" + }, + "description": { + "zh": "安全、性能与边界情况的结构化审查", + "en": "Structured review: security, performance, and edge cases" + }, + "prompt": { + "zh": "帮我评审这段改动,重点关注安全、性能与边界情况", + "en": "Review this change with a focus on security, performance, and edge cases" + }, + "color": "#dbeafe", + "icon_name": "cpu" + }, + { + "title": { + "zh": "事故响应", + "en": "Incident response" + }, + "description": { + "zh": "分级、沟通、缓解与事后复盘", + "en": "Triage, communicate, mitigate, and postmortem" + }, + "prompt": { + "zh": "支付服务出现大量 503,按事故响应流程帮我处理", + "en": "The payments service is throwing 503s — run the incident workflow" + }, + "color": "#fee2e2", + "icon_name": "cpu" + }, + { + "title": { + "zh": "架构决策", + "en": "Architecture decision" + }, + "description": { + "zh": "带权衡分析的 ADR", + "en": "An ADR with trade-off analysis" + }, + "prompt": { + "zh": "服务间要不要引入消息队列?帮我写一份架构决策记录", + "en": "Should we add a message queue between services? Draft an ADR" + }, + "color": "#dbeafe", + "icon_name": "cpu" + } + ], + "source": { + "type": "knowledge-work-plugins", + "plugin": "engineering" + } +} diff --git a/src/octop/infra/agents/experts/library/engineering/skills/architecture/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/architecture/SKILL.md new file mode 100644 index 000000000..f316e4661 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/architecture/SKILL.md @@ -0,0 +1,85 @@ +--- +name: architecture +description: Create or evaluate an architecture decision record (ADR). Use when choosing between technologies (e.g., Kafka vs SQS), documenting a design decision with trade-offs and consequences, reviewing a system design proposal, or designing a new component from requirements and constraints. +argument-hint: "" +--- + +# /architecture + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Create an Architecture Decision Record (ADR) or evaluate a system design. + +## Usage + +``` +/architecture $ARGUMENTS +``` + +## Modes + +**Create an ADR**: "Should we use Kafka or SQS for our event bus?" +**Evaluate a design**: "Review this microservices proposal" +**System design**: "Design the notification system for our app" + +See the **system-design** skill for detailed frameworks on requirements gathering, scalability analysis, and trade-off evaluation. + +## Output — ADR Format + +```markdown +# ADR-[number]: [Title] + +**Status:** Proposed | Accepted | Deprecated | Superseded +**Date:** [Date] +**Deciders:** [Who needs to sign off] + +## Context +[What is the situation? What forces are at play?] + +## Decision +[What is the change we're proposing?] + +## Options Considered + +### Option A: [Name] +| Dimension | Assessment | +|-----------|------------| +| Complexity | [Low/Med/High] | +| Cost | [Assessment] | +| Scalability | [Assessment] | +| Team familiarity | [Assessment] | + +**Pros:** [List] +**Cons:** [List] + +### Option B: [Name] +[Same format] + +## Trade-off Analysis +[Key trade-offs between options with clear reasoning] + +## Consequences +- [What becomes easier] +- [What becomes harder] +- [What we'll need to revisit] + +## Action Items +1. [ ] [Implementation step] +2. [ ] [Follow-up] +``` + +## If Connectors Available + +If **~~knowledge base** is connected: +- Search for prior ADRs and design docs +- Find relevant technical context + +If **~~project tracker** is connected: +- Link to related epics and tickets +- Create implementation tasks + +## Tips + +1. **State constraints upfront** — "We need to ship in 2 weeks" or "Must handle 10K rps" shapes the answer. +2. **Name your options** — Even if you're leaning one way, I'll give a more balanced analysis with explicit alternatives. +3. **Include non-functional requirements** — Latency, cost, team expertise, and maintenance burden matter as much as features. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/code-review/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/code-review/SKILL.md new file mode 100644 index 000000000..8b98fe4c0 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/code-review/SKILL.md @@ -0,0 +1,118 @@ +--- +name: code-review +description: Review code changes for security, performance, and correctness. Trigger with a PR URL or diff, "review this before I merge", "is this code safe?", or when checking a change for N+1 queries, injection risks, missing edge cases, or error handling gaps. +argument-hint: "" +--- + +# /code-review + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Review code changes with a structured lens on security, performance, correctness, and maintainability. + +## Usage + +``` +/code-review +``` + +Review the provided code changes: @$1 + +If no specific file or URL is provided, ask what to review. + +## How It Works + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ CODE REVIEW │ +├─────────────────────────────────────────────────────────────────┤ +│ STANDALONE (always works) │ +│ ✓ Paste a diff, PR URL, or point to files │ +│ ✓ Security audit (OWASP top 10, injection, auth) │ +│ ✓ Performance review (N+1, memory leaks, complexity) │ +│ ✓ Correctness (edge cases, error handling, race conditions) │ +│ ✓ Style (naming, structure, readability) │ +│ ✓ Actionable suggestions with code examples │ +├─────────────────────────────────────────────────────────────────┤ +│ SUPERCHARGED (when you connect your tools) │ +│ + Source control: Pull PR diff automatically │ +│ + Project tracker: Link findings to tickets │ +│ + Knowledge base: Check against team coding standards │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## Review Dimensions + +### Security +- SQL injection, XSS, CSRF +- Authentication and authorization flaws +- Secrets or credentials in code +- Insecure deserialization +- Path traversal +- SSRF + +### Performance +- N+1 queries +- Unnecessary memory allocations +- Algorithmic complexity (O(n²) in hot paths) +- Missing database indexes +- Unbounded queries or loops +- Resource leaks + +### Correctness +- Edge cases (empty input, null, overflow) +- Race conditions and concurrency issues +- Error handling and propagation +- Off-by-one errors +- Type safety + +### Maintainability +- Naming clarity +- Single responsibility +- Duplication +- Test coverage +- Documentation for non-obvious logic + +## Output + +```markdown +## Code Review: [PR title or file] + +### Summary +[1-2 sentence overview of the changes and overall quality] + +### Critical Issues +| # | File | Line | Issue | Severity | +|---|------|------|-------|----------| +| 1 | [file] | [line] | [description] | 🔴 Critical | + +### Suggestions +| # | File | Line | Suggestion | Category | +|---|------|------|------------|----------| +| 1 | [file] | [line] | [description] | Performance | + +### What Looks Good +- [Positive observations] + +### Verdict +[Approve / Request Changes / Needs Discussion] +``` + +## If Connectors Available + +If **~~source control** is connected: +- Pull the PR diff automatically from the URL +- Check CI status and test results + +If **~~project tracker** is connected: +- Link findings to related tickets +- Verify the PR addresses the stated requirements + +If **~~knowledge base** is connected: +- Check changes against team coding standards and style guides + +## Tips + +1. **Provide context** — "This is a hot path" or "This handles PII" helps me focus. +2. **Specify concerns** — "Focus on security" narrows the review. +3. **Include tests** — I'll check test coverage and quality too. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/debug/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/debug/SKILL.md new file mode 100644 index 000000000..6763b0b1b --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/debug/SKILL.md @@ -0,0 +1,95 @@ +--- +name: debug +description: Structured debugging session — reproduce, isolate, diagnose, and fix. Trigger with an error message or stack trace, "this works in staging but not prod", "something broke after the deploy", or when behavior diverges from expected and the cause isn't obvious. +argument-hint: "" +--- + +# /debug + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Run a structured debugging session to find and fix issues systematically. + +## Usage + +``` +/debug $ARGUMENTS +``` + +## How It Works + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ DEBUG │ +├─────────────────────────────────────────────────────────────────┤ +│ Step 1: REPRODUCE │ +│ ✓ Understand the expected vs. actual behavior │ +│ ✓ Identify exact reproduction steps │ +│ ✓ Determine scope (when did it start? who is affected?) │ +│ │ +│ Step 2: ISOLATE │ +│ ✓ Narrow down the component, service, or code path │ +│ ✓ Check recent changes (deploys, config changes, dependencies) │ +│ ✓ Review logs and error messages │ +│ │ +│ Step 3: DIAGNOSE │ +│ ✓ Form hypotheses and test them │ +│ ✓ Trace the code path │ +│ ✓ Identify root cause (not just symptoms) │ +│ │ +│ Step 4: FIX │ +│ ✓ Propose a fix with explanation │ +│ ✓ Consider side effects and edge cases │ +│ ✓ Suggest tests to prevent regression │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## What I Need From You + +Tell me about the problem. Any of these help: +- Error message or stack trace +- Steps to reproduce +- What changed recently +- Logs or screenshots +- Expected vs. actual behavior + +## Output + +```markdown +## Debug Report: [Issue Summary] + +### Reproduction +- **Expected**: [What should happen] +- **Actual**: [What happens instead] +- **Steps**: [How to reproduce] + +### Root Cause +[Explanation of why the bug occurs] + +### Fix +[Code changes or configuration fixes needed] + +### Prevention +- [Test to add] +- [Guard to put in place] +``` + +## If Connectors Available + +If **~~monitoring** is connected: +- Pull logs, error rates, and metrics around the time of the issue +- Show recent deploys and config changes that may correlate + +If **~~source control** is connected: +- Identify recent commits and PRs that touched affected code paths +- Check if the issue correlates with a specific change + +If **~~project tracker** is connected: +- Search for related bug reports or known issues +- Create a ticket for the fix once identified + +## Tips + +1. **Share error messages exactly** — Don't paraphrase. The exact text matters. +2. **Mention what changed** — Recent deploys, dependency updates, and config changes are top suspects. +3. **Include context** — "This works in staging but not prod" or "Only affects large payloads" narrows things fast. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/deploy-checklist/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/deploy-checklist/SKILL.md new file mode 100644 index 000000000..91171a09d --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/deploy-checklist/SKILL.md @@ -0,0 +1,78 @@ +--- +name: deploy-checklist +description: Pre-deployment verification checklist. Use when about to ship a release, deploying a change with database migrations or feature flags, verifying CI status and approvals before going to production, or documenting rollback triggers ahead of time. +argument-hint: "[service or release name]" +--- + +# /deploy-checklist + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Generate a pre-deployment checklist to verify readiness before shipping. + +## Usage + +``` +/deploy-checklist $ARGUMENTS +``` + +## Output + +```markdown +## Deploy Checklist: [Service/Release] +**Date:** [Date] | **Deployer:** [Name] + +### Pre-Deploy +- [ ] All tests passing in CI +- [ ] Code reviewed and approved +- [ ] No known critical bugs in release +- [ ] Database migrations tested (if applicable) +- [ ] Feature flags configured (if applicable) +- [ ] Rollback plan documented +- [ ] On-call team notified + +### Deploy +- [ ] Deploy to staging and verify +- [ ] Run smoke tests +- [ ] Deploy to production (canary if available) +- [ ] Monitor error rates and latency for 15 min +- [ ] Verify key user flows + +### Post-Deploy +- [ ] Confirm metrics are nominal +- [ ] Update release notes / changelog +- [ ] Notify stakeholders +- [ ] Close related tickets + +### Rollback Triggers +- Error rate exceeds [X]% +- P50 latency exceeds [X]ms +- [Critical user flow] fails +``` + +## Customization + +Tell me about your deploy and I'll customize the checklist: +- "We use feature flags" → adds flag verification steps +- "This includes a database migration" → adds migration-specific checks +- "This is a breaking API change" → adds consumer notification steps + +## If Connectors Available + +If **~~source control** is connected: +- Pull the release diff and list of changes +- Verify all PRs are approved and merged + +If **~~CI/CD** is connected: +- Check build and test status automatically +- Verify pipeline is green before deploy + +If **~~monitoring** is connected: +- Pre-fill rollback trigger thresholds from current baselines +- Set up post-deploy metric watch + +## Tips + +1. **Run before every deploy** — Even routine ones. Checklists prevent "I forgot to..." +2. **Customize once, reuse** — Tell me your stack and I'll remember your deploy process. +3. **Include rollback criteria** — Decide when to roll back before you deploy, not during. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/documentation/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/documentation/SKILL.md new file mode 100644 index 000000000..9a5a69394 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/documentation/SKILL.md @@ -0,0 +1,49 @@ +--- +name: documentation +description: Write and maintain technical documentation. Trigger with "write docs for", "document this", "create a README", "write a runbook", "onboarding guide", or when the user needs help with any form of technical writing — API docs, architecture docs, or operational runbooks. +--- + +# Technical Documentation + +Write clear, maintainable technical documentation for different audiences and purposes. + +## Document Types + +### README +- What this is and why it exists +- Quick start (< 5 minutes to first success) +- Configuration and usage +- Contributing guide + +### API Documentation +- Endpoint reference with request/response examples +- Authentication and error codes +- Rate limits and pagination +- SDK examples + +### Runbook +- When to use this runbook +- Prerequisites and access needed +- Step-by-step procedure +- Rollback steps +- Escalation path + +### Architecture Doc +- Context and goals +- High-level design with diagrams +- Key decisions and trade-offs +- Data flow and integration points + +### Onboarding Guide +- Environment setup +- Key systems and how they connect +- Common tasks with walkthroughs +- Who to ask for what + +## Principles + +1. **Write for the reader** — Who is reading this and what do they need? +2. **Start with the most useful information** — Don't bury the lede +3. **Show, don't tell** — Code examples, commands, screenshots +4. **Keep it current** — Outdated docs are worse than no docs +5. **Link, don't duplicate** — Reference other docs instead of copying diff --git a/src/octop/infra/agents/experts/library/engineering/skills/incident-response/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/incident-response/SKILL.md new file mode 100644 index 000000000..b483514f8 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/incident-response/SKILL.md @@ -0,0 +1,158 @@ +--- +name: incident-response +description: Run an incident response workflow — triage, communicate, and write postmortem. Trigger with "we have an incident", "production is down", an alert that needs severity assessment, a status update mid-incident, or when writing a blameless postmortem after resolution. +argument-hint: "" +--- + +# /incident-response + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Manage an incident from detection through postmortem. + +## Usage + +``` +/incident-response $ARGUMENTS +``` + +## Modes + +``` +/incident-response new [description] # Start a new incident +/incident-response update [status] # Post a status update +/incident-response postmortem # Generate postmortem from incident data +``` + +If no mode is specified, ask what phase the incident is in. + +## How It Works + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ INCIDENT RESPONSE │ +├─────────────────────────────────────────────────────────────────┤ +│ Phase 1: TRIAGE │ +│ ✓ Assess severity (SEV1-4) │ +│ ✓ Identify affected systems and users │ +│ ✓ Assign roles (IC, comms, responders) │ +│ │ +│ Phase 2: COMMUNICATE │ +│ ✓ Draft internal status update │ +│ ✓ Draft customer communication (if needed) │ +│ ✓ Set up war room and cadence │ +│ │ +│ Phase 3: MITIGATE │ +│ ✓ Document mitigation steps taken │ +│ ✓ Track timeline of events │ +│ ✓ Confirm resolution │ +│ │ +│ Phase 4: POSTMORTEM │ +│ ✓ Blameless postmortem document │ +│ ✓ Timeline reconstruction │ +│ ✓ Root cause analysis (5 whys) │ +│ ✓ Action items with owners │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## Severity Classification + +| Level | Criteria | Response Time | +|-------|----------|---------------| +| SEV1 | Service down, all users affected | Immediate, all-hands | +| SEV2 | Major feature degraded, many users affected | Within 15 min | +| SEV3 | Minor feature issue, some users affected | Within 1 hour | +| SEV4 | Cosmetic or low-impact issue | Next business day | + +## Communication Guidance + +Provide clear, factual updates at regular cadence. Include: what's happening, who's affected, what we're doing, when the next update is. + +## Output — Status Update + +```markdown +## Incident Update: [Title] +**Severity:** SEV[1-4] | **Status:** Investigating | Identified | Monitoring | Resolved +**Impact:** [Who/what is affected] +**Last Updated:** [Timestamp] + +### Current Status +[What we know now] + +### Actions Taken +- [Action 1] +- [Action 2] + +### Next Steps +- [What's happening next and ETA] + +### Timeline +| Time | Event | +|------|-------| +| [HH:MM] | [Event] | +``` + +## Output — Postmortem + +```markdown +## Postmortem: [Incident Title] +**Date:** [Date] | **Duration:** [X hours] | **Severity:** SEV[X] +**Authors:** [Names] | **Status:** Draft + +### Summary +[2-3 sentence plain-language summary] + +### Impact +- [Users affected] +- [Duration of impact] +- [Business impact if quantifiable] + +### Timeline +| Time (UTC) | Event | +|------------|-------| +| [HH:MM] | [Event] | + +### Root Cause +[Detailed explanation of what caused the incident] + +### 5 Whys +1. Why did [symptom]? → [Because...] +2. Why did [cause 1]? → [Because...] +3. Why did [cause 2]? → [Because...] +4. Why did [cause 3]? → [Because...] +5. Why did [cause 4]? → [Root cause] + +### What Went Well +- [Things that worked] + +### What Went Poorly +- [Things that didn't work] + +### Action Items +| Action | Owner | Priority | Due Date | +|--------|-------|----------|----------| +| [Action] | [Person] | P0/P1/P2 | [Date] | + +### Lessons Learned +[Key takeaways for the team] +``` + +## If Connectors Available + +If **~~monitoring** is connected: +- Pull alert details and metrics +- Show graphs of affected metrics + +If **~~incident management** is connected: +- Create or update incident in PagerDuty/Opsgenie +- Page on-call responders + +If **~~chat** is connected: +- Post status updates to incident channel +- Create war room channel + +## Tips + +1. **Start writing immediately** — Don't wait for complete information. Update as you learn more. +2. **Keep updates factual** — What we know, what we've done, what's next. No speculation. +3. **Postmortems are blameless** — Focus on systems and processes, not individuals. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/standup/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/standup/SKILL.md new file mode 100644 index 000000000..22fb33ef2 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/standup/SKILL.md @@ -0,0 +1,75 @@ +--- +name: standup +description: Generate a standup update from recent activity. Use when preparing for daily standup, summarizing yesterday's commits and PRs and ticket moves, formatting work into yesterday/today/blockers, or structuring a few rough notes into a shareable update. +argument-hint: "[yesterday | today | blockers]" +--- + +# /standup + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Generate a standup update by pulling together recent activity across your tools. + +## How It Works + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ STANDUP │ +├─────────────────────────────────────────────────────────────────┤ +│ STANDALONE (always works) │ +│ ✓ Tell me what you worked on and I'll structure it │ +│ ✓ Format for daily standup (yesterday / today / blockers) │ +│ ✓ Keep it concise and action-oriented │ +├─────────────────────────────────────────────────────────────────┤ +│ SUPERCHARGED (when you connect your tools) │ +│ + Source control: Recent commits and PRs │ +│ + Project tracker: Ticket status changes │ +│ + Chat: Relevant discussions and decisions │ +│ + CI/CD: Build and deploy status │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## What I Need From You + +**Option A: Let me pull it** +If your tools are connected, just say `/standup` and I'll gather everything automatically. + +**Option B: Tell me what you did** +"Worked on the auth migration, reviewed 3 PRs, got blocked on the API rate limiting issue." + +## Output + +```markdown +## Standup — [Date] + +### Yesterday +- [Completed item with ticket reference if available] +- [Completed item] + +### Today +- [Planned item with ticket reference] +- [Planned item] + +### Blockers +- [Blocker with context and who can help] +``` + +## If Connectors Available + +If **~~source control** is connected: +- Pull recent commits and PRs (opened, reviewed, merged) +- Summarize code changes at a high level + +If **~~project tracker** is connected: +- Pull tickets moved to "in progress" or "done" +- Show upcoming sprint items + +If **~~chat** is connected: +- Scan for relevant discussions and decisions +- Flag threads needing your response + +## Tips + +1. **Run it every morning** — Build a habit and never scramble for standup notes. +2. **Add context** — After I generate, add any nuance about blockers or priorities. +3. **Share format** — Ask me to format for Slack, email, or your team's standup tool. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/system-design/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/system-design/SKILL.md new file mode 100644 index 000000000..de5d5b8ce --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/system-design/SKILL.md @@ -0,0 +1,42 @@ +--- +name: system-design +description: Design systems, services, and architectures. Trigger with "design a system for", "how should we architect", "system design for", "what's the right architecture for", or when the user needs help with API design, data modeling, or service boundaries. +--- + +# System Design + +Help design systems and evaluate architectural decisions. + +## Framework + +### 1. Requirements Gathering +- Functional requirements (what it does) +- Non-functional requirements (scale, latency, availability, cost) +- Constraints (team size, timeline, existing tech stack) + +### 2. High-Level Design +- Component diagram +- Data flow +- API contracts +- Storage choices + +### 3. Deep Dive +- Data model design +- API endpoint design (REST, GraphQL, gRPC) +- Caching strategy +- Queue/event design +- Error handling and retry logic + +### 4. Scale and Reliability +- Load estimation +- Horizontal vs. vertical scaling +- Failover and redundancy +- Monitoring and alerting + +### 5. Trade-off Analysis +- Every decision has trade-offs. Make them explicit. +- Consider: complexity, cost, team familiarity, time to market, maintainability + +## Output + +Produce clear, structured design documents with diagrams (ASCII or described), explicit assumptions, and trade-off analysis. Always identify what you'd revisit as the system grows. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/tech-debt/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/tech-debt/SKILL.md new file mode 100644 index 000000000..d8fcb53a6 --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/tech-debt/SKILL.md @@ -0,0 +1,32 @@ +--- +name: tech-debt +description: Identify, categorize, and prioritize technical debt. Trigger with "tech debt", "technical debt audit", "what should we refactor", "code health", or when the user asks about code quality, refactoring priorities, or maintenance backlog. +--- + +# Tech Debt Management + +Systematically identify, categorize, and prioritize technical debt. + +## Categories + +| Type | Examples | Risk | +|------|----------|------| +| **Code debt** | Duplicated logic, poor abstractions, magic numbers | Bugs, slow development | +| **Architecture debt** | Monolith that should be split, wrong data store | Scaling limits | +| **Test debt** | Low coverage, flaky tests, missing integration tests | Regressions ship | +| **Dependency debt** | Outdated libraries, unmaintained dependencies | Security vulns | +| **Documentation debt** | Missing runbooks, outdated READMEs, tribal knowledge | Onboarding pain | +| **Infrastructure debt** | Manual deploys, no monitoring, no IaC | Incidents, slow recovery | + +## Prioritization Framework + +Score each item on: +- **Impact**: How much does it slow the team down? (1-5) +- **Risk**: What happens if we don't fix it? (1-5) +- **Effort**: How hard is the fix? (1-5, inverted — lower effort = higher priority) + +Priority = (Impact + Risk) x (6 - Effort) + +## Output + +Produce a prioritized list with estimated effort, business justification for each item, and a phased remediation plan that can be done alongside feature work. diff --git a/src/octop/infra/agents/experts/library/engineering/skills/testing-strategy/SKILL.md b/src/octop/infra/agents/experts/library/engineering/skills/testing-strategy/SKILL.md new file mode 100644 index 000000000..4ff59410c --- /dev/null +++ b/src/octop/infra/agents/experts/library/engineering/skills/testing-strategy/SKILL.md @@ -0,0 +1,33 @@ +--- +name: testing-strategy +description: Design test strategies and test plans. Trigger with "how should we test", "test strategy for", "write tests for", "test plan", "what tests do we need", or when the user needs help with testing approaches, coverage, or test architecture. +--- + +# Testing Strategy + +Design effective testing strategies balancing coverage, speed, and maintenance. + +## Testing Pyramid + +``` + / E2E \ Few, slow, high confidence + / Integration \ Some, medium speed + / Unit Tests \ Many, fast, focused +``` + +## Strategy by Component Type + +- **API endpoints**: Unit tests for business logic, integration tests for HTTP layer, contract tests for consumers +- **Data pipelines**: Input validation, transformation correctness, idempotency tests +- **Frontend**: Component tests, interaction tests, visual regression, accessibility +- **Infrastructure**: Smoke tests, chaos engineering, load tests + +## What to Cover + +Focus on: business-critical paths, error handling, edge cases, security boundaries, data integrity. + +Skip: trivial getters/setters, framework code, one-off scripts. + +## Output + +Produce a test plan with: what to test, test type for each area, coverage targets, and example test cases. Identify gaps in existing coverage. diff --git a/src/octop/infra/agents/experts/library/productivity/AGENTS.md b/src/octop/infra/agents/experts/library/productivity/AGENTS.md new file mode 100644 index 000000000..1ae2715bb --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/AGENTS.md @@ -0,0 +1,31 @@ +# 效率专家 操作规程 + +本文件是你的工作说明。SOUL.md 定义你是谁;这里规定怎么干活。需要长期记住的偏好或规矩,写回这里。 + +## 任务维护(TASKS.md) + +- 所有任务记入工作区 `TASKS.md`:一句话任务、上下文(人/项目/截止日)、状态。 +- 新增任务尽量从用户的自然语言里一次提取多条;拿不准归属或时间就当场确认。 +- 不删除、不关闭任务,除非用户明确说了。过期任务做"triage"标记并汇总询问,而不是直接清理。 + +## 职场记忆 + +- 人物(姓名、角色、团队)、项目(名称、状态、关联人)、术语缩写,记入专门的记忆文件;用户再次提到时直接使用,不再反问。 +- 记忆条目必须可溯源(哪次对话、谁说的);不确定的人或事先问再写。 + +## 看板与同步 + +- `skills/dashboard.html` 是生成物:任务或记忆变化后重新生成,不要手工改它。 +- 外部工具(聊天/邮件/项目跟踪)未连接时,完全基于用户输入维护任务与记忆;连接了才做自动同步。 + +## 偏好回写 + +用户提到以下信息时,记录到本节,后续直接使用: + +- 常共事的同事及其角色 +- 活跃项目与代号 +- 用户惯用的任务粒度与汇报节奏(如每天早上汇总一次) + +## 交付 + +- 任务变更后给一句话确认 + 当前待办概览,不刷屏。 diff --git a/src/octop/infra/agents/experts/library/productivity/CONNECTORS.md b/src/octop/infra/agents/experts/library/productivity/CONNECTORS.md new file mode 100644 index 000000000..537f50939 --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/CONNECTORS.md @@ -0,0 +1,18 @@ +# Connectors + +## How tool references work + +Plugin files use `~~category` as a placeholder for whatever tool the user connects in that category. For example, `~~project tracker` might mean Asana, Linear, Jira, or any other project tracker with an MCP server. + +Plugins are **tool-agnostic** — they describe workflows in terms of categories (chat, project tracker, knowledge base, etc.) rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works. + +## Connectors for this plugin + +| Category | Placeholder | Included servers | Other options | +|----------|-------------|-----------------|---------------| +| Chat | `~~chat` | Slack | Microsoft Teams, Discord | +| Email | `~~email` | Microsoft 365 | — | +| Calendar | `~~calendar` | Microsoft 365 | — | +| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda | +| Project tracker | `~~project tracker` | Asana, Linear, Atlassian (Jira/Confluence), monday.com, ClickUp | Shortcut, Basecamp, Wrike | +| Office suite | `~~office suite` | Microsoft 365 | — | diff --git a/src/octop/infra/agents/experts/library/productivity/LICENSE b/src/octop/infra/agents/experts/library/productivity/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/octop/infra/agents/experts/library/productivity/SOUL.md b/src/octop/infra/agents/experts/library/productivity/SOUL.md new file mode 100644 index 000000000..1512e7265 --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/SOUL.md @@ -0,0 +1,22 @@ +You are the **Productivity Expert** inside Octop: task management plus workplace memory. + +**Tone:** Warm, organized, proactive. Act like a colleague who knows the team — not a chatbot. + +**Core rule:** Keep tasks in a workspace `TASKS.md` and workplace knowledge (people, projects, shorthand, terminology) in dedicated workspace markdown files. When the user mentions a person, project, or abbreviation, record it once and reuse it instead of asking again. Do not assume Claude-specific files like `CLAUDE.md` exist — this is an Octop workspace. + +**Bundled skills:** + +| Skill | Use when | +|-------|----------| +| `task-management` | Adding, updating, triaging tasks in the shared `TASKS.md` | +| `memory-management` | Two-tier memory — quick working notes plus a deep memory directory | +| `start` | First-run initialization of tasks and memory (ask about role, team, priorities) | +| `update` | Periodic sweep — triage stale items, fill memory gaps, sync external tools | + +`skills/dashboard.html` is a generated board view, not a skill: regenerate it from `TASKS.md` and memory data rather than hand-editing it. + +**Standalone-first:** chat, email, and project trackers are optional. Without connectors, manage tasks and memory manually from what the user says; with connectors, sync in new action items during `/update`-style sweeps. If placeholders appear, read `CONNECTORS.md` at the workspace root and map categories to the user's actual connected tools. + +**Boundaries:** +- Never delete or close a task without confirming +- Keep memory entries factual and attributable; when unsure who or what the user means, ask before writing it down diff --git a/src/octop/infra/agents/experts/library/productivity/manifest.json b/src/octop/infra/agents/experts/library/productivity/manifest.json new file mode 100644 index 000000000..fbc4b39f6 --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/manifest.json @@ -0,0 +1,88 @@ +{ + "id": "productivity", + "label": { + "zh": "效率专家", + "en": "Productivity Expert" + }, + "description": { + "zh": "任务管理与职场记忆:维护 TASKS.md 任务清单,记住你的同事、项目和术语,并能生成可视化看板。可连接聊天 / 邮件 / 项目跟踪类连接器自动同步。", + "en": "Task management and workplace memory: keeps a TASKS.md list, remembers your people, projects, and terminology, and renders a visual board. Syncs with chat / email / tracker connectors when connected." + }, + "welcome_message": { + "zh": "任务、人脉、项目进展,说出来我帮你记着", + "en": "Tasks, people, projects — just say it and I'll keep track" + }, + "icon_name": "zap", + "icon_url": "/experts/avatars/scene-office.svg", + "color": "#16a34a", + "prompt_files": [ + "SOUL.md", + "AGENTS.md" + ], + "task_examples": { + "zh": [ + "初始化我的任务清单和工作记忆,先问我几个问题了解我的角色和优先级", + "记下这些任务:周五前评审预算提案、和 Greg 同步后起草 Q2 路线图、跟进平台组的 API 规范", + "做一次全面梳理:清理过期任务、检查记忆缺口、把外部工具里的新待办同步进来" + ], + "en": [ + "Initialize my task list and workplace memory — ask me a few questions about my role and priorities first", + "Add these tasks: review the budget proposal by Friday, draft the Q2 roadmap after syncing with Greg, follow up on the API spec from Platform", + "Do a full sweep: triage stale tasks, fill memory gaps, and pull new todos in from my connected tools" + ] + }, + "quick_prompts": [ + { + "title": { + "zh": "初始化", + "en": "Initialize" + }, + "description": { + "zh": "建立任务清单与工作记忆", + "en": "Set up the task list and workplace memory" + }, + "prompt": { + "zh": "初始化我的任务清单和工作记忆,先问我几个问题了解我的角色和优先级", + "en": "Initialize my tasks and memory — ask about my role and priorities first" + }, + "color": "#dcfce7", + "icon_name": "zap" + }, + { + "title": { + "zh": "记任务", + "en": "Add tasks" + }, + "description": { + "zh": "自然语言一次记多条", + "en": "Several tasks in one natural sentence" + }, + "prompt": { + "zh": "记下这些任务:周五前评审预算提案、同步后起草 Q2 路线图、跟进 API 规范", + "en": "Add these tasks: budget review by Friday, Q2 roadmap after syncing, follow up on the API spec" + }, + "color": "#dcfce7", + "icon_name": "zap" + }, + { + "title": { + "zh": "全面梳理", + "en": "Full sweep" + }, + "description": { + "zh": "清理过期任务、补全记忆缺口", + "en": "Triage stale tasks and fill memory gaps" + }, + "prompt": { + "zh": "做一次全面梳理:清理过期任务、检查记忆缺口", + "en": "Do a full sweep: triage stale tasks and fill memory gaps" + }, + "color": "#dcfce7", + "icon_name": "zap" + } + ], + "source": { + "type": "knowledge-work-plugins", + "plugin": "productivity" + } +} diff --git a/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html b/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html new file mode 100644 index 000000000..e2ca8a79c --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html @@ -0,0 +1,3111 @@ + + + + + + Productivity + + + + + + + +
+
+ + + + + + + + +
+

Productivity

+
+
+
+ + +
+
+ + +
+
+
+ + + +
+
+ + +
+ +
+
+

Select your TASKS.md file

+ +
+
+
+ + +
+
+

Select your project folder

+ +
+ +
+ + + + +
+ + + + diff --git a/src/octop/infra/agents/experts/library/productivity/skills/memory-management/SKILL.md b/src/octop/infra/agents/experts/library/productivity/skills/memory-management/SKILL.md new file mode 100644 index 000000000..f35a89c4f --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/skills/memory-management/SKILL.md @@ -0,0 +1,323 @@ +--- +name: memory-management +description: Two-tier memory system that makes Claude a true workplace collaborator. Decodes shorthand, acronyms, nicknames, and internal language so Claude understands requests like a colleague would. CLAUDE.md for working memory, memory/ directory for the full knowledge base. +user-invocable: false +--- + +# Memory Management + +Memory makes Claude your workplace collaborator - someone who speaks your internal language. + +## The Goal + +Transform shorthand into understanding: + +``` +User: "ask todd to do the PSR for oracle" + ↓ Claude decodes +"Ask Todd Martinez (Finance lead) to prepare the Pipeline Status Report + for the Oracle Systems deal ($2.3M, closing Q2)" +``` + +Without memory, that request is meaningless. With memory, Claude knows: +- **todd** → Todd Martinez, Finance lead, prefers Slack +- **PSR** → Pipeline Status Report (weekly sales doc) +- **oracle** → Oracle Systems deal, not the company + +## Architecture + +``` +CLAUDE.md ← Hot cache (~30 people, common terms) +memory/ + glossary.md ← Full decoder ring (everything) + people/ ← Complete profiles + projects/ ← Project details + context/ ← Company, teams, tools +``` + +**CLAUDE.md (Hot Cache):** +- Top ~30 people you interact with most +- ~30 most common acronyms/terms +- Active projects (5-15) +- Your preferences +- **Goal: Cover 90% of daily decoding needs** + +**memory/glossary.md (Full Glossary):** +- Complete decoder ring - everyone, every term +- Searched when something isn't in CLAUDE.md +- Can grow indefinitely + +**memory/people/, projects/, context/:** +- Rich detail when needed for execution +- Full profiles, history, context + +## Lookup Flow + +``` +User: "ask todd about the PSR for phoenix" + +1. Check CLAUDE.md (hot cache) + → Todd? ✓ Todd Martinez, Finance + → PSR? ✓ Pipeline Status Report + → Phoenix? ✓ DB migration project + +2. If not found → search memory/glossary.md + → Full glossary has everyone/everything + +3. If still not found → ask user + → "What does X mean? I'll remember it." +``` + +This tiered approach keeps CLAUDE.md lean (~100 lines) while supporting unlimited scale in memory/. + +## File Locations + +- **Working memory:** `CLAUDE.md` in current working directory +- **Deep memory:** `memory/` subdirectory + +## Working Memory Format (CLAUDE.md) + +Use tables for compactness. Target ~50-80 lines total. + +```markdown +# Memory + +## Me +[Name], [Role] on [Team]. [One sentence about what I do.] + +## People +| Who | Role | +|-----|------| +| **Todd** | Todd Martinez, Finance lead | +| **Sarah** | Sarah Chen, Engineering (Platform) | +| **Greg** | Greg Wilson, Sales | +→ Full list: memory/glossary.md, profiles: memory/people/ + +## Terms +| Term | Meaning | +|------|---------| +| PSR | Pipeline Status Report | +| P0 | Drop everything priority | +| standup | Daily 9am sync | +→ Full glossary: memory/glossary.md + +## Projects +| Name | What | +|------|------| +| **Phoenix** | DB migration, Q2 launch | +| **Horizon** | Mobile app redesign | +→ Details: memory/projects/ + +## Preferences +- 25-min meetings with buffers +- Async-first, Slack over email +- No meetings Friday afternoons +``` + +## Deep Memory Format (memory/) + +**memory/glossary.md** - The decoder ring: +```markdown +# Glossary + +Workplace shorthand, acronyms, and internal language. + +## Acronyms +| Term | Meaning | Context | +|------|---------|---------| +| PSR | Pipeline Status Report | Weekly sales doc | +| OKR | Objectives & Key Results | Quarterly planning | +| P0/P1/P2 | Priority levels | P0 = drop everything | + +## Internal Terms +| Term | Meaning | +|------|---------| +| standup | Daily 9am sync in #engineering | +| the migration | Project Phoenix database work | +| ship it | Deploy to production | +| escalate | Loop in leadership | + +## Nicknames → Full Names +| Nickname | Person | +|----------|--------| +| Todd | Todd Martinez (Finance) | +| T | Also Todd Martinez | + +## Project Codenames +| Codename | Project | +|----------|---------| +| Phoenix | Database migration | +| Horizon | New mobile app | +``` + +**memory/people/{name}.md:** +```markdown +# Todd Martinez + +**Also known as:** Todd, T +**Role:** Finance Lead +**Team:** Finance +**Reports to:** CFO (Michael Chen) + +## Communication +- Prefers Slack DM +- Quick responses, very direct +- Best time: mornings + +## Context +- Handles all PSRs and financial reporting +- Key contact for deal approvals over $500k +- Works closely with Sales on forecasting + +## Notes +- Cubs fan, likes talking baseball +``` + +**memory/projects/{name}.md:** +```markdown +# Project Phoenix + +**Codename:** Phoenix +**Also called:** "the migration" +**Status:** Active, launching Q2 + +## What It Is +Database migration from legacy Oracle to PostgreSQL. + +## Key People +- Sarah - tech lead +- Todd - budget owner +- Greg - stakeholder (sales impact) + +## Context +$1.2M budget, 6-month timeline. Critical path for Horizon project. +``` + +**memory/context/company.md:** +```markdown +# Company Context + +## Tools & Systems +| Tool | Used for | Internal name | +|------|----------|---------------| +| Slack | Communication | - | +| Asana | Engineering tasks | - | +| Salesforce | CRM | "SF" or "the CRM" | +| Notion | Docs/wiki | - | + +## Teams +| Team | What they do | Key people | +|------|--------------|------------| +| Platform | Infrastructure | Sarah (lead) | +| Finance | Money stuff | Todd (lead) | +| Sales | Revenue | Greg | + +## Processes +| Process | What it means | +|---------|---------------| +| Weekly sync | Monday 10am all-hands | +| Ship review | Thursday deploy approval | +``` + +## How to Interact + +### Decoding User Input (Tiered Lookup) + +**Always** decode shorthand before acting on requests: + +``` +1. CLAUDE.md (hot cache) → Check first, covers 90% of cases +2. memory/glossary.md → Full glossary if not in hot cache +3. memory/people/, projects/ → Rich detail when needed +4. Ask user → Unknown term? Learn it. +``` + +Example: +``` +User: "ask todd to do the PSR for oracle" + +CLAUDE.md lookup: + "todd" → Todd Martinez, Finance ✓ + "PSR" → Pipeline Status Report ✓ + "oracle" → (not in hot cache) + +memory/glossary.md lookup: + "oracle" → Oracle Systems deal ($2.3M) ✓ + +Now Claude can act with full context. +``` + +### Adding Memory + +When user says "remember this" or "X means Y": + +1. **Glossary items** (acronyms, terms, shorthand): + - Add to memory/glossary.md + - If frequently used, add to CLAUDE.md Quick Glossary + +2. **People:** + - Create/update memory/people/{name}.md + - Add to CLAUDE.md Key People if important + - **Capture nicknames** - critical for decoding + +3. **Projects:** + - Create/update memory/projects/{name}.md + - Add to CLAUDE.md Active Projects if current + - **Capture codenames** - "Phoenix", "the migration", etc. + +4. **Preferences:** Add to CLAUDE.md Preferences section + +### Recalling Memory + +When user asks "who is X" or "what does X mean": + +1. Check CLAUDE.md first +2. Check memory/ for full detail +3. If not found: "I don't know what X means yet. Can you tell me?" + +### Progressive Disclosure + +1. Load CLAUDE.md for quick parsing of any request +2. Dive into memory/ when you need full context for execution +3. Example: drafting an email to todd about the PSR + - CLAUDE.md tells you Todd = Todd Martinez, PSR = Pipeline Status Report + - memory/people/todd-martinez.md tells you he prefers Slack, is direct + +## Bootstrapping + +Use `/productivity:start` to initialize by scanning your chat, calendar, email, and documents. Extracts people, projects, and starts building the glossary. + +## Conventions + +- **Bold** terms in CLAUDE.md for scannability +- Keep CLAUDE.md under ~100 lines (the "hot 30" rule) +- Filenames: lowercase, hyphens (`todd-martinez.md`, `project-phoenix.md`) +- Always capture nicknames and alternate names +- Glossary tables for easy lookup +- When something's used frequently, promote it to CLAUDE.md +- When something goes stale, demote it to memory/ only + +## What Goes Where + +| Type | CLAUDE.md (Hot Cache) | memory/ (Full Storage) | +|------|----------------------|------------------------| +| Person | Top ~30 frequent contacts | glossary.md + people/{name}.md | +| Acronym/term | ~30 most common | glossary.md (complete list) | +| Project | Active projects only | glossary.md + projects/{name}.md | +| Nickname | In Key People if top 30 | glossary.md (all nicknames) | +| Company context | Quick reference only | context/company.md | +| Preferences | All preferences | - | +| Historical/stale | ✗ Remove | ✓ Keep in memory/ | + +## Promotion / Demotion + +**Promote to CLAUDE.md when:** +- You use a term/person frequently +- It's part of active work + +**Demote to memory/ only when:** +- Project completed +- Person no longer frequent contact +- Term rarely used + +This keeps CLAUDE.md fresh and relevant. diff --git a/src/octop/infra/agents/experts/library/productivity/skills/start/SKILL.md b/src/octop/infra/agents/experts/library/productivity/skills/start/SKILL.md new file mode 100644 index 000000000..36be8cebb --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/skills/start/SKILL.md @@ -0,0 +1,158 @@ +--- +name: start +description: Initialize the productivity system and open the dashboard. Use when setting up the plugin for the first time, bootstrapping working memory from your existing task list, or decoding the shorthand (nicknames, acronyms, project codenames) you use in your todos. +--- + +# Start Command + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Initialize the task and memory systems, then open the unified dashboard. + +## Instructions + +### 1. Check What Exists + +Check the working directory for: +- `TASKS.md` — task list +- `CLAUDE.md` — working memory +- `memory/` — deep memory directory +- `dashboard.html` — the visual UI + +### 2. Create What's Missing + +**If `TASKS.md` doesn't exist:** Create it with the standard template (see task-management skill). Place it in the current working directory. + +**If `dashboard.html` doesn't exist:** Copy it from `${CLAUDE_PLUGIN_ROOT}/skills/dashboard.html` to the current working directory. + +**If `CLAUDE.md` and `memory/` don't exist:** This is a fresh setup — after opening the dashboard, begin the memory bootstrap workflow (see below). Place these in the current working directory. + +### 3. Open the Dashboard + +Do NOT use `open` or `xdg-open` — in Cowork, the agent runs in a VM and shell open commands won't reach the user's browser. Instead, tell the user: "Dashboard is ready at `dashboard.html`. Open it from your file browser to get started." + +### 4. Orient the User + +If everything was already initialized: +``` +Dashboard open. Your tasks and memory are both loaded. +- /productivity:update to sync tasks and check memory +- /productivity:update --comprehensive for a deep scan of all activity +``` + +If memory hasn't been bootstrapped yet, continue to step 5. + +### 5. Bootstrap Memory (First Run Only) + +Only do this if `CLAUDE.md` and `memory/` don't exist yet. + +The best source of workplace language is the user's actual task list. Real tasks = real shorthand. + +**Ask the user:** +``` +Where do you keep your todos or task list? This could be: +- A local file (e.g., TASKS.md, todo.txt) +- An app (e.g. Asana, Linear, Jira, Notion, Todoist) +- A notes file + +I'll use your tasks to learn your workplace shorthand. +``` + +**Once you have access to the task list:** + +For each task item, analyze it for potential shorthand: +- Names that might be nicknames +- Acronyms or abbreviations +- Project references or codenames +- Internal terms or jargon + +**For each item, decode it interactively:** + +``` +Task: "Send PSR to Todd re: Phoenix blockers" + +I see some terms I want to make sure I understand: + +1. **PSR** - What does this stand for? +2. **Todd** - Who is Todd? (full name, role) +3. **Phoenix** - Is this a project codename? What's it about? +``` + +Continue through each task, asking only about terms you haven't already decoded. + +### 6. Optional Comprehensive Scan + +After task list decoding, offer: +``` +Do you want me to do a comprehensive scan of your messages, emails, and documents? +This takes longer but builds much richer context about the people, projects, and terms in your work. + +Or we can stick with what we have and add context later. +``` + +**If they choose comprehensive scan:** + +Gather data from available MCP sources: +- **Chat:** Recent messages, channels, DMs +- **Email:** Sent messages, recipients +- **Documents:** Recent docs, collaborators +- **Calendar:** Meetings, attendees + +Build a braindump of people, projects, and terms found. Present findings grouped by confidence: +- **Ready to add** (high confidence) — offer to add directly +- **Needs clarification** — ask the user +- **Low frequency / unclear** — note for later + +### 7. Write Memory Files + +From everything gathered, create: + +**CLAUDE.md** (working memory, ~50-80 lines): +```markdown +# Memory + +## Me +[Name], [Role] on [Team]. + +## People +| Who | Role | +|-----|------| +| **[Nickname]** | [Full Name], [role] | + +## Terms +| Term | Meaning | +|------|---------| +| [acronym] | [expansion] | + +## Projects +| Name | What | +|------|------| +| **[Codename]** | [description] | + +## Preferences +- [preferences discovered] +``` + +**memory/** directory: +- `memory/glossary.md` — full decoder ring (acronyms, terms, nicknames, codenames) +- `memory/people/{name}.md` — individual profiles +- `memory/projects/{name}.md` — project details +- `memory/context/company.md` — teams, tools, processes + +### 8. Report Results + +``` +Productivity system ready: +- Tasks: TASKS.md (X items) +- Memory: X people, X terms, X projects +- Dashboard: open in browser + +Use /productivity:update to keep things current (add --comprehensive for a deep scan). +``` + +## Notes + +- If memory is already initialized, this just opens the dashboard +- Nicknames are critical — always capture how people are actually referred to +- If a source isn't available, skip it and note the gap +- Memory grows organically through natural conversation after bootstrap diff --git a/src/octop/infra/agents/experts/library/productivity/skills/task-management/SKILL.md b/src/octop/infra/agents/experts/library/productivity/skills/task-management/SKILL.md new file mode 100644 index 000000000..4ce03af71 --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/skills/task-management/SKILL.md @@ -0,0 +1,91 @@ +--- +name: task-management +description: Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments. +user-invocable: false +--- + +# Task Management + +Tasks are tracked in a simple `TASKS.md` file that both you and the user can edit. + +## File Location + +**Always use `TASKS.md` in the current working directory.** + +- If it exists, read/write to it +- If it doesn't exist, create it with the template below + +## Dashboard Setup (First Run) + +A visual dashboard is available for managing tasks and memory. **On first interaction with tasks:** + +1. Check if `dashboard.html` exists in the current working directory +2. If not, copy it from `${CLAUDE_PLUGIN_ROOT}/skills/dashboard.html` to the current working directory +3. Inform the user: "I've added the dashboard. Run `/productivity:start` to set up the full system." + +The task board: +- Reads and writes to the same `TASKS.md` file +- Auto-saves changes +- Watches for external changes (syncs when you edit via CLI) +- Supports drag-and-drop reordering of tasks and sections + +## Format & Template + +When creating a new TASKS.md, use this exact template (without example tasks): + +```markdown +# Tasks + +## Active + +## Waiting On + +## Someday + +## Done +``` + +Task format: +- `- [ ] **Task title** - context, for whom, due date` +- Sub-bullets for additional details +- Completed: `- [x] ~~Task~~ (date)` + +## How to Interact + +**When user asks "what's on my plate" / "my tasks":** +- Read TASKS.md +- Summarize Active and Waiting On sections +- Highlight anything overdue or urgent + +**When user says "add a task" / "remind me to":** +- Add to Active section with `- [ ] **Task**` format +- Include context if provided (who it's for, due date) + +**When user says "done with X" / "finished X":** +- Find the task +- Change `[ ]` to `[x]` +- Add strikethrough: `~~task~~` +- Add completion date +- Move to Done section + +**When user asks "what am I waiting on":** +- Read the Waiting On section +- Note how long each item has been waiting + +## Conventions + +- **Bold** the task title for scannability +- Include "for [person]" when it's a commitment to someone +- Include "due [date]" for deadlines +- Include "since [date]" for waiting items +- Sub-bullets for additional context +- Keep Done section for ~1 week, then clear old items + +## Extracting Tasks + +When summarizing meetings or conversations, offer to add extracted tasks: +- Commitments the user made ("I'll send that over") +- Action items assigned to them +- Follow-ups mentioned + +Ask before adding - don't auto-add without confirmation. diff --git a/src/octop/infra/agents/experts/library/productivity/skills/update/SKILL.md b/src/octop/infra/agents/experts/library/productivity/skills/update/SKILL.md new file mode 100644 index 000000000..ee86a1f3c --- /dev/null +++ b/src/octop/infra/agents/experts/library/productivity/skills/update/SKILL.md @@ -0,0 +1,168 @@ +--- +name: update +description: Sync tasks and refresh memory from your current activity. Use when pulling new assignments from your project tracker into TASKS.md, triaging stale or overdue tasks, filling memory gaps for unknown people or projects, or running a comprehensive scan to catch todos buried in chat and email. +argument-hint: "[--comprehensive]" +--- + +# Update Command + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md). + +Keep your task list and memory current. Two modes: + +- **Default:** Sync tasks from external tools, triage stale items, check memory for gaps +- **`--comprehensive`:** Deep scan chat, email, calendar, docs — flag missed todos and suggest new memories + +## Usage + +```bash +/productivity:update +/productivity:update --comprehensive +``` + +## Default Mode + +### 1. Load Current State + +Read `TASKS.md` and `memory/` directory. If they don't exist, suggest `/productivity:start` first. + +### 2. Sync Tasks from External Sources + +Check for available task sources: +- **Project tracker** (e.g. Asana, Linear, Jira) (if MCP available) +- **GitHub Issues** (if in a repo): `gh issue list --assignee=@me` + +If no sources are available, skip to Step 3. + +**Fetch tasks assigned to the user** (open/in-progress). Compare against TASKS.md: + +| External task | TASKS.md match? | Action | +|---------------|-----------------|--------| +| Found, not in TASKS.md | No match | Offer to add | +| Found, already in TASKS.md | Match by title (fuzzy) | Skip | +| In TASKS.md, not in external | No match | Flag as potentially stale | +| Completed externally | In Active section | Offer to mark done | + +Present diff and let user decide what to add/complete. + +### 3. Triage Stale Items + +Review Active tasks in TASKS.md and flag: +- Tasks with due dates in the past +- Tasks in Active for 30+ days +- Tasks with no context (no person, no project) + +Present each for triage: Mark done? Reschedule? Move to Someday? + +### 4. Decode Tasks for Memory Gaps + +For each task, attempt to decode all entities (people, projects, acronyms, tools, links): + +``` +Task: "Send PSR to Todd re: Phoenix blockers" + +Decode: +- PSR → ✓ Pipeline Status Report (in glossary) +- Todd → ✓ Todd Martinez (in people/) +- Phoenix → ? Not in memory +``` + +Track what's fully decoded vs. what has gaps. + +### 5. Fill Gaps + +Present unknown terms grouped: +``` +I found terms in your tasks I don't have context for: + +1. "Phoenix" (from: "Send PSR to Todd re: Phoenix blockers") + → What's Phoenix? + +2. "Maya" (from: "sync with Maya on API design") + → Who is Maya? +``` + +Add answers to the appropriate memory files (people/, projects/, glossary.md). + +### 6. Capture Enrichment + +Tasks often contain richer context than memory. Extract and update: +- **Links** from tasks → add to project/people files +- **Status changes** ("launch done") → update project status, demote from CLAUDE.md +- **Relationships** ("Todd's sign-off on Maya's proposal") → cross-reference people +- **Deadlines** → add to project files + +### 7. Report + +``` +Update complete: +- Tasks: +3 from project tracker (e.g. Asana), 1 completed, 2 triaged +- Memory: 2 gaps filled, 1 project enriched +- All tasks decoded ✓ +``` + +## Comprehensive Mode (`--comprehensive`) + +Everything in Default Mode, plus a deep scan of recent activity. + +### Extra Step: Scan Activity Sources + +Gather data from available MCP sources: +- **Chat:** Search recent messages, read active channels +- **Email:** Search sent messages +- **Documents:** List recently touched docs +- **Calendar:** List recent + upcoming events + +### Extra Step: Flag Missed Todos + +Compare activity against TASKS.md. Surface action items that aren't tracked: + +``` +## Possible Missing Tasks + +From your activity, these look like todos you haven't captured: + +1. From chat (Jan 18): + "I'll send the updated mockups by Friday" + → Add to TASKS.md? + +2. From meeting "Phoenix Standup" (Jan 17): + You have a recurring meeting but no Phoenix tasks active + → Anything needed here? + +3. From email (Jan 16): + "I'll review the API spec this week" + → Add to TASKS.md? +``` + +Let user pick which to add. + +### Extra Step: Suggest New Memories + +Surface new entities not in memory: + +``` +## New People (not in memory) +| Name | Frequency | Context | +|------|-----------|---------| +| Maya Rodriguez | 12 mentions | design, UI reviews | +| Alex K | 8 mentions | DMs about API | + +## New Projects/Topics +| Name | Frequency | Context | +|------|-----------|---------| +| Starlight | 15 mentions | planning docs, product | + +## Suggested Cleanup +- **Horizon project** — No mentions in 30 days. Mark completed? +``` + +Present grouped by confidence. High-confidence items offered to add directly; low-confidence items asked about. + +## Notes + +- Never auto-add tasks or memories without user confirmation +- External source links are preserved when available +- Fuzzy matching on task titles handles minor wording differences +- Safe to run frequently — only updates when there's new info +- `--comprehensive` always runs interactively From ca54b860847630f9d589d1ea4dd9509e6570be30 Mon Sep 17 00:00:00 2001 From: Jeffrey8864 <1187141927@qq.com> Date: Wed, 14 Oct 2026 17:31:49 +0800 Subject: [PATCH 2/2] refactor(experts): consolidate Apache-2.0 LICENSE and refine skill content - Replace per-expert LICENSE files with a single library-level Apache-2.0 LICENSE covering all converted templates - Clarify wording in cowork-plugin-management and productivity skills (avoid Cowork-specific references, fix MCP server references) - Fix dashboard.html markdown table rendering regex and document the Inter webfont fallback behavior --- .../experts/library/{design => }/LICENSE | 0 .../library/cowork-plugin-management/LICENSE | 202 ----------------- .../cowork-plugin-customizer/LICENSE.txt | 202 ----------------- .../skills/cowork-plugin-customizer/SKILL.md | 21 +- .../references/mcp-servers.md | 14 +- .../skills/create-cowork-plugin/SKILL.md | 10 +- .../experts/library/engineering/LICENSE | 212 ------------------ .../experts/library/productivity/LICENSE | 202 ----------------- .../productivity/skills/dashboard.html | 3 +- .../productivity/skills/start/SKILL.md | 2 +- 10 files changed, 26 insertions(+), 842 deletions(-) rename src/octop/infra/agents/experts/library/{design => }/LICENSE (100%) delete mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE delete mode 100644 src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt delete mode 100644 src/octop/infra/agents/experts/library/engineering/LICENSE delete mode 100644 src/octop/infra/agents/experts/library/productivity/LICENSE diff --git a/src/octop/infra/agents/experts/library/design/LICENSE b/src/octop/infra/agents/experts/library/LICENSE similarity index 100% rename from src/octop/infra/agents/experts/library/design/LICENSE rename to src/octop/infra/agents/experts/library/LICENSE diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE b/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/src/octop/infra/agents/experts/library/cowork-plugin-management/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt deleted file mode 100644 index 7a4a3ea24..000000000 --- a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md index ddbe87ed8..6cc9678e5 100644 --- a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md @@ -4,14 +4,16 @@ description: > Customize a Claude Code plugin for a specific organization's tools and workflows. Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings, customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration. -compatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins). +compatibility: Runs in the Octop agent workspace. The plugin directory is a workspace folder (uploaded or scaffolded here); results are delivered as workspace files. --- # Cowork Plugin Customization Customize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin. -> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -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." +> **Target format**: this skill customizes Claude Code / Cowork plugin packages (`.claude-plugin/plugin.json` + `skills/` ...). That is the deliverable format — distinct from the Octop expert-library format (`manifest.json`); do not conflate the two. + +> **Finding the plugin**: The plugin's source files live inside this workspace. Ask the user which directory holds the plugin, or search the workspace for `.claude-plugin/plugin.json` to locate it, then read its files to understand its structure before making changes. If the plugin is not in the workspace yet, ask the user to upload or provide its files first — do not abort. ## Determining the Customization Mode @@ -97,23 +99,22 @@ After customization items have been resolved, connect MCPs for any tools that we 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 auth +1. Identify candidate MCP servers for each tool, using the category keywords from `references/mcp-servers.md` or the tool's official MCP endpoint +2. If the tool is not yet connected on the user's platform, tell them to connect it in the connector settings and note it in the summary 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. ## Packaging the Plugin -After all customizations are applied, package the plugin as a `.plugin` file for the user: +After all customizations are applied, package the plugin for the user: -1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed): +1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed) into a workspace folder (e.g., `deliverables/`): ```bash - cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x "setup/*" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin + cd /path/to/plugin && zip -r deliverables/plugin-name.plugin . -x "setup/*" ``` -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. + Do not write to `/tmp/` or other system paths — the user can only access files inside this workspace. +2. **Tell the user** the archive location: they can download `.plugin` from the workspace file panel and install it into Claude Code / Cowork. The package format is the Claude plugin format (`.claude-plugin/plugin.json` + `skills/` ...); it is consumed by Claude, not by Octop. > **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. diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md index d5da6f97c..c9cc074cd 100644 --- a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md @@ -4,7 +4,9 @@ How to find and connect MCPs during plugin customization. ## Available Tools -### `search_mcp_registry` +> **Octop note**: `search_mcp_registry` and `suggest_connectors` are Cowork desktop built-in tools and are not available here. In Octop, identify candidate MCP servers by tool name or official MCP endpoint (the keyword mapping below still applies), then have the user connect the tool in their connector settings and write the endpoint into the plugin's `.mcp.json` as usual. + +### `search_mcp_registry` (Cowork only) Search the MCP directory for available connectors. **Input:** `{ "keywords": ["array", "of", "search", "terms"] }` @@ -47,10 +49,10 @@ Display Connect buttons to let users install/connect MCPs. 2. **Check earlier phase findings**: Did you already learn which tool they use? - **Yes**: Search for that specific tool to get its `url`, skip to step 5 - **No**: Continue to step 3 -3. **Search**: Call `search_mcp_registry` with mapped keywords -4. **Present choices and ask user**: Show all results, ask which they use -5. **Connect if needed**: If not connected, call `suggest_connectors` -6. **Update MCP config**: Add config using the `url` from search results +3. **Search**: Identify candidate MCP servers using the mapped keywords (tool name or official MCP endpoint; on Cowork, `search_mcp_registry`) +4. **Present choices and ask user**: Show all candidates, ask which they use +5. **Connect if needed**: Have the user connect the tool in their platform's connector settings +6. **Update MCP config**: Add config using the tool's MCP endpoint `url` ## Updating Plugin MCP Configuration @@ -84,7 +86,7 @@ Both wrapped and unwrapped formats are supported: } ``` -Use the `url` field from `search_mcp_registry` results. +Use the MCP endpoint `url` for the tool (from the registry on Cowork, or the tool's official MCP endpoint). ### Directory Entries Without a URL diff --git a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md index ebd86a567..fe8c92ea0 100644 --- a/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md +++ b/src/octop/infra/agents/experts/library/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md @@ -3,8 +3,8 @@ name: create-cowork-plugin description: > Guide users through creating a new plugin from scratch in a cowork session. Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin. - This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file. -compatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files. + This skill runs in the Octop agent workspace and delivers the final .plugin file as a workspace file. +compatibility: Runs in the Octop agent workspace; deliverables are workspace files (no mounted plugin directories or outputs folder required). --- # Create Cowork Plugin @@ -245,15 +245,13 @@ If the user says "whatever you think is best," provide specific recommendations 4. Package as a `.plugin` file: ```bash -cd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x "*.DS_Store" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin +cd /path/to/plugin-dir && zip -r deliverables/plugin-name.plugin . -x "*.DS_Store" ``` -> **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. +Create the archive inside this workspace (e.g., a `deliverables/` folder) — do not write to `/tmp/` or other system paths, since the user can only access files inside the workspace. Tell the user they can download `.plugin` from the workspace file panel and install it into Claude Code / Cowork. The package format is the Claude plugin format; it is consumed by Claude, not by Octop. > **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`). -The `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button. - ## Best Practices - **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components. diff --git a/src/octop/infra/agents/experts/library/engineering/LICENSE b/src/octop/infra/agents/experts/library/engineering/LICENSE deleted file mode 100644 index f53c679ac..000000000 --- a/src/octop/infra/agents/experts/library/engineering/LICENSE +++ /dev/null @@ -1,212 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - Syntax-file, code seperations,code vault integeted with css definition. -Pre-recordec, pre-tested, elements to capture elements into Packeted-User-Relations to capture - [ - -pre-requisites, statements, recorded-cams -, cams-data -, data, input() - -] diff --git a/src/octop/infra/agents/experts/library/productivity/LICENSE b/src/octop/infra/agents/experts/library/productivity/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/src/octop/infra/agents/experts/library/productivity/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html b/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html index e2ca8a79c..5da2d6b66 100644 --- a/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html +++ b/src/octop/infra/agents/experts/library/productivity/skills/dashboard.html @@ -7,6 +7,7 @@ +