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_audio- •
file_path: full path to the recording - •
enhanced: 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 type - •
reference/OUTPUT_SECTIONS.md– Guidance on each deliverable section