
Impress
- 1 installs
- 404 repo stars
- Updated August 5, 2026
- aiskillstore/marketplace
impress is a Claude Code skill that creates, edits and converts ODP presentations and automates slide generation using LibreOffice Impress.
About
impress is a Claude Code skill for creating, editing and converting presentations in the OpenDocument (ODP) format using LibreOffice Impress. A developer uses it to generate slides from templates, batch-convert between ODP, PPTX and PDF, and automate slide workflows from the command line or Python UNO. It matters when presentation output needs to be scripted rather than made by hand.
- Creates, edits and converts ODP presentations with LibreOffice Impress
- Headless CLI conversion between ODP, PPTX, PDF, HTML
- Template-based slide generation via Python UNO scripting
Impress by the numbers
- 1 all-time installs (skills.sh)
- Ranked #565 of 688 Office & Documents skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
impress capabilities & compatibility
- Capabilities
- presentation conversion · slide automation · template generation
- Use cases
- presentations
What impress says it does
LibreOffice Impress skill for creating, editing, converting, and automating presentation workflows using the native ODP (OpenDocument Presentation) format.
soffice --headless --convert-to pptx presentation.odp
npx skills add https://github.com/aiskillstore/marketplace --skill impressAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 404 |
| Last updated | August 5, 2026 |
| Repository | aiskillstore/marketplace ↗ |
What it does
Automate creation and conversion of ODP presentations between PPTX and PDF with LibreOffice Impress.
Who is it for?
Scripting presentation creation and format conversion with LibreOffice Impress
When should I use this skill?
Creating ODP presentations, converting between ODP/PPTX/PDF, or automating slide generation from templates
What you get
- ODP/PPTX/PDF presentation files
- presentation templates
By the numbers
- 4 input formats supported (ODP, PPTX, PPT, PDF)
- 5 output formats (ODP, PPTX, PDF, HTML, SWF)
- 7 best-practice items listed
Files
LibreOffice Impress
Overview
LibreOffice Impress skill for creating, editing, converting, and automating presentation workflows using the native ODP (OpenDocument Presentation) format.
When to Use This Skill
Use this skill when:
- Creating new presentations in ODP format
- Converting between ODP, PPTX, PDF formats
- Automating slide generation from templates
- Batch processing presentation operations
- Creating presentation templates
Core Capabilities
1. Presentation Creation
- Create new ODP presentations from scratch
- Generate presentations from templates
- Create slide masters and layouts
- Build interactive presentations
2. Format Conversion
- ODP to other formats: PPTX, PDF, HTML, SWF
- Other formats to ODP: PPTX, PPT, PDF
- Batch conversion of multiple files
3. Slide Automation
- Template-based slide generation
- Batch slide creation from data
- Automated content insertion
- Dynamic chart generation
4. Content Manipulation
- Text and image insertion
- Shape and diagram creation
- Animation and transition control
- Speaker notes management
5. Integration
- Command-line automation via soffice
- Python scripting with UNO
- Integration with workflow tools
Workflows
Creating a New Presentation
Method 1: Command-Line
soffice --impress template.odpMethod 2: Python with UNO
import uno
def create_presentation():
local_ctx = uno.getComponentContext()
resolver = local_ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", local_ctx
)
ctx = resolver.resolve(
"uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"
)
smgr = ctx.ServiceManager
doc = smgr.createInstanceWithContext("com.sun.star.presentation.PresentationDocument", ctx)
slides = doc.getDrawPages()
slide = slides.getByIndex(0)
doc.storeToURL("file:///path/to/presentation.odp", ())
doc.close(True)Converting Presentations
# ODP to PPTX
soffice --headless --convert-to pptx presentation.odp
# ODP to PDF
soffice --headless --convert-to pdf presentation.odp
# PPTX to ODP
soffice --headless --convert-to odp presentation.pptx
# Batch convert
for file in *.odp; do
soffice --headless --convert-to pdf "$file"
doneTemplate-Based Generation
import subprocess
import tempfile
from pathlib import Path
def generate_from_template(template_path, content, output_path):
with tempfile.TemporaryDirectory() as tmpdir:
subprocess.run(['unzip', '-q', template_path, '-d', tmpdir])
content_file = Path(tmpdir) / 'content.xml'
content_xml = content_file.read_text()
for key, value in content.items():
content_xml = content_xml.replace(f'${{{key}}}', str(value))
content_file.write_text(content_xml)
subprocess.run(['zip', '-rq', output_path, '.'], cwd=tmpdir)
return output_pathFormat Conversion Reference
Supported Input Formats
- ODP (native), PPTX, PPT, PDF
Supported Output Formats
- ODP, PPTX, PDF, HTML, SWF
Command-Line Reference
soffice --headless
soffice --headless --convert-to <format> <file>
soffice --impress # ImpressPython Libraries
pip install ezodf # ODF handling
pip install odfpy # ODF manipulationBest Practices
1. Use slide masters for consistency 2. Create templates for recurring presentations 3. Embed fonts for PDF distribution 4. Use vector graphics when possible 5. Store ODP source files in version control 6. Test conversions thoroughly 7. Keep file sizes manageable
Troubleshooting
Cannot open socket
killall soffice.bin
soffice --headless --accept="socket,host=localhost,port=8100;urp;"Resources
Related Skills
- writer
- calc
- draw
- base
- pptx-official
- workflow-automation
{
"schema_version": "2.0",
"meta": {
"generated_at": "2026-02-25T04:54:27.409Z",
"slug": "sickn33-impress",
"source_url": "https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/libreoffice/impress",
"source_ref": "main",
"model": "claude",
"analysis_version": "3.0.0",
"source_type": "community",
"content_hash": "3281f5830e4917cbb101d7021bb7553093879766780d9078c91ad8499fe288af",
"tree_hash": "3798bf603e0c8770ba5b3b63f3a0e2b3bb081b6963c955d333e3114fea10ebbb"
},
"skill": {
"name": "impress",
"description": "Presentation creation, format conversion (ODP/PPTX/PDF), slide automation with LibreOffice Impress.",
"summary": "Create, convert, and automate LibreOffice Impress presentations with ODP, PPTX, and PDF support.",
"icon": "📊",
"version": "1.0.0",
"author": "sickn33",
"license": "MIT",
"category": "office",
"tags": [
"libreoffice",
"presentations",
"odp",
"pptx",
"pdf-conversion"
],
"supported_tools": [
"claude",
"codex",
"claude-code"
],
"risk_factors": [
"external_commands",
"network",
"filesystem"
]
},
"security_audit": {
"risk_level": "safe",
"is_blocked": false,
"safe_to_publish": true,
"summary": "All 28 static findings are false positives. The skill uses standard LibreOffice Impress command-line operations (soffice) for presentation creation and conversion. External commands use hardcoded arguments with no user input injection risk. Network access is limited to official LibreOffice documentation links. Filesystem operations are standard tempfile usage for ODP file manipulation. No malicious patterns detected.",
"risk_factor_evidence": [
{
"factor": "external_commands",
"evidence": [
{
"file": "SKILL.md",
"line_start": 111,
"line_end": 111
},
{
"file": "SKILL.md",
"line_start": 117,
"line_end": 117
},
{
"file": "SKILL.md",
"line_start": 61,
"line_end": 63
},
{
"file": "SKILL.md",
"line_start": 63,
"line_end": 66
},
{
"file": "SKILL.md",
"line_start": 66,
"line_end": 83
},
{
"file": "SKILL.md",
"line_start": 83,
"line_end": 87
},
{
"file": "SKILL.md",
"line_start": 87,
"line_end": 101
},
{
"file": "SKILL.md",
"line_start": 101,
"line_end": 104
},
{
"file": "SKILL.md",
"line_start": 104,
"line_end": 119
},
{
"file": "SKILL.md",
"line_start": 119,
"line_end": 131
},
{
"file": "SKILL.md",
"line_start": 131,
"line_end": 135
},
{
"file": "SKILL.md",
"line_start": 135,
"line_end": 139
},
{
"file": "SKILL.md",
"line_start": 139,
"line_end": 142
},
{
"file": "SKILL.md",
"line_start": 142,
"line_end": 157
},
{
"file": "SKILL.md",
"line_start": 157,
"line_end": 160
}
]
},
{
"factor": "network",
"evidence": [
{
"file": "SKILL.md",
"line_start": 164,
"line_end": 164
},
{
"file": "SKILL.md",
"line_start": 165,
"line_end": 165
}
]
},
{
"factor": "filesystem",
"evidence": [
{
"file": "SKILL.md",
"line_start": 106,
"line_end": 106
},
{
"file": "SKILL.md",
"line_start": 110,
"line_end": 110
}
]
}
],
"critical_findings": [],
"high_findings": [
{
"title": "subprocess.run with hardcoded arguments",
"description": "Lines 111 and 117 use subprocess.run with hardcoded 'unzip' and 'zip' commands for ODP file manipulation. ODP files are ZIP archives. Arguments are hardcoded arrays with no user input - no command injection risk.",
"locations": [
{
"file": "SKILL.md",
"line_start": 111,
"line_end": 111
},
{
"file": "SKILL.md",
"line_start": 117,
"line_end": 117
}
],
"confidence": 0.15,
"confidence_reasoning": "Pattern matched but arguments are hardcoded strings, not user-controlled input. Legitimate use for ODP file processing."
}
],
"medium_findings": [
{
"title": "LibreOffice soffice command usage",
"description": "Multiple lines show soffice command-line usage for presentation operations. These are legitimate LibreOffice automation commands, not shell execution risks.",
"locations": [
{
"file": "SKILL.md",
"line_start": 61,
"line_end": 160
}
],
"confidence": 0.1,
"confidence_reasoning": "Static analyzer misidentified bash commands as Ruby backtick execution. All commands are standard soffice operations for office productivity."
}
],
"low_findings": [
{
"title": "Documentation URLs",
"description": "Lines 164-165 contain links to official LibreOffice documentation. These are legitimate reference URLs, not suspicious network activity.",
"locations": [
{
"file": "SKILL.md",
"line_start": 164,
"line_end": 165
}
],
"confidence": 0.05,
"confidence_reasoning": "Hardcoded URLs to official LibreOffice documentation are standard reference links for the skill."
},
{
"title": "Standard tempfile usage",
"description": "Lines 106 and 110 use Python tempfile module for temporary directory handling during ODP template processing.",
"locations": [
{
"file": "SKILL.md",
"line_start": 106,
"line_end": 110
}
],
"confidence": 0.05,
"confidence_reasoning": "Standard Python tempfile usage for processing ODP files - no security concern."
}
],
"dangerous_patterns": [],
"files_scanned": 1,
"total_lines": 175,
"audit_model": "claude",
"audited_at": "2026-02-25T04:54:27.409Z",
"risk_factors": [
"external_commands",
"network",
"filesystem"
]
},
"content": {
"user_title": "Create and Convert Presentations",
"value_statement": "Automate LibreOffice Impress presentation creation, format conversion between ODP, PPTX, and PDF, and slide generation from templates using command-line and Python UNO API.",
"seo_keywords": [
"LibreOffice Impress",
"presentation creation",
"ODP to PDF",
"PPTX conversion",
"Claude Code",
"Codex",
"Claude",
"slide automation",
"office automation",
"document conversion"
],
"actual_capabilities": [
"Create new ODP presentations from scratch or templates",
"Convert presentations between ODP, PPTX, PDF, HTML formats",
"Automate slide generation using Python UNO API",
"Batch process multiple presentation files",
"Manipulate slide content programmatically",
"Use soffice command-line for headless operations"
],
"limitations": [
"Requires LibreOffice installed on the system",
"Some advanced formatting may not convert perfectly between formats",
"UNO API requires running LibreOffice in server mode",
"Complex animations may not fully transfer in conversions"
],
"use_cases": [
{
"title": "Business Report Automation",
"description": "Generate quarterly business review presentations automatically from data exports, applying company templates with consistent branding.",
"target_user": "Business analysts and report writers"
},
{
"title": "Training Material Conversion",
"description": "Convert legacy PowerPoint training materials to ODP format for open-source office workflows, or batch convert for web distribution as PDF.",
"target_user": "Training coordinators and content creators"
},
{
"title": "Dynamic Slide Generation",
"description": "Create parameterized presentation templates that generate custom slides for each client or audience segment using Python scripting.",
"target_user": "Sales teams and marketing professionals"
}
],
"prompt_templates": [
{
"title": "Convert Presentation Format",
"prompt": "Use the impress skill to convert presentation.odp to PDF format using soffice headless mode.",
"scenario": "Converting an existing ODP file to PDF for distribution"
},
{
"title": "Create Presentation from Template",
"prompt": "Use the impress skill to create a new presentation using template.odp, replacing placeholders like ${title} and ${date} with quarterly_report and 2024-01-15.",
"scenario": "Generating a branded presentation from a template"
},
{
"title": "Batch Convert Multiple Files",
"prompt": "Use the impress skill to batch convert all .odp files in the /presentations directory to PDF format.",
"scenario": "Converting multiple presentation files at once"
},
{
"title": "Automate Slide Creation",
"prompt": "Use the impress skill with Python UNO API to create a 10-slide presentation with title slide, agenda, and 8 content slides with bullet points.",
"scenario": "Programmatically creating a structured presentation"
}
],
"output_examples": [
{
"input": "Convert my_presentation.odp to PDF",
"output": "Successfully converted my_presentation.odp to my_presentation.pdf using: soffice --headless --convert-to pdf my_presentation.odp"
},
{
"input": "Create presentation from template with data",
"output": "Generated Q4_Sales_Report.odp from template. Unzipped ODP, replaced ${title} with Q4 Sales Report, ${date} with 2024-01-15, and re-zipped to final ODP file."
},
{
"input": "List supported conversion formats",
"output": "Input formats: ODP, PPTX, PPT, PDF. Output formats: ODP, PPTX, PDF, HTML, SWF."
}
],
"best_practices": [
"Use slide masters in templates for consistent styling across presentations",
"Test all format conversions with sample files before batch processing",
"Use headless mode (--headless) for server-side automation"
],
"anti_patterns": [
"Do not assume all PowerPoint animations will convert to LibreOffice",
"Do not skip testing conversions - verify output before distribution",
"Do not use absolute file paths that will break on different systems"
],
"faq": [
{
"question": "Does this skill require LibreOffice to be installed?",
"answer": "Yes, LibreOffice must be installed on the system. The skill uses the soffice command-line tool and Python UNO API for LibreOffice operations."
},
{
"question": "Can I convert PowerPoint files to ODP?",
"answer": "Yes, use soffice --headless --convert-to odp presentation.pptx to convert PowerPoint files to ODP format."
},
{
"question": "How do I automate slide creation with Python?",
"answer": "Use the UNO API to connect to a running LibreOffice instance. Start LibreOffice with --accept=\"socket,host=localhost,port=8100;urp;\" then use Python uno module to create and manipulate presentations."
},
{
"question": "What formats can be converted to PDF?",
"answer": "ODP, PPTX, and PPT files can all be converted to PDF using soffice --headless --convert-to pdf <filename>."
},
{
"question": "Can I batch convert multiple files?",
"answer": "Yes, you can use a shell loop or the Python script provided to batch process multiple presentation files."
},
{
"question": "Are ODP files really ZIP archives?",
"answer": "Yes, ODP files are ZIP archives containing XML files for content, styles, and metadata. This allows template manipulation by unzipping, modifying content.xml, and re-zipping."
}
]
},
"file_structure": [
{
"name": "SKILL.md",
"type": "file",
"path": "SKILL.md",
"lines": 175
}
]
}