Skip to main content

concinno-skills-office

Local Office document skills for Concinno. Native Python libraries, no Microsoft 365 / Graph API round-trip, no network.

Status

MVP (0.1.0) — five tools covering the core four-quadrant of local Office document creation:

Tool Library Purpose
WordCreate python-docx build a .docx from heading / paragraphs / tables
ExcelWrite openpyxl build a .xlsx, write rows and formulas
ExcelChart XlsxWriter build a .xlsx containing a bar / line / pie chart
PptCreate python-pptx build a .pptx from a list of slide dicts
DocxTemplate docxtpl render a Jinja2 .docx template

Future versions will extend the existing tools (images, styles, more chart types) without bumping Concinno itself. A separate concinno-skills-office-365 sibling package will host the Microsoft Graph API path when it ships; this package will never gain a cloud dependency.

Install

pip install concinno-skills-office

All five document libraries are hard dependencies — pulled in automatically. The package is useless without them.

License notes

The package itself is Apache-2.0. However docxtpl is licensed under LGPL-2.1. We depend on it as a pip dependency — a dynamic link — so the re-link rights the LGPL requires are preserved for any downstream consumer that pip-installs Office skills the normal way.

If you statically bundle this package into a single-file binary (e.g. PyInstaller with --onefile) the bundle's redistribution terms must satisfy LGPL-2.1 §6 for the docxtpl code path specifically. The upstream docxtpl project lives at https://github.com/elapouya/python-docx-template.

Safety

Every tool validates its output_path / template_path kwarg before touching disk:

  1. Must be a non-empty string.
  2. After Path.resolve() it must live under either Path.home() or Path.cwd().
  3. It may not live under a well-known system root (/etc, /Windows, /System, /Program Files, …) — guards against the HOME=/ edge case.

Violations return {"error": "..."} rather than writing the file.

Usage via Concinno ToolRegistry

When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry auto-mounts all five tools:

import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"

from concinno.tools.registry import get_default_registry

reg = get_default_registry()
for name in (
    "WordCreate",
    "ExcelWrite",
    "ExcelChart",
    "PptCreate",
    "DocxTemplate",
):
    assert name in reg.list_deferred()

Direct Python usage

from concinno_skills_office import (
    WordCreate, ExcelWrite, ExcelChart, PptCreate, DocxTemplate,
)

# Word: heading + paragraphs + a table.
WordCreate().call(
    action="create",
    output_path="./report.docx",
    heading="Quarterly Report",
    paragraphs=["Summary paragraph.", "Details below."],
    tables=[[["Metric", "Value"], ["Revenue", "$1.2M"]]],
)

# Excel: rows + formula.
ExcelWrite().call(
    action="create",
    output_path="./sheet.xlsx",
    sheet="Sales",
    rows=[
        ["Name", "Units", "Total"],
        ["A", 10, "=B2*5"],
        ["B", 20, "=B3*5"],
    ],
)

# Excel + chart.
ExcelChart().call(
    action="create",
    output_path="./chart.xlsx",
    sheet="Data",
    rows=[["Q1", 10], ["Q2", 20], ["Q3", 15], ["Q4", 30]],
    chart={
        "type": "bar",
        "title": "Quarterly",
        "categories": "A1:A4",
        "values": "B1:B4",
    },
)

# PowerPoint.
PptCreate().call(
    action="create",
    output_path="./deck.pptx",
    slides=[
        {"title": "Agenda", "content": ["Intro", "Body", "Q&A"]},
        {"title": "Outro", "content": ["Thanks."]},
    ],
)

# Docx template render.
DocxTemplate().call(
    action="render",
    template_path="./letter_template.docx",
    context={"name": "Alice", "date": "2026-04-22"},
    output_path="./letter_alice.docx",
)

All tools return either {"ok": True, ...} on success or {"error": "..."} on any validation or library failure — matching the shape of other Concinno built-in tools.

License

Apache-2.0. See LICENSE in the Concinno monorepo.

Metadata

Release files for concinno-skills-office 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for concinno-skills-office 0.1.0
File Size Uploaded
concinno_skills_office-0.1.0.tar.gz 37.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for concinno-skills-office 0.1.0
File Interpreter ABI Platform
concinno_skills_office-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.1 kB

Release files / concinno_skills_office-0.1.0.tar.gz

Download URL concinno_skills_office-0.1.0.tar.gz
Size 37.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7f08ad220bf22cc6c76c6c71cd3a58c51c3a52a0bad7142feb2cab51edb4344a
BLAKE2b-256 checksum
How to use checksums
c548b01f37b017727d534801a10a7f4d1a09ee0e6432d91ab5f080885b8e0468
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / concinno_skills_office-0.1.0-py3-none-any.whl

Download URL concinno_skills_office-0.1.0-py3-none-any.whl
Size 16.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb7378b7ca586cc328018bc40b97dc9cf09ad9c15b66faf984cb5fefdf8e11ea
BLAKE2b-256 checksum
How to use checksums
2fd37e509c2e3c3cd69775bf4cc4fe99c1671ac51b27e57d72be44dd8957aebf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page