Security Audit Report
Last Audited: 2026-01-04
Audited By: Claude (Opus 4.5) + Human Review
Status: Passed - No security issues found
Overview
This document provides a security audit of all scripts in this repository. All scripts have been reviewed for:
- Command injection vulnerabilities
- Dangerous shell commands (
rm -rf, sudo, etc.)
- Unauthorized network calls / data exfiltration
eval() / exec() misuse
- Credential harvesting
Result: All scripts are safe for use.
Scripts by Skill
create-visualization
| Script |
Purpose |
Safety Notes |
scripts/flowchart.py |
Generate flowchart diagrams using matplotlib |
Pure visualization, no I/O beyond file save |
scripts/manim_physics.py |
Create physics animations (3Blue1Brown style) |
Uses manim library only |
scripts/math_plots.py |
Plot mathematical functions |
Uses matplotlib/numpy only |
scripts/physics_fbd.py |
Draw Free Body Diagrams |
Pure visualization |
deep-research
| Script |
Purpose |
Safety Notes |
scripts/validate_report.py |
Validate research report quality |
Pure Python, no external calls |
docx
| Script |
Purpose |
Safety Notes |
scripts/document.py |
Create/modify Word documents |
Uses python-docx library |
scripts/utilities.py |
XML editing utilities for OOXML |
Uses defusedxml (safe XML parser) |
ooxml/scripts/pack.py |
Pack directory into .docx file |
subprocess: soffice --headless for validation only |
ooxml/scripts/unpack.py |
Unpack .docx to directory |
Uses zipfile + defusedxml |
ooxml/scripts/validate.py |
Validate OOXML structure |
Pure validation, no modifications |
ooxml/scripts/validation/redlining.py |
Validate tracked changes |
subprocess: git diff for text comparison |
pdf
| Script |
Purpose |
Safety Notes |
scripts/fill_pdf_form_with_annotations.py |
Fill PDF forms using annotations |
Uses pypdf library only |
scripts/fill_fillable_fields.py |
Fill fillable PDF form fields |
Uses pypdf library only |
scripts/extract_form_field_info.py |
Extract form field metadata |
Read-only, uses pypdf |
pptx
| Script |
Purpose |
Safety Notes |
scripts/replace.py |
Replace text in PowerPoint slides |
Uses python-pptx library |
scripts/inventory.py |
Extract text inventory from slides |
Read-only analysis |
scripts/thumbnail.py |
Generate slide thumbnail grids |
subprocess: soffice, pdftoppm for image conversion |
scripts/html2pptx.js |
Convert HTML to PowerPoint slides |
Uses playwright for rendering, pptxgenjs for output |
ooxml/scripts/pack.py |
Pack directory into .pptx file |
subprocess: soffice --headless for validation |
ooxml/scripts/unpack.py |
Unpack .pptx to directory |
Uses zipfile + defusedxml |
xlsx
| Script |
Purpose |
Safety Notes |
recalc.py |
Recalculate Excel formulas |
subprocess: soffice --headless to run LibreOffice macro |
skill-creator
| Script |
Purpose |
Safety Notes |
scripts/init_skill.py |
Initialize new skill directory structure |
Creates files/folders only, no execution |
Subprocess Calls Analysis
All subprocess calls use array-based commands (not shell=True), preventing command injection:
# Safe pattern used throughout (no shell injection possible)
subprocess.run(['soffice', '--headless', '--convert-to', 'pdf', filename])
# NOT used (would be vulnerable)
subprocess.run(f'soffice --headless {filename}', shell=True) # NEVER USED
| Script |
Command |
Purpose |
xlsx/recalc.py |
soffice --headless |
Recalculate Excel formulas via LibreOffice |
pptx/scripts/thumbnail.py |
soffice, pdftoppm |
Convert PPTX to images |
docx/ooxml/scripts/pack.py |
soffice --headless |
Validate document structure |
pptx/ooxml/scripts/pack.py |
soffice --headless |
Validate document structure |
docx/.../redlining.py |
git diff |
Compare text changes |
pptx/.../redlining.py |
git diff |
Compare text changes |
What We Verified Does NOT Exist
- No
eval() or exec() with user input
- No
rm -rf or destructive file operations
- No
curl | bash or remote code execution
- No hardcoded credentials or API keys
- No network calls that exfiltrate data
- No obfuscated or encrypted code
External Dependencies
All scripts use well-known, trusted libraries:
| Library |
Used By |
Purpose |
defusedxml |
docx, pptx |
Safe XML parsing (prevents XXE attacks) |
pypdf |
pdf |
PDF manipulation |
python-docx |
docx |
Word document handling |
python-pptx |
pptx |
PowerPoint handling |
openpyxl |
xlsx |
Excel file handling |
matplotlib |
create-visualization |
Chart/diagram generation |
manim |
create-visualization |
Animation rendering |
playwright |
pptx |
Browser automation for HTML rendering |
pptxgenjs |
pptx |
PowerPoint generation (Node.js) |
How to Verify
You can verify this audit yourself:
# Search for potentially dangerous patterns
grep -r "eval\|exec\|subprocess.*shell=True\|rm -rf\|curl.*\|" --include="*.py" .
# Check all subprocess calls
grep -r "subprocess" --include="*.py" -A 3 .
# Verify no network calls in Python scripts
grep -r "requests\|urllib\|http.client" --include="*.py" .
Disclaimer
This audit covers the scripts as of the audit date. Always review code before running it in sensitive environments. If you find any security issues, please report them via GitHub Issues.