/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
$ npx -y skills add xorbitsai/xagent --skill xlsx-financial-report --agent claude-codeHow 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.mdname: 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") # ✅ correctDo 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
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") # ✅ correctDo 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
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.
Repo: xorbitsai/xagent
Other skills on xagent.
- /agent-builder
Expert AI Agent Builder skill. Helps users dynamically create, configure, and build custom AI agents with specific capabilities, knowledge bases, and tools.
Open skill - /evidence-based-rag
Evidence-first retrieval-augmented reasoning skill for decision-critical scenarios. Retrieves information from a specified knowledge base, extracts verifiable evidence, detects conflicting claims, and evaluates answer sufficiency with explicit confidence and risk signals.
Open skill - /html-deck-editorial
Generate a single-file HTML presentation deck with magazine-grade editorial styling. Use only when the user explicitly asks for an "html deck", "editorial slides", "magazine style presentation", "beautiful slides", "美观 PPT", or "网页版幻灯片" — i.e. a slide-style visual deliverable
Open skill - /pdf-report-editorial
Generate an editorial-styled PDF report (whitepaper, research brief, executive memo, case study) by first emitting a self-contained HTML document and then rendering it to PDF via the browser. Use when the user asks for a "PDF report", "whitepaper", "executive brief", "research
Open skill - /pptx-editorial
Generate a native PowerPoint (.pptx) file with magazine-grade editorial styling — pitch decks, investor presentations (路演 PPT), board reviews, executive memos, conference talks, product launches. Output is a single .pptx file generated via pptxgenjs through the JavaScript
Open skill - /presentation-generator
Generate and edit PowerPoint presentations (.pptx). Use for: creating slide decks, pitch decks, or presentations from scratch; reading, parsing, or extracting content from .pptx files; editing, modifying, or updating existing presentations; combining or splitting slide files;
Open skill

