Skip to content
Automation
Skill

/xlsx-financial-report

Generate a native Excel (.xlsx) file styled as a clean financial / KPI / dashboard report. Use when the user asks for an "Excel report", "financial report", "KPI dashboard", "monthly report", ".xlsx", or similar tabular deliverable where the output must look professional (not

From plugin
xagent
2788 skills
Install
$ npx -y skills add xorbitsai/xagent --skill xlsx-financial-report --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/xlsx-financial-report

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generate a native Excel (.xlsx) file styled as a clean financial / KPI / dashboard report. Use when the user asks for an "Excel report", "financial report", "KPI dashboard", "monthly report", ".xlsx", or similar tabular deliverable where the output must look professional (not

SKILL.md

xlsx-financial-report.SKILL.md
name: xlsx-financial-report
description: |
  Generate a native Excel (.xlsx) file styled as a clean financial /
  KPI / dashboard report. Use when the user asks for an "Excel report",
  "financial report", "KPI dashboard", "monthly report", ".xlsx", or
  similar tabular deliverable where the output must look professional
  (not just raw data). Output is a single .xlsx file produced via
  `openpyxl` through the `execute_python_code` tool. Output opens cleanly
  in Excel / Google Sheets / Numbers.
  Do NOT use this skill for ad-hoc data exploration or raw CSV dumps —
  use the regular `excel` tool for those.
when_to_use: |
  When the user wants a polished financial / KPI / dashboard Excel deliverable
  (xlsx) where the file is meant to be opened and skimmed — not raw data dumps.
  Use the regular `excel` tool instead for ad-hoc exploration / CSV-style output.
tags:
  - xlsx
  - excel
  - financial
  - report
  - dashboard

Editorial Financial Report (.xlsx)

You will generate one `.xlsx` file via openpyxl by writing a Python program and running it through the `execute_python_code` tool. Save to the workspace, then report the path + a 1-line content summary.

📦 Required runtime packages

The sandboxed `execute_python_code` ships with `pandas`, `numpy`, `matplotlib`, and **`openpyxl>=3.1.0`** preinstalled — no extra installation step is needed. Just `import openpyxl` at the top of your script and proceed.

> **Note:** `execute_python_code` accepts only `code` and > `capture_output` arguments; there is no `packages` parameter. > All required libraries are already available in the sandbox image.

💾 How to save the file

`execute_python_code` already runs with the task's output directory as the current working directory. Save the workbook with a **plain filename** (no path), e.g.:

wb.save("xagent_metrics_dashboard.xlsx")   # ✅ correct

Do NOT use:

  • `wb.save("/workspace/foo.xlsx")` — `/workspace` does not exist on this host
  • `wb.save("output/foo.xlsx")` — there is no nested `output/` subdir
  • BytesIO + base64 round-trips — just save to disk directly.

Verify with `os.path.getsize("xagent_metrics_dashboard.xlsx")` before declaring success. A real openpyxl-generated xlsx is **always >5 KB** — if your saved file is under 1 KB it's broken or empty.

🔗 Make it clickable in chat — REQUIRED

The Python executor returns a `markdown_link` field in its response for every workspace file it generated (or a `file_refs[]` array with one entry per file). **Read the tool's response** and use the returned `markdown_link` string verbatim. In your final answer, the **first line MUST be that chip link itself** — bare markdown, NOT inside backticks, NOT presented as "file_id: UUID":

✅ **CORRECT** (renders as clickable chip — chat UI looks for this exact pattern):

[xagent_metrics_dashboard.xlsx](file:20fae785-3823-4906-b385-d0e8a7807dc8)

The UUID comes from the executor response. Do not fabricate one.

❌ **WRONG — common failure that renders as plain text**:

已生成报表:

  • 文件名: `xagent_metrics_dashboard.xlsx`
  • file_id: `20fae785-3823-4906-b385-d0e8a7807dc8`

❌ **ALSO WRONG — chip link inside a code fence**: ` ```[name](file:UUID)``` ` suppresses markdown so the link won't render as a chip.

❌ **ALSO WRONG — calling `get_file_info(...)` to "fetch" the file_id**. Its `FileInfo` return shape does not include `file_id`; the chip reference is already on the executor result.

Plain-text mention of the filename is not clickable — the user must navigate to File Management to find it. Always lead with the bare `[name](file:UUID)` line, then describe the contents.

⚠️ Hard rules — NO exceptions

0. **MATCH THE USER'S LANGUAGE.** If the prompt is Chinese (中文), ALL workbook text (title, subtitle, section banners, KPI labels, table headers, deltas) must be in Chinese. Translate template phrases like `SUMMARY` → `汇总`, `DETAIL` → `明细`, `As of YYYY-MM-DD` → `截至 YYYY-MM-DD`. Numbers and date formats stay locale-neutral.

1. **One accent color only.** Pick one of the 5 palettes below; use only its **4 hex values** (`ink`, `paper`, `paper_tint`, `accent`). `paper_tint` is the alternating-row band shade — without it you can only do flat one-color rows. No other colors anywhere. In code, define a ``palette = {"ink": "...", "paper": "...", "paper_tint": "...", "accent": "..."}`` dict ONCE at the top of the script and reference `palette["ink"]` / `palette["accent"]` / `palette["paper_tint"]` / `palette["paper"]` everywhere — do not copy literal hex values into individual styling calls. 2. **Two fonts only.** Headers / titles = `Cambria` (serif, Office native). Body / data = `Calibri` (sans, Office default). 3. **Forbidden:**

  • 3-D charts, donut/pie charts with > 5 slices, exploded pies
  • rainbow chart palettes (color charts only with `ink` + `accent`)
  • chart shadows, glow, bevel, gradient fills
  • thick borders (use `thin` only, sparingly)
  • merged-cell abuse (merge only for section banners across columns)
  • emoji as decoration
  • Comic Sans, Arial Black, MS Sans Serif
  • rainbow conditional formatting (only monochrome data bars / 2-stop

min→max scale in `ink` shade) 4. **Real data only.** No fabricated numbers. If the user didn't provide data, ask first — don't invent. 5. **Always include**: title row, frozen header pane, alternating row bands using `paper-tint`, summary KPI block at top. 6. **Failure honesty — NEVER fake the deliverable.**

  • If `execute_python_code` raises after multiple retries, STOP and report

the actual error to the user. Do not write a stub file like `write_file("report.xlsx", "placeholder")` to make the chip appear.

  • The final answer must reflect what was actually written. Do not

describe KPI values, deltas, or sections that aren't in the saved `.xlsx`. If the chart didn't render, say so — don't claim it did.

  • It is better to deliver a chart-less bu
Read more
Ships withxagent

Start with a personal agent. Scale into an AI workforce. Xagent helps individuals complete real tasks, teams publish reusable agents, and enterprises run agent systems with their own tools, models, knowledge, and infrastructure — without brittle workflows.

Get the whole plugin

Other skills on xagent.