autocrew 0.1.0 → 0.2.0
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 +1 -1
- package/skills/content-review/SKILL.md +56 -6
- package/skills/feature-triage/SKILL.md +335 -0
- package/skills/knowledge-sync/SKILL.md +137 -0
- package/skills/onboarding/SKILL.md +6 -3
- package/skills/setup/SKILL.md +8 -3
- package/skills/spawn-writer/SKILL.md +11 -1
- package/skills/teardown/SKILL.md +254 -44
- package/skills/write-script/SKILL.md +154 -1
- package/src/modules/intel/integration.test.ts +9 -7
- package/src/modules/profile/creator-profile.test.ts +51 -0
- package/src/modules/profile/creator-profile.ts +36 -6
- package/src/modules/wiki/wiki.test.ts +213 -0
- package/src/storage/pipeline-store.test.ts +118 -11
- package/src/storage/pipeline-store.ts +175 -20
- package/src/tools/content-save.ts +8 -10
- package/src/tools/intel.test.ts +61 -0
- package/src/tools/intel.ts +111 -3
- package/src/tools/registry.ts +2 -1
package/package.json
CHANGED
|
@@ -114,7 +114,53 @@ action: "review_scan" (如果已实现)
|
|
|
114
114
|
|
|
115
115
|
**总分 = 4 项之和(0-100)**
|
|
116
116
|
|
|
117
|
-
### Step 4.5:
|
|
117
|
+
### Step 4.5: 七问自检(文案终极检验)
|
|
118
|
+
|
|
119
|
+
对内容逐一回答以下 7 个问题。每个问题必须给出具体答案,答不上来就是该项不合格。
|
|
120
|
+
|
|
121
|
+
**Q1: 用户思维** — 这条内容为用户提供了什么?
|
|
122
|
+
- 提供了解决方法?引发了共鸣?提供了谈资?带来了快乐?
|
|
123
|
+
- 还是纯粹自嗨?(例:做餐饮加盟的教人怎么拌饭好吃 = 自嗨)
|
|
124
|
+
- 必须明确回答内容给用户的具体价值
|
|
125
|
+
|
|
126
|
+
**Q2: 动词名词替换形容词** — 内容里是否滥用形容词?
|
|
127
|
+
- 形容词是作者的主观感受,要让观众自己得出结论
|
|
128
|
+
- 反面:"我工作很累" → 正面:"从早 7 点干到晚 11 点,一周 7 天没休息,上厕所时间都快没了"
|
|
129
|
+
- 检查所有形容词,能换成具体动词/名词/数据的必须换
|
|
130
|
+
|
|
131
|
+
**Q3: 可信度支撑** — 用户凭什么相信你说的话?
|
|
132
|
+
- 每个核心论点是否有以下至少一种支撑:权威认证、数据佐证、亲身经历
|
|
133
|
+
- 反面:"多动的孩子往往体育天赋惊人"后面没有任何事实佐证 → 直接滑走
|
|
134
|
+
- 没有支撑的断言必须补充或删除
|
|
135
|
+
|
|
136
|
+
**Q4: 每句话的目的** — 每一句话在文章中的作用是什么?
|
|
137
|
+
- 推进叙事发展?拉近共鸣?制造期待?
|
|
138
|
+
- 如果一句话找不到明确目的 → 删掉或改写
|
|
139
|
+
- 不允许存在无功能的废句
|
|
140
|
+
|
|
141
|
+
**Q5: 关键印象与人设** — 用户看完后印象最深的一个点是什么?最大感受是什么?
|
|
142
|
+
- 这个印象直接决定你的人设是否跑偏
|
|
143
|
+
- 如果答不上来,说明内容缺乏记忆点
|
|
144
|
+
- 必须能用一句话说出"用户看完会记住___"
|
|
145
|
+
|
|
146
|
+
**Q6: 金句转发** — 如果观众想转发一句话,会是哪句?
|
|
147
|
+
- 这句话在网上能搜到吗?(搜得到 = 不够原创)
|
|
148
|
+
- 如果整篇没有一句值得转发的话 → 缺少金句,需要补
|
|
149
|
+
- 金句是内容传播的核心驱动力
|
|
150
|
+
|
|
151
|
+
**Q7: 说人话** — 文案是否自然、不端着、不做作?
|
|
152
|
+
- 是否堆砌成语?是否播音腔?是否书面语过重?
|
|
153
|
+
- 一句话用 3 个成语 = 不合格
|
|
154
|
+
- 标准:读出来像正常人说话,不别扭
|
|
155
|
+
|
|
156
|
+
**评分规则:**
|
|
157
|
+
- 7/7 全部能回答 → ✅ 文案过关
|
|
158
|
+
- 5-6/7 能回答 → ⚠️ 需要针对性修改(标注具体不合格项)
|
|
159
|
+
- ≤4/7 能回答 → ❌ 文案需要大改
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### Step 4.6: 标题公式检查(原 4.5)
|
|
118
164
|
|
|
119
165
|
检查标题是否命中至少一个标题公式:
|
|
120
166
|
|
|
@@ -204,19 +250,23 @@ AI 味评分:{score}/100
|
|
|
204
250
|
- CTA 清晰度:{n}/25
|
|
205
251
|
- 可读性:{n}/25
|
|
206
252
|
|
|
207
|
-
### 5.
|
|
253
|
+
### 5. 七问自检 {✅/⚠️/❌}
|
|
254
|
+
通过:{n}/7
|
|
255
|
+
{逐条列出每个问题的回答或不合格原因}
|
|
256
|
+
|
|
257
|
+
### 6. 标题公式 {✅/⚠️}
|
|
208
258
|
{详细结果}
|
|
209
259
|
|
|
210
|
-
###
|
|
260
|
+
### 7. 评论触发点 {✅/⚠️}
|
|
211
261
|
{详细结果}
|
|
212
262
|
|
|
213
|
-
###
|
|
263
|
+
### 8. 完播率微操 {✅/⚠️/❌}
|
|
214
264
|
{详细结果}
|
|
215
265
|
|
|
216
|
-
###
|
|
266
|
+
### 9. 流量假设 {✅/⚠️}
|
|
217
267
|
{详细结果}
|
|
218
268
|
|
|
219
|
-
###
|
|
269
|
+
### 10. 内容支柱对齐 {✅/⚠️/❌/跳过}
|
|
220
270
|
{详细结果}
|
|
221
271
|
|
|
222
272
|
### 📌 审核结论
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feature-triage
|
|
3
|
+
description: |
|
|
4
|
+
Evaluate whether a proposed feature belongs in AutoCrew and in what form.
|
|
5
|
+
Activate when user explicitly proposes adding a new feature, capability,
|
|
6
|
+
or integration. Triggers: "我想加" / "能不能做一个" / "想增加" /
|
|
7
|
+
"加个功能" / "接入一个" / "想做一个" / "I want to add".
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Feature Triage
|
|
11
|
+
|
|
12
|
+
> Orchestrator skill. Leads a structured decision dialogue to evaluate feature proposals
|
|
13
|
+
> against AutoCrew's architecture, roadmap, and creator needs. Outputs a decision report.
|
|
14
|
+
> Does NOT implement — terminates at a decision.
|
|
15
|
+
|
|
16
|
+
## Persona
|
|
17
|
+
|
|
18
|
+
You are AutoCrew's co-founder and product architect. You deeply understand:
|
|
19
|
+
- AutoCrew's 18 tools, 5-stage pipeline (intel → topics → drafting → production → published), and skill system
|
|
20
|
+
- Real workflows of Chinese social media content creators (Xiaohongshu, Douyin, WeChat, Bilibili)
|
|
21
|
+
- The difference between indie creators and team creators: different needs, different constraints
|
|
22
|
+
- The codebase: `src/tools/`, `src/storage/`, `src/modules/`, `skills/`, pipeline-store semantics
|
|
23
|
+
|
|
24
|
+
Your decision biases (make these explicit when they influence your reasoning):
|
|
25
|
+
- Prefer composing existing pipeline components over adding new modules
|
|
26
|
+
- Fill current-level gaps before building higher-level features
|
|
27
|
+
- A feature not built is better than a feature built badly
|
|
28
|
+
- Every new module is a maintenance commitment — weigh ongoing cost, not just build cost
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
| Parameter | Source | Required | Description |
|
|
33
|
+
|-----------|--------|----------|-------------|
|
|
34
|
+
| feature_idea | User message | Yes | The proposed feature, in any level of detail |
|
|
35
|
+
|
|
36
|
+
## Pre-Flight: Complexity Assessment
|
|
37
|
+
|
|
38
|
+
Before engaging in discussion, silently evaluate complexity based on these signals:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
□ Introduces a new external dependency or third-party API?
|
|
42
|
+
□ Changes existing data flow or pipeline stage semantics?
|
|
43
|
+
□ Affects 3+ existing skills or tools?
|
|
44
|
+
□ Estimated implementation exceeds 500 lines of new code?
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
| Yes count | Complexity | Rounds | Framework handling |
|
|
48
|
+
|-----------|------------|--------|--------------------|
|
|
49
|
+
| 0-1 | 轻量 | 2-3 | Merge Phase 2+3 into one round |
|
|
50
|
+
| 2 | 中等 | 3-4 | Per-framework, standard depth |
|
|
51
|
+
| 3-4 | 重度 | 4-6 | Fully expanded, each framework gets its own round |
|
|
52
|
+
|
|
53
|
+
Display to user at the start:
|
|
54
|
+
> 复杂度评估:{轻量/中等/重度},预计 {N} 轮讨论。
|
|
55
|
+
|
|
56
|
+
## Discussion Flow
|
|
57
|
+
|
|
58
|
+
### Phase 1 — 🔍 苏格拉底提问(理解本质)
|
|
59
|
+
|
|
60
|
+
**Goal:** Through targeted questioning, strip away the surface request and uncover the
|
|
61
|
+
fundamental problem the user is trying to solve.
|
|
62
|
+
|
|
63
|
+
**Technique — Socratic Elicitation:**
|
|
64
|
+
|
|
65
|
+
Do not accept the feature description at face value. The user describes a SOLUTION;
|
|
66
|
+
your job is to excavate the PROBLEM. Ask questions that peel layers:
|
|
67
|
+
|
|
68
|
+
<prompt-template>
|
|
69
|
+
You are investigating the real need behind a feature proposal. Apply Socratic questioning:
|
|
70
|
+
|
|
71
|
+
Layer 1 — Current state: "你现在没有这个功能时,怎么完成这件事的?"
|
|
72
|
+
Layer 2 — Pain frequency: "这个问题多久遇到一次?上一次具体是什么场景?"
|
|
73
|
+
Layer 3 — Alternative paths: "如果 AutoCrew 永远不加这个功能,你的 plan B 是什么?"
|
|
74
|
+
Layer 4 — Essence: "如果把这个想法压缩成一句话的需求,是什么?"
|
|
75
|
+
|
|
76
|
+
Rules:
|
|
77
|
+
- ONE question per message. Wait for the answer before asking the next.
|
|
78
|
+
- Prefer concrete questions over abstract ones. "上次你做这个花了多久" > "你觉得这个重要吗"
|
|
79
|
+
- When the user's answer reveals a deeper need than the original proposal, name it:
|
|
80
|
+
"听起来你真正需要的不是 X,而是 Y。对吗?"
|
|
81
|
+
- This phase ends when you can state the root problem in one sentence and the user confirms.
|
|
82
|
+
</prompt-template>
|
|
83
|
+
|
|
84
|
+
**Deliverable:** One-sentence root problem statement, confirmed by user.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### Phase 2 — 🧱 第一性原理(拆解需求真伪)
|
|
89
|
+
|
|
90
|
+
**Goal:** Decompose the idea into irreducible capability units. For each unit, determine
|
|
91
|
+
whether it's a genuine gap or already covered by AutoCrew's existing architecture.
|
|
92
|
+
|
|
93
|
+
**Technique — First-Principles Decomposition:**
|
|
94
|
+
|
|
95
|
+
<prompt-template>
|
|
96
|
+
Take the confirmed root problem from Phase 1 and decompose into capability units.
|
|
97
|
+
|
|
98
|
+
For EACH unit, evaluate using this chain-of-thought structure:
|
|
99
|
+
|
|
100
|
+
前提:{what you know about AutoCrew's current capabilities relevant to this unit}
|
|
101
|
+
推导:{logical chain from premise to conclusion — if any step relies on an assumption
|
|
102
|
+
rather than verified fact, tag it as [假设]}
|
|
103
|
+
结论:{this unit is: ✅ genuine gap / ⚠️ partially covered / ❌ already solved}
|
|
104
|
+
|
|
105
|
+
Then check for "borrowing bias":
|
|
106
|
+
- Did this idea originate from seeing someone else's product (e.g., "Karpathy has a knowledge
|
|
107
|
+
base, so we should too")?
|
|
108
|
+
- If yes: what is DIFFERENT about AutoCrew's context that makes this relevant here, specifically?
|
|
109
|
+
- If nothing is different: flag it as borrowing bias.
|
|
110
|
+
|
|
111
|
+
Present to user:
|
|
112
|
+
- List of capability units with verdicts
|
|
113
|
+
- Any borrowing bias detected
|
|
114
|
+
- Which units (if any) represent genuine gaps worth filling
|
|
115
|
+
</prompt-template>
|
|
116
|
+
|
|
117
|
+
**Deliverable:** Capability unit table with genuine-gap / already-covered verdicts.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Phase 3 — 🪒 奥卡姆剃刀(砍复杂度)
|
|
122
|
+
|
|
123
|
+
**Goal:** If genuine gaps exist from Phase 2, find the simplest possible form to fill them.
|
|
124
|
+
|
|
125
|
+
**Technique — Minimal Viable Form:**
|
|
126
|
+
|
|
127
|
+
<prompt-template>
|
|
128
|
+
For each genuine-gap capability unit from Phase 2, answer these questions in order:
|
|
129
|
+
|
|
130
|
+
1. Can this be solved by COMBINING existing tools/skills with no new code?
|
|
131
|
+
→ If yes: describe the composition. Stop here for this unit.
|
|
132
|
+
|
|
133
|
+
2. Can this be solved by EXTENDING an existing tool/skill (adding an action, a step)?
|
|
134
|
+
→ If yes: name the tool/skill and the extension. Stop here.
|
|
135
|
+
|
|
136
|
+
3. Does this require a NEW skill (orchestration logic only, no new tool)?
|
|
137
|
+
→ If yes: describe the skill's steps using existing tools.
|
|
138
|
+
|
|
139
|
+
4. Does this require a NEW tool (new data storage, new API integration)?
|
|
140
|
+
→ If yes: this is the most expensive option. Justify why 1-3 don't work.
|
|
141
|
+
|
|
142
|
+
For each unit, also apply the YAGNI check:
|
|
143
|
+
- "如果砍掉这个单元,剩下的部分还能独立产生价值吗?"
|
|
144
|
+
- If yes → this unit is a candidate for deferral.
|
|
145
|
+
|
|
146
|
+
Present to user:
|
|
147
|
+
- Recommended form per unit (compose / extend / new skill / new tool)
|
|
148
|
+
- What was cut and why
|
|
149
|
+
- The minimum viable scope
|
|
150
|
+
</prompt-template>
|
|
151
|
+
|
|
152
|
+
**Deliverable:** Minimum viable form recommendation per capability unit.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### Phase 4 — 📊 马斯洛需求分析(定位价值层级)
|
|
157
|
+
|
|
158
|
+
**Goal:** Position this feature in the creator's need hierarchy. Determine if it fills
|
|
159
|
+
a current-level gap or skips levels.
|
|
160
|
+
|
|
161
|
+
**Technique — Creator Maslow Mapping:**
|
|
162
|
+
|
|
163
|
+
<prompt-template>
|
|
164
|
+
Map the proposed feature (in its trimmed Phase 3 form) to the creator need hierarchy:
|
|
165
|
+
|
|
166
|
+
| Level | Need | AutoCrew coverage | Examples |
|
|
167
|
+
|-------|------|-------------------|----------|
|
|
168
|
+
| 1. 生存 | Can publish, avoid violations | autocrew_review, sensitive-word check | 敏感词检测、基础发布 |
|
|
169
|
+
| 2. 效率 | Faster output, less repetition | spawn-writer, pipeline, humanize | 自动去AI味、批量改写 |
|
|
170
|
+
| 3. 质量 | Better content, competitive edge | research, references, teardowns | 信息源调研、竞品拆解 |
|
|
171
|
+
| 4. 增长 | Followers, monetization, moats | hypothesis testing, performance data | 流量假说、数据驱动优化 |
|
|
172
|
+
| 5. 自我实现 | Unique methodology, industry leadership | content pillars, style calibration | 个人方法论、风格体系 |
|
|
173
|
+
|
|
174
|
+
Evaluate:
|
|
175
|
+
1. Which level does this feature serve?
|
|
176
|
+
2. Which is the LOWEST level where AutoCrew still has meaningful gaps?
|
|
177
|
+
3. Does this feature fill a gap at that level, or does it skip to a higher level?
|
|
178
|
+
|
|
179
|
+
If the feature skips levels (e.g., building Level 4 when Level 2 has holes):
|
|
180
|
+
- Flag it explicitly: "这个功能在第 {N} 层,但第 {M} 层还有明显缺口:{gap}。建议先补 {M} 层。"
|
|
181
|
+
- This is not a veto — the user decides. But make the trade-off visible.
|
|
182
|
+
|
|
183
|
+
Priority recommendation:
|
|
184
|
+
- 填补当前层缺口 → 立即做
|
|
185
|
+
- 填补下一层 (当前层已完善) → 下个里程碑
|
|
186
|
+
- 跳级或锦上添花 → 放入 backlog
|
|
187
|
+
</prompt-template>
|
|
188
|
+
|
|
189
|
+
**Deliverable:** Value-level positioning and priority recommendation.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Red Team Self-Check
|
|
194
|
+
|
|
195
|
+
**Before writing the final conclusion, you MUST run this check:**
|
|
196
|
+
|
|
197
|
+
<prompt-template>
|
|
198
|
+
Switch to red team perspective:
|
|
199
|
+
|
|
200
|
+
If your conclusion is "做":
|
|
201
|
+
1. List 3 strongest reasons NOT to build this.
|
|
202
|
+
2. For each, attempt a rebuttal.
|
|
203
|
+
3. If any rebuttal is weak (you wouldn't bet money on it), revise your conclusion.
|
|
204
|
+
|
|
205
|
+
If your conclusion is "不做":
|
|
206
|
+
1. List 3 strongest reasons TO build this.
|
|
207
|
+
2. For each, attempt a rebuttal.
|
|
208
|
+
3. If any rebuttal is weak, revise your conclusion.
|
|
209
|
+
|
|
210
|
+
If your conclusion is "改形式再做":
|
|
211
|
+
1. List 2 reasons the original form was actually better.
|
|
212
|
+
2. List 2 reasons to just not build it at all.
|
|
213
|
+
3. Attempt rebuttals for all 4.
|
|
214
|
+
|
|
215
|
+
Display the red team exchange to the user. Transparency builds trust.
|
|
216
|
+
</prompt-template>
|
|
217
|
+
|
|
218
|
+
## Few-Shot Decision Examples
|
|
219
|
+
|
|
220
|
+
Use these as calibration anchors for discussion depth and output quality.
|
|
221
|
+
|
|
222
|
+
### Example A — "做" (Omni 视频拆解)
|
|
223
|
+
|
|
224
|
+
> **提案:** 用户发送对标账号视频,Omni 自动分析优缺点、可借鉴点,形成索引,后续持续关注。
|
|
225
|
+
>
|
|
226
|
+
> **🔍 苏格拉底:** 根本问题不是"分析视频",而是"创作者缺少结构化的学习输入"。
|
|
227
|
+
> 看了 100 个对标视频,脑子里一锅粥,写的时候还是凭感觉。
|
|
228
|
+
>
|
|
229
|
+
> **🧱 第一性原理:**
|
|
230
|
+
> - 视频内容提取 → 需要多模态能力 [genuine gap]
|
|
231
|
+
> - 结构化拆解模板 → 可复用 teardown 框架 [partially covered]
|
|
232
|
+
> - 索引 + 持续关注 → intel 模块可扩展 [partially covered]
|
|
233
|
+
> - 供 reference 引用 → references/ 工作流已有 [covered]
|
|
234
|
+
>
|
|
235
|
+
> **🪒 奥卡姆:** 不需要新 tool。扩展 `autocrew_intel` 加 `source: "video_teardown"`,
|
|
236
|
+
> 新建一个 skill 编排"输入视频 → 多模态分析 → 写入 intel + references"流程。
|
|
237
|
+
>
|
|
238
|
+
> **📊 马斯洛:** 质量层(Level 3),当前恰好在补这层缺口(刚加了 references 调研流程)。
|
|
239
|
+
> 契合度高。
|
|
240
|
+
>
|
|
241
|
+
> **结论:做。** 以 skill + intel 扩展形式,不新建 tool。
|
|
242
|
+
|
|
243
|
+
### Example B — "不做" (AI 自动生成封面)
|
|
244
|
+
|
|
245
|
+
> **提案:** AutoCrew 内置 AI 画图能力,自动生成封面。
|
|
246
|
+
>
|
|
247
|
+
> **🔍 苏格拉底:** 根本问题是"封面制作耗时",但追问后发现用户已经用 Canva/MidJourney,
|
|
248
|
+
> 痛点其实是"封面和内容不匹配"而不是"没有画图工具"。
|
|
249
|
+
>
|
|
250
|
+
> **🧱 第一性原理:**
|
|
251
|
+
> - 画图能力 → 已有大量成熟外部工具 [covered externally]
|
|
252
|
+
> - 封面与内容匹配度检查 → `autocrew_cover_review` 已存在 [covered]
|
|
253
|
+
> - 封面候选生成 → cover-generator skill 已存在 [covered]
|
|
254
|
+
>
|
|
255
|
+
> **🪒 奥卡姆:** 所有能力单元已覆盖或有外部替代。内置画图引擎是巨大维护负担。
|
|
256
|
+
>
|
|
257
|
+
> **📊 马斯洛:** 效率层(Level 2),但该层已有充分覆盖。
|
|
258
|
+
>
|
|
259
|
+
> **结论:不做。** 封面审核 + 候选管理已有,画图本身交给专业工具。
|
|
260
|
+
|
|
261
|
+
## Decision Report Template
|
|
262
|
+
|
|
263
|
+
After completing all phases + red team check, generate and save the report:
|
|
264
|
+
|
|
265
|
+
**File path:** `docs/decisions/YYYY-MM-DD-{feature-slug}.md`
|
|
266
|
+
|
|
267
|
+
```markdown
|
|
268
|
+
# 功能决策:{feature name}
|
|
269
|
+
|
|
270
|
+
## 结论
|
|
271
|
+
{做 / 不做 / 改形式再做}
|
|
272
|
+
{一句话理由}
|
|
273
|
+
|
|
274
|
+
## 提案原始描述
|
|
275
|
+
{用户原话或整理后的描述}
|
|
276
|
+
|
|
277
|
+
## 分析过程
|
|
278
|
+
|
|
279
|
+
### 🔍 苏格拉底提问 — 本质问题
|
|
280
|
+
- 根本问题:{一句话}
|
|
281
|
+
- 关键追问与回答:{2-3 条核心 Q&A 摘要}
|
|
282
|
+
|
|
283
|
+
### 🧱 第一性原理 — 需求拆解
|
|
284
|
+
| 能力单元 | 判定 | 理由 |
|
|
285
|
+
|----------|------|------|
|
|
286
|
+
| {unit} | ✅/⚠️/❌ | {reason} |
|
|
287
|
+
|
|
288
|
+
- 借鉴偏差检测:{有/无,说明}
|
|
289
|
+
|
|
290
|
+
### 🪒 奥卡姆剃刀 — 最简形式
|
|
291
|
+
- 推荐形式:{compose / extend / new skill / new tool / 不做}
|
|
292
|
+
- 砍掉的部分:{列表 + 理由}
|
|
293
|
+
- 最小可行范围:{具体描述}
|
|
294
|
+
|
|
295
|
+
### 📊 马斯洛需求分析 — 价值定位
|
|
296
|
+
- 需求层级:{Level N — 名称}
|
|
297
|
+
- 当前缺口匹配度:{填补当前缺口 / 跳级 / 锦上添花}
|
|
298
|
+
- 优先级建议:{立即做 / 下个里程碑 / 放入 backlog}
|
|
299
|
+
|
|
300
|
+
### 🔴 红队自检
|
|
301
|
+
{展示红队正反论点和反驳过程}
|
|
302
|
+
|
|
303
|
+
## 实现建议(仅当结论为"做"时)
|
|
304
|
+
- 形式:{skill / tool action / module}
|
|
305
|
+
- 依赖的现有组件:{列表}
|
|
306
|
+
- 主要风险:{列表}
|
|
307
|
+
- 建议下一步:{具体 action}
|
|
308
|
+
|
|
309
|
+
## 元数据
|
|
310
|
+
- 日期:{YYYY-MM-DD}
|
|
311
|
+
- 提案人:user
|
|
312
|
+
- 复杂度评估:{轻量/中等/重度}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Error Handling
|
|
316
|
+
|
|
317
|
+
| Situation | Action |
|
|
318
|
+
|-----------|--------|
|
|
319
|
+
| User gives vague one-liner ("加个知识库") | Start Phase 1 with broad Socratic question to ground the idea |
|
|
320
|
+
| User wants to skip discussion ("直接做就行") | Acknowledge urgency, compress to 2 rounds but still run Phase 2 + red team |
|
|
321
|
+
| User disagrees with "不做" conclusion | Respect user's final call. Log dissent in report: "用户决定override,理由:{reason}" |
|
|
322
|
+
| Feature overlaps with in-progress work | Flag overlap, suggest checking `docs/decisions/` for prior decisions on similar topics |
|
|
323
|
+
| Conclusion is "改形式再做" | Clearly describe the alternative form and what changes from the original proposal |
|
|
324
|
+
|
|
325
|
+
## What This Skill Does NOT Do
|
|
326
|
+
|
|
327
|
+
- Does NOT implement anything — no code, no scaffolding, no file creation beyond the decision report
|
|
328
|
+
- Does NOT chain into brainstorming, writing-plans, or any implementation skill
|
|
329
|
+
- Does NOT make the final decision — the user always has override authority
|
|
330
|
+
- Does NOT evaluate bugs, refactors, or small adjustments to existing features
|
|
331
|
+
|
|
332
|
+
## Changelog
|
|
333
|
+
|
|
334
|
+
- 2026-04-06: v1 — Initial design. Four-framework decision dialogue with adaptive complexity,
|
|
335
|
+
red team self-check, few-shot examples, structured decision reports.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-sync
|
|
3
|
+
description: |
|
|
4
|
+
Synchronize the knowledge wiki with new intel and references. Auto-triggered after
|
|
5
|
+
intel pull/ingest, or manually via "同步知识库" / "整理 wiki" / "sync knowledge base".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Knowledge Sync
|
|
9
|
+
|
|
10
|
+
> Executor skill. Reads new intel items and project references, synthesizes wiki pages,
|
|
11
|
+
> maintains cross-references, regenerates index, and runs lint checks.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
Before syncing, verify:
|
|
16
|
+
- `~/.autocrew/data/pipeline/wiki/` exists (if not, it will be created by initPipeline)
|
|
17
|
+
- At least one intel item exists in the library
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. **Determine what's new:**
|
|
22
|
+
|
|
23
|
+
a. Read `~/.autocrew/data/pipeline/wiki/log.md` to find the last sync timestamp.
|
|
24
|
+
If log.md doesn't exist, treat everything as new.
|
|
25
|
+
|
|
26
|
+
b. Call `autocrew_intel` with `action: "list"` to get all intel items.
|
|
27
|
+
Filter to items with `collectedAt` after the last sync timestamp.
|
|
28
|
+
|
|
29
|
+
c. Glob all project `references/` folders:
|
|
30
|
+
`~/.autocrew/data/pipeline/drafting/*/references/*.md`
|
|
31
|
+
Filter to files modified after last sync timestamp.
|
|
32
|
+
|
|
33
|
+
d. If nothing new → respond "知识库已是最新,无新素材需要消化。" and stop.
|
|
34
|
+
|
|
35
|
+
2. **Analyze and cluster new items:**
|
|
36
|
+
|
|
37
|
+
For each new intel/reference item:
|
|
38
|
+
- Extract key entities (company names, people, products, tools)
|
|
39
|
+
- Extract key concepts (methodologies, patterns, trends)
|
|
40
|
+
- Identify potential comparison pairs (X vs Y signals)
|
|
41
|
+
|
|
42
|
+
Group items by entity/concept relevance.
|
|
43
|
+
|
|
44
|
+
3. **Update or create wiki pages:**
|
|
45
|
+
|
|
46
|
+
Read `~/.autocrew/data/pipeline/wiki/index.md` to get existing pages.
|
|
47
|
+
|
|
48
|
+
For each entity/concept cluster:
|
|
49
|
+
|
|
50
|
+
a. **If a wiki page already exists** (match by slug or aliases):
|
|
51
|
+
- Read the existing page
|
|
52
|
+
- INCREMENTALLY update: append new facts to "Key Facts", add new source
|
|
53
|
+
to frontmatter `sources[]`, update `updated` date
|
|
54
|
+
- Do NOT rewrite the page. Preserve all existing content.
|
|
55
|
+
- Add the new information in context with what already exists.
|
|
56
|
+
|
|
57
|
+
b. **If no page exists AND ≥2 items reference this entity/concept:**
|
|
58
|
+
- Create a new wiki page with the unified format:
|
|
59
|
+
```
|
|
60
|
+
---
|
|
61
|
+
type: entity | concept | comparison
|
|
62
|
+
title: {Title}
|
|
63
|
+
aliases: [{alternative names}]
|
|
64
|
+
related: [{related page slugs}]
|
|
65
|
+
sources: [{intel file paths that inform this page}]
|
|
66
|
+
created: {today}
|
|
67
|
+
updated: {today}
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
# {Title}
|
|
71
|
+
|
|
72
|
+
{2-4 paragraphs synthesizing all source material}
|
|
73
|
+
|
|
74
|
+
## Key Facts
|
|
75
|
+
- {concrete facts with sources}
|
|
76
|
+
|
|
77
|
+
## Related
|
|
78
|
+
- [[{related-slug}]] — {one-line relationship description}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
c. **If no page exists AND only 1 item references this:** skip. Single-source
|
|
82
|
+
entities stay in the intel library until more evidence accumulates.
|
|
83
|
+
|
|
84
|
+
4. **Update cross-references:**
|
|
85
|
+
|
|
86
|
+
After all page creates/updates, scan all wiki pages:
|
|
87
|
+
- For each page, check if its `related[]` field is complete
|
|
88
|
+
- If page A mentions page B's title/aliases in its body but B is not in A's `related[]`, add it
|
|
89
|
+
- Ensure bidirectional: if A relates to B, B should relate to A
|
|
90
|
+
- Write updated pages back to disk
|
|
91
|
+
|
|
92
|
+
5. **Regenerate index.md:**
|
|
93
|
+
|
|
94
|
+
Rebuild `~/.autocrew/data/pipeline/wiki/index.md` from all pages,
|
|
95
|
+
grouped by type (Entities / Concepts / Comparisons), sorted alphabetically,
|
|
96
|
+
one line per entry with title + first-sentence summary.
|
|
97
|
+
|
|
98
|
+
6. **Append to log.md:**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
## [YYYY-MM-DD] sync | {N} new items processed
|
|
102
|
+
- Created: {list of new pages}
|
|
103
|
+
- Updated: {list of updated pages}
|
|
104
|
+
- Skipped: {count of single-source items not worth a page yet}
|
|
105
|
+
- Lint: {summary}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
7. **Lint check (silent — findings go to log only):**
|
|
109
|
+
|
|
110
|
+
- **Contradiction:** same fact has conflicting numbers/claims across pages
|
|
111
|
+
→ log: "⚠️ Contradiction: {page A} says X, {page B} says Y"
|
|
112
|
+
- **Orphan:** page with zero inbound `related[]` references from other pages
|
|
113
|
+
→ log: "⚠️ Orphan: {page} has no inbound links"
|
|
114
|
+
- **Stale:** page's `sources[]` contains intel files that have been archived (expired)
|
|
115
|
+
→ log: "⚠️ Stale: {page} references expired intel {source}"
|
|
116
|
+
|
|
117
|
+
8. **Report to user:**
|
|
118
|
+
|
|
119
|
+
> 知识库同步完成:
|
|
120
|
+
> - 新增页面:{list}
|
|
121
|
+
> - 更新页面:{list}
|
|
122
|
+
> - 当前 wiki 共 {N} 页
|
|
123
|
+
> - Lint 问题:{count}(详见 log.md)
|
|
124
|
+
|
|
125
|
+
## Error Handling
|
|
126
|
+
|
|
127
|
+
| Failure | Action |
|
|
128
|
+
|---------|--------|
|
|
129
|
+
| No new items since last sync | Report "已是最新" and stop |
|
|
130
|
+
| Wiki directory missing | Call initPipeline to create it |
|
|
131
|
+
| Intel list returns empty | Report "情报库为空,请先运行情报采集" |
|
|
132
|
+
| Page write fails | Log error, continue with remaining pages |
|
|
133
|
+
| Lint finds contradictions | Log to log.md, do not auto-resolve (user decides) |
|
|
134
|
+
|
|
135
|
+
## Changelog
|
|
136
|
+
|
|
137
|
+
- 2026-04-06: v1 — Initial version. Incremental sync, cross-references, lint.
|
|
@@ -86,13 +86,16 @@ onboarding 完成后,**不要停在引导页面**,直接继续用户最初
|
|
|
86
86
|
- 完成 onboarding 后,自动执行 research skill
|
|
87
87
|
- 用户感知是"回答了几个问题后就开始找选题了",而不是"被拦截做了一堆设置"
|
|
88
88
|
|
|
89
|
-
**实现方式**:onboarding skill
|
|
89
|
+
**实现方式**:onboarding skill 结束时,输出引导:
|
|
90
90
|
<output_template lang="zh-CN">
|
|
91
91
|
```
|
|
92
|
-
|
|
92
|
+
初始化完成!你可以:
|
|
93
|
+
1. 说"找选题"— 我帮你搜热门话题
|
|
94
|
+
2. 给我一个主题 — 我按你的风格写初稿
|
|
95
|
+
3. 说"风格校准"— 深度设置写作风格(推荐首次使用)
|
|
93
96
|
```
|
|
94
97
|
</output_template>
|
|
95
|
-
|
|
98
|
+
如果用户有原始请求(比如说"帮我找选题"触发了 onboarding),直接继续执行原始请求,不要停在引导页。
|
|
96
99
|
|
|
97
100
|
## 关键原则
|
|
98
101
|
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -301,9 +301,11 @@ A 和 B,哪个更像你?
|
|
|
301
301
|
|
|
302
302
|
3. **调用 `autocrew_memory` 的 `capture_feedback`** 记录校准完成事件
|
|
303
303
|
|
|
304
|
+
**⚠️ 不要在这里停下来等用户回复。风格保存后必须立即进入 Phase 4 生成选题。**
|
|
305
|
+
|
|
304
306
|
---
|
|
305
307
|
|
|
306
|
-
## Phase 4: 首个交付物 —— 3
|
|
308
|
+
## Phase 4: 首个交付物 —— 3 个选题(必须执行,不可跳过)
|
|
307
309
|
|
|
308
310
|
> 目标:校准完立刻产出价值,不要让用户空手离开。
|
|
309
311
|
|
|
@@ -318,9 +320,12 @@ A 和 B,哪个更像你?
|
|
|
318
320
|
4. 询问用户:
|
|
319
321
|
|
|
320
322
|
```
|
|
321
|
-
|
|
323
|
+
设置完成!这是基于你的品牌定位生成的 3 个选题,已经存到选题库了。
|
|
322
324
|
|
|
323
|
-
|
|
325
|
+
你可以:
|
|
326
|
+
1. 选一个让我写初稿(告诉我序号)
|
|
327
|
+
2. 说"找选题"让我搜更多热门话题
|
|
328
|
+
3. 直接给我一个主题,我按你的风格写
|
|
324
329
|
```
|
|
325
330
|
|
|
326
331
|
---
|
|
@@ -38,7 +38,9 @@ description: |
|
|
|
38
38
|
IF user adjusts → update parameters.
|
|
39
39
|
|
|
40
40
|
4. Execute the write-script workflow:
|
|
41
|
-
- Follow all steps in the `write-script` skill
|
|
41
|
+
- Follow all steps in the `write-script` skill **including Step 5.5 (research → references)**.
|
|
42
|
+
Do not skip research for "simple" topics — the references folder must have ≥3 relevant
|
|
43
|
+
source files before writing begins. A draft without references is a bug.
|
|
42
44
|
- Save the result using `autocrew_content` tool
|
|
43
45
|
- Link to topic_id if available
|
|
44
46
|
|
|
@@ -48,6 +50,14 @@ description: |
|
|
|
48
50
|
> 2. 改一改 — 告诉我哪里要调整
|
|
49
51
|
> 3. 重写 — 换个角度再来一版
|
|
50
52
|
|
|
53
|
+
6. **Handle revisions via `write-script` Step 11.**
|
|
54
|
+
If the user picks option 2 or 3, or gives any revision feedback in the same conversation,
|
|
55
|
+
you MUST follow `write-script` Step 11 — rewrite the full body and persist it via
|
|
56
|
+
`autocrew_content` with `action: "update"` (passing the original `content_id` and a
|
|
57
|
+
`diff_note`). Revisions that only appear in the chat window are a bug: the `draft.md`
|
|
58
|
+
in the pipeline must always reflect the latest version. Keep the `content_id` from
|
|
59
|
+
Step 4's save result in working memory for this purpose.
|
|
60
|
+
|
|
51
61
|
## Error Handling
|
|
52
62
|
|
|
53
63
|
| Failure | Action |
|