name: report-writing description: Converts scattered documents and media (recordings, notes, diagrams, PDFs, spreadsheets) into structured MS Word reports. Automatically infers appropriate sections from content or follows provided template/sample structure. Use when the user needs to create a report, summarize documents, consolidate materials, generate documentation, or create meeting notes.
Report Writing
Converts scattered materials—audio/video recordings, handwritten notes, diagrams, digital notes, and supplementary documents—into a single, well-formatted MS Word report. The skill automatically infers appropriate sections from content signals or follows a provided template/sample structure.
It is designed to run in Claude Desktop with:
- An MCP filesystem server (for listing/reading files and folders)
- An MCP gaik-transcriber server (for transcribing audio/video recordings)
When to Use
Use this skill when:
- User needs to create a report, summary, or documentation from source materials
- User mentions "create a report", "generate documentation", "summarize documents"
- User wants to consolidate multiple documents/media into a single structured deliverable
- User has recordings, notes, images, or documents to process into a report
- User needs meeting notes, meeting minutes, or meeting documentation
- User provides a template or sample and wants content filled in
- User asks to "write up" notes, "document this", or create a Word document from materials
Inputs
Required (at least one):
- Audio/video recordings – transcribed using
gaik-transcriber:transcribe_audio - Handwritten notes (scanned images) – interpreted visually
- Digital notes (text files, markdown, etc.)
- Diagrams/sketches/figures (images)
- Source documents to synthesize
Optional:
- Supplementary documents (PowerPoint slides, PDF documents, Excel files)
- Output template (blank .docx with predefined headers, sections, logos)
- Sample output document (.docx or .pdf) defining style, format, tone, and length
Required parameter:
input_folder: Path to the main input folder containing the required subfolder structure. If not provided, ask the user to specify it.
Required folder structure:
<input_folder>/
├── input_documents/ # Required: recordings, photos, notes, presentations, PDFs, etc.
├── templates/ # Optional: blank template with predefined headers, sections, logos
└── sample_documents/ # Optional: sample document defining style, format, tone, length
Tooling Rules (Windows vs Linux Path Safety)
Why this matters
On Windows, Claude Desktop + toolchains sometimes behave like they are in a POSIX shell, producing paths like /mnt/c/....
Meanwhile, your MCP servers may run native Windows Python, expecting C:\....
This mismatch can cause "file not found" or failing shell commands.
Strict rules
Prefer MCP filesystem tools for file/folder operations Use the filesystem server for listing and reading files instead of shell commands.
Avoid bash commands on Windows If you must run a command on Windows, prefer PowerShell.
When calling gaik-transcriber, prefer Windows drive-letter paths on Windows Pass file paths like
C:\Users\...\recording.m4a. If you only have a POSIX/WSL path (e.g.,/mnt/c/...), convert it to a Windows path before calling the transcriber, or rely on the transcriber server's internal normalization (recommended).Never assume the environment is Linux Treat the runtime as OS-ambiguous and enforce the above rules to stay stable.
Never do the following: NEVER run pip install, python -c, pdfplumber, or any ad-hoc parsing code for .pdf/.pptx/.xlsx.
NEVER use /mnt/user-data/uploads/... paths; only use paths returned by the MCP filesystem listing or the user-provided Windows folder.
If you are about to do any of the above, STOP and switch to the built-in PDF/PPTX/XLSX skills.
Workflow
Step 0 — Collect context
Ask (only if not provided):
- Report title or purpose (optional but recommended)
- Desired output format (Word document is default)
- Any special focus or sections to emphasize
- Target audience (if relevant)
Step 1 — Validate input folder structure and capabilities
If the user has not specified an input folder path, ask for it and confirm it contains input_documents/ (required).
1) Validate folder structure (MCP filesystem only)
Use the filesystem MCP tool to list:
<input_folder><input_folder>\input_documents(required)<input_folder>\templates(optional)<input_folder>\sample_documents(optional)
If input_documents/ is missing or empty, stop and ask the user to add the source materials there.
2) Capability check (prevents Windows/Linux path loops for binaries)
Purpose: decide upfront whether this environment can process binary files from a Windows folder without requiring the user to upload them.
Inventory binary files found in:
<input_folder>\input_documents<input_folder>\templates<input_folder>\sample_documents
Treat the following as binary (not safely readable via text tools):
.pdf,.pptx,.xlsx,.docx
Decision:
- If ANY binary files exist and are ONLY in the Windows folder:
- Assume you cannot process them directly unless you have a binary-capable tool.
- The official Node filesystem MCP server supports reading text files and reading image/audio media, but does not guarantee generic binary reads for Office/PDF files.
- Therefore:
- If a dedicated MCP document-parser tool is available (recommended), use it for these files.
- Otherwise, you MUST ask the user to upload/attach these binaries in Claude Desktop to process them with built-in PDF/PPTX/XLSX/DOCX skills.
If the user asks for "local-folder only" processing of PDF/PPTX/XLSX/DOCX:
- Explain that this requires either:
- a binary-capable filesystem MCP server (supports base64/binary reads), or
- a Windows-native document-parser MCP server.
Continue with the core workflow (transcription + text notes + images) regardless of the binary handling outcome.
Step 2 — Inventory input files
From input_documents/, create a quick inventory:
- Recordings (audio/video)
- Images (handwritten notes, diagrams)
- Text documents (notes, drafts, emails, etc.)
- PDFs / slides (read text if possible; otherwise summarize)
Step 3 — Transcribe recordings (gaik-transcriber MCP tool)
For each audio/video file, call:
gaik-transcriber:transcribe_audiofile_path: full path to the recordingenhanced: false by default (true only if user asks for enhanced quality)
If transcription fails with "file not found":
- Re-check the path style and ensure Windows drive-letter paths on Windows.
Step 4 - Images (Handwritten Notes, Diagrams, Sketches, Figures)
For each image file (.jpg, .jpeg, .png, .gif, .webp, .bmp, .tiff):
- View the image using the appropriate tool
- Interpret the image content (handwritten notes, diagrams, figures)
- Create a textual description capturing all relevant information
Step 5 - Notes
Read files directly (.txt, .md, .rtf). Use /mnt/skills/public/docx/SKILL.md for reading/writing .docx files.
Step 6 — Supplementary documents (.pdf, .pptx, .xlsx, .docx)
Goal: extract relevant information from supplementary documents WITHOUT ad-hoc parsing code and WITHOUT Windows/Linux path mismatches.
Non-negotiables (hard rules)
- NEVER run
cp,pip install,python -c,pdfplumber,soffice,pandoc, or any ad-hoc parsing commands to read.pdf/.pptx/.xlsx/.docxfrom Windows paths. - NEVER assume
C:\...or/mnt/c/...is accessible inside a Linux sandbox. - NEVER invent upload paths (e.g.,
/mnt/user-data/uploads/...) unless the environment explicitly provides them. - Do not use the filesystem MCP server to "load built-in skill files." The filesystem server is for user-allowed directories, not Claude's internal skill library.
Decision tree
A) If the supplementary file is uploaded/attached in Claude Desktop
Use the corresponding built-in skill:
View /mnt/skills/public/docx/SKILL.md skill for reading and editing DOCX files.
View /mnt/skills/public/pdf/SKILL.md skill for reading PDF files.
View /mnt/skills/public/xlsx/SKILL.md skill for reading and editing XLSX files.
View /mnt/skills/public/pptx/SKILL.md skill for reading and editing PPTX files.
Extract only relevant content for the report (key data, findings, timelines, etc.).
Attribute extracted content by filename.
B) If the supplementary file is ONLY present in the Windows folder (discovered via filesystem:list_directory)
- Text-like files (
.txt,.md,.csv,.json)
- Read via filesystem
read_text_fileand extract relevant content.
- Binary files (
.pdf,.pptx,.xlsx,.docx) — IMPORTANT
- Do NOT attempt conversion or parsing via sandbox tools (pandoc/python/soffice/etc.).
- If a dedicated MCP document-parser tool is available:
- Call the parser using the Windows path and use returned extracted text/tables in synthesis.
- Otherwise:
- Ask the user to upload/attach the file(s) in Claude Desktop.
- Continue processing what you can (transcripts, notes, images) and list the missing binaries under "Missing inputs".
Template + samples:
- If templates/sample documents are
.docx/.pdf/.pptx/.xlsxand are only on Windows disk:- Ask the user to upload them.
- If not provided, proceed with a clean default structure.
Output handling
- If supplementary binaries are unavailable (not uploaded, and no parser tool), clearly list them:
- Missing inputs:
<filename1>,<filename2>, ...
- Missing inputs:
- Produce the report using available evidence and a default format.
- Do not block the entire workflow just because supplementary binaries are missing.
Step 7: Fuse Information
Combine all processed inputs into a single consolidated text block with clear separators:
=== TRANSCRIPTION: <filename> ===
<transcribed content>
=== HANDWRITTEN NOTES: <filename> ===
<interpreted content>
=== DIGITAL NOTES: <filename> ===
<note content>
=== DIAGRAM/FIGURE: <filename> ===
<description of diagram/figure>
=== SUPPLEMENTARY: <filename> ===
<extracted content>
Step 7.5: Analyze Content for Section Inference
After fusing all content, analyze it to determine which sections to include in the report.
Content Signal Detection:
| Content Signal | Inferred Section |
|---|---|
| Multiple speakers identified | "Participants/Attendees" in header |
| Explicit decisions ("we decided", "agreed to", "the decision is", "going forward we will") | "Decisions Made" section |
| Assigned tasks with owners ("[Name] will...", "Action:", "TODO:", "assigned to") | "Action Items" table |
| Unresolved questions ("need to figure out", "TBD on", "question is") | "Open Questions" section |
| Data/statistics present (numbers, percentages, measurements) | "Data Summary" or "Findings" section |
| Recommendations mentioned ("recommend", "suggest", "should consider") | "Recommendations" section |
| Timeline/dates discussed (specific dates, milestones, deadlines) | "Timeline" or "Schedule" section |
| Risks/issues mentioned ("risk", "concern", "issue", "blocker", "problem") | "Risks & Issues" section |
| Q&A pattern detected (question-answer exchanges) | "Key Questions & Answers" section |
Section inclusion rule: Only include sections where content signals are detected. Never create empty sections or placeholders.
Step 8: Check for Template and Sample Documents
Check the dedicated subfolders for template and sample:
Template (<input_folder>/templates/):
- Look for a blank .docx file with predefined structure (headers, sections, logos)
- If multiple files exist, use the first .docx file found
Sample (<input_folder>/sample_documents/):
- Look for a .docx or .pdf file defining the required style, format, tone, and length
- If multiple files exist, use the first document found
Priority order for format determination:
- Template provided: Use template structure exactly, fill in content
- Sample provided (no template): Mirror sample's sections, style, tone, and length
- Neither: Use content-inferred format (see Output Format section)
Step 9: Generate the Deliverable
Read the docx skill before creating the document:
view /mnt/skills/public/docx/SKILL.md
Then follow the docx skill's "Creating a new Word document" workflow to generate the output.
If template provided: Copy the template and fill in sections according to the template structure.
If sample provided (no template): Create a new document mirroring the sample's section structure and style.
If neither: Create a new document using the content-inferred output format below.
Step 10: Save and Present
- Save the document to the
input_documentsfolder - Use
present_filesto share with the user
Output Format (Dynamic - adapts to template, sample, or content)
When Template Provided
- Copy template exactly
- Fill placeholders with relevant content
- Preserve all formatting, headers, logos
- Do NOT add sections not in template
When Sample Provided (no template)
- Extract section headings from sample
- Mirror section order and structure
- Match tone and approximate length
- Do NOT add sections not in sample
When Neither (Content-Inferred Format)
Use this base structure, adding/removing sections based on content signals detected in Step 7.5:
REPORT
======
Title: [Extracted or user-provided title]
Date: [Extracted date or generation date]
Prepared by: [If identifiable, otherwise omit]
Participants: [If multiple speakers identified, otherwise omit]
---
SUMMARY
-------
[2-4 paragraph overview of all content. Keep factual and objective.
Cover main topics in order of importance.]
---
KEY POINTS
----------
- [Major point 1]
- [Major point 2]
- [Major point 3]
[Continue as needed, ordered by importance]
---
[CONDITIONAL SECTIONS - include only if content signals detected]
DECISIONS MADE
--------------
[Include only if explicit decisions found in content]
1. [Decision text]
- Context: [brief context if available]
ACTION ITEMS
------------
[Include only if tasks with owners found in content]
| # | Action Item | Owner | Due Date | Priority |
|---|-------------|-------|----------|----------|
| 1 | [description] | [name] | [date] | [H/M/L] |
[If owner/due date not specified, mark as "TBD"]
OPEN QUESTIONS
--------------
[Include only if unresolved questions found in content]
1. [Question that was raised but not resolved]
DATA/FINDINGS
-------------
[Include only if data, statistics, or analysis results present]
[Summary of key data points and findings]
RECOMMENDATIONS
---------------
[Include only if recommendations/suggestions found in content]
1. [Recommendation]
- Rationale: [brief explanation if available]
TIMELINE/SCHEDULE
-----------------
[Include only if dates, milestones, or deadlines discussed]
| Milestone | Date | Status |
|-----------|------|--------|
RISKS & ISSUES
--------------
[Include only if risks, concerns, or issues mentioned]
| Risk/Issue | Impact | Mitigation |
|------------|--------|------------|
---
NEXT STEPS
----------
[Include only if actionable follow-up items identified]
- [Action or follow-up 1]
- [Action or follow-up 2]
Guardrails
Do:
- Extract information faithfully from provided inputs
- Mark uncertain information as "TBD" or "unclear from source"
- Preserve original terminology and names from the inputs
- STRICTLY follow template/sample format when provided
- Only include sections where relevant content exists in inputs
Do NOT:
- Invent or hallucinate any information not present in inputs
- Add content not mentioned in source materials
- Make assumptions about data not explicitly stated
- Include sections if no relevant information exists for them
- Create empty sections with placeholder text like "None" or "N/A"
If information is missing:
- For required fields: Mark as "TBD" or "Not specified in source materials"
- For entire sections: Omit the section from the deliverable entirely
- If critical inputs are missing: Inform the user what additional materials would help
Error handling:
- If transcription fails: Report the error and continue with other inputs
- If a file cannot be parsed: Log the issue and proceed with remaining files
- If no usable inputs found: Ask the user to verify the folder path and file formats
Examples
Example 1: Standard Report with Multiple Inputs
User prompt: "Create a report from the materials in /home/user/projects/analysis"
Expected folder structure:
/home/user/projects/analysis/
├── input_documents/
│ ├── interview-recording.mp4
│ ├── whiteboard-photo.jpg
│ └── my-notes.txt
├── templates/ # (empty or absent)
└── sample_documents/ # (empty or absent)
Expected behavior:
- Validates folder structure, finds input_documents/ with 3 files
- Transcribes recording using gaik-transcriber
- Interprets whiteboard photo
- Reads digital notes
- Fuses all content with separators
- Analyzes content for section signals
- Generates Word document with applicable sections only
- Saves to outputs and presents to user
Example 2: With Template
User prompt: "Use the template to create a report from the files in /reports/quarterly"
Expected folder structure:
/reports/quarterly/
├── input_documents/
│ ├── recording.m4a
│ └── data.xlsx
├── templates/
│ └── company-template.docx
└── sample_documents/ # (empty or absent)
Expected behavior:
- Finds template in templates/ subfolder
- Processes all materials in input_documents/
- Copies the template and fills in content
- Preserves template's structure, logos, and headers
- Presents formatted document
Example 3: With Sample (Style Guide)
User prompt: "Create a document like the sample from /docs/client-report"
Expected folder structure:
/docs/client-report/
├── input_documents/
│ ├── call-recording.m4a
│ └── notes.md
├── templates/ # (empty or absent)
└── sample_documents/
└── previous-report.docx
Expected behavior:
- Finds sample in sample_documents/ subfolder
- Analyzes sample's sections, style, tone, and length
- Processes all materials in input_documents/
- Creates document mirroring sample's structure
- Matches sample's tone and approximate length
Example 4: Minimal Input
User prompt: "I just have a voice memo - can you create a summary? The folder is /recordings/client-call"
Expected folder structure:
/recordings/client-call/
├── input_documents/
│ └── voice-memo.m4a
├── templates/ # (empty or absent)
└── sample_documents/ # (empty or absent)
Expected behavior:
- Validates structure, finds single audio file in input_documents/
- Transcribes the audio file
- Analyzes content for section signals
- Generates deliverable with applicable sections only
- Omits sections where no information exists
References
Following these reference documents for detailed handling for each input file type, and guidance on each deliverable section.
reference/INPUT_FORMATS.md– Detailed handling for each input file typereference/OUTPUT_SECTIONS.md– Guidance on each deliverable section