$npx -y skills add huytran1120/vietnam-agentic-skills --skill base --agent claude-code
Installs into .claude/skills of the current project.
Are you the author of Base?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/huytran1120-base)
---
name: base
description: "Database management, forms, reports, and data operations with LibreOffice Base."
category: database-processing
risk: safe
source: personal
date_added: "2026-02-27"
---
# LibreOffice Base
## Overview
LibreOffice Base skill for creating, managing, and automating database workflows using the native ODB (OpenDocument Database) format.
## When to Use This Skill
Use this skill when:
- Creating new databases in ODB format
- Connecting to external databases (MySQL, PostgreSQL, etc.)
- Automating database operations and reports
- Creating forms and reports
- Building database applications
## Core Capabilities
### 1. Database Creation
- Create new ODB databases from scratch
- Design tables, views, and relationships
- Create embedded HSQLDB/Firebird databases
- Connect to external databases
### 2. Data Operations
- Import data from CSV, spreadsheets
- Export data to various formats
- Query execution and management
- Batch data processing
### 3. Form and Report Automation
- Create data entry forms
- Design custom reports
- Automate report generation
- Build form templates
### 4. Query and SQL
- Visual query design
- SQL query execution
- Query optimization
- Result set manipulation
### 5. Integration
- Command-line automation
- Python scripting with UNO
- JDBC/ODBC connectivity
## Workflows
### Creating a New Database
#### Method 1: Command-Line
```bash
soffice --base
```
#### Method 2: Python with UNO
```python
import uno
def create_database():
local_ctx = uno.getComponentContext()
resolver = local_ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", local_ctx
)
ctx = resolver.resolve(
"uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext"
)
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
doc = desktop.loadComponentFromURL("private:factory/sdatabase", "_blank", 0, ())
doc.storeToURL("file:///path/to/database.odb", ())
doc.close(True)
```
### Connecting to External Database
```python
import uno
def connect_to_mysql(host, port, database, user, password):
local_ctx = uno.getComponentContext()
resolver = local_ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", local_ctx
)
ctx = resolver.resolve(
"uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext"
)
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
doc = desktop.loadComponentFromURL("private:factory/sdatabase", "_blank", 0, ())
datasource = doc.getDataSource()
datasource.URL = f"sdbc:mysql:jdbc:mysql://{host}:{port}/{database}"
datasource.User = user
datasource.IsPasswordRequired = True # supply password at connection time; do not persist it
doc.storeToURL("file:///path/to/connected.odb", ())
return doc
```
## Database Connection Reference
### Supported Database Types
- HSQLDB (embedded)
- Firebird (embedded)
- MySQL/MariaDB
- PostgreSQL
- SQLite
- ODBC data sources
- JDBC data sources
### Connection Strings
```
# MySQL
sdbc:mysql:jdbc:mysql://localhost:3306/database
# PostgreSQL
sdbc:postgresql://localhost:5432/database
# SQLite
sdbc:sqlite:file:///path/to/database.db
# ODBC
sdbc:odbc:DSN_NAME
```
## Command-Line Reference
```bash
soffice --headless
soffice --base # Base
```
## Python Libraries
```bash
pip install pyodbc # ODBC connectivity
pip install sqlalchemy # SQL toolkit
```
## Best Practices
1. Use parameterized queries
2. Create indexes for performance
3. Backup databases regularly
4. Use transactions for data integrity
5. Keep private versioned backups; do not commit database contents or credentials
6. Document database schema
7. Use appropriate data types
8. Handle connection errors gracefully
## Troubleshooting
### Cannot open socket
```bash
# Inspect the listener and stop only the task-owned process after saving its documents.
soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;"
```
### Connection Issues
- Verify database server is running
- Check connection string format
- Ensure JDBC/ODBC drivers are installed
- Verify network connectivity
## Resources
- [LibreOffice Base Guide](https://documentation.libreoffice.org/)
- [UNO API Reference](https://api.libreoffice.org/)
- [HSQLDB Documentation](http://hsqldb.org/)
- [Firebird Documentation](https://firebirdsql.org/)
## Related Skills
- writer
- calc
- impress
- draw
- workflow-automation
## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
## Automation and document limits
Verify the actual LibreOffice version, filters, Python UNO binding and database drivers; installing unrelated Python libraries does not provide UNO. Bind any UNO listener to loopback in a separate task-owned profile and stop it after use; UNO is not an authenticated sandbox. Do not terminate all office processes or expose the listener publicly. Use a fresh private output directory, check expected file type/nonempty output and inspect the rendered result; exit zero alone is insufficient.
Opening documents can invoke macros, external links or embedded content: use approved inputs with macros/updates disabled and isolate untrusted conversions. Format conversion may lose layout, formulas, links, notes, multiple sheets/pages or features. Retain originals, clarify CSV sheet/delimiter/encoding and preserve formula/identifier semantics. Do not automatically install packages, publish documents or put sensitive records in Git. These examples were statically reviewed only; no LibreOffice process or conversion was run.