{"id":"add1c670-7659-41e2-8ac3-15ddd488616d","shortId":"Fumetb","kind":"skill","title":"sn-research-planning","tagline":"深度研究的精简计划；当需要仅基于 request.md 生成 plan.json，一次性完成研究定界、报告格式发现、结构设想、维度拆解、关键问题、搜索策略、依赖、执行顺序和完成标准时使用。","description":"# Research Planning\n\n产出 `plan.json`。它同时承担定界、报告形态约束和执行地图，用来指导 `sub_reports/*.md` 和最终 `report.md` 的生成；不是研究结论预设。\n\n## 行为边界\n\n做：\n\n- 从 `request.md` 识别研究目标、边界、受众、用途、时间/地域和假设。\n- 在需要时先做报告格式发现，再设计有依据的报告形态。\n- 设计轻量报告形态：终稿章节、结构依据、必须产出的表格/图/比较项、写作约束。\n- 把关键问题拆成可执行研究维度。\n- 让每个维度都能独立落盘为一个子报告。\n- 明确每个维度要回答什么、用什么方法、产出什么材料。\n- 为每个维度指定搜索策略和充分性标准。\n- 排出合理执行顺序和真实依赖。\n\n不做：\n\n- 不写研究结论。\n- 不把终稿章节直接复制成研究维度。\n- 不做单独的 `briefing.md`、`blueprint.json` 或 `synthesis.md`。\n- 不做资料综述或事实展开。\n- 不制造不必要的并行/依赖复杂度。\n\n## 输入\n\n- `{report_dir}/request.md`\n\n## 规划流程\n\n1. **锁定目标**：从 `request.md` 提取最终报告要服务的判断。\n2. **界定范围**：写清对象、时间、地域、受众/用途、排除项和执行假设。\n3. **判断是否需要格式发现**：如果用户已明确给出报告结构，或报告类型非常标准且约束明显，可直接进入下一步；否则先做一次轻量格式发现。\n4. **发现报告格式**：必要时读取 `sn-report-format-discovery`，识别报告类型、可信结构来源、必备章节、强制元素和风格约束，再压缩进 `plan.json.report_shape`。\n5. **设定报告形态**：给出终稿章节建议、结构依据、必备元素、适合的表格/图和写作约束。\n6. **抽取问题**：把关键问题分成基础事实、机制/原因、比较、影响、风险、趋势或建议类问题。\n7. **设计维度**：按“可独立研究、可回答问题、可贡献终稿”的标准合并或拆分维度。\n8. **定义任务**：为每个维度写清 `key_questions`、`method`、`search_strategy`、`expected_output` 和 `depends_on`。\n9. **定义搜索充分性**：说明需要覆盖哪些来源类型、至少几轮检索、哪些关键问题必须交叉确认。\n10. **排序执行**：先做定义、事实、背景和口径类维度，再做比较、解释、影响、判断类维度。\n11. **写完成标准**：明确什么条件下可以从分维度研究进入终稿写作。\n\n## 报告格式发现\n\n规划阶段不要求每次都单独研究格式，但在下列情况应主动做一次格式发现：\n\n- 用户只说“做个研究报告”，没有给章节结构。\n- 报告类型强依赖领域规范，如政策、法律、监管、学术/医学综述、尽调、技术选型。\n- 目标读者或使用场景会显著影响结构，如对外汇报、投决支持、内部选型、监管沟通。\n- 你不确定终稿应该优先呈现结论、时间线、比较矩阵、风险清单还是方法说明。\n\n可以直接从 `request.md` 推断 `genre`、`domain`、`audience`、`region`；若这些信息不足以稳健决定结构，再读取 `sn-report-format-discovery`。\n\n发现格式时只需要回答 4 件事：\n\n1. 这份报告最接近哪一类报告。\n2. 这类报告通常必须有哪些章节。\n3. 哪些非章节元素必须在终稿中出现，如对比表、时间线、风险矩阵、方法说明。\n4. 这些结构判断的依据是什么；如果没有找到高可信依据，回退逻辑是什么。\n\n格式发现的结果要压缩进 `plan.json.report_shape`，用于约束后续维度设计；不要另写独立格式文件，除非调用方明确要求。\n\n## 维度设计准则\n\n一个好维度应同时满足：\n\n- 能独立产出 `sub_reports/{id}.md`。\n- 有 2-5 个具体 `key_questions`。\n- 与其他维度边界清楚，重叠可解释。\n- 对 `report.md` 有明确贡献。\n- 有明确搜索入口和停止条件。\n- 不预设结论，只定义要查明什么。\n\n普通研究控制在 3-5 个维度；复杂研究最多 8 个维度。维度过多时优先合并同类问题。\n\n## 输出\n\n写入 `{report_dir}/plan.json`：\n\n```json\n{\n  \"research_goal\": \"一句话目标\",\n  \"scope\": {\n    \"objects\": [\"研究对象\"],\n    \"time_range\": \"时间范围\",\n    \"region\": \"地域范围\",\n    \"audience_or_use\": \"目标读者或用途\",\n    \"exclusions\": [\"明确不做什么\"],\n    \"assumptions\": [\"执行假设\"]\n  },\n  \"report_shape\": {\n    \"format_basis\": [\n      {\n        \"type\": \"standard_guideline | official_template | real_exemplar | domain_convention | fallback\",\n        \"name\": \"结构依据名称\",\n        \"credibility_reason\": \"为什么可信\",\n        \"what_extracted\": \"从中抽取了哪些结构约束\"\n      }\n    ],\n    \"sections\": [\"终稿建议章节\"],\n    \"mandatory_elements\": [\"必须产出的表格、图、清单或比较项\"],\n    \"style\": \"写作口径和语气约束\"\n  },\n  \"completion_criteria\": [\"完成标准\"],\n  \"change_notes\": [],\n  \"dimensions\": [\n    {\n      \"id\": \"d1\",\n      \"name\": \"维度名称\",\n      \"description\": \"研究范围和边界\",\n      \"key_questions\": [\"必须回答的问题\"],\n      \"method\": \"检索、比较、案例分析、数据梳理、时序还原等\",\n      \"search_strategy\": {\n        \"source_types\": [\"应覆盖的来源类型\"],\n        \"seed_queries\": [\"起始检索词或检索方向\"],\n        \"freshness_requirement\": \"是否需要最新信息及时间范围\",\n        \"sufficiency\": [\"判断搜索足够的条件\"]\n      },\n      \"expected_output\": \"该维度子报告应提供给终稿写作的材料\",\n      \"depends_on\": [],\n      \"status\": \"pending\"\n    }\n  ],\n  \"execution_order\": [\"d1\", \"d2\"]\n}\n```\n\n## 字段要求\n\n- `research_goal`：一句话说明整个研究要服务什么判断。\n- `scope`：必须覆盖对象、时间、地域、受众/用途、排除项和当前假设；未知项显式写明。\n- `report_shape.format_basis`：说明报告结构依据来自哪里。若调用过 `sn-report-format-discovery`，至少保留 1 个依据；若未调用，也要写明是“用户指定结构”或“通用领域惯例”。\n- `report_shape.sections`：是终稿结构建议，不是研究维度。\n- `report_shape.mandatory_elements`：列出终稿必须支撑的比较表、时间线、风险清单、指标矩阵、流程图等。\n- `report_shape.style`：说明报告语气、确定性表达和不确定性处理方式。\n- `completion_criteria`：列出进入终稿写作前必须满足的条件。\n- `change_notes`：初始为空数组；研究过程中如调整维度或执行顺序，把原因追加到这里，不单独写日志文件。\n- `id`：使用稳定短 ID，如 `d1`、`d2`。\n- `description`：说明研究范围和不包含什么。\n- `key_questions`：写成可回答的问题，不写成标题。\n- `method`：说明该维度适合怎么研究。\n- `search_strategy.source_types`：列出要覆盖的来源类型，如官方文件、监管公告、学术论文、行业报告、公司披露、产品文档、新闻报道、社区讨论等。\n- `search_strategy.seed_queries`：给出 3-6 个起始检索方向，而不是只写一个关键词。\n- `search_strategy.freshness_requirement`：说明是否必须查最新资料；涉及市场、政策、产品、公司、价格、法律、人物时必须要求最新核查。\n- `search_strategy.sufficiency`：写清停止条件，如“每个关键问题至少有材料支撑”“核心事实来自两个独立来源”“没有新信息增量后停止”等。\n- `expected_output`：说明子报告要贡献事实、比较、框架、判断依据、风险清单或场景分析中的哪一种。\n- `depends_on`：只写真实依赖；没有依赖则为空数组。\n- `execution_order`：必须覆盖所有维度 ID，且依赖项出现在被依赖项之前。\n\n## 完成标准示例\n\n- 所有 `key_questions` 至少被一个维度覆盖。\n- `report_shape` 有明确结构依据，而不是拍脑袋列章节。\n- `report_shape.mandatory_elements` 都有对应维度提供材料。\n- 每个维度都能形成独立子报告。\n- 每个维度都定义了搜索策略和停止条件。\n- 关键不确定性有专门维度处理，或在相关维度中明确标注。\n\n## 常见失败\n\n- 把报告章节当研究维度。\n- 每个维度只有标题，没有可回答问题。\n- 维度之间大量重叠。\n- 没有为维度定义搜索入口，导致执行时浅搜。\n- 执行顺序忽略依赖关系。\n- 报告结构没有依据，只凭经验硬写章节。\n- 忽略终稿必备元素。\n- 在计划里提前写结论。","tags":["research","planning","sensenova","skills","opensensenova","agent","agent-skills","ai-agents","ai-assistant","data-analysis","document-processing","office-automation"],"capabilities":["skill","source-opensensenova","skill-sn-research-planning","topic-agent","topic-agent-skills","topic-ai-agents","topic-ai-assistant","topic-data-analysis","topic-document-processing","topic-office-automation","topic-presentation-slides"],"categories":["SenseNova-Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/OpenSenseNova/SenseNova-Skills/sn-research-planning","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add OpenSenseNova/SenseNova-Skills","source_repo":"https://github.com/OpenSenseNova/SenseNova-Skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1627 github stars · SKILL.md body (4,443 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:53:05.823Z","embedding":null,"createdAt":"2026-05-15T06:53:10.921Z","updatedAt":"2026-05-18T18:53:05.823Z","lastSeenAt":"2026-05-18T18:53:05.823Z","tsv":"'-5':230,244 '-6':431 '/plan.json':254 '/request.md':72 '1':74,201,373 '10':149 '11':158 '2':79,203,229 '3':87,205,243,430 '4':93,199,211 '5':108 '6':115 '7':124 '8':131,247 '9':144 'assumpt':273 'audienc':189,267 'basi':278,364 'blueprint.json':63 'briefing.md':62 'chang':309,396 'complet':306,393 'convent':287 'credibl':291 'criteria':307,394 'd1':313,349,406 'd2':350,407 'depend':142,343,458 'descript':316,408 'dimens':311 'dir':71,253 'discoveri':100,197,371 'domain':188,286 'element':300,384,477 'exclus':271 'execut':347,462 'exemplar':285 'expect':139,340,451 'extract':295 'fallback':288 'format':99,196,277,370 'fresh':335 'genr':187 'goal':257,353 'guidelin':281 'id':226,312,402,404,465 'json':255 'key':134,232,318,410,469 'mandatori':299 'md':27,227 'method':136,321,414 'name':289,314 'note':310,397 'object':260 'offici':282 'order':348,463 'output':140,341,452 'pend':346 'plan':4,19 'plan.json':9,21 'plan.json.report':106,216 'queri':333,428 'question':135,233,319,411,470 'rang':263 'real':284 'reason':292 'region':190,265 'report':26,70,98,195,225,252,275,369,472 'report.md':29,237 'report_shape.format':363 'report_shape.mandatory':383,476 'report_shape.sections':380 'report_shape.style':390 'request.md':7,35,77,185 'requir':336,435 'research':3,18,256,352 'scope':259,355 'search':137,327 'search_strategy.freshness':434 'search_strategy.seed':427 'search_strategy.source':416 'search_strategy.sufficiency':444 'section':297 'seed':332 'shape':107,217,276,473 'skill' 'skill-sn-research-planning' 'sn':2,97,194,368 'sn-report-format-discoveri':96,193,367 'sn-research-plan':1 'sourc':329 'source-opensensenova' 'standard':280 'status':345 'strategi':138,328 'style':304 'sub':25,224 'suffici':338 'synthesis.md':65 'templat':283 'time':262 'topic-agent' 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-assistant' 'topic-data-analysis' 'topic-document-processing' 'topic-office-automation' 'topic-presentation-slides' 'type':279,330,417 'use':269 '一个好维度应同时满足':222 '一句话目标':258 '一句话说明整个研究要服务什么判断':354 '一次性完成研究定界':10 '不做':58 '不做单独的':61 '不做资料综述或事实展开':66 '不写成标题':413 '不写研究结论':59 '不制造不必要的并行':67 '不单独写日志文件':401 '不把终稿章节直接复制成研究维度':60 '不是研究结论预设':31 '不是研究维度':382 '不要另写独立格式文件':219 '不预设结论':240 '与其他维度边界清楚':234 '且依赖项出现在被依赖项之前':466 '个依据':374 '个具体':231 '个维度':245,248 '个起始检索方向':432 '为什么可信':293 '为每个维度写清':133 '为每个维度指定搜索策略和充分性标准':56 '也要写明是':376 '事实':152 '产出':20 '产出什么材料':55 '产品':439 '产品文档':424 '人物时必须要求最新核查':443 '从':34,76 '从中抽取了哪些结构约束':296 '件事':200 '价格':441 '但在下列情况应主动做一次格式发现':163 '你不确定终稿应该优先呈现结论':180 '使用稳定短':403 '依赖':16 '依赖复杂度':68 '做':33 '做个研究报告':165 '先做定义':151 '公司':440 '公司披露':423 '关键不确定性有专门维度处理':481 '关键问题':14 '内部选型':178 '再做比较':154 '再压缩进':105 '再设计有依据的报告形态':43 '再读取':192 '写作口径和语气约束':305 '写作约束':50 '写入':251 '写完成标准':159 '写成可回答的问题':412 '写清停止条件':445 '写清对象':81 '列出终稿必须支撑的比较表':385 '列出要覆盖的来源类型':418 '列出进入终稿写作前必须满足的条件':395 '初始为空数组':398 '判断依据':456 '判断搜索足够的条件':339 '判断是否需要格式发现':88 '判断类维度':157 '医学综述':172 '原因':119 '发现报告格式':94 '发现格式时只需要回答':198 '受众':38,84,359 '只写真实依赖':460 '只凭经验硬写章节':492 '只定义要查明什么':241 '可以直接从':184 '可信结构来源':102 '可回答问题':128 '可独立研究':127 '可直接进入下一步':91 '可贡献终稿':129 '否则先做一次轻量格式发现':92 '和':141 '和最终':28 '哪些关键问题必须交叉确认':148 '哪些非章节元素必须在终稿中出现':206 '回退逻辑是什么':214 '图':48,302 '图和写作约束':114 '在计划里提前写结论':494 '在需要时先做报告格式发现':42 '地域':83,358 '地域和假设':41 '地域范围':266 '复杂研究最多':246 '如':405,446 '如官方文件':419 '如对外汇报':176 '如对比表':207 '如政策':168 '如果没有找到高可信依据':213 '如果用户已明确给出报告结构':89 '字段要求':351 '学术':171 '学术论文':421 '它同时承担定界':22 '完成标准':308 '完成标准示例':467 '定义任务':132 '定义搜索充分性':145 '对':236 '导致执行时浅搜':489 '尽调':173 '常见失败':483 '应覆盖的来源类型':331 '强制元素和风格约束':104 '当需要仅基于':6 '影响':121,156 '必备元素':112 '必备章节':103 '必要时读取':95 '必须产出的表格':47,301 '必须回答的问题':320 '必须覆盖对象':356 '必须覆盖所有维度':464 '忽略终稿必备元素':493 '或':64,378 '或在相关维度中明确标注':482 '或报告类型非常标准且约束明显':90 '所有':468 '执行假设':274 '执行顺序和完成标准时使用':17 '执行顺序忽略依赖关系':490 '技术选型':174 '把关键问题分成基础事实':117 '把关键问题拆成可执行研究维度':51 '把原因追加到这里':400 '把报告章节当研究维度':484 '投决支持':177 '报告形态约束和执行地图':23 '报告格式发现':11,161 '报告类型强依赖领域规范':167 '报告结构没有依据':491 '抽取问题':116 '指标矩阵':388 '按':126 '排出合理执行顺序和真实依赖':57 '排序执行':150 '排除项和当前假设':361 '排除项和执行假设':86 '推断':186 '提取最终报告要服务的判断':78 '搜索策略':15 '政策':438 '数据梳理':325 '新闻报道':425 '方法说明':210 '时序还原等':326 '时间':40,82,357 '时间线':181,208,386 '时间范围':264 '明确不做什么':272 '明确什么条件下可以从分维度研究进入终稿写作':160 '明确每个维度要回答什么':53 '是否需要最新信息及时间范围':337 '是终稿结构建议':381 '普通研究控制在':242 '有':228 '有明确搜索入口和停止条件':239 '有明确结构依据':474 '有明确贡献':238 '未知项显式写明':362 '机制':118 '核心事实来自两个独立来源':448 '格式发现的结果要压缩进':215 '框架':455 '案例分析':324 '检索':322 '每个关键问题至少有材料支撑':447 '每个维度只有标题':485 '每个维度都定义了搜索策略和停止条件':480 '每个维度都能形成独立子报告':479 '比较':120,323,454 '比较矩阵':182 '比较项':49 '没有为维度定义搜索入口':488 '没有依赖则为空数组':461 '没有可回答问题':486 '没有新信息增量后停止':449 '没有给章节结构':166 '法律':169,442 '流程图等':389 '涉及市场':437 '深度研究的精简计划':5 '清单或比较项':303 '生成':8 '用于约束后续维度设计':218 '用什么方法':54 '用户只说':164 '用户指定结构':377 '用来指导':24 '用途':39,85,360 '界定范围':80 '的标准合并或拆分维度':130 '的生成':30 '监管':170 '监管公告':420 '监管沟通':179 '目标读者或使用场景会显著影响结构':175 '目标读者或用途':270 '研究对象':261 '研究范围和边界':317 '研究过程中如调整维度或执行顺序':399 '确定性表达和不确定性处理方式':392 '社区讨论等':426 '等':450 '终稿建议章节':298 '终稿章节':45 '结构依据':46,111 '结构依据名称':290 '结构设想':12 '给出':429 '给出终稿章节建议':110 '维度之间大量重叠':487 '维度名称':315 '维度拆解':13 '维度设计准则':221 '维度过多时优先合并同类问题':249 '而不是只写一个关键词':433 '而不是拍脑袋列章节':475 '背景和口径类维度':153 '能独立产出':223 '至少保留':372 '至少几轮检索':147 '至少被一个维度覆盖':471 '若未调用':375 '若调用过':366 '若这些信息不足以稳健决定结构':191 '行业报告':422 '行为边界':32 '规划流程':73 '规划阶段不要求每次都单独研究格式':162 '解释':155 '让每个维度都能独立落盘为一个子报告':52 '设定报告形态':109 '设计维度':125 '设计轻量报告形态':44 '识别报告类型':101 '识别研究目标':36 '该维度子报告应提供给终稿写作的材料':342 '说明子报告要贡献事实':453 '说明报告结构依据来自哪里':365 '说明报告语气':391 '说明是否必须查最新资料':436 '说明研究范围和不包含什么':409 '说明该维度适合怎么研究':415 '说明需要覆盖哪些来源类型':146 '起始检索词或检索方向':334 '趋势或建议类问题':123 '输入':69 '输出':250 '边界':37 '这些结构判断的依据是什么':212 '这份报告最接近哪一类报告':202 '这类报告通常必须有哪些章节':204 '适合的表格':113 '通用领域惯例':379 '都有对应维度提供材料':478 '重叠可解释':235 '锁定目标':75 '除非调用方明确要求':220 '风险':122 '风险清单':387 '风险清单或场景分析中的哪一种':457 '风险清单还是方法说明':183 '风险矩阵':209","prices":[{"id":"b9cd325d-96b5-4fb3-a4a9-b531977d8327","listingId":"add1c670-7659-41e2-8ac3-15ddd488616d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"OpenSenseNova","category":"SenseNova-Skills","install_from":"skills.sh"},"createdAt":"2026-05-15T06:53:10.921Z"}],"sources":[{"listingId":"add1c670-7659-41e2-8ac3-15ddd488616d","source":"github","sourceId":"OpenSenseNova/SenseNova-Skills/sn-research-planning","sourceUrl":"https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-research-planning","isPrimary":false,"firstSeenAt":"2026-05-15T06:53:10.921Z","lastSeenAt":"2026-05-18T18:53:05.823Z"}],"details":{"listingId":"add1c670-7659-41e2-8ac3-15ddd488616d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"OpenSenseNova","slug":"sn-research-planning","github":{"repo":"OpenSenseNova/SenseNova-Skills","stars":1627,"topics":["agent","agent-skills","ai-agents","ai-assistant","data-analysis","document-processing","office-automation","presentation-slides"],"license":"mit","html_url":"https://github.com/OpenSenseNova/SenseNova-Skills","pushed_at":"2026-05-15T04:43:37Z","description":"Modular SenseNova skills for building AI-powered office assistants and productivity workflows","skill_md_sha":"6cd91e2e4d069a65c2b6d12cbbee21954a1c65e1","skill_md_path":"skills/sn-research-planning/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/OpenSenseNova/SenseNova-Skills/tree/main/skills/sn-research-planning"},"layout":"multi","source":"github","category":"SenseNova-Skills","frontmatter":{"name":"sn-research-planning","description":"深度研究的精简计划；当需要仅基于 request.md 生成 plan.json，一次性完成研究定界、报告格式发现、结构设想、维度拆解、关键问题、搜索策略、依赖、执行顺序和完成标准时使用。"},"skills_sh_url":"https://skills.sh/OpenSenseNova/SenseNova-Skills/sn-research-planning"},"updatedAt":"2026-05-18T18:53:05.823Z"}}