XLSX Spreadsheet Toolkit
XiaomiMiMo/MiMo-Code
Builds, edits, cleans, recalculates and reads Excel workbooks and CSV files with openpyxl and pandas, plus LibreOffice for recalculation and PDF export.
Expert on modern configuration converter — converts Excel/CSV/XML/YAML into Protobuf-backed JSON/Text/Bin configs via protogen + confgen pipeline.
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills tableau --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tableau .claude/skills/tableau && rm -rf skills-srcUse ~/.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/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .claude/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableauType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills tableau --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tableau .agents/skills/tableau && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .agents/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills tableau --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tableau .cursor/skills/tableau && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .cursor/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/tableau--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills tableau --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tableau .gemini/skills/tableau && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .gemini/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills tableauInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tableau .github/skills/tableau && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .github/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills tableau --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tableau .opencode/skills/tableau && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tableau" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/tableau into .opencode/skills/tableau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tableau", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tableauExpert on modern configuration converter — converts Excel/CSV/XML/YAML into Protobuf-backed JSON/Text/Bin configs via protogen + confgen pipeline.
Tableau is an agent skill from LeoYeAI/openclaw-master-skills. Expert on modern configuration converter — converts Excel/CSV/XML/YAML into Protobuf-backed JSON/Text/Bin configs via protogen + confgen pipeline. Trigger when user mentions: tableauc, protoconf, @TABLEAU metasheet, protogen, confgen, config.yaml for tableau, type syntax (map, list, struct, enum, union, keyed list), field properties (range, refer, unique, optional, patch, fixed, size), well-known types (datetime, duration, fraction, comparator, version), or converting game data / config spreadsheets to structured…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 27 other files, including reference files (for example `_meta.json`, `evals/evals.json` and `evals/trigger_eval.json`).
It sits in Documents & Office, covering Excel spreadsheets, gRPC and Protobuf and CSV and tabular files. It works with Tableau, Microsoft Excel, gRPC and openpyxl. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
goFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tableau loads about 4.8k tokens when it runs, and up to ~48k if it reads all its reference files. Until then it costs about 167 tokens; SKILL.md has 1,573 words of instructions outside code blocks.
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.
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); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,573 words, ~4,772 tokens.
.claude/skills/tableau/SKILL.md (or your agent's skills folder). This skill also uses 23 other files; get the full folder from GitHub.You are an expert in tableau — the modern configuration converter. Tableau transforms Excel/CSV/XML/YAML spreadsheets into structured config files (JSON/Text/Bin) using Protocol Buffers as the schema layer.
When you encounter questions beyond what's documented here, consult these primary sources rather than guessing:
https://github.com/tableauio/tableauio.github.io, docs path content/enhttps://github.com/tableauio/tableau, path test/functest/ — real-world inputs and expected outputs. DO NOT learn Go APIs — learn the test cases instead.Excel / CSV / XML / YAML
|
v protogen (-m proto)
.proto files (Protoconf)
|
v confgen (-m conf)
JSON / .txtpb / .binpb.proto schema files.proto + spreadsheet data -> JSON/Text/Bin config filesBoth configured through config.yaml. Run individually or together via tableauc CLI.
tableauc for Real OutputIMPORTANT: When a user asks "what proto/JSON will this generate?", do NOT write proto or JSON by hand. Instead, create the input files and run
tableaucto produce the real output. Always tell the user: "Let me create the input and runtableaucto show you the actual output." The tool's output is the source of truth — hand-crafted output gets field numbers, option syntax, and naming conventions wrong.
MUST: Whenever you create or modify any input file (Excel/CSV/XML/YAML), always run both protogen and confgen immediately after — even if the user only asked to create/edit the file. This ensures the generated
.protoand config output are always in sync with the input.
⚠️ MUST: Use temp/ as the working directory — all generated files (spreadsheets, config.yaml, python scripts) go here. Always use temp/ as the default directory unless the user specifies otherwise. If temp/ does not exist, create it automatically.
Write the input files — choose one approach:
xlsx skill to create a .xlsx file with proper sheets (@TABLEAU metasheet + data sheets). Excel is the native format and supports multiple sheets in one file.BookName#SheetName.csv + BookName#@TABLEAU.csv files. Use this when the xlsx skill is not available.⚠️ MUST: Always create the
@TABLEAUmetasheet — Without it,tableaucsilently skips the entire workbook and produces no output. For Excel: create the@TABLEAUsheet as the first sheet in the workbook. If it already exists, modify it directly — do NOT recreate it. For CSV: always createBookName#@TABLEAU.csv.
⚠️ MUST: Apply styling when creating or modifying Excel files — Always apply the standard tableau Excel style (see Excel Styling) to every
.xlsxfile you create or modify. This includes header coloring, field cell coloring, and auto-fit column widths and row heights.
⚠️ MUST: Ensure config.yaml exists — Before running any tableauc command:
config.yaml path, use it with -c <path>.config.yaml exists in the working directory.references/config.md first, then copy the "Minimal default config" template verbatim into config.yaml. Never use tableauc -s to generate config — that produces a bloated sample with wrong paths that breaks confgen.Run protogen + confgen (both steps, always):
tableauc -c config.yaml -m proto # Step 1: generate .proto files
tableauc -c config.yaml -m conf # Step 2: generate JSON/conf filesShow the user the actual files produced
tableauc -m proto # protogen only: scan CWD for input files, write .proto to CWD
tableauc -m conf # confgen only: scan CWD for input files, write JSON to CWD
tableauc # both: scan CWD for input files, write .proto + JSON to CWD
tableauc HelloWorld.xlsx # quick convert single file
tableauc -s # dump sample config.yaml
tableauc -c config.yaml # both via config
tableauc -c config.yaml -m proto HelloWorld.xlsx # protogen a specified file via config
tableauc -c config.yaml -m conf HelloWorld.xlsx # confgen a specified file via config
tableauc -c config.yaml -m proto Hello.xlsx World.xlsx # protogen multiple specified files via config
tableauc -c config.yaml -m conf Hello.xlsx World.xlsx # confgen multiple specified files via configtableauctableauc --version firstgo install github.com/tableauio/tableau/cmd/tableauc@latestlocationName: "Asia/Shanghai" # timezone
proto.input.protoFiles: ["common.proto"] # predefined type imports
proto.input.protoPaths: ["."] # proto search paths
conf.output.formats: ["json"] # output: json, txtpb, binpb
conf.output.pretty: true # pretty-print JSONSee references/config.md for the full reference.
| Row | Purpose | Default |
|---|---|---|
| 1 | Namerow — column names (PascalCase) | 1 |
| 2 | Typerow — protobuf type annotations | 2 |
| 3 | Noterow — human-readable comments | 3 |
| 4+ | Datarow — actual data | 4 |
Column names use PascalCase — protogen auto-converts to snake_case for proto fields (e.g., ItemName -> item_name). Configure custom acronyms in config.yaml (acronyms: {K8s: k8s}).
⚠️ MUST: Noterow content rules (in priority order):
- Prompt provides parentheses — When a field is described as
FieldName Type (description, ...), use the text before the first comma verbatim as the noterow. For example:
ID uint32 (赛季ID, 垂直 map key)→ noterow:赛季IDName string (名称)→ noterow:名称Item1ID uint32 (道具1ID, 水平列表)→ noterow:道具1ID- No parentheses provided — Infer a concise, human-readable note from the field name and type. Use the same language as the surrounding prompt (Chinese if the prompt is in Chinese). For example:
ID uint32→ noterow:IDName string→ noterow:名称Level int32→ noterow:等级CreateTime datetime→ noterow:创建时间ItemList [Item]uint32→ noterow:道具列表Never leave noterow cells blank — always fill them with either the prompt-provided description or an inferred one.
Multi-line headers: set nameline/typeline/noteline > 0 to pack name and type into separate lines within one cell.
| Typerow Cell | Meaning |
|---|---|
uint32 / int32 / string / bool | Scalar |
enum<.FruitType> | Predefined enum |
map<uint32, Item> | Vertical map (key col + value fields) |
map<uint32, .Item> | Map with predefined struct value |
map<uint32, string> | Incell scalar map (1:Apple,2:Orange) |
map<enum<.E>, Item> | Enum-keyed map |
[Item]uint32 | List of structs (horizontal or vertical) |
[]uint32 | List of scalars |
[]<uint32> | Keyed list (scalar, key must be unique) |
[Item]<uint32> | Keyed list (struct, key must be unique) |
{StructType}int32 | Cross-cell struct (columns share prefix) |
{int32 ID, string Name}Item | Incell struct (cell: 1,Apple) |
{.StructType} | Incell predefined struct |
{.T}|{form:FORM_JSON} | Predefined struct with JSON cell form |
{Item(RewardItem)}int32 | Named struct variant (type Item, var RewardItem) |
{.Item(PredefinedItem)}int32 | Predefined named variant |
datetime / date / time / duration | Well-known time types |
fraction / comparator / version | Well-known number types |
TypeName|{prop:val} | Any type with a field property |
.TypeName | Reference to external predefined type |
|{...})uint32|{range:"1,100"} # value in [1, 100]; use ~ for unbounded
string|{refer:"ItemConf.Name"} # foreign-key reference
int32|{refer:"A.ID,B.ID"} # multi-refer (comma-separated)
int32|{sequence:1} # values must be 1,2,3...
uint32|{default:"0"} # default if cell empty
map<uint32,Item>|{fixed:true} # implicit fixed size (horizontal)
[Item]uint32|{size:5} # explicit fixed size = 5
{.Item}|{form:FORM_JSON} # cell contains JSON text
{.Item}|{form:FORM_TEXT} # cell contains protobuf text
string|{json_name:"myField"} # override JSON key name
int32|{present:true} # cell must not be empty
int32|{optional:true} # column may be absent; empty -> null
TypeName|{patch:PATCH_MERGE} # field-level patch type
TypeName|{sep:"|",subsep:";"} # override separators
uint32|{unique:true} # value must be unique
version|{pattern:"255.255.255"} # version format pattern
|{optional:true}means the column may be entirely absent. When set, empty cells producenullin JSON (not zero values). Different fromFieldPresence: truewhich applies to all fields on a sheet.
Horizontal lists/maps require digit suffix starting at 1, pattern <VarName><N><FieldName>:
| Item1ID | Item1Name | Item2ID | Item2Name | Item3ID | Item3Name |
| [Item]uint32 | string | uint32 | string | uint32 | string |⚠️ Only the first column of the first element carries the composite type (
[Item]uint32/map<uint32, Item>). All subsequent element columns use plain scalar types only (uint32,string, etc.) — never repeat the[Item]ormap<...>prefix on element 2, 3, ...
⚠️ Every element must have ALL fields present. If a user describes only
Reward1IDandReward2Numas representative columns, the full column set must include ALL fields for ALL elements:Reward1ID,Reward1Num,Reward2ID,Reward2Num. Never generate partial columns.
Column skipping: columns starting with # are ignored (#InternalNote).
Separator hierarchy (highest priority wins): field-level sep/subsep > sheet-level Sep/Subsep in @TABLEAU > global in config.yaml > default (, / :)
Vertical map (most common):
| ID | Name | Type: map<uint32, Item> on ID column
| map<uint32, Item> | string | Generated: map<uint32, Item> item_mapNested vertical map (multi-level map-in-map):
⚠️ Never write
map<uint32, map<int32, Item>>in a single typerow cell — this is invalid. Each map level must be declared on its own key column. Seereferences/types.md→ Nested Vertical Map for the full column layout and rules.
Incell list: []int32 with cell data 1,2,3 -> repeated int32 param_list
Cross-cell struct: {Property}int32 on first column, remaining columns grouped by prefix
Incell struct: {int32 ID, string Name}Property with cell data 1,Apple
Named struct variant: {Item(RewardItem)}int32 and {Item(CostItem)}int32 — same type, different field names
Predefined type: .RewardItem — imported from common.proto
Nested struct: {Reward}int32 containing {Item}int32 -> { "reward": { "id": 1, "item": { "id": 1, "num": 10 } } }
| Type | Cell Format | Proto Backing |
|---|---|---|
datetime | 2023-01-01 12:00:00 | google.protobuf.Timestamp |
date | 2023-01-01 / 20230101 | google.protobuf.Timestamp |
time | 12:30:00 / 12:30 | google.protobuf.Duration |
duration | 72h3m0.5s (Go format) | google.protobuf.Duration |
fraction | 10%, 3/4, 0.01 | tableau.Fraction |
comparator | >=10%, <1/2 | tableau.Comparator |
version | 1.0.3 | tableau.Version |
ns, us, ms, s, m, h10% (per-cent), 10‰ (per-thousand), 10‱ (per-ten-thousand), 3/4, 0.01==, !=, <, <=, >, >= combined with fraction255.255.255; customize with |{pattern:"99.999.99"}Define in sheets via MODE_ENUM_TYPE (single) or MODE_ENUM_TYPE_MULTI (multiple blocks separated by blank rows).
Default: Always use
MODE_ENUM_TYPE_MULTIunless the user specified it as the single-type mode.
See references/excel/enum.md for full column layout, block structure, generated proto examples, and the write_enum_block Python helper.
Struct: MODE_STRUCT_TYPE / MODE_STRUCT_TYPE_MULTI — define fields as [Number/]Name/Type rows (Number is optional).
Union (tagged oneof): MODE_UNION_TYPE / MODE_UNION_TYPE_MULTI
Default: Always use
MODE_UNION_TYPE_MULTI(same for enum/struct) unless the user specified it as the single-type mode.
See references/excel/struct.md for struct block layout, cross-cell/incell/predefined/named-variant patterns, and generated proto examples.
See references/excel/union.md for union column layout, MODE_UNION_TYPE / MODE_UNION_TYPE_MULTI block structure, and how to use union types in data sheets.
See references/metasheet.md → Merger and Scatter sections for full details and examples.
All four formats produce identical output. Choose based on your workflow. All formats accepted by default; to restrict, set proto.input.formats and conf.input.formats in config.yaml (e.g., formats: [xml] for XML-only).
| Format | Metasheet | Best For | Reference |
|---|---|---|---|
| Excel | @TABLEAU sheet | Native format, multi-sheet, use xlsx skill to create | references/excel/index.md |
| CSV | BookName#@TABLEAU.csv | Programmatic generation, version control | references/csv/index.md |
| XML | <!--<@TABLEAU>...</@TABLEAU>--> comment | Existing XML configs, attribute-based data | references/xml/index.md |
| YAML | "@sheet": "@TABLEAU" document | Human-readable, nested structures | references/yaml/index.md |
| Type | Empty cell behavior |
|---|---|
| Scalar | Default proto value: 0, false, "" |
| Struct | Not created if ALL fields empty |
| List/Map entry | Not appended/inserted if empty struct |
| Optional field | null in JSON output |
See references/excel/nesting.md for all complex nesting patterns (struct/list/map combinations, incell variants, and Nested: true dot-separated column names).
E2016 fires when a horizontal list has a gap between filled slots. Diagnose intent first:
| Situation | Cause | Fix |
|---|---|---|
| Forgot to fill a slot | Accidental gap | Fill missing data or shift left |
| Trailing empties trigger error | Hidden chars | Delete-clear cells in Excel |
| Intentionally sparse layout | Design intent | Add |{size:N} or |{fixed:true} |
references/excel/index.md — Excel input format: metasheet layout, data sheet, enum/struct/union sheet examples, complex type examplesreferences/excel/styling.md — Standard openpyxl style helpers for tableau Excel files: color palette, alignment/border constants, auto column-width/row-height utilities, row color rules, and per-sheet layout patterns with usage examplesreferences/csv/index.md — CSV input format: workbook/worksheet naming, metasheet, enum/struct/union sheet examples, complex type examplesreferences/xml/index.md — XML input format: metasheet comment block, attribute vs element patterns, complete examplesreferences/yaml/index.md — YAML input format: three-document structure, @type/@struct/@incell annotations, complete examplesreferences/metasheet.md — All @TABLEAU options with examplesreferences/config.md — Full config.yaml referencereferences/protoconf.md — Protoconf annotation referencereferences/types.md — Deep dive into type syntax© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 23 other files (references) in skills/tableau of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Tableau 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tableau this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.8k | Automated safety check: Pass | MIT | |
| XLSX Spreadsheet ToolkitXiaomiMiMo/MiMo-Code | 14k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Excel Spreadsheet Creation and Editinganthropics/skills | 180k | 4 repos | ~2.1k | Automated safety check: Pass | Proprietary | |
| XLSXmateaix/mateclaw | 1.1k | — | ~1.5k | Automated safety check: Pass | Proprietary | |
| Excel Spreadsheet Builderagentscope-ai/QwenPaw | 35k | — | ~1.8k | Automated safety check: Pass | Proprietary | |
| Create Spreadsheettheexperiencecompany/gaia | 308 | — | ~804 | Automated safety check: Pass | Custom licence |
XiaomiMiMo/MiMo-Code
Builds, edits, cleans, recalculates and reads Excel workbooks and CSV files with openpyxl and pandas, plus LibreOffice for recalculation and PDF export.
anthropics/skills
Creates, edits and analyzes spreadsheets (.xlsx, .xlsm, .csv, .tsv) with openpyxl and pandas, writing live formulas and recalculating to confirm zero formula errors.
mateaix/mateclaw
Use this skill any time a spreadsheet file is the primary input or output.
agentscope-ai/QwenPaw
Creates, edits, cleans and analyzes Excel and CSV files with openpyxl and pandas, recalculating formulas through LibreOffice so files are delivered without formula errors.
theexperiencecompany/gaia
Generate an Excel (.xlsx) workbook or a CSV file — tables, financial models, data exports, formatted reports with charts.
davila7/claude-code-templates
A skill your agent uses when tasks involve creating, editing, analyzing, or formatting spreadsheets (.xlsx, .csv, .tsv) using Python (openpyxl, pandas), especially when formulas, references, and…
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Works with
Categories
Expert on modern configuration converter — converts Excel/CSV/XML/YAML into Protobuf-backed JSON/Text/Bin configs via protogen + confgen pipeline. Tableau is an agent skill from LeoYeAI/openclaw-master-skills. Expert on modern configuration converter — converts Excel/CSV/XML/YAML into Protobuf-backed JSON/Text/Bin configs via protogen + confgen pipeline.
Tableau fits situations like: user mentions: tableauc; @TABLEAU metasheet; config.yaml for tableau; type syntax (map.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a claude-code`. Or copy the skill folder (skills/tableau in LeoYeAI/openclaw-master-skills) into .claude/skills/tableau in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a codex`. Or copy the skill folder (skills/tableau in LeoYeAI/openclaw-master-skills) into .agents/skills/tableau in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill tableau -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tableau, .gemini/skills/tableau, .github/skills/tableau and .opencode/skills/tableau in your project.
Going by SKILL.md and its folder, Tableau needs the command-line tools its instructions call (go). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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. Review the folder before installing.
Tableau is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 43k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Tableau: XLSX Spreadsheet Toolkit (XiaomiMiMo/MiMo-Code, 14k stars), Excel Spreadsheet Creation and Editing (anthropics/skills, 180k stars), XLSX (mateaix/mateclaw, 1.1k stars) and Excel Spreadsheet Builder (agentscope-ai/QwenPaw, 35k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,158 GitHub stars. The repository holds 1,215 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.