{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pls-office-docs",
    "name": "PLS Office Docs",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/mattvalenta/pls-office-docs",
    "canonicalUrl": "https://clawhub.ai/mattvalenta/pls-office-docs",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pls-office-docs",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pls-office-docs",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pls-office-docs"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/pls-office-docs",
    "agentPageUrl": "https://openagent3.xyz/skills/pls-office-docs/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pls-office-docs/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pls-office-docs/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Office Docs - Professional Document Generation",
        "body": "Comprehensive skill for creating and manipulating office documents. Handles PDF, DOCX, XLSX, and PPTX formats."
      },
      {
        "title": "Quick Reference",
        "body": "FormatCreateReadEditPDFfpdf, reportlabpdfplumber, pymupdfpypdfDOCXpython-docxpython-docxpython-docxXLSXopenpyxl, pandasopenpyxl, pandasopenpyxlPPTXpython-pptxpython-pptxpython-pptx"
      },
      {
        "title": "Install",
        "body": "pip install fpdf reportlab pdfplumber pymupdf pypdf"
      },
      {
        "title": "Create PDF",
        "body": "from fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Helvetica\", size=12)\npdf.cell(0, 10, \"Hello World\", ln=True)\npdf.output(\"document.pdf\")"
      },
      {
        "title": "Create PDF with Images",
        "body": "from fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.image(\"photo.jpg\", x=10, y=10, w=100)\npdf.output(\"with_image.pdf\")"
      },
      {
        "title": "Extract Text from PDF",
        "body": "import pdfplumber\n\nwith pdfplumber.open(\"document.pdf\") as pdf:\n    for page in pdf.pages:\n        print(page.extract_text())"
      },
      {
        "title": "Merge PDFs",
        "body": "from pypdf import PdfMerger\n\nmerger = PdfMerger()\nmerger.append(\"file1.pdf\")\nmerger.append(\"file2.pdf\")\nmerger.write(\"merged.pdf\")\nmerger.close()"
      },
      {
        "title": "Split PDF",
        "body": "from pypdf import PdfReader, PdfWriter\n\nreader = PdfReader(\"document.pdf\")\nwriter = PdfWriter()\n\nfor i in range(0, 5):  # First 5 pages\n    writer.add_page(reader.pages[i])\n\nwith open(\"split.pdf\", \"wb\") as f:\n    writer.write(f)"
      },
      {
        "title": "Install",
        "body": "pip install python-docx"
      },
      {
        "title": "Create Document",
        "body": "from docx import Document\n\ndoc = Document()\ndoc.add_heading(\"Report Title\", level=0)\ndoc.add_paragraph(\"This is a paragraph.\")\ndoc.add_paragraph(\"Bold text\", style=\"Intense Quote\")\ndoc.save(\"report.docx\")"
      },
      {
        "title": "Add Table",
        "body": "from docx import Document\n\ndoc = Document()\ntable = doc.add_table(rows=3, cols=2)\ntable.style = \"Table Grid\"\n\n# Header row\nhdr_cells = table.rows[0].cells\nhdr_cells[0].text = \"Name\"\nhdr_cells[1].text = \"Value\"\n\n# Data rows\nrow = table.rows[1].cells\nrow[0].text = \"Revenue\"\nrow[1].text = \"$1,000,000\"\n\ndoc.save(\"table.docx\")"
      },
      {
        "title": "Add Image",
        "body": "from docx import Document\nfrom docx.shared import Inches\n\ndoc = Document()\ndoc.add_picture(\"chart.png\", width=Inches(5))\ndoc.save(\"with_image.docx\")"
      },
      {
        "title": "Read Document",
        "body": "from docx import Document\n\ndoc = Document(\"report.docx\")\nfor para in doc.paragraphs:\n    print(para.text)\n\nfor table in doc.tables:\n    for row in table.rows:\n        for cell in row.cells:\n            print(cell.text)"
      },
      {
        "title": "Add Bullet List",
        "body": "from docx import Document\n\ndoc = Document()\ndoc.add_paragraph(\"Items:\", style=\"List Bullet\")\ndoc.add_paragraph(\"First item\", style=\"List Bullet\")\ndoc.add_paragraph(\"Second item\", style=\"List Bullet\")\ndoc.save(\"bullets.docx\")"
      },
      {
        "title": "Install",
        "body": "pip install openpyxl pandas xlsxwriter"
      },
      {
        "title": "Create Workbook",
        "body": "from openpyxl import Workbook\n\nwb = Workbook()\nws = wb.active\nws.title = \"Sheet1\"\n\n# Headers\nws[\"A1\"] = \"Name\"\nws[\"B1\"] = \"Value\"\n\n# Data\nws[\"A2\"] = \"Revenue\"\nws[\"B2\"] = 1000000\n\n# Formula\nws[\"A3\"] = \"Total\"\nws[\"B3\"] = \"=SUM(B2:B2)\"\n\nwb.save(\"data.xlsx\")"
      },
      {
        "title": "Create with Pandas",
        "body": "import pandas as pd\n\ndf = pd.DataFrame({\n    \"Name\": [\"Alice\", \"Bob\", \"Charlie\"],\n    \"Score\": [85, 92, 78]\n})\n\ndf.to_excel(\"scores.xlsx\", index=False)"
      },
      {
        "title": "Add Charts",
        "body": "from openpyxl import Workbook\nfrom openpyxl.chart import BarChart, Reference\n\nwb = Workbook()\nws = wb.active\n\n# Data\nws[\"A1\"] = \"Month\"\nws[\"B1\"] = \"Sales\"\ndata = [(\"Jan\", 100), (\"Feb\", 150), (\"Mar\", 200)]\nfor i, (month, sales) in enumerate(data, 2):\n    ws[f\"A{i}\"] = month\n    ws[f\"B{i}\"] = sales\n\n# Chart\nchart = BarChart()\nchart.add_data(Reference(ws, min_col=2, min_row=1, max_row=4))\nchart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=4))\nchart.title = \"Monthly Sales\"\nws.add_chart(chart, \"D1\")\n\nwb.save(\"chart.xlsx\")"
      },
      {
        "title": "Read Workbook",
        "body": "from openpyxl import load_workbook\n\nwb = load_workbook(\"data.xlsx\")\nws = wb.active\n\nfor row in ws.iter_rows(values_only=True):\n    print(row)"
      },
      {
        "title": "Format Cells",
        "body": "from openpyxl.styles import Font, PatternFill, Alignment\nfrom openpyxl import Workbook\n\nwb = Workbook()\nws = wb.active\n\n# Bold header\nws[\"A1\"] = \"Header\"\nws[\"A1\"].font = Font(bold=True, size=14)\n\n# Background color\nws[\"A1\"].fill = PatternFill(start_color=\"4472C4\", fill_type=\"solid\")\nws[\"A1\"].font = Font(color=\"FFFFFF\", bold=True)\n\n# Center align\nws[\"A1\"].alignment = Alignment(horizontal=\"center\")\n\nwb.save(\"formatted.xlsx\")"
      },
      {
        "title": "Install",
        "body": "pip install python-pptx"
      },
      {
        "title": "Create Presentation",
        "body": "from pptx import Presentation\nfrom pptx.util import Inches, Pt\n\nprs = Presentation()\n\n# Title slide\nslide_layout = prs.slide_layouts[0]\nslide = prs.slides.add_slide(slide_layout)\ntitle = slide.shapes.title\nsubtitle = slide.placeholders[1]\ntitle.text = \"Presentation Title\"\nsubtitle.text = \"Subtitle here\"\n\nprs.save(\"presentation.pptx\")"
      },
      {
        "title": "Add Bullet Slide",
        "body": "from pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[1]  # Title and Content\nslide = prs.slides.add_slide(slide_layout)\n\ntitle = slide.shapes.title\ntitle.text = \"Key Points\"\n\nbody = slide.placeholders[1]\ntf = body.text_frame\ntf.text = \"First point\"\n\np = tf.add_paragraph()\np.text = \"Second point\"\np.level = 1  # Indent\n\nprs.save(\"bullets.pptx\")"
      },
      {
        "title": "Add Image",
        "body": "from pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[5]  # Blank\nslide = prs.slides.add_slide(slide_layout)\n\nslide.shapes.add_picture(\"chart.png\", Inches(1), Inches(1), width=Inches(8))\n\nprs.save(\"with_image.pptx\")"
      },
      {
        "title": "Add Table",
        "body": "from pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[5]  # Blank\nslide = prs.slides.add_slide(slide_layout)\n\nrows, cols = 4, 3\ntable = slide.shapes.add_table(rows, cols, Inches(1), Inches(1), Inches(8), Inches(3)).table\n\n# Set headers\ntable.cell(0, 0).text = \"Name\"\ntable.cell(0, 1).text = \"Q1\"\ntable.cell(0, 2).text = \"Q2\"\n\n# Set data\ntable.cell(1, 0).text = \"Alice\"\ntable.cell(1, 1).text = \"100\"\ntable.cell(1, 2).text = \"150\"\n\nprs.save(\"table.pptx\")"
      },
      {
        "title": "Report Generation",
        "body": "from docx import Document\nfrom docx.shared import Inches\n\ndoc = Document()\ndoc.add_heading(\"Monthly Report\", level=0)\ndoc.add_paragraph(\"Generated automatically by agent.\")\n\n# Add summary table\ntable = doc.add_table(rows=3, cols=2)\ntable.style = \"Table Grid\"\ntable.rows[0].cells[0].text = \"Metric\"\ntable.rows[0].cells[1].text = \"Value\"\ntable.rows[1].cells[0].text = \"Revenue\"\ntable.rows[1].cells[1].text = \"$1,000,000\"\ntable.rows[2].cells[0].text = \"Users\"\ntable.rows[2].cells[1].text = \"5,000\"\n\ndoc.save(\"report.docx\")"
      },
      {
        "title": "Data Export to Excel",
        "body": "import pandas as pd\nfrom openpyxl.chart import BarChart, Reference\nfrom openpyxl import load_workbook\n\n# Create data\ndf = pd.DataFrame({\n    \"Date\": pd.date_range(\"2026-01-01\", periods=30),\n    \"Revenue\": [1000 + i * 50 for i in range(30)]\n})\n\n# Save with formatting\ndf.to_excel(\"daily_revenue.xlsx\", index=False)\n\n# Add chart\nwb = load_workbook(\"daily_revenue.xlsx\")\nws = wb.active\n\nchart = BarChart()\nchart.add_data(Reference(ws, min_col=2, min_row=1, max_row=31))\nchart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=31))\nchart.title = \"Daily Revenue\"\nws.add_chart(chart, \"D1\")\n\nwb.save(\"daily_revenue.xlsx\")"
      },
      {
        "title": "PDF Report with Charts",
        "body": "from fpdf import FPDF\nimport matplotlib.pyplot as plt\n\n# Create chart image\nplt.figure(figsize=(10, 6))\nplt.bar([\"Jan\", \"Feb\", \"Mar\"], [100, 150, 200])\nplt.title(\"Monthly Sales\")\nplt.savefig(\"chart.png\")\nplt.close()\n\n# Create PDF\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Helvetica\", size=16)\npdf.cell(0, 10, \"Monthly Sales Report\", ln=True, align=\"C\")\npdf.image(\"chart.png\", x=10, y=30, w=190)\npdf.output(\"report.pdf\")"
      }
    ],
    "body": "Office Docs - Professional Document Generation\n\nComprehensive skill for creating and manipulating office documents. Handles PDF, DOCX, XLSX, and PPTX formats.\n\nQuick Reference\nFormat\tCreate\tRead\tEdit\nPDF\tfpdf, reportlab\tpdfplumber, pymupdf\tpypdf\nDOCX\tpython-docx\tpython-docx\tpython-docx\nXLSX\topenpyxl, pandas\topenpyxl, pandas\topenpyxl\nPPTX\tpython-pptx\tpython-pptx\tpython-pptx\nPDF Operations\nInstall\npip install fpdf reportlab pdfplumber pymupdf pypdf\n\nCreate PDF\nfrom fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Helvetica\", size=12)\npdf.cell(0, 10, \"Hello World\", ln=True)\npdf.output(\"document.pdf\")\n\nCreate PDF with Images\nfrom fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.image(\"photo.jpg\", x=10, y=10, w=100)\npdf.output(\"with_image.pdf\")\n\nExtract Text from PDF\nimport pdfplumber\n\nwith pdfplumber.open(\"document.pdf\") as pdf:\n    for page in pdf.pages:\n        print(page.extract_text())\n\nMerge PDFs\nfrom pypdf import PdfMerger\n\nmerger = PdfMerger()\nmerger.append(\"file1.pdf\")\nmerger.append(\"file2.pdf\")\nmerger.write(\"merged.pdf\")\nmerger.close()\n\nSplit PDF\nfrom pypdf import PdfReader, PdfWriter\n\nreader = PdfReader(\"document.pdf\")\nwriter = PdfWriter()\n\nfor i in range(0, 5):  # First 5 pages\n    writer.add_page(reader.pages[i])\n\nwith open(\"split.pdf\", \"wb\") as f:\n    writer.write(f)\n\nDOCX (Word) Operations\nInstall\npip install python-docx\n\nCreate Document\nfrom docx import Document\n\ndoc = Document()\ndoc.add_heading(\"Report Title\", level=0)\ndoc.add_paragraph(\"This is a paragraph.\")\ndoc.add_paragraph(\"Bold text\", style=\"Intense Quote\")\ndoc.save(\"report.docx\")\n\nAdd Table\nfrom docx import Document\n\ndoc = Document()\ntable = doc.add_table(rows=3, cols=2)\ntable.style = \"Table Grid\"\n\n# Header row\nhdr_cells = table.rows[0].cells\nhdr_cells[0].text = \"Name\"\nhdr_cells[1].text = \"Value\"\n\n# Data rows\nrow = table.rows[1].cells\nrow[0].text = \"Revenue\"\nrow[1].text = \"$1,000,000\"\n\ndoc.save(\"table.docx\")\n\nAdd Image\nfrom docx import Document\nfrom docx.shared import Inches\n\ndoc = Document()\ndoc.add_picture(\"chart.png\", width=Inches(5))\ndoc.save(\"with_image.docx\")\n\nRead Document\nfrom docx import Document\n\ndoc = Document(\"report.docx\")\nfor para in doc.paragraphs:\n    print(para.text)\n\nfor table in doc.tables:\n    for row in table.rows:\n        for cell in row.cells:\n            print(cell.text)\n\nAdd Bullet List\nfrom docx import Document\n\ndoc = Document()\ndoc.add_paragraph(\"Items:\", style=\"List Bullet\")\ndoc.add_paragraph(\"First item\", style=\"List Bullet\")\ndoc.add_paragraph(\"Second item\", style=\"List Bullet\")\ndoc.save(\"bullets.docx\")\n\nXLSX (Excel) Operations\nInstall\npip install openpyxl pandas xlsxwriter\n\nCreate Workbook\nfrom openpyxl import Workbook\n\nwb = Workbook()\nws = wb.active\nws.title = \"Sheet1\"\n\n# Headers\nws[\"A1\"] = \"Name\"\nws[\"B1\"] = \"Value\"\n\n# Data\nws[\"A2\"] = \"Revenue\"\nws[\"B2\"] = 1000000\n\n# Formula\nws[\"A3\"] = \"Total\"\nws[\"B3\"] = \"=SUM(B2:B2)\"\n\nwb.save(\"data.xlsx\")\n\nCreate with Pandas\nimport pandas as pd\n\ndf = pd.DataFrame({\n    \"Name\": [\"Alice\", \"Bob\", \"Charlie\"],\n    \"Score\": [85, 92, 78]\n})\n\ndf.to_excel(\"scores.xlsx\", index=False)\n\nAdd Charts\nfrom openpyxl import Workbook\nfrom openpyxl.chart import BarChart, Reference\n\nwb = Workbook()\nws = wb.active\n\n# Data\nws[\"A1\"] = \"Month\"\nws[\"B1\"] = \"Sales\"\ndata = [(\"Jan\", 100), (\"Feb\", 150), (\"Mar\", 200)]\nfor i, (month, sales) in enumerate(data, 2):\n    ws[f\"A{i}\"] = month\n    ws[f\"B{i}\"] = sales\n\n# Chart\nchart = BarChart()\nchart.add_data(Reference(ws, min_col=2, min_row=1, max_row=4))\nchart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=4))\nchart.title = \"Monthly Sales\"\nws.add_chart(chart, \"D1\")\n\nwb.save(\"chart.xlsx\")\n\nRead Workbook\nfrom openpyxl import load_workbook\n\nwb = load_workbook(\"data.xlsx\")\nws = wb.active\n\nfor row in ws.iter_rows(values_only=True):\n    print(row)\n\nFormat Cells\nfrom openpyxl.styles import Font, PatternFill, Alignment\nfrom openpyxl import Workbook\n\nwb = Workbook()\nws = wb.active\n\n# Bold header\nws[\"A1\"] = \"Header\"\nws[\"A1\"].font = Font(bold=True, size=14)\n\n# Background color\nws[\"A1\"].fill = PatternFill(start_color=\"4472C4\", fill_type=\"solid\")\nws[\"A1\"].font = Font(color=\"FFFFFF\", bold=True)\n\n# Center align\nws[\"A1\"].alignment = Alignment(horizontal=\"center\")\n\nwb.save(\"formatted.xlsx\")\n\nPPTX (PowerPoint) Operations\nInstall\npip install python-pptx\n\nCreate Presentation\nfrom pptx import Presentation\nfrom pptx.util import Inches, Pt\n\nprs = Presentation()\n\n# Title slide\nslide_layout = prs.slide_layouts[0]\nslide = prs.slides.add_slide(slide_layout)\ntitle = slide.shapes.title\nsubtitle = slide.placeholders[1]\ntitle.text = \"Presentation Title\"\nsubtitle.text = \"Subtitle here\"\n\nprs.save(\"presentation.pptx\")\n\nAdd Bullet Slide\nfrom pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[1]  # Title and Content\nslide = prs.slides.add_slide(slide_layout)\n\ntitle = slide.shapes.title\ntitle.text = \"Key Points\"\n\nbody = slide.placeholders[1]\ntf = body.text_frame\ntf.text = \"First point\"\n\np = tf.add_paragraph()\np.text = \"Second point\"\np.level = 1  # Indent\n\nprs.save(\"bullets.pptx\")\n\nAdd Image\nfrom pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[5]  # Blank\nslide = prs.slides.add_slide(slide_layout)\n\nslide.shapes.add_picture(\"chart.png\", Inches(1), Inches(1), width=Inches(8))\n\nprs.save(\"with_image.pptx\")\n\nAdd Table\nfrom pptx import Presentation\nfrom pptx.util import Inches\n\nprs = Presentation()\nslide_layout = prs.slide_layouts[5]  # Blank\nslide = prs.slides.add_slide(slide_layout)\n\nrows, cols = 4, 3\ntable = slide.shapes.add_table(rows, cols, Inches(1), Inches(1), Inches(8), Inches(3)).table\n\n# Set headers\ntable.cell(0, 0).text = \"Name\"\ntable.cell(0, 1).text = \"Q1\"\ntable.cell(0, 2).text = \"Q2\"\n\n# Set data\ntable.cell(1, 0).text = \"Alice\"\ntable.cell(1, 1).text = \"100\"\ntable.cell(1, 2).text = \"150\"\n\nprs.save(\"table.pptx\")\n\nCommon Workflows\nReport Generation\nfrom docx import Document\nfrom docx.shared import Inches\n\ndoc = Document()\ndoc.add_heading(\"Monthly Report\", level=0)\ndoc.add_paragraph(\"Generated automatically by agent.\")\n\n# Add summary table\ntable = doc.add_table(rows=3, cols=2)\ntable.style = \"Table Grid\"\ntable.rows[0].cells[0].text = \"Metric\"\ntable.rows[0].cells[1].text = \"Value\"\ntable.rows[1].cells[0].text = \"Revenue\"\ntable.rows[1].cells[1].text = \"$1,000,000\"\ntable.rows[2].cells[0].text = \"Users\"\ntable.rows[2].cells[1].text = \"5,000\"\n\ndoc.save(\"report.docx\")\n\nData Export to Excel\nimport pandas as pd\nfrom openpyxl.chart import BarChart, Reference\nfrom openpyxl import load_workbook\n\n# Create data\ndf = pd.DataFrame({\n    \"Date\": pd.date_range(\"2026-01-01\", periods=30),\n    \"Revenue\": [1000 + i * 50 for i in range(30)]\n})\n\n# Save with formatting\ndf.to_excel(\"daily_revenue.xlsx\", index=False)\n\n# Add chart\nwb = load_workbook(\"daily_revenue.xlsx\")\nws = wb.active\n\nchart = BarChart()\nchart.add_data(Reference(ws, min_col=2, min_row=1, max_row=31))\nchart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=31))\nchart.title = \"Daily Revenue\"\nws.add_chart(chart, \"D1\")\n\nwb.save(\"daily_revenue.xlsx\")\n\nPDF Report with Charts\nfrom fpdf import FPDF\nimport matplotlib.pyplot as plt\n\n# Create chart image\nplt.figure(figsize=(10, 6))\nplt.bar([\"Jan\", \"Feb\", \"Mar\"], [100, 150, 200])\nplt.title(\"Monthly Sales\")\nplt.savefig(\"chart.png\")\nplt.close()\n\n# Create PDF\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Helvetica\", size=16)\npdf.cell(0, 10, \"Monthly Sales Report\", ln=True, align=\"C\")\npdf.image(\"chart.png\", x=10, y=30, w=190)\npdf.output(\"report.pdf\")"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mattvalenta/pls-office-docs",
    "publisherUrl": "https://clawhub.ai/mattvalenta/pls-office-docs",
    "owner": "mattvalenta",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pls-office-docs",
    "downloadUrl": "https://openagent3.xyz/downloads/pls-office-docs",
    "agentUrl": "https://openagent3.xyz/skills/pls-office-docs/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pls-office-docs/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pls-office-docs/agent.md"
  }
}