Skills forest-plot-styler

Beautify meta-analysis forest plots with customizable odds ratio points

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aipoch-ai/forest-plot-styler" ~/.claude/skills/clawdbot-skills-forest-plot-styler && rm -rf "$T"
manifest: skills/aipoch-ai/forest-plot-styler/SKILL.md
source content

Forest Plot Styler

ID: 157

Beautifies Meta-analysis or subgroup analysis forest plots, customizes Odds Ratio point sizes and confidence interval line styles.


Features

  • Reads Meta-analysis data (CSV/Excel format)
  • Draws high-quality forest plots
  • Customizes Odds Ratio point sizes, colors, and shapes
  • Customizes confidence interval line styles (color, thickness, endpoint style)
  • Supports subgroup analysis display
  • Automatically calculates and displays pooled effect values
  • Outputs to PNG, PDF, or SVG format

Usage

python scripts/main.py --input <data.csv> [options]

Parameters

ParameterTypeDefaultRequiredDescription
--input
,
-i
string-YesInput data file (CSV or Excel)
--output
,
-o
stringforest_plot.pngNoOutput file path
--format
,
-f
stringpngNoOutput format (png/pdf/svg)
--point-size
int8NoOR point size
--point-color
string#2E86ABNoOR point color
--ci-color
string#2E86ABNoConfidence interval line color
--ci-linewidth
int2NoConfidence interval line thickness
--ci-capwidth
int5NoConfidence interval endpoint width
--summary-color
string#A23B72NoPooled effect point color
--summary-shape
stringdiamondNoPooled effect point shape
--subgroup
string-NoSubgroup analysis column name
--title
,
-t
stringForest PlotNoChart title
--xlabel
,
-x
stringOdds Ratio (95% CI)NoX-axis label
--reference-line
float1.0NoReference line position
--width
,
-W
int12NoImage width (inches)
--height
,
-H
intautoNoImage height (inches)
--dpi
int300NoImage resolution
--font-size
int10NoFont size
--style
,
-s
stringdefaultNoPreset style (default/minimal/dark)

Input Data Format

CSV/Excel files must contain the following columns:

Column NameDescriptionType
study
Study nameText
or
Odds Ratio valueNumeric
ci_lower
Confidence interval lower boundNumeric
ci_upper
Confidence interval upper boundNumeric
weight
Weight (optional, for point size)Numeric
subgroup
Subgroup label (optional)Text

Sample Data

study,or,ci_lower,ci_upper,weight,subgroup
Study A,0.85,0.65,1.12,15.2,Drug A
Study B,0.72,0.55,0.94,18.5,Drug A
Study C,1.15,0.88,1.50,12.3,Drug B
Study D,0.95,0.75,1.20,14.8,Drug B

Examples

Basic Usage

python scripts/main.py -i meta_data.csv

Custom Style

python scripts/main.py -i meta_data.csv \
    --point-color="#E63946" \
    --ci-color="#457B9D" \
    --point-size=10 \
    --ci-linewidth=3 \
    -t "Meta-Analysis of Treatment Effects"

Subgroup Analysis

python scripts/main.py -i meta_data.csv \
    --subgroup subgroup_column \
    --summary-color="#F4A261" \
    -o subgroup_forest.png

Output PDF Vector Graphic

python scripts/main.py -i meta_data.csv \
    -f pdf \
    -o forest_plot.pdf

Preset Styles

default

  • Blue color scheme
  • Standard font size
  • White background

minimal

  • Clean lines
  • Grayscale color scheme
  • No grid lines

dark

  • Dark background
  • Bright data points
  • Suitable for dark theme presentations

Dependencies

  • Python >= 3.8
  • matplotlib >= 3.5.0
  • pandas >= 1.3.0
  • numpy >= 1.20.0
  • openpyxl >= 3.0.0 (for reading Excel)

Output Example

Generated forest plot contains:

  • Left side: Study name list
  • Middle: OR values and confidence intervals
  • Right side: Weight percentage (if available)
  • Bottom: Pooled effect value (diamond marker)
  • Reference line (OR=1)

Notes

  1. Ensure input file encoding is UTF-8
  2. OR values are automatically converted when log scale is suggested
  3. Studies with confidence intervals crossing 1 are not statistically significant
  4. Weight values are used to adjust point size, reflecting study contribution

Risk Assessment

Risk IndicatorAssessmentLevel
Code ExecutionPython/R scripts executed locallyMedium
Network AccessNo external API callsLow
File System AccessRead input files, write output filesMedium
Instruction TamperingStandard prompt guidelinesLow
Data ExposureOutput files saved to workspaceLow

Security Checklist

  • No hardcoded credentials or API keys
  • No unauthorized file system access (../)
  • Output does not expose sensitive information
  • Prompt injection protections in place
  • Input file paths validated (no ../ traversal)
  • Output directory restricted to workspace
  • Script execution in sandboxed environment
  • Error messages sanitized (no stack traces exposed)
  • Dependencies audited

Prerequisites

# Python dependencies
pip install -r requirements.txt

Evaluation Criteria

Success Metrics

  • Successfully executes main functionality
  • Output meets quality standards
  • Handles edge cases gracefully
  • Performance is acceptable

Test Cases

  1. Basic Functionality: Standard input → Expected output
  2. Edge Case: Invalid input → Graceful error handling
  3. Performance: Large dataset → Acceptable processing time

Lifecycle Status

  • Current Stage: Draft
  • Next Review Date: 2026-03-06
  • Known Issues: None
  • Planned Improvements:
    • Performance optimization
    • Additional feature support