minimax-xlsx について
minimax-xlsxは、XLSXファイルの読み取り、作成、編集、修復、検証を行うスキルです。作成や編集ではワークブックのXMLを直接扱い、既存内容の保持と数式の確認を重視します。
主な機能
- 01ワークブックデータの読み取りと分析
- 02XMLテンプレートからXLSXを作成
- 03既存ワークブックXMLの直接編集
- 04数式の修復と検証
- 05数式を保った行や列の挿入
活用シーン
- 01既存表データの集計と分析
- 02テンプレートから数式付き表を作成
- 03既存セルの変更や行・列の追加
- 04ワークブック内の数式確認と修復
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ minimax-ai/ skills --skill minimax-xlsxインストール後、Claude Code で/minimax-xlsxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/create.mdedit.mdfix.mdformat.mdooxml-cheatsheet.mdread-analyze.mdvalidate.mdscripts/formula_check.pylibreoffice_recalc.pyshared_strings_builder.pystyle_audit.pyxlsx_add_column.pyxlsx_insert_row.pyxlsx_pack.pyxlsx_reader.pyxlsx_shift_rows.pyxlsx_unpack.pytemplates/minimal_xlsx/[Content_Types].xmltemplates/minimal_xlsx/_rels/.relstemplates/minimal_xlsx/xl/sharedStrings.xmlstyles.xmlworkbook.xmltemplates/minimal_xlsx/xl/_rels/workbook.xml.relstemplates/minimal_xlsx/xl/worksheets/sheet1.xml詳細
MiniMax XLSX スキル
リクエストに直接対応してください。サブエージェントを起動してはいけません。ユーザーが要求した出力ファイルは必ず作成してください。
タスクの振り分け
| タスク | 方法 | ガイド |
|---|---|---|
| READ — 既存データを分析する | xlsx_reader.py + pandas | references/read-analyze.md |
| CREATE — 新しい xlsx を一から作成する | XML テンプレート | references/create.md + references/format.md |
| EDIT — 既存の xlsx を変更する | XML を展開→編集→再パック | references/edit.md(スタイル設定が必要な場合は format.md も参照) |
| FIX — 既存の xlsx の壊れた数式を修復する | XML を展開→<f> ノードを修正→再パック | references/fix.md |
| VALIDATE — 数式をチェックする | formula_check.py | references/validate.md |
READ — データを分析する(最初に references/read-analyze.md を読む)
まず xlsx_reader.py で構造を確認し、次に pandas でカスタム分析を行います。ソースファイルは決して変更しないでください。
書式設定ルール:ユーザーが小数点以下の桁数(例:「小数点以下2桁」)を指定した場合は、すべての数値にその書式を適用してください。すべての数値に f'{v:.2f}' を使用します。12875.00 が必要な場合に 12875 と出力してはいけません。
集計ルール:合計・平均・件数は、必ず DataFrame の列から直接計算してください(例:df['Revenue'].sum())。集計前に列の値を再計算してはいけません。
CREATE — XML テンプレート(references/create.md + references/format.md を読む)
templates/minimal_xlsx/ をコピー → XML を直接編集 → xlsx_pack.py でパックします。派生値はすべて Excel の数式(<f>SUM(B2:B9)</f>)にしなければなりません。数値をハードコードしてはいけません。format.md に従ってフォントの色を適用してください。
EDIT — XML を直接編集する(最初に references/edit.md を読む)
重要 — EDIT の整合性ルール:
- 編集タスクでは、決して新しい
Workbook()を作成しないでください。 必ず元のファイルを読み込んでください。 - 出力には入力と同じシート(同じ名前、同じデータ)が含まれていなければなりません。
- タスクで指定されたセルだけを変更してください。それ以外はすべて変更せずに残してください。
- output.xlsx の保存後に検証してください:
xlsx_reader.pyまたはpandasで開き、元のシート名と元データのサンプルが含まれていることを確認します。検証に失敗した場合は、誤ったファイルを書き込んでいます。納品前に修正してください。
既存ファイルに openpyxl のラウンドトリップを使用しないでください(VBA、ピボット、スパークラインが破損します)。代わりに、展開 → ヘルパースクリプトを使用 → 再パックしてください。
「セルに入力する」/「既存のセルに数式を追加する」=EDIT タスクです。 入力ファイルがすでに存在し、特定のセルへの入力、更新、または数式の追加を指示された場合は、必ず XML 編集の方法を使用してください。新しい Workbook() を作成してはいけません。例 — 別シートを参照する SUM 数式を B3 に入力する:
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# Find the target sheet's XML via xl/workbook.xml → xl/_rels/workbook.xml.rels
# Then use the Edit tool to add <f> inside the target <c> element:
# <c r="B3"><f>SUM('Sales Data'!D2:D13)</f><v></v></c>
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
列を追加する(数式、numfmt、スタイルは隣接する列から自動コピー):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
python3 SKILL_DIR/scripts/xlsx_add_column.py /tmp/xlsx_work/ --col G \
--sheet "Sheet1" --header "% of Total" \
--formula '=F{row}/$F$10' --formula-rows 2:9 \
--total-row 10 --total-formula '=SUM(G2:G9)' --numfmt '0.0%' \
--border-row 10 --border-style medium
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
--border-row フラグは、新しい列だけでなく、その行のすべてのセルに上罫線を適用します。タスクで合計行に会計形式の罫線が必要な場合に使用してください。
行を挿入する(既存の行をシフトし、SUM 数式を更新して、循環参照を修正する):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# IMPORTANT: Find the correct --at row by searching for the label text
# in the worksheet XML, NOT by using the row number from the prompt.
# The prompt may say "row 5 (Office Rent)" but Office Rent might actually
# be at row 4. Always locate the row by its text label first.
python3 SKILL_DIR/scripts/xlsx_insert_row.py /tmp/xlsx_work/ --at 5 \
--sheet "Budget FY2025" --text A=Utilities \
--values B=3000 C=3000 D=3500 E=3500 \
--formula 'F=SUM(B{row}:E{row})' --copy-style-from 4
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
行の検索ルール:タスクで「行 N(ラベル)の後」と指定された場合は、ワークシート XML(grep -n "Label" /tmp/xlsx_work/xl/worksheets/sheet*.xml または sharedStrings.xml)で「Label」を検索して、必ず行を特定してください。実際の行番号 + 1 を --at に使用します。xlsx_shift_rows.py を別途呼び出してはいけません。xlsx_insert_row.py が内部で呼び出します。
行全体に罫線を適用する(例:合計行の会計用罫線):
ヘルパースクリプトの実行後、追加したセルだけではなく、対象行のすべてのセルに罫線を適用してください。xl/styles.xml に、目的のスタイルを設定した新しい <border> を追加します。次に、各セルの既存の <xf> を複製し、新しい borderId を設定した新しい <xf> を <cellXfs> に追加します。s 属性を使って、新しいスタイルインデックスをその行のすべての <c> に適用してください。
<border>
<left/><right/><top style="medium"/><bottom/><diagonal/>
</border>
重要なルール:タスクで「行 N に罫線を追加」と指定された場合は、新しく追加したセルだけではなく、A 列から最終列までのすべてのセルを対象にしてください。
XML を手動編集する(ヘルパースクリプトで対応できない場合):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# ... edit XML with the Edit tool ...
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
FIX — 壊れた数式を修復する(先に references/fix.md を読んでください)
これは編集タスクです。展開 → 壊れた <f> ノードを修復 → パックしてください。元のすべてのシートとデータを保持してください。
VALIDATE — 数式をチェックする(先に references/validate.md を読んでください)
静的検証には formula_check.py を実行してください。利用可能な場合は、動的再計算に libreoffice_recalc.py を使用してください。
財務カラー標準
| セルの役割 | フォントの色 | HEX コード |
|---|---|---|
| ハードコードされた入力値/前提 | 青 | 0000FF |
| 数式/計算結果 | 黒 | 000000 |
| シート間参照の数式 | 緑 | 00B050 |
主なルール
- 数式を優先:計算されるすべてのセルでは、ハードコードされた数値ではなく、必ず Excel の数式を使用してください
- CREATE → XML テンプレート:最小限のテンプレートをコピーし、XML を直接編集して、
xlsx_pack.pyでパックしてください - EDIT → XML:openpyxl での再保存は絶対に行わないでください。展開/編集/パックのスクリプトを使用してください
- 必ず出力ファイルを生成してください — これが最優先事項です
- 納品前に検証:
formula_check.pyの終了コードが 0 であれば安全です
ユーティリティスクリプト
python3 SKILL_DIR/scripts/xlsx_reader.py input.xlsx # structure discovery
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --json # formula validation
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --report # standardized report
python3 SKILL_DIR/scripts/xlsx_unpack.py in.xlsx /tmp/work/ # unpack for XML editing
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/work/ out.xlsx # repack after editing
python3 SKILL_DIR/scripts/xlsx_shift_rows.py /tmp/work/ insert 5 1 # shift rows for insertion
python3 SKILL_DIR/scripts/xlsx_add_column.py /tmp/work/ --col G ... # add column with formulas
python3 SKILL_DIR/scripts/xlsx_insert_row.py /tmp/work/ --at 6 ... # insert row with data