Generate Report
npx machina-cli add skill jackhendon/ecom-feedback-intelligence/generate-report --openclawSkill: generate-report
Writes a full markdown report to outputs/reports/. Requires /analyze-reviews to have been run first in this session (results are in context).
Usage
/generate-report
Steps
Step 1: Check for analysis results
Look in the current conversation context for results from /analyze-reviews. The report needs:
- Sentiment distribution
- Theme frequency
- High-priority issues
- PM insights (opportunities, risks, experiments)
- Review count and run date
If no analysis results are in context, output:
No analysis results found. Run /analyze-reviews first, then /generate-report.
And stop.
Step 2: Determine filename
Format: {brand.name.lower()}_YYYY-WNN.md where YYYY-WNN is the ISO week of the run date (brand name from config/brand.yaml).
Path: outputs/reports/{brand.name.lower()}_YYYY-WNN.md
If a file with that name already exists, append -v2, -v3 etc.
Step 3: Write the report
Use the template from .claude/rules/report-format.md. Write the file in a single pass — do not output to terminal first.
For the "Trend vs Previous Period" section, read memory/history.json and compute directly from the two most recent snapshots:
- Sentiment: pp change in positive% and negative%
- Themes: rank order each period by frequency, list themes that moved up or down
- Priority: avg_priority_score delta, high_priority_issues count delta
If fewer than 2 snapshots: write "Insufficient history for trend comparison. Run again next week."
Step 4: Confirm
Report saved: outputs/reports/{brand.name.lower()}_YYYY-WNN.md
Source
git clone https://github.com/jackhendon/ecom-feedback-intelligence/blob/main/.claude/skills/generate-report/SKILL.mdView on GitHub Overview
Generates a complete Markdown report in outputs/reports/ from the results of /analyze-reviews. It requires analysis results to be present in the session context and formats the output with a brand-specific filename. The report consolidates sentiment distribution, theme frequency, high-priority issues, PM insights (opportunities, risks, experiments), and the run date for easy sharing and archival.
How This Skill Works
Checks the context for analyze-reviews results, determines the filename as {brand.name.lower()}_YYYY-WNN.md using the ISO week of the run date, and writes the report in a single pass using the standard template from .claude/rules/report-format.md to outputs/reports/. It also computes the Trend vs Previous Period section from memory/history.json and, if there are fewer than two snapshots, notes insufficient history.
When to Use It
- After /analyze-reviews has produced results in the session context.
- When you need a single, shareable Markdown report for a brand.
- When filename consistency and versioning (for example, -v2) matter.
- When you want a Trend vs Previous Period comparison using memory/history.json.
- When you want automatic confirmation and a saved path such as outputs/reports/{brand.name.lower()}_YYYY-WNN.md.
Quick Start
- Step 1: Run /analyze-reviews to generate results in the session context.
- Step 2: Run /generate-report to create the Markdown file.
- Step 3: Check for the confirmation: Report saved: outputs/reports/{brand.name.lower()}_YYYY-WNN.md.
Best Practices
- Ensure analysis results exist in context before running /generate-report.
- Verify brand.name in config/brand.yaml is correct for filename accuracy.
- Review memory/history.json to understand trend changes before generating.
- Keep the outputs/reports path accessible and avoid special characters in filenames.
- Run /generate-report after /analyze-reviews to ensure fresh data and consistent results.
Example Use Cases
- Example: A fashion retailer runs /analyze-reviews, then /generate-report to publish weekly customer sentiment and theme insights.
- Example: An electronics brand generates a weekly report and relies on automatic -v2 naming if a file already exists.
- Example: Product managers review PM insights, opportunities, and experiments included in the report before a sprint review.
- Example: The Trend vs Previous Period section compares sentiment and themes from memory/history.json to last week.
- Example: If analysis results are missing, the command returns the no-analysis message instead of failing.