Skip to content
Automation
Skill

/xlsx-financial-report

A native .xlsx styled as a financial, KPI, or dashboard report: "Excel report", "financial report", "KPI dashboard", "monthly report". Opens cleanly in Excel / Google Sheets / Numbers.

From plugin
xagent
2969 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.

A native .xlsx styled as a financial, KPI, or dashboard report: "Excel report", "financial report", "KPI dashboard", "monthly report". Opens cleanly in Excel / Google Sheets / Numbers.

SKILL.md

xlsx-financial-report.SKILL.md
name: xlsx-financial-report
description: |
  A native .xlsx styled as a financial, KPI, or dashboard report:
  "Excel report", "financial report", "KPI dashboard", "monthly report".
  Opens cleanly in Excel / Google Sheets / Numbers.
when_to_use: |
  A polished xlsx meant to be opened and skimmed, not a raw data dump. Use the
  regular excel tool instead for ad-hoc exploration or 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 but real .xlsx (drop the chart

block and save without it) than to fabricate a success report. If the chart code keeps failing, ship the workbook without the chart and tell the user the chart was omitted.

🎨 Palettes — pick ONE

Each: `ink` (text + borders + chart series), `paper` (workbook bg / cells), `paper-tint` (alternating row band), `accent` (single highlight color for KPI values / chart series 2 / positive deltas).

  • **Bloomberg Mono** (def
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.