Agent skill

Excel Author

by Luciole-Studio in Luciole-Studio/Misaka-Agent

Build auditable financial workbooks headless via openpyxl. An agent skill from Luciole-Studio/Misaka-Agent.

Apache-2.0Auto-check passedDocuments & Office

Install Excel Author

skills CLI
$ npx skills add Luciole-Studio/Misaka-Agent --skill excel-author -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Luciole-Studio/Misaka-Agent excel-author --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Luciole-Studio/Misaka-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/misaka/core/skills/assets/optional/finance/excel-author .claude/skills/excel-author && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
excel-author
GitHub stars
158
Used in
2 other repos
Token cost
~2.2k tokens
SKILL.md length
671 words
Files
2 (incl. scripts)
Skills in repo
77
Repo updated
First seen
Licence
Apache-2.0

At a glance

Build auditable financial workbooks headless via openpyxl. An agent skill from Luciole-Studio/Misaka-Agent.

  • Works in 3 steps: Raw historical inputs (actual revenues,… → Assumption drivers the user is meant to… → Current market data (share price, debt…
  • Tasks that involve Excel spreadsheets
  • SKILL.md covers Output contract, Setup, Core conventions… and Skeleton: typical financial…, plus 7 more sections
  • Runs Python scripts from its folder; calls pip and libreoffice

What it does

Excel Author is an agent skill from Luciole-Studio/Misaka-Agent. Build auditable financial workbooks headless via openpyxl.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/recalc.py`).

It sits in Documents & Office, covering Excel spreadsheets. It works with Microsoft Excel, openpyxl and Python. The repository describes itself as: A multi-agent research system for the humanities and social sciences. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Excel spreadsheets

Example prompts

  • “/excel-author”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Raw historical inputs (actual revenues, reported EBITDA, etc.)
  2. Assumption drivers the user is meant to flex (growth rates, WACC inputs, terminal g)
  3. Current market data (share price, debt balance) — with a cell comment documenting source + date

What it can do on your machine

Read from SKILL.md and the folder at commit 3bcf7a3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • pip
    • libreoffice

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Excel Author loads about 2.2k tokens when it runs. Until then it costs about 18 tokens; SKILL.md has 671 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~18
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Luciole-Studio/Misaka-Agent at commit 3bcf7a3, republished under its Apache-2.0 licence (© Luciole-Studio). 671 words, ~2,196 tokens.

Download SKILL.mdSave it as .claude/skills/excel-author/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
excel-author
description
Build auditable financial workbooks headless via openpyxl.
version
1.0.0
author
Anthropic (adapted by Nous Research)
license
Apache-2.0
platforms
linux, macos, windows

excel-author

Produce an .xlsx file on disk using openpyxl. Follow the banker-grade conventions below so the model is auditable, flexible, and reviewable by someone other than the person who built it.

Adapted from Anthropic's xlsx-author and audit-xls skills in the anthropics/financial-services repo. The MCP / Office-JS / Cowork-specific branches of the originals are dropped — this skill assumes headless Python.

Output contract

  • Write to ./out/<name>.xlsx. Create ./out/ if it does not exist.
  • Return the relative path in your final message so downstream tools can pick it up.
  • One logical model per file. Do not append to an existing workbook unless explicitly asked.

Setup

bash
pip install "openpyxl>=3.0"

Core conventions (non-negotiable)

Blue / black / green cell color
  • Blue (Font(color="0000FF")) — hardcoded input a human entered. Revenue drivers, WACC inputs, terminal growth, market data.
  • Black (default) — formula. Every derived cell is a live Excel formula.
  • Green (Font(color="006100")) — link to another sheet or external file.

A reviewer can then scan the sheet and immediately see what's an assumption vs. what's computed.

Formulas over hardcodes

Every calculation cell MUST be a formula string, never a number computed in Python and pasted as a value.

python
# WRONG — silent bug waiting to happen
ws["D20"] = revenue_prior_year * (1 + growth)

# CORRECT — flexes when the user changes the assumption
ws["D20"] = "=D19*(1+$B$8)"

The only hardcoded numbers permitted:

  1. Raw historical inputs (actual revenues, reported EBITDA, etc.)
  2. Assumption drivers the user is meant to flex (growth rates, WACC inputs, terminal g)
  3. Current market data (share price, debt balance) — with a cell comment documenting source + date

If you catch yourself computing a value in Python and writing the result, stop.

Named ranges for cross-sheet references

Use named ranges for any figure referenced from another sheet, a deck, or a memo.

python
from openpyxl.workbook.defined_name import DefinedName
wb.defined_names["WACC"] = DefinedName("WACC", attr_text="Inputs!$C$8")
# then elsewhere:
calc["D30"] = "=D29/WACC"
Balance checks tab

Include a Checks tab that ties everything and surfaces TRUE/FALSE:

  • Balance sheet balances (assets = liabilities + equity)
  • Cash flow ties to period-over-period cash change on the BS
  • Sum-of-parts ties to consolidated totals
  • No rogue hardcodes inside calc ranges

Example:

python
checks = wb.create_sheet("Checks")
checks["A2"] = "BS balances"
checks["B2"] = "=IS!D20-IS!D21-IS!D22"
checks["C2"] = "=ABS(B2)<0.01"  # TRUE/FALSE
Cell comments on every hardcoded input

Add the comment AS you create the cell, not later.

python
from openpyxl.comments import Comment
ws["C2"] = 1_250_000_000
ws["C2"].font = Font(color="0000FF")
ws["C2"].comment = Comment("Source: 10-K FY2024, p.47, revenue line", "analyst")

Format: Source: [System/Document], [Date], [Reference], [URL if applicable].

Never defer sourcing. Never write TODO: add source.

Skeleton: typical financial model

python
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.comments import Comment
from openpyxl.utils import get_column_letter
from pathlib import Path

BLUE = Font(color="0000FF")
BLACK = Font(color="000000")
GREEN = Font(color="006100")
BOLD = Font(bold=True)
HEADER_FILL = PatternFill("solid", fgColor="1F4E79")
HEADER_FONT = Font(color="FFFFFF", bold=True)

wb = Workbook()

# --- Inputs tab ---
inp = wb.active
inp.title = "Inputs"
inp["A1"] = "MARKET DATA & KEY INPUTS"
inp["A1"].font = HEADER_FONT
inp["A1"].fill = HEADER_FILL
inp.merge_cells("A1:C1")

inp["B3"] = "Revenue FY2024"
inp["C3"] = 1_250_000_000
inp["C3"].font = BLUE
inp["C3"].comment = Comment("Source: 10-K FY2024 p.47", "model")

inp["B4"] = "Growth Rate"
inp["C4"] = 0.12
inp["C4"].font = BLUE

# --- Calc tab ---
calc = wb.create_sheet("DCF")
calc["B2"] = "Projected Revenue"
calc["C2"] = "=Inputs!C3*(1+Inputs!C4)"   # formula, black

# --- Checks tab ---
chk = wb.create_sheet("Checks")
chk["A2"] = "BS balances"
chk["B2"] = "=ABS(BS!D20-BS!D21-BS!D22)<0.01"

Path("./out").mkdir(exist_ok=True)
wb.save("./out/model.xlsx")

Section headers with merged cells

openpyxl quirk: when you merge, set the value on the top-left cell and style the full range separately.

python
ws["A7"] = "CASH FLOW PROJECTION"
ws["A7"].font = HEADER_FONT
ws.merge_cells("A7:H7")
for col in range(1, 9):  # A..H
    ws.cell(row=7, column=col).fill = HEADER_FILL

Sensitivity tables

Build with loops, not hardcoded formulas per cell. Rules:

  • Odd number of rows/cols (5×5 or 7×7) — guarantees a true center cell.
  • Center cell = base case. The middle row/col header must equal the model's actual WACC and terminal g so the center output equals the base-case implied share price. That's the sanity check.
  • Highlight the center cell with medium-blue fill ("BDD7EE") and bold.
  • Populate every cell with a full recalculation formula — never an approximation.
python
# 5x5 WACC (rows) x terminal growth (cols) sensitivity
wacc_axis = [0.08, 0.085, 0.09, 0.095, 0.10]        # center row = base 9.0%
term_axis = [0.02, 0.025, 0.03, 0.035, 0.04]        # center col = base 3.0%

start_row = 40
ws.cell(row=start_row, column=1).value = "Implied Share Price ($)"
ws.cell(row=start_row, column=1).font = BOLD

for j, g in enumerate(term_axis):
    ws.cell(row=start_row+1, column=2+j).value = g
    ws.cell(row=start_row+1, column=2+j).font = BLUE

for i, w in enumerate(wacc_axis):
    r = start_row + 2 + i
    ws.cell(row=r, column=1).value = w
    ws.cell(row=r, column=1).font = BLUE
    for j, g in enumerate(term_axis):
        c = 2 + j
        # Full DCF recalc formula (simplified for illustration).
        # In a real model this references the full projection block.
        ws.cell(row=r, column=c).value = (
            f"=SUMPRODUCT(FCF_range,1/(1+{w})^year_offset) + "
            f"FCF_terminal*(1+{g})/({w}-{g})/(1+{w})^terminal_year"
        )

# Highlight center cell (base case)
center = ws.cell(row=start_row+2+len(wacc_axis)//2,
                 column=2+len(term_axis)//2)
center.fill = PatternFill("solid", fgColor="BDD7EE")
center.font = BOLD
Show full SKILL.md (237 more words)Show less

Recalculating before delivery

openpyxl writes formula strings but does not compute them. Excel recalculates on open, but downstream consumers (auto-check scripts, CI) need computed values.

Run LibreOffice or a dedicated recalc step before delivery:

bash
# LibreOffice headless recalc
libreoffice --headless --calc --convert-to xlsx ./out/model.xlsx --outdir ./out/

Or use a Python recalc helper (see scripts/recalc.py in this skill).

Model layout planning

Before writing any formula:

  1. Define ALL section row positions
  2. Write ALL headers and labels
  3. Write ALL section dividers and blank rows
  4. THEN write formulas using the locked row positions

This prevents the cascading-formula-breakage pattern where inserting a header row after formulas are written shifts every downstream reference.

Verify step-by-step with the user

For large models (DCFs, 3-statement, LBO), stop and show the user intermediate artifacts before continuing. Catching a wrong margin assumption before you've built downstream sensitivity tables saves an hour.

Checkpoint pattern:

  • After Inputs block → show raw inputs, confirm before projecting
  • After Revenue projections → confirm top line + growth
  • After FCF build → confirm the full schedule
  • After WACC → confirm inputs
  • After valuation → confirm the equity bridge
  • THEN build sensitivity tables

When NOT to use this skill

  • Users in a live Excel session with an Office MCP available — drive their live workbook instead.
  • Pure tabular data export with no formulas — csv or pandas.to_excel is simpler.
  • Dashboards / charts with heavy interactivity — use a real BI tool.

Attribution

Conventions (blue/black/green, formulas-over-hardcodes, named ranges, sensitivity rules) adapted from Anthropic's Claude for Financial Services plugin suite, Apache-2.0 licensed. Original: https://github.com/anthropics/financial-services/tree/main/plugins/vertical-plugins/financial-analysis/skills/xlsx-author

© Luciole-Studio, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in misaka/core/skills/assets/optional/finance/excel-author of Luciole-Studio/Misaka-Agent.

  • SKILL.md
  • scripts/recalc.py

Open the folder on GitHubat commit 3bcf7a3

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in Luciole-Studio/Misaka-Agent, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Excel Author next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Excel Author compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Excel Author this skillLuciole-Studio/Misaka-Agent1582 repos~2.2kAutomated safety check: PassApache-2.0
Excel Workbook EditorTokenRhythm/opensquilla7.1k—~1.6kAutomated safety check: PassApache-2.0
Kimi XLSXthvroyal/kimi-skills238—~9.5kAutomated safety check: PassNone
Office XLSXopen-octo/octo-agent125—~1.8kAutomated safety check: NotesMIT
Cc Streaming Export Safetydoccker/cc-use-exp1.1k—~2.2kAutomated safety check: PassCustom licence
XLSXnexus-research-lab/nexus151—~501Automated safety check: PassApache-2.0

Similar skills

  • Excel Workbook Editor

    TokenRhythm/opensquilla

    Inspects, edits in place or creates Microsoft Excel .xlsx workbooks with openpyxl, treating each cell as a typed number, string, datetime or formula value.

    7.1k GitHub stars~1.6k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Kimi XLSX

    thvroyal/kimi-skills

    Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.

    238 GitHub stars~9.5k tokensUpdated 6 mo ago
    Documents & OfficeAuto-check passed
  • Office XLSX

    open-octo/octo-agent

    Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…

    125 GitHub stars~1.8k tokensUpdated today
    Documents & OfficeAuto-check: notes
  • Cc Streaming Export Safety

    doccker/cc-use-exp

    当实现用户驱动的大文件导出或批量序列化(Excel/CSV/JSON/JSONL/PDF,数据量未知或超过 1 万行/10 MB)时触发;普通小文件下载、静态资源下载、非导出 Writer/Report 类不触发。防止 OOM、临时文件残留、同步导出阻塞 HTTP 线程和表格公式注入。

    1.1k GitHub stars~2.2k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • XLSX

    nexus-research-lab/nexus

    只要电子表格文件(.xlsx、.xlsm、旧版 .xls、.csv、.tsv)是任务的主要输入或输出,或者需要 被打开、读取、创建、修改,就使用本 Skill。也适用于公式、格式、图表、数据清洗和表格格式转换。

    151 GitHub stars~501 tokensUpdated today
    Documents & OfficeAuto-check passed
  • Office XLSX

    singula-ai/alego

    Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.

    109 GitHub starsUsed in 1 repo~2.3k tokens
    Documents & OfficeAuto-check passed

More from Luciole-Studio/Misaka-Agent

All 77 skills in this repo
  • Kanban Video Orchestrator

    Luciole-Studio/Misaka-Agent

    Plan and run multi-agent video production pipelines. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check: notes
  • Ast Grep

    Luciole-Studio/Misaka-Agent

    AST-aware structural code search and rewrite via ast-grep. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Drug Discovery

    Luciole-Studio/Misaka-Agent

    Drug discovery: ChEMBL search, drug-likeness, interactions. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Fitness Nutrition

    Luciole-Studio/Misaka-Agent

    Workout planning, macros, and body metrics via wger/USDA. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Hyperframes

    Luciole-Studio/Misaka-Agent

    Render MP4/WebM videos from HTML compositions. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • Osint Investigation

    Luciole-Studio/Misaka-Agent

    Follow the money via public records and sanctions data. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.9k tokens
    Auto-check passed

Questions about Excel Author

What does Excel Author do?

Build auditable financial workbooks headless via openpyxl. An agent skill from Luciole-Studio/Misaka-Agent. Excel Author is an agent skill from Luciole-Studio/Misaka-Agent. Build auditable financial workbooks headless via openpyxl.

When should I use Excel Author?

Excel Author fits situations like: tasks that involve Excel spreadsheets.

How do I install Excel Author in Claude Code?

Run `npx skills add Luciole-Studio/Misaka-Agent --skill excel-author -a claude-code`. Or copy the skill folder (misaka/core/skills/assets/optional/finance/excel-author in Luciole-Studio/Misaka-Agent) into .claude/skills/excel-author in your project. Claude Code loads it when a task matches its description.

How do I install Excel Author in Codex?

Run `npx skills add Luciole-Studio/Misaka-Agent --skill excel-author -a codex`. Or copy the skill folder (misaka/core/skills/assets/optional/finance/excel-author in Luciole-Studio/Misaka-Agent) into .agents/skills/excel-author in your project. Codex loads it when a task matches its description.

Can I use Excel Author in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Luciole-Studio/Misaka-Agent --skill excel-author -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/excel-author, .gemini/skills/excel-author, .github/skills/excel-author and .opencode/skills/excel-author in your project.

What does Excel Author need to run?

Going by SKILL.md and its folder, Excel Author needs Python for the scripts in its folder and the command-line tools its instructions call (pip and libreoffice). Our summary lists: Python 3.

Does Excel Author access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Excel Author safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Excel Author use?

Excel Author is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Excel Author use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Excel Author?

Skills that share tags, products or a category with Excel Author: Excel Workbook Editor (TokenRhythm/opensquilla, 7.1k stars), Kimi XLSX (thvroyal/kimi-skills, 238 stars), Office XLSX (open-octo/octo-agent, 125 stars) and Cc Streaming Export Safety (doccker/cc-use-exp, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Excel Author?

Luciole-Studio (a GitHub organization) maintains it in Luciole-Studio/Misaka-Agent, which has 158 GitHub stars. The repository holds 77 skills in this directory. The repository was last updated on October 8, 2026.

Source: Luciole-Studio/Misaka-Agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.