opencode-feishu 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-feishu",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "OpenCode 飞书插件 — 通过飞书 WebSocket 长连接接入 OpenCode AI 对话",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
+ "skills",
16
17
  "README.md",
17
18
  "LICENSE"
18
19
  ],
@@ -0,0 +1,3 @@
1
+ <claude-mem-context>
2
+
3
+ </claude-mem-context>
@@ -0,0 +1,149 @@
1
+ # 飞书交互决策指南
2
+
3
+ 你正在通过飞书(Feishu/Lark)与用户对话。以下是你的交互能力和决策框架。
4
+
5
+ ## 交互模式
6
+
7
+ 你有三种回复方式:
8
+
9
+ | 模式 | 工具 | 适用场景 |
10
+ |------|------|----------|
11
+ | **纯文本** | 直接回复 | 简短回答、确认、日常对话 |
12
+ | **展示卡片** | `feishu_send_card` | 结构化信息展示(报告、摘要、代码审查) |
13
+ | **交互卡片** | `feishu_send_card` + `actions` | 需要用户做选择或引导下一步操作 |
14
+
15
+ ## 决策矩阵
16
+
17
+ **用纯文本**(不要用卡片):
18
+ - 一句话能说清的回答
19
+ - 确认性回复("好的"、"已完成")
20
+ - 追问、澄清
21
+ - 代码片段(< 20 行)
22
+
23
+ **用展示卡片**(无按钮):
24
+ - 任务完成摘要(多步骤结果)
25
+ - 代码审查报告
26
+ - 错误诊断分析
27
+ - 对比分析(方案 A vs B)
28
+ - 长代码块或多文件变更
29
+
30
+ **用交互卡片**(带按钮):
31
+ - 任务完成后引导下一步("运行测试" / "部署" / "提交 PR")
32
+ - 需要用户在多个方案中选择
33
+ - 主动提问等待用户决定
34
+ - 分步向导流程
35
+
36
+ ## 卡片格式约束
37
+
38
+ - 单张卡片总大小 **≤ 28KB**(超出自动截断)
39
+ - Markdown 支持:标题、列表、代码块、粗体、链接
40
+ - **不支持**:HTML 标签、表格(用列表替代)、图片内联
41
+ - 按钮文本 **2-6 个字**,最多 **5 个按钮**
42
+ - 按钮 value 会作为用户消息发送给你,你会收到该文本并继续处理
43
+
44
+ ## 颜色语义
45
+
46
+ | 颜色 | 含义 | 示例场景 |
47
+ |------|------|----------|
48
+ | `blue` | 信息/中性 | 摘要、报告、分析 |
49
+ | `green` | 成功/完成 | 任务完成、测试通过 |
50
+ | `orange` | 警告/注意 | 需要关注的问题、风险提示 |
51
+ | `red` | 错误/严重 | 构建失败、安全漏洞 |
52
+ | `purple` | 特殊/创意 | 设计方案、头脑风暴 |
53
+ | `grey` | 次要/辅助 | 背景信息、附加说明 |
54
+
55
+ ## actions 按钮用法
56
+
57
+ 在 `sections` 中使用 `type: "actions"` 添加按钮区块:
58
+
59
+ ```json
60
+ {
61
+ "type": "actions",
62
+ "buttons": [
63
+ { "text": "运行测试", "value": "请运行测试套件并报告结果", "style": "primary" },
64
+ { "text": "跳过", "value": "跳过测试,继续下一步", "style": "default" }
65
+ ]
66
+ }
67
+ ```
68
+
69
+ - `text`:按钮显示文本(2-6 字)
70
+ - `value`:点击后作为用户消息发送的内容(写完整的指令句子)
71
+ - `style`:`primary`(主要操作,蓝色)、`default`(普通)、`danger`(危险操作,红色)
72
+
73
+ **按钮设计原则**:
74
+ - 第一个按钮通常是推荐操作,用 `primary` 样式
75
+ - value 写成自然语言指令,就像用户自己输入的消息
76
+ - 危险操作(删除、重置)用 `danger` 样式
77
+
78
+ ## 常用斜杠命令参考
79
+
80
+ | 命令 | 用途 |
81
+ |------|------|
82
+ | `/speckit.specify` | 从自然语言描述创建功能规格 |
83
+ | `/speckit.clarify` | 对规格中的模糊点提问澄清 |
84
+ | `/speckit.plan` | 基于规格生成实现计划 |
85
+ | `/speckit.tasks` | 基于计划生成有序任务列表 |
86
+ | `/speckit.implement` | 执行任务列表中的实现 |
87
+ | `/speckit.analyze` | 跨产物一致性和质量分析 |
88
+ | `/speckit.checklist` | 生成自定义检查清单 |
89
+ | `/speckit.taskstoissues` | 将任务转为 GitHub Issues |
90
+ | `/speckit.constitution` | 创建/更新项目宪法 |
91
+
92
+ 按钮 value 可直接使用这些命令,用户点击后等同输入该命令。
93
+
94
+ ## 示例
95
+
96
+ ### Spec 完成 → 引导下一步
97
+
98
+ ```json
99
+ {
100
+ "title": "功能规格已生成",
101
+ "template": "green",
102
+ "sections": [
103
+ { "type": "markdown", "content": "**specs/012-card-tool/spec.md** 已创建\n\n- 3 个用户故事\n- 5 个验收条件\n- 2 个待澄清项" },
104
+ { "type": "divider" },
105
+ { "type": "actions", "buttons": [
106
+ { "text": "生成计划", "value": "/speckit.plan", "style": "primary" },
107
+ { "text": "澄清问题", "value": "/speckit.clarify", "style": "default" },
108
+ { "text": "查看规格", "value": "请展示 spec.md 的完整内容", "style": "default" }
109
+ ]}
110
+ ]
111
+ }
112
+ ```
113
+
114
+ ### 需要用户选择(AskUserQuestion 场景)
115
+
116
+ ```json
117
+ {
118
+ "title": "实现方案确认",
119
+ "template": "blue",
120
+ "sections": [
121
+ { "type": "markdown", "content": "任务拆分发现两种实现路径:\n\n**路径 A:直接修改现有模块**\n- 改动少,风险低\n- 不利于后续扩展\n\n**路径 B:抽取独立模块**\n- 改动大,需新增文件\n- 架构更清晰" },
122
+ { "type": "note", "content": "两种路径的测试覆盖要求相同" },
123
+ { "type": "divider" },
124
+ { "type": "actions", "buttons": [
125
+ { "text": "路径 A", "value": "选择路径 A,直接修改现有模块", "style": "default" },
126
+ { "text": "路径 B", "value": "选择路径 B,抽取独立模块", "style": "primary" },
127
+ { "text": "需要更多信息", "value": "请补充两个路径在具体文件变更和影响范围的对比", "style": "default" }
128
+ ]}
129
+ ]
130
+ }
131
+ ```
132
+
133
+ ### 错误诊断 + 修复引导
134
+
135
+ ```json
136
+ {
137
+ "title": "构建失败诊断",
138
+ "template": "red",
139
+ "sections": [
140
+ { "type": "markdown", "content": "**错误类型:** TypeScript 编译错误\n**影响文件:** 3 个\n\n```\nsrc/index.ts:42 - error TS2345: Argument of type 'string' is not assignable...\n```" },
141
+ { "type": "note", "content": "建议先修复类型错误再运行测试" },
142
+ { "type": "divider" },
143
+ { "type": "actions", "buttons": [
144
+ { "text": "自动修复", "value": "请自动修复所有 TypeScript 编译错误", "style": "primary" },
145
+ { "text": "生成任务", "value": "/speckit.tasks", "style": "default" }
146
+ ]}
147
+ ]
148
+ }
149
+ ```