@cyber-dash-tech/revela 0.1.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/LICENSE +21 -0
- package/README.md +239 -0
- package/README.zh-CN.md +270 -0
- package/designs/default/DESIGN.md +1100 -0
- package/designs/editorial-ribbon/DESIGN.md +1092 -0
- package/designs/minimal/DESIGN.md +1079 -0
- package/domains/consulting/INDUSTRY.md +230 -0
- package/domains/deeptech-investment/INDUSTRY.md +160 -0
- package/domains/general/INDUSTRY.md +6 -0
- package/index.ts +1 -0
- package/lib/agents/research-prompt.ts +129 -0
- package/lib/commands/designs.ts +59 -0
- package/lib/commands/disable.ts +14 -0
- package/lib/commands/domains.ts +59 -0
- package/lib/commands/enable.ts +48 -0
- package/lib/commands/help.ts +35 -0
- package/lib/config.ts +65 -0
- package/lib/ctx.ts +27 -0
- package/lib/design/designs.ts +389 -0
- package/lib/domain/domains.ts +258 -0
- package/lib/frontmatter.ts +63 -0
- package/lib/log.ts +35 -0
- package/lib/prompt-builder.ts +194 -0
- package/lib/qa/checks.ts +594 -0
- package/lib/qa/index.ts +38 -0
- package/lib/qa/measure.ts +287 -0
- package/lib/read-hooks/extractors/docx.ts +16 -0
- package/lib/read-hooks/extractors/pdf.ts +19 -0
- package/lib/read-hooks/extractors/pptx.ts +53 -0
- package/lib/read-hooks/extractors/xlsx.ts +81 -0
- package/lib/read-hooks/image/compress.ts +36 -0
- package/lib/read-hooks/index.ts +12 -0
- package/lib/read-hooks/post-read.ts +74 -0
- package/lib/read-hooks/pre-read.ts +51 -0
- package/package.json +65 -0
- package/plugin.ts +365 -0
- package/skill/SKILL.md +676 -0
- package/tools/designs.ts +126 -0
- package/tools/domains.ts +73 -0
- package/tools/qa.ts +61 -0
- package/tools/research-save.ts +96 -0
- package/tools/workspace-scan.ts +154 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: consulting
|
|
3
|
+
description: Strategic consulting reports — Go/No-Go decisions, Strategy Design, Belief Change
|
|
4
|
+
author: revela
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Strategic Consulting Reports — Domain Knowledge
|
|
9
|
+
|
|
10
|
+
## 1. Core Definition
|
|
11
|
+
|
|
12
|
+
This domain covers three canonical consulting report types. The reasoning core is:
|
|
13
|
+
**Claim → Evidence → Synthesis**, executed under imperfect information.
|
|
14
|
+
Every conclusion must be earned through evidence, never asserted by adjective.
|
|
15
|
+
|
|
16
|
+
### Report Type Auto-Detection
|
|
17
|
+
|
|
18
|
+
| Signal in User Request | Report Type |
|
|
19
|
+
|------------------------|-------------|
|
|
20
|
+
| "Should we enter / invest / do X?" / "Is X worth doing?" | **Type I: Go/No-Go** |
|
|
21
|
+
| "How should we do X?" / "Which path?" / "What strategy?" | **Type II: Strategy Design** |
|
|
22
|
+
| "We believe X, is that right?" / "Help us rethink X" | **Type III: Belief Change** |
|
|
23
|
+
| Unclear | Ask the user before starting |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. Unified Argumentation Protocol
|
|
28
|
+
|
|
29
|
+
Execute these four steps internally before writing any slide content.
|
|
30
|
+
|
|
31
|
+
### Step 1: Claims
|
|
32
|
+
|
|
33
|
+
Convert every question into a declarative judgment: not "Is the market growing?" but
|
|
34
|
+
"The market is in sustained growth phase." Every slide title follows the same rule.
|
|
35
|
+
|
|
36
|
+
### Step 2: Evidence Plan
|
|
37
|
+
|
|
38
|
+
For each claim, identify required evidence types before collecting:
|
|
39
|
+
TAM / CAGR / demand drivers / capital flow / policy / company financials / case studies.
|
|
40
|
+
|
|
41
|
+
### Step 3: Evidence Collection — Priority Ladder
|
|
42
|
+
|
|
43
|
+
| Level | Type | Use when |
|
|
44
|
+
|-------|------|----------|
|
|
45
|
+
| L1 | Direct data (financials, market studies) | Always preferred |
|
|
46
|
+
| L2 | Indirect indicators (capex, volumes, hiring) | L1 unavailable |
|
|
47
|
+
| L3 | Named case studies (company + outcome) | Corroborate or illustrate |
|
|
48
|
+
| L4 | Logical inference / first principles | Last resort only |
|
|
49
|
+
|
|
50
|
+
Auto-downgrade when higher levels are unavailable. **Never interrupt reasoning.**
|
|
51
|
+
|
|
52
|
+
### Step 4: Synthesis
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Claim → Evidence (≥2 types) → Logic (causal link) → Conclusion
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Every claim needs ≥2 different evidence types. Every slide: 1 core insight + 3–5 supporting points + ≥1 evidence.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 3. Report Type I: Go / No-Go
|
|
63
|
+
|
|
64
|
+
**Goal:** Clear Yes / No / Conditional verdict on whether a strategic action is worth taking.
|
|
65
|
+
|
|
66
|
+
### Slide Structure (20–30 pages)
|
|
67
|
+
|
|
68
|
+
| Slide | Title | Content |
|
|
69
|
+
|-------|-------|---------|
|
|
70
|
+
| P1 | Executive Answer | Verdict + 3 core reasons (≤2 sentences each) |
|
|
71
|
+
| P2 | Key Risks Up Front | Top 3 risks (surfaces credibility early) |
|
|
72
|
+
| P3 | Scope & Framing | What is being evaluated; key constraints and assumptions |
|
|
73
|
+
| P4–P6 | Opportunity: Market Size | TAM/SAM/SOM; growth rate; addressable segment |
|
|
74
|
+
| P7–P9 | Opportunity: Demand Drivers | 2–3 structural drivers with evidence; timeline |
|
|
75
|
+
| P10–P12 | Economics: Revenue Model | Revenue structure; benchmark margins; how money is made |
|
|
76
|
+
| P13–P15 | Economics: Cost Structure | Key cost drivers; unit economics; comparable cases |
|
|
77
|
+
| P16–P17 | Entry Requirements: Capabilities | Capability threshold; current gap assessment |
|
|
78
|
+
| P18–P19 | Entry Requirements: Resources | Capital, time, partnerships required |
|
|
79
|
+
| P20–P22 | Risk Deep Dive | Market / Competitive / Execution / External risk |
|
|
80
|
+
| P23–P24 | Scenarios | Best / Base / Worst with quantified outcomes and triggers |
|
|
81
|
+
| P25–P27 | Competitive Landscape | Who is here; their advantages; whitespace |
|
|
82
|
+
| P28 | Opportunity Cost | What is forgone either way |
|
|
83
|
+
| P29 | Conditions for Yes | 3–5 conditions that must hold for success |
|
|
84
|
+
| P30 | Final Recommendation | Decision + rationale + next action |
|
|
85
|
+
|
|
86
|
+
### Page Allocation
|
|
87
|
+
|
|
88
|
+
| Requested | Strategy |
|
|
89
|
+
|-----------|----------|
|
|
90
|
+
| ≤10 | Verdict (P1) + Opportunity condensed (1) + Economics (1) + Risks (1) + Recommendation (P30) |
|
|
91
|
+
| 10–20 | All 7 sections; 1–2 slides each; skip scenario detail |
|
|
92
|
+
| 20–30 | Full structure above |
|
|
93
|
+
| >30 | Expand evidence slides; add data appendix |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 4. Report Type II: Strategy Design
|
|
98
|
+
|
|
99
|
+
**Goal:** Identify the best strategic path among alternatives. Delivers a recommended option with execution plan.
|
|
100
|
+
|
|
101
|
+
### Slide Structure (20–30 pages)
|
|
102
|
+
|
|
103
|
+
| Slide | Title | Content |
|
|
104
|
+
|-------|-------|---------|
|
|
105
|
+
| P1 | Recommended Path | Answer upfront: which option + why (2 sentences) |
|
|
106
|
+
| P2 | Objective & Constraints | Strategic goal + non-negotiable constraints + success metrics |
|
|
107
|
+
| P3 | Framing the Choice | Options available; how analysis is structured |
|
|
108
|
+
| P4–P6 | Value Pool Analysis | Where profit concentrates in the value chain; distribution evidence |
|
|
109
|
+
| P7–P9 | Competitive Landscape | Market structure; competitive dynamics; moats |
|
|
110
|
+
| P10–P11 | Capability Fit | Current capabilities vs. path requirements; gap map |
|
|
111
|
+
| P12–P14 | Option A | What it is + how it works + evidence it can succeed |
|
|
112
|
+
| P15–P17 | Option B | Same structure |
|
|
113
|
+
| P18 | Option C (if applicable) | Same structure, condensed |
|
|
114
|
+
| P19–P21 | Option Comparison Matrix | Return / difficulty / risk / capability fit / timeline |
|
|
115
|
+
| P22–P23 | Risks of Recommended Path | Top 3 risks + mitigation |
|
|
116
|
+
| P24 | Build / Partner / Acquire | How to close capability gaps |
|
|
117
|
+
| P25–P27 | Execution Plan | Phase 1/2/3 milestones; resources; decision gates |
|
|
118
|
+
| P28 | Success Metrics | 3–5 KPIs with targets and cadence |
|
|
119
|
+
| P29 | Downside Scenario | If recommended path fails; fallback |
|
|
120
|
+
| P30 | Decision & Next Steps | Confirm recommendation + immediate actions (owner + timeline) |
|
|
121
|
+
|
|
122
|
+
### Page Allocation
|
|
123
|
+
|
|
124
|
+
| Requested | Strategy |
|
|
125
|
+
|-----------|----------|
|
|
126
|
+
| ≤10 | Recommendation (P1) + Value Pool (1) + Options A/B comparison (2) + Execution (1) + Decision (1) |
|
|
127
|
+
| 10–20 | All sections; 1 slide per option; 1-slide execution summary |
|
|
128
|
+
| 20–30 | Full structure above |
|
|
129
|
+
| >30 | Expand each option; add financial modeling appendix |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 5. Report Type III: Belief Change
|
|
134
|
+
|
|
135
|
+
**Goal:** Shift a decision-maker's mental model. Persuasion through evidence and reframing, not assertion.
|
|
136
|
+
|
|
137
|
+
### Slide Structure (20–30 pages)
|
|
138
|
+
|
|
139
|
+
| Slide | Title | Content |
|
|
140
|
+
|-------|-------|---------|
|
|
141
|
+
| P1 | The New Frame | One sentence: the new belief. The whole deck proves this. |
|
|
142
|
+
| P2 | What We Used to Believe | Articulate the current belief honestly — earn trust before challenging |
|
|
143
|
+
| P3 | Why That Belief Made Sense | Validate the old model; show when it was correct |
|
|
144
|
+
| P4–P6 | The Gap / Tension | Evidence the old belief can no longer explain current observations |
|
|
145
|
+
| P7–P9 | Breaking the Old Frame | 3 specific pieces of evidence directly contradicting the old belief |
|
|
146
|
+
| P10–P12 | The New Frame Explained | What the new model is; how it explains the gaps |
|
|
147
|
+
| P13–P15 | Proof: Benchmark Companies | 2–3 named companies operating under the new frame — with outcomes |
|
|
148
|
+
| P16–P17 | Proof: Edge Cases | Cases where the old belief led to demonstrably wrong decisions |
|
|
149
|
+
| P18–P19 | Proof: Quantitative Evidence | Market data or research validating the new frame |
|
|
150
|
+
| P20–P21 | Implication: Opportunity | What becomes possible under the new frame |
|
|
151
|
+
| P22–P23 | Implication: Risk of Not Changing | What is at stake if the old belief persists |
|
|
152
|
+
| P24–P25 | The Stakes | Quantify: acting on old frame vs. new frame |
|
|
153
|
+
| P26–P27 | Objection Handling | Top 3 objections + direct rebuttals with evidence |
|
|
154
|
+
| P28 | What This Means for Us | Specific implications for the audience's context |
|
|
155
|
+
| P29 | Action Direction | 2–3 strategic directions enabled by the new frame |
|
|
156
|
+
| P30 | The Ask | What you want the audience to believe / decide / do next |
|
|
157
|
+
|
|
158
|
+
### Page Allocation
|
|
159
|
+
|
|
160
|
+
| Requested | Strategy |
|
|
161
|
+
|-----------|----------|
|
|
162
|
+
| ≤10 | Old belief (P2) + Gap (P4) + Break (P7) + New Frame (P10) + Proof (P13) + Implication (P20) + Ask (P30) |
|
|
163
|
+
| 10–20 | All 8 sections; compress proof to 2 slides; merge or skip objection handling |
|
|
164
|
+
| 20–30 | Full structure above |
|
|
165
|
+
| >30 | Expand proof with additional cases; add data appendix |
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 6. Research Guidance
|
|
170
|
+
|
|
171
|
+
### Information Mapping
|
|
172
|
+
|
|
173
|
+
| Document Type | Map to Report Section |
|
|
174
|
+
|---------------|-----------------------|
|
|
175
|
+
| Market research reports | Opportunity (Type I P4–P9), Value Pool (Type II P4–P6) |
|
|
176
|
+
| Company financials / P&L | Economics (Type I P10–P15), Option analysis (Type II) |
|
|
177
|
+
| Competitor analysis | Competitive Landscape, Option comparison |
|
|
178
|
+
| Internal strategy docs | Constraints, Capability fit, Objectives |
|
|
179
|
+
| Case study materials | Proof slides (Type III), Case evidence (all types) |
|
|
180
|
+
| Interview / meeting notes | Risk identification, Constraints, Belief mapping (Type III) |
|
|
181
|
+
| Industry news / press | Demand drivers, Policy signals, Competitive dynamics |
|
|
182
|
+
|
|
183
|
+
### Cross-Source Conflict Handling
|
|
184
|
+
|
|
185
|
+
- **User document vs. AI knowledge:** User document takes precedence
|
|
186
|
+
- **Two user documents conflict:** Flag in the relevant risk slide:
|
|
187
|
+
`[Data Conflict: Source A shows X; Source B shows Y — reconciliation needed]`
|
|
188
|
+
- **Missing data:** Auto-downgrade to L3/L4 evidence. Never halt.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 7. AI Logic Engine Directives
|
|
193
|
+
|
|
194
|
+
### Conclusive Title Rule
|
|
195
|
+
|
|
196
|
+
Every slide title is the insight — a conclusion, not a label:
|
|
197
|
+
|
|
198
|
+
| Correct | Wrong |
|
|
199
|
+
|---------|-------|
|
|
200
|
+
| "Market growing at 18% CAGR — entry window is open" | "Market Overview" |
|
|
201
|
+
| "Path B requires capabilities we do not currently have" | "Option Comparison" |
|
|
202
|
+
| "All three benchmark leaders chose vertical integration" | "Competitive Landscape" |
|
|
203
|
+
|
|
204
|
+
### Evidence Attribution
|
|
205
|
+
|
|
206
|
+
Cite source inline for all critical data: `[Source: McKinsey, 2023]`, `[Source: Company 10-K FY2023 p.47]`,
|
|
207
|
+
`[Source: analytical inference — verify]`. No unsourced assertions on key claims.
|
|
208
|
+
|
|
209
|
+
### Signal-to-Noise Rule
|
|
210
|
+
|
|
211
|
+
Never use without quantitative backing: "leading", "dominant", "significant", "transformative",
|
|
212
|
+
"clearly", "obviously". Replace with specifics: not "significant opportunity" but
|
|
213
|
+
"$4.2B market growing at 18% CAGR (2023–2028)".
|
|
214
|
+
|
|
215
|
+
### Structural Defaults
|
|
216
|
+
|
|
217
|
+
- **2×2 matrices** for positioning comparisons (risk vs. return, capability vs. attractiveness)
|
|
218
|
+
- **Comparison tables** mandatory in Type II; ≥3 evaluation dimensions
|
|
219
|
+
- **Before/After frames** mandatory in Type III for old vs. new belief visualization
|
|
220
|
+
- **If request spans Type I + II:** complete Type I verdict first; proceed to Type II only if verdict is Go or Conditional
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## 8. Visual Preferences (Advisory — Design Layer Takes Priority)
|
|
225
|
+
|
|
226
|
+
- **Tone:** Clean, high-contrast, professional. Dark text on light background.
|
|
227
|
+
- **Layout:** Prioritize matrices, comparison tables, and side-by-side layouts over bullet lists
|
|
228
|
+
- **Color:** Neutral (gray/blue) for facts; amber for opportunity; red for risk. One accent per slide.
|
|
229
|
+
- **Density:** Medium-high — consulting slides carry more data than pitch decks
|
|
230
|
+
- **Annotation:** Call out key figures with stat-card or pull-quote; do not bury in table cells
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deeptech-investment
|
|
3
|
+
description: 硬科技投资行业——半导体、量子计算、核能、新能源、创新药等投研报告
|
|
4
|
+
author: slides-it
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 硬科技投资 — 行业定义
|
|
9
|
+
|
|
10
|
+
## 1. 核心定义 (Definition)
|
|
11
|
+
|
|
12
|
+
本场景专为硬科技(半导体、量子计算、核能、新能源、创新药等)投资经理设计。
|
|
13
|
+
逻辑重心在于**"从底层科学证实向商业工程化落地"的收敛**。
|
|
14
|
+
对于早期项目,自动切换为"学术溯源"与"第一性原理"权重模式。
|
|
15
|
+
|
|
16
|
+
## 2. 报告结构框架 (30-Page Framework)
|
|
17
|
+
|
|
18
|
+
**本结构覆盖 SKILL.md 中的 Required Slide Structure。** 生成硬科技投研报告时,
|
|
19
|
+
按以下五阶段组织内容。用户请求的 slide 数量决定每阶段的详略分配。
|
|
20
|
+
|
|
21
|
+
### 第一阶段:执行摘要与核心逻辑 (P1-P3)
|
|
22
|
+
|
|
23
|
+
| Page | 标题 | 内容 |
|
|
24
|
+
|------|------|------|
|
|
25
|
+
| P1 | 执行摘要 (The Big Idea) | 突破性技术名称 + 解决的底层物理/化学痛点 + 预估商业天花板。提炼该技术如何打破行业"不可能三角"的逻辑。 |
|
|
26
|
+
| P2 | 投资亮点 (Investment Thesis) | 3 条核心理由(如:技术独占性、全球唯一量产工艺、顶级科学家背书)。 |
|
|
27
|
+
| P3 | 关键风险 (Killer Risks) | 识别技术迭代风险、工艺瓶颈、核心人物离职风险。 |
|
|
28
|
+
|
|
29
|
+
### 第二阶段:底层科学与学术护城河 (P4-P10)
|
|
30
|
+
|
|
31
|
+
| Page | 标题 | 内容 |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| P4-P5 | 第一性原理 (The Science) | 将论文/专利转化为原理图,说明在分子/原子/电子层面的先进性。 |
|
|
34
|
+
| P6-P7 | 学术谱系 (Academic Lineage) | 创始人导师、所属国家重点实验室、H-index、顶级期刊(Nature/Science)发表记录。**早期项目核心**——判定技术正统性与学术圈层资源。 |
|
|
35
|
+
| P8-P10 | 专利与 IP (IP Moat) | 统计底层专利 vs 应用专利、地域保护、到期时间、职务发明洁净度。 |
|
|
36
|
+
|
|
37
|
+
### 第三阶段:硬核参数对比与实验证据 (P11-P18)
|
|
38
|
+
|
|
39
|
+
| Page | 标题 | 内容 |
|
|
40
|
+
|------|------|------|
|
|
41
|
+
| P11-P13 | 性能对标 (Benchmarking) | 提取 Top 3 关键指标(如:Qubit 数量、转化效率、药代动力学参数)。对比逻辑:[本项目] vs [行业龙头 Tier 1] vs [学术界基准]。 |
|
|
42
|
+
| P14-P18 | 数据验证 (Data Evidence) | 识别良率曲线、P 值、置信区间或临床 Endpoint。 |
|
|
43
|
+
|
|
44
|
+
### 第四阶段:工程化路径与市场 (P19-P25)
|
|
45
|
+
|
|
46
|
+
| Page | 标题 | 内容 |
|
|
47
|
+
|------|------|------|
|
|
48
|
+
| P19-P21 | TRL 评估 (Scalability) | 评估 TRL 1-9 阶段。分析从实验室(Lab)到中试(Pilot)的转化瓶颈。 |
|
|
49
|
+
| P22-P25 | 行业拐点 (Market Dynamics) | 分析政策红利、国产替代空间或新市场增量。 |
|
|
50
|
+
|
|
51
|
+
### 第五阶段:交易结构与决策 (P26-P30)
|
|
52
|
+
|
|
53
|
+
| Page | 标题 | 内容 |
|
|
54
|
+
|------|------|------|
|
|
55
|
+
| P26 | 股权结构 (Cap Table) | 创始人、员工持股平台、过往投资方及其持股比例。 |
|
|
56
|
+
| P27 | 融资方案 (The Deal) | 拟融资金额、投前/投后估值、融资用途。 |
|
|
57
|
+
| P28 | 估值对标 (Valuation) | 同赛道近期融资案例 PS/PE 倍数或管线折现值。 |
|
|
58
|
+
| P29 | 退出路径 (Exit Strategy) | IPO 目标板块(科创板/18A 等)或潜在并购方名单。 |
|
|
59
|
+
| P30 | 最终投资建议 (Recommendation) | 明确"拟投/不投/观察"建议及下一步 CDD 重点。 |
|
|
60
|
+
|
|
61
|
+
### Slide 数量映射
|
|
62
|
+
|
|
63
|
+
用户请求的 slide 数量不一定是 30 页。按以下原则分配:
|
|
64
|
+
|
|
65
|
+
| 请求页数 | 分配策略 |
|
|
66
|
+
|----------|----------|
|
|
67
|
+
| ≤ 8 页 | 每阶段 1-2 页,聚焦执行摘要 + 核心科学 + 投资建议 |
|
|
68
|
+
| 10-15 页 | 五阶段各取重点,跳过非核心子页 |
|
|
69
|
+
| 20-30 页 | 完整五阶段,逐页展开 |
|
|
70
|
+
| > 30 页 | 允许拆分子页(如 Benchmarking 按指标拆成多页) |
|
|
71
|
+
|
|
72
|
+
## 2.5 调研指导 (Research Guidance for Deeptech)
|
|
73
|
+
|
|
74
|
+
调研流程(文档扫描、提取、AI 补充、联网搜索、差距分析)的通用步骤和工具用法
|
|
75
|
+
由 SKILL.md Phase 1.8 统一定义。**请严格遵循 SKILL.md 的调研协议。**
|
|
76
|
+
|
|
77
|
+
本节只提供硬科技投研场景的**行业特定指导**,补充 SKILL.md 的通用流程。
|
|
78
|
+
|
|
79
|
+
### 信息映射(SKILL.md Phase 1.8 Layer 1 提取后执行)
|
|
80
|
+
|
|
81
|
+
将提取到的信息与报告结构框架(第 2 节)进行映射:
|
|
82
|
+
|
|
83
|
+
| 信息来源 | 可能匹配的报告章节 |
|
|
84
|
+
|----------|---------------------|
|
|
85
|
+
| 论文 / 专利 PDF | P4-P5 第一性原理、P8-P10 专利与 IP、P11-P13 性能对标 |
|
|
86
|
+
| 公司 BP / PPT | P1 执行摘要、P2 投资亮点、P26 股权结构、P27 融资方案 |
|
|
87
|
+
| 财务数据 Excel / CSV | P28 估值对标、P29 退出路径 |
|
|
88
|
+
| 访谈纪要 / 会议记录 | P3 关键风险、矛盾点监控 |
|
|
89
|
+
| 行业研究报告 | P22-P25 行业拐点、市场规模 |
|
|
90
|
+
| 产品测试数据 | P14-P18 数据验证 |
|
|
91
|
+
| 团队简历 / 学术简历 | P6-P7 学术谱系 |
|
|
92
|
+
|
|
93
|
+
### 联网搜索关键词策略(SKILL.md Phase 1.8 Layer 2.5 执行时参考)
|
|
94
|
+
|
|
95
|
+
| 搜索目标 | 关键词策略示例 | 对应报告章节 |
|
|
96
|
+
|----------|--------------|-------------|
|
|
97
|
+
| 最新融资/估值 | `"[公司名] 融资 2024"`, `"[公司名] funding round"` | P28 估值对标 |
|
|
98
|
+
| 竞品动态 | `"[技术领域] 竞争格局"`, `"[技术名] market landscape"` | P11-P13 性能对标 |
|
|
99
|
+
| 市场规模 | `"[行业] 市场规模 预测"`, `"[industry] TAM SAM SOM"` | P22-P25 行业拐点 |
|
|
100
|
+
| 专利动态 | `"[公司名] 专利 公告"`, `"[公司名] patent filing"` | P8-P10 专利与 IP |
|
|
101
|
+
| 政策法规 | `"[行业] 政策 补贴"`, `"[行业] regulation update"` | P22-P25 行业拐点 |
|
|
102
|
+
| 学术进展 | `"[技术名] Nature Science 2024"`, `"[技术名] breakthrough"` | P4-P5 第一性原理 |
|
|
103
|
+
|
|
104
|
+
### 行业特定规则
|
|
105
|
+
|
|
106
|
+
- 文档中的数据与 AI 知识 / 搜索结果冲突时,**以文档为准**
|
|
107
|
+
- 文档中不同来源的数据冲突时,在风险页标注(见 §3 矛盾点监控)
|
|
108
|
+
|
|
109
|
+
## 3. AI 逻辑引擎指令
|
|
110
|
+
|
|
111
|
+
### TRL 自适应权重
|
|
112
|
+
|
|
113
|
+
- 若 TRL < 4(基础研究 / 实验室验证阶段):自动调高"学术谱系"及"第一性原理"权重至 60%,弱化"工程化量产"和"成本对标"
|
|
114
|
+
- 若 TRL ≥ 4 且 < 7(中试 / 小批量阶段):均衡分配
|
|
115
|
+
- 若 TRL ≥ 7(量产就绪):加重"工程化量产"及"成本对标"权重,弱化学术背景
|
|
116
|
+
|
|
117
|
+
### 矛盾点监控
|
|
118
|
+
|
|
119
|
+
实时核对不同来源的数据一致性:
|
|
120
|
+
- "会议纪要"中提到的实验参数与"BP/论文"是否一致
|
|
121
|
+
- 不一致处**必须在风险页标红**,附注"数据来源冲突:[Source A] vs [Source B]"
|
|
122
|
+
|
|
123
|
+
### 标题结论化
|
|
124
|
+
|
|
125
|
+
所有页面标题必须是结论性陈述,不能是描述性标题。
|
|
126
|
+
|
|
127
|
+
| 正确 | 错误 |
|
|
128
|
+
|------|------|
|
|
129
|
+
| "技术领先同类竞品一个量级" | "技术介绍" |
|
|
130
|
+
| "核心专利 5 年内无到期风险" | "专利分析" |
|
|
131
|
+
| "创始人师承 Nature 通讯作者,学术壁垒显著" | "团队背景" |
|
|
132
|
+
|
|
133
|
+
### 证据溯源
|
|
134
|
+
|
|
135
|
+
关键数据必须标注来源:
|
|
136
|
+
- `[Source: XX 论文 P12]`
|
|
137
|
+
- `[Source: 创始人访谈记录 2024.03.15]`
|
|
138
|
+
- `[Source: 招股书 P45]`
|
|
139
|
+
- `[Source: 内部测试数据]`
|
|
140
|
+
|
|
141
|
+
禁止出现无来源的关键数据断言。
|
|
142
|
+
|
|
143
|
+
### 信噪比规则
|
|
144
|
+
|
|
145
|
+
**严禁**出现以下无数据支撑的形容词:
|
|
146
|
+
- "领先"、"卓越"、"顶级"、"世界一流"、"颠覆性"
|
|
147
|
+
|
|
148
|
+
所有定性判断必须附带定量依据。如需表达领先性,用具体指标:
|
|
149
|
+
- 正确:"转化效率 23.5%,高于行业均值 19.2%(+4.3pp)"
|
|
150
|
+
- 错误:"转化效率行业领先"
|
|
151
|
+
|
|
152
|
+
## 4. 视觉偏好(建议,可被 Design 覆盖)
|
|
153
|
+
|
|
154
|
+
以下为该行业推荐的视觉风格。如果当前 active Design 有自己的定义,
|
|
155
|
+
Design 的视觉规则优先。
|
|
156
|
+
|
|
157
|
+
- **风格基调:** 深色科技感,强调精确性与数据密度
|
|
158
|
+
- **图表交互:** 关键图表支持悬浮显示底层计算公式或实验原始片段
|
|
159
|
+
- **数据呈现:** 优先使用 Stat Card + 对比表格,减少纯文字叙述
|
|
160
|
+
- **颜色暗示:** 风险页使用红色强调色,机会页使用绿色/蓝色强调色
|
package/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./plugin.ts"
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revela Research Agent — system prompt
|
|
3
|
+
*
|
|
4
|
+
* Injected via plugin config hook into the `revela-research` subagent.
|
|
5
|
+
* The RESEARCH_AGENT_SIGNATURE is used by the system.transform hook to
|
|
6
|
+
* detect this agent and skip injecting the SKILL+DESIGN presentation prompt.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const RESEARCH_AGENT_SIGNATURE = "[[REVELA-RESEARCH-AGENT]]"
|
|
10
|
+
|
|
11
|
+
export const RESEARCH_PROMPT = `${RESEARCH_AGENT_SIGNATURE}
|
|
12
|
+
|
|
13
|
+
# Revela Research Agent
|
|
14
|
+
|
|
15
|
+
You are a specialized research agent for Revela, an AI presentation generator.
|
|
16
|
+
Your sole job is to **search, collect, and organize raw materials** for one research
|
|
17
|
+
axis of a consulting or business presentation. You do NOT generate slides.
|
|
18
|
+
|
|
19
|
+
You are launched in parallel with other research agents — each covering a different axis.
|
|
20
|
+
Write your findings to a single file and return a brief summary.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Your Mission
|
|
25
|
+
|
|
26
|
+
Given a research brief specifying your topic and axis, you will:
|
|
27
|
+
|
|
28
|
+
1. Scan the workspace for existing documents (always first)
|
|
29
|
+
2. Search the web for current data, reports, and case studies
|
|
30
|
+
3. Write all findings to ONE structured file: \`researches/{topic-slug}/{axis-name}.md\`
|
|
31
|
+
4. Return a brief summary of what you found
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Step 1 — Workspace documents (always first)
|
|
36
|
+
|
|
37
|
+
Use the **\`revela-workspace-scan\`** tool in a single call to discover all document
|
|
38
|
+
files in the workspace (PDF, Word, Excel, PowerPoint, CSV, text).
|
|
39
|
+
|
|
40
|
+
Then read every relevant file using the \`read\` tool. For PDFs and Office formats,
|
|
41
|
+
the Revela plugin extracts text transparently — just call \`read\` normally.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 2 — Web search (targeted)
|
|
46
|
+
|
|
47
|
+
Formulate **3–6 targeted search queries** for your specific axis, covering:
|
|
48
|
+
- Quantitative data (market size, growth rates, rankings, financials)
|
|
49
|
+
- Source reports and analyst research
|
|
50
|
+
- Company profiles and case studies relevant to your axis
|
|
51
|
+
- Recent news, funding, or regulatory changes
|
|
52
|
+
- Company logos, product screenshots, key personnel portraits (when profiling companies)
|
|
53
|
+
|
|
54
|
+
For Chinese topics: search in **both Chinese and English**.
|
|
55
|
+
|
|
56
|
+
Use \`webfetch\` to retrieve specific pages for depth. Do NOT use \`websearch\` —
|
|
57
|
+
it is not available. Use \`webfetch\` with targeted URLs from your knowledge or
|
|
58
|
+
from initial search results.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 3 — Write findings file
|
|
63
|
+
|
|
64
|
+
Use **\`revela-research-save\`** to write ONE file with all your findings.
|
|
65
|
+
|
|
66
|
+
- \`topic\`: kebab-case slug shared across all agents for this presentation
|
|
67
|
+
- \`filename\`: your axis name (e.g. \`market-data\`, \`catl-profile\`, \`tech-trends\`)
|
|
68
|
+
- \`content\`: structured findings using the four sections below
|
|
69
|
+
- \`sources\`: list of all URLs and filenames used
|
|
70
|
+
|
|
71
|
+
### Findings file format
|
|
72
|
+
|
|
73
|
+
Use these four sections — omit any that are empty:
|
|
74
|
+
|
|
75
|
+
\`\`\`markdown
|
|
76
|
+
## Data
|
|
77
|
+
- {stat or finding} [Source: {url or filename}]
|
|
78
|
+
- {stat or finding} [Source: {url or filename}]
|
|
79
|
+
(5–10 items, most argument-worthy only)
|
|
80
|
+
|
|
81
|
+
## Cases
|
|
82
|
+
- **{Company/Entity}**: {1–2 sentence profile with key metrics} [Source: {url}]
|
|
83
|
+
(2–4 entries max)
|
|
84
|
+
|
|
85
|
+
## Images
|
|
86
|
+
- {Description}: {url} | Alt: {brief alt text} | Use: logo|screenshot|portrait
|
|
87
|
+
(only if found — do NOT fabricate URLs)
|
|
88
|
+
|
|
89
|
+
## Gaps
|
|
90
|
+
- {topic or data point not found or insufficiently covered}
|
|
91
|
+
\`\`\`
|
|
92
|
+
|
|
93
|
+
Content rules:
|
|
94
|
+
- Every data point MUST have inline source attribution: \`[Source: {url}]\` or \`[Source: AI knowledge — verify]\` or \`[Source: {filename}]\`
|
|
95
|
+
- Preserve raw numbers and direct quotes — do not summarize prematurely
|
|
96
|
+
- Use tables for comparative data when 3+ entities are compared
|
|
97
|
+
- Include publication dates where available
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Completion
|
|
102
|
+
|
|
103
|
+
After writing the file, return this summary (do NOT include the raw data):
|
|
104
|
+
|
|
105
|
+
\`\`\`
|
|
106
|
+
Research complete: {axis-name} → researches/{topic-slug}/{axis-name}.md
|
|
107
|
+
|
|
108
|
+
Key findings (3–5, most argument-worthy only):
|
|
109
|
+
- {1–2 sentence highlight with source}
|
|
110
|
+
- {1–2 sentence highlight with source}
|
|
111
|
+
|
|
112
|
+
Gaps:
|
|
113
|
+
- {any significant gaps}
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Rules
|
|
119
|
+
|
|
120
|
+
- **NEVER** generate slide content or HTML — that is the primary agent's job
|
|
121
|
+
- **NEVER** ask the user for information you can find through search or workspace files
|
|
122
|
+
- **NEVER** use the raw \`write\` tool — always use \`revela-research-save\`
|
|
123
|
+
- **NEVER** fabricate image URLs — only record URLs you actually found
|
|
124
|
+
- **Always** include source attribution on every data point
|
|
125
|
+
- **Always** use tables for comparative data (more useful than bullets for presentations)
|
|
126
|
+
- **Preserve** raw data — the primary agent will select what to include in slides
|
|
127
|
+
- **Note** data freshness — include publication dates where available
|
|
128
|
+
- **One file only** — call \`revela-research-save\` exactly once with all your findings
|
|
129
|
+
`
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/commands/designs.ts
|
|
3
|
+
*
|
|
4
|
+
* Handlers for design-related sub-commands:
|
|
5
|
+
* /revela designs — list installed designs
|
|
6
|
+
* /revela designs <name> — activate a design
|
|
7
|
+
* /revela designs-add <url> — install a design from URL / github:user/repo / local path
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { listDesigns, activeDesign, activateDesign, installDesign } from "../design/designs"
|
|
11
|
+
import { buildPrompt } from "../prompt-builder"
|
|
12
|
+
|
|
13
|
+
export async function handleDesignsList(
|
|
14
|
+
send: (text: string) => Promise<void>,
|
|
15
|
+
): Promise<void> {
|
|
16
|
+
const designs = listDesigns()
|
|
17
|
+
const current = activeDesign()
|
|
18
|
+
if (!designs.length) {
|
|
19
|
+
await send(`No designs installed. Use \`/revela designs-add <url>\` to install one.`)
|
|
20
|
+
return
|
|
21
|
+
}
|
|
22
|
+
const lines = designs.map((d) => {
|
|
23
|
+
if (d.name === current) {
|
|
24
|
+
return `🟠 **${d.name}** — ${d.description || "(no description)"}`
|
|
25
|
+
}
|
|
26
|
+
return ` ${d.name} — ${d.description || "(no description)"}`
|
|
27
|
+
})
|
|
28
|
+
await send(`**Installed designs:**\n\n${lines.join("\n")}`)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function handleDesignsActivate(
|
|
32
|
+
name: string,
|
|
33
|
+
send: (text: string) => Promise<void>,
|
|
34
|
+
): Promise<void> {
|
|
35
|
+
try {
|
|
36
|
+
activateDesign(name)
|
|
37
|
+
buildPrompt()
|
|
38
|
+
await send(`**Design activated:** \`${name}\`\nPrompt rebuilt. The new visual style will apply to the next message.`)
|
|
39
|
+
} catch (e: any) {
|
|
40
|
+
await send(`**Error:** ${e.message}`)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function handleDesignsAdd(
|
|
45
|
+
source: string,
|
|
46
|
+
send: (text: string) => Promise<void>,
|
|
47
|
+
): Promise<void> {
|
|
48
|
+
if (!source) {
|
|
49
|
+
await send(`**Usage:** \`/revela designs-add <url|github:user/repo|local-path>\``)
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
await send(`Installing design from \`${source}\`…`)
|
|
54
|
+
const name = await installDesign(source)
|
|
55
|
+
await send(`**Design installed:** \`${name}\`\nUse \`/revela designs ${name}\` to activate it.`)
|
|
56
|
+
} catch (e: any) {
|
|
57
|
+
await send(`**Install failed:** ${e.message}`)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/commands/disable.ts
|
|
3
|
+
*
|
|
4
|
+
* Handler for `/revela disable` — deactivates slide generation mode.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ctx } from "../ctx"
|
|
8
|
+
|
|
9
|
+
export async function handleDisable(
|
|
10
|
+
send: (text: string) => Promise<void>,
|
|
11
|
+
): Promise<void> {
|
|
12
|
+
ctx.enabled = false
|
|
13
|
+
await send(`**Revela disabled.** Slide generation mode is off.`)
|
|
14
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/commands/domains.ts
|
|
3
|
+
*
|
|
4
|
+
* Handlers for domain-related sub-commands:
|
|
5
|
+
* /revela domains — list installed domains
|
|
6
|
+
* /revela domains <name> — activate a domain
|
|
7
|
+
* /revela domains-add <url> — install a domain from URL / github:user/repo / local path
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { listDomains, activeDomain, activateDomain, installDomain } from "../domain/domains"
|
|
11
|
+
import { buildPrompt } from "../prompt-builder"
|
|
12
|
+
|
|
13
|
+
export async function handleDomainsList(
|
|
14
|
+
send: (text: string) => Promise<void>,
|
|
15
|
+
): Promise<void> {
|
|
16
|
+
const domains = listDomains()
|
|
17
|
+
const current = activeDomain()
|
|
18
|
+
if (!domains.length) {
|
|
19
|
+
await send(`No domains installed. Use \`/revela domains-add <url>\` to install one.`)
|
|
20
|
+
return
|
|
21
|
+
}
|
|
22
|
+
const lines = domains.map((d) => {
|
|
23
|
+
if (d.name === current) {
|
|
24
|
+
return `🟠 **${d.name}** — ${d.description || "(no description)"}`
|
|
25
|
+
}
|
|
26
|
+
return ` ${d.name} — ${d.description || "(no description)"}`
|
|
27
|
+
})
|
|
28
|
+
await send(`**Installed domains:**\n\n${lines.join("\n")}`)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function handleDomainsActivate(
|
|
32
|
+
name: string,
|
|
33
|
+
send: (text: string) => Promise<void>,
|
|
34
|
+
): Promise<void> {
|
|
35
|
+
try {
|
|
36
|
+
activateDomain(name)
|
|
37
|
+
buildPrompt()
|
|
38
|
+
await send(`**Domain activated:** \`${name}\`\nPrompt rebuilt. The new domain context will apply to the next message.`)
|
|
39
|
+
} catch (e: any) {
|
|
40
|
+
await send(`**Error:** ${e.message}`)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function handleDomainsAdd(
|
|
45
|
+
source: string,
|
|
46
|
+
send: (text: string) => Promise<void>,
|
|
47
|
+
): Promise<void> {
|
|
48
|
+
if (!source) {
|
|
49
|
+
await send(`**Usage:** \`/revela domains-add <url|github:user/repo|local-path>\``)
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
await send(`Installing domain from \`${source}\`…`)
|
|
54
|
+
const name = await installDomain(source)
|
|
55
|
+
await send(`**Domain installed:** \`${name}\`\nUse \`/revela domains ${name}\` to activate it.`)
|
|
56
|
+
} catch (e: any) {
|
|
57
|
+
await send(`**Install failed:** ${e.message}`)
|
|
58
|
+
}
|
|
59
|
+
}
|