Research Report Builder
Use this skill to read a user-specified Markdown/Obsidian knowledge base and turn selected notes into a structured deliverable: PPT, Word, Markdown report, speech稿, meeting brief, or outline.
Contract with research-memory-sync
This skill must treat research-memory-sync output as the primary input format.
Recognize these structures:
<kb-path>/
00_Index/
Inbox/
Projects/<project>/
Learning/<topic>/
Literature/<paper-or-author>/
Methods/
Reports/
Slides/
Also recognize single-project layouts:
<kb-path>/
00_Index/
Concepts/
QA/
Experiments/
Decisions/
Prompts/
Reports/
Slides/
Recognize frontmatter fields from research-memory-sync:
typecreatedupdatedtags- optional
project - optional
status
Prefer notes with these types when building reports:
experiment-notedecision-noteqa-noteconcept-noteprompt-notereport-noteslide-note
Do not require every note to have perfect frontmatter; fall back to headings and folder names.
Non-negotiable path rule
Never read from a default knowledge-base path.
Before reading or writing, require one of:
- a knowledge-base path explicitly provided in the current user request;
- a path explicitly provided earlier in the same active task and clearly still in scope.
If no path is available, stop and ask for the path. Do not guess from past projects, previous vaults, or common Obsidian locations.
If the requested output path is missing:
- for PPT/Word, ask or use a clearly named
Reports/orSlides/folder inside the user-provided knowledge base only if the user asked to save there; - otherwise create the artifact in the current project/workspace output folder and report its path.
Workflow
- Confirm inputs.
- Knowledge-base path: required.
- Output type: PPT, Word, Markdown, outline, or speaker notes. If missing, ask.
- Scope: project/topic/date range/query. If missing but inferable, state the assumption.
- Inspect the knowledge base.
- Read indexes first:
00_Index/Home.md, localIndex.md, project indexes. - Use note frontmatter, folder names, headings, and links to find relevant notes.
- Do not mutate source notes unless explicitly requested.
- Read indexes first:
- Build a source packet.
- Collect relevant notes.
- Extract facts, metrics, decisions, open questions, commands, and artifacts.
- Keep file provenance for important claims.
- Choose output structure.
- PPT: conclusion-first, low text, charts/tables where data exists, optional speaker notes.
- Word: formal sections, more explanation, citations to source note paths.
- Markdown: reusable summary that can be written back to the knowledge base if requested.
- Use the right downstream skill/tool.
- For PPT, use the
presentationsskill. - For Word/docx, use the
documentsskill. - For spreadsheets/charts from tables, use the
spreadsheetsskill when useful.
- For PPT, use the
- Verify.
- PPT: render and check slides.
- Word: render/inspect if layout matters.
- Markdown: check links and paths.
- Report deliverables.
- Provide created file paths.
- List source note folders used.
- Mention major assumptions and omitted content.
Output style defaults
Unless the user says otherwise:
- Use Chinese for Chinese notes or Chinese user requests.
- Prefer data and comparison tables over long prose.
- Lead with the conclusion.
- Separate facts from interpretation.
- Include a final “下一步 / 建议” section.
- For PPT, keep each slide to one main claim.
- For PPT, add speaker notes when the user asks for 汇报 or 读稿.
Scope selection rules
When the user gives a project/topic name, search in this order:
Projects/<name>/Learning/<name>/Literature/<name>/- full-text search across the knowledge base
When the user asks for “最近/本周/这次/刚才”:
- Use note dates and current conversation context.
- If the date range is ambiguous and affects the report materially, ask.
When too many notes match:
- summarize the candidate set;
- ask whether to narrow by project/topic/date;
- or proceed with the most relevant notes if the user asked for a quick draft.
Optional helper script
Use scripts/collect_notes.py for deterministic note discovery and source-packet creation. It is read-only and requires --kb-path; it has no default path.
Read references/report-patterns.md for recommended PPT/Word/Markdown structures and how to map note types into deliverables.