Data Table Manager
n8n-io/n8n
Load before calling data-tables or parse-file. An agent skill from n8n-io/n8n.
Work in Herald Sheets, the spreadsheet in Herald OS - read workbooks, write values and formulas (a formula from a description, explaining one, filling it down), fill a column from examples, clean…
$ npx skills add iamlukethedev/Herald-OS --skill herald-sheets -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iamlukethedev/Herald-OS herald-sheets --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/iamlukethedev/Herald-OS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .claude/skills/herald-sheets && 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 "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .claude/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheetsType 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 iamlukethedev/Herald-OS --skill herald-sheets -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iamlukethedev/Herald-OS herald-sheets --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iamlukethedev/Herald-OS.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .agents/skills/herald-sheets && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .agents/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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 iamlukethedev/Herald-OS --skill herald-sheets -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iamlukethedev/Herald-OS herald-sheets --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iamlukethedev/Herald-OS.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .cursor/skills/herald-sheets && 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 "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .cursor/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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/iamlukethedev/Herald-OS.git --path plugins/herald-os-bridge/skills/herald-sheets--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 iamlukethedev/Herald-OS --skill herald-sheets -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iamlukethedev/Herald-OS herald-sheets --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iamlukethedev/Herald-OS.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .gemini/skills/herald-sheets && 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 "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .gemini/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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 iamlukethedev/Herald-OS herald-sheetsInstalls 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 iamlukethedev/Herald-OS --skill herald-sheets -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/iamlukethedev/Herald-OS.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .github/skills/herald-sheets && 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 "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .github/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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 iamlukethedev/Herald-OS --skill herald-sheets -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install iamlukethedev/Herald-OS herald-sheets --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iamlukethedev/Herald-OS.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-sheets .opencode/skills/herald-sheets && 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 "herald-sheets" agent skill from https://github.com/iamlukethedev/Herald-OS/tree/main/plugins/herald-os-bridge/skills/herald-sheets into .opencode/skills/herald-sheets/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "herald-sheets", 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.
herald-sheetsWork in Herald Sheets, the spreadsheet in Herald OS - read workbooks, write values and formulas (a formula from a description, explaining one, filling it down), fill a column from examples, clean…
Herald Sheets is an agent skill from iamlukethedev/Herald-OS. Work in Herald Sheets, the spreadsheet in Herald OS - read workbooks, write values and formulas (a formula from a description, explaining one, filling it down), fill a column from examples, clean data (duplicates, spaces, numbers and dates kept as text, splitting a column, letter case, filling down), make and change charts, summarize a table as a pivot table does, name ranges, set dropdown lists and other validation, comment on cells and leave notes, say what stands out, build a workbook such as a trip budget…
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Excel spreadsheets and CSV and tabular files. It works with Microsoft Excel. The repository describes itself as: An agent-native operating system, with Hermes Agent as the interface. Independent project, not affiliated with Nous Research. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1b35085. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Herald Sheets loads about 4.6k tokens when it runs. Until then it costs about 175 tokens; SKILL.md has 2,546 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 iamlukethedev/Herald-OS at commit 1b35085, republished under its MIT licence (© iamlukethedev). 2,546 words, ~4,577 tokens.
.claude/skills/herald-sheets/SKILL.md (or your agent's skills folder).Herald Sheets is the spreadsheet built into Herald OS. It opens and saves Excel workbooks (.xlsx)
and CSV files, and the person watches every change land in the Sheets window. Use the sheets
tool whenever they want a spreadsheet read, built or changed: "total this column", "what does
this formula do", "remove the duplicates", "make me a budget for the Lisbon trip", "what stands
out in these sales", "sort by date", "save it as a CSV".
sheets action=list shows the workbooks open in Herald Sheets: name,
path, unsaved edits, the one in front (active) and the range selected in each.
sheets action=list_all adds what is open in Herald Docs and Slides, and os_ui action=state
carries the same list as office. "This sheet" is the one in front, and "these cells" are
its selection (range=selection). Name a workbook by its file
(workbook="~/Documents/Budget.xlsx") or by its tab (workbook="Budget.xlsx"); left out, a
call works on the one in front.sheets action=read gives the sheets (size, hidden, frozen panes) and, without
range, the cells that hold something on the sheet in front: values, formulas where there
are any, and text (what the cells show: formatted numbers and dates) where it differs. A big
sheet comes back from its top, as many rows as fit in 10,000 cells; read the rest by range
(range="A200:F400"). From the read, learn the headers (usually row 1), where the data starts
and ends, which columns hold numbers, dates or text, and which formulas are already there.
sheets action=find text="Lisbon" lists the cells where something is.sheets action=write range="A1" values=[["Item", "Cost"], ["Rent", 1200]] writes rows from that cell (at most 10,000 cells a call); a whole range takes
exactly its size, and one value (values=[["0"]]) fills every cell of it.= is a formula: English function names, commas between arguments
(=SUMIFS($D$2:$D$90, $C$2:$C$90, "Food")), $ for references that must not move.1200, 0.15, -40), never "1,200" or "$1,200"; show
them as money or percentages with a number format. Text that only looks like a number (an ID,
a phone number, a postcode with a leading zero) stays text, and a leading ' keeps any value
as text.=DATE(2026, 3, 14), or write the dates as
text and turn them into dates with convert_to_dates, which gives them a date format.sheets action=undo, with steps=3 for several); comment threads are the one thing outside
it. Land a whole change in one call: several writes, formats, fills, charts and cleanings go in
one sheets action=edit (below).range="E2:E6") and look at what it shows. An error in
a cell (#NAME? an unknown function or a typo, #REF! a reference that no longer exists,
#DIV/0! a division by an empty cell, #VALUE! text where a number belongs) means fix it
before you say it is done.An open workbook changes in its window. A file that is not open is read, changed and written
straight back to disk: the person is asked first every time, Herald backs the original up the
first time it writes over it, and it refuses when the file holds something it cannot keep (see
the end). Then open it (sheets action=open path="~/Documents/Budget.xlsx"; the answer lists the
sheets and anything Herald shows differently) and work in the window.
"Total the amounts for each category", "add a 10% tip", "how many days until each deadline":
$ what must stay put when it is filled.fill: the formula goes in the first cell and its references move for
each row, the way dragging the fill handle does.sheets action=read
sheets action=edit edits=[{"op": "write", "range": "E1", "values": [["With tip"]]}, {"op": "fill", "range": "E2:E31", "formula": "=D2*1.1"}]
sheets action=read range="E1:E6"Useful functions: SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, COUNTIFS, SUMIFS,
AVERAGEIFS, IF, IFS, IFERROR, AND, OR, XLOOKUP (or INDEX with MATCH), ROUND,
TEXT, LEFT, RIGHT, MID, LEN, TRIM, PROPER, TEXTJOIN, TEXTSPLIT, DATE, TODAY,
YEAR, MONTH, EOMONTH, DATEDIF, NETWORKDAYS, UNIQUE, FILTER, SORT and SUMPRODUCT.
Prefer one clear formula to a clever one.
sheets action=read range="F2" gives the formula and its result. Read the cells it refers to as
well, then explain it step by step in plain words with the real values ("it looks up the price of
the item in B2 in the Prices sheet, multiplies it by the quantity in C2, and gives 0 instead of
an error when the item is missing"). Change nothing unless the person asks for a fix.
"Fill in the rest like the first three": read the examples and the columns they come from, work
out the rule, and check it against every example before you write anything. When a formula can
compute it (first names out of "Rivera, Ana", a code from two columns, a price with tax), write
the formula in the first empty cell and fill it down, so the person can see and reuse it. When
it cannot (a category chosen by meaning), write all the values in one write. Say the rule you
followed.
The data tools each do one job as one step, keep formulas as they are, and take a table's cells or one cell inside it (for the whole table); the answer says what changed and what could not be read:
remove_duplicates range="A1:F400": rows that repeat an earlier one go, compared in every
column or by="A,C" (letters or headers), text in any case; the rows below move up with their
formulas. Spaces count, so trim first when rows differ only by them. Before a big removal run
it with preview=true, which counts the rows and changes nothing, and say how many go.trim_text: spaces at the ends of cells, doubled spaces inside, characters that print nothing.change_case case=title (upper, lower, title or sentence).convert_to_numbers: numbers kept as text ("1,200", "$5", "(300)", "12%") become numbers,
with a format that shows them as before.convert_to_dates: dates kept as text become real dates in dateFormat (yyyy-mm-dd);
whether the day or the month comes first is read from the data, or say order=dmy, mdy or
ymd for dates like 03/04/2026.split_text range="A2:A40" delimiter=comma (or semicolon, space, tab, pipe or any text):
one column split into the columns to its right, or from destination; it will not write over
data unless overwrite=true, and header=true leaves the header as it is.fill_down: each empty cell takes the value above it, for a report that writes a group's
label once.highlight_duplicates: repeated values turn light red, in a rule that follows the data
(clear=true takes it off).sort_by keys=[{"column": "Region"}, {"column": "Amount", "ascending": false}]: sorted by
several columns in turn, the header row on top.clean does the same jobs in one action (clean=dedupe, trim, numbers, dates, split or
case, with header=true when row 1 holds names), as Ask Hermes' Clean data menu asks for. Read
first to pick the range and to see whether row 1 is a header, make every cleaning in one edit
({"op": "convertToDates", "range": "C2:C400", "order": "dmy"}, or {"op": "clean", "range": "C2:C400", "action": "dates"}, where the clean op's own word is action), and read back to
check. replace takes care of single values (find="N/A" replacement="").
sheets action=recommend_charts range="A1:C13" says which kinds suit the data, the best
first, and why. Pick a kind that fits: a line for a trend over time, columns to compare a few
categories, bars for long labels, a pie or doughnut for the parts of one whole (a handful of
slices), scatter for two measures against each other, combo for two measures on different
scales.sheets action=insert_chart range="A1:C13" kind=line title="Sales by month". The first row names the series and the first column holds the categories, as in
Excel; the chart goes beside the data unless at="H2" (or at="H2:N18" to cover those
cells), 480 by 288 pixels unless width and height say. Settings come in the same call:
legend, labels (value, percent or category), stacking, axes ({"y": {"min": 0, "format": "$#,##0"}}), palette, hole for a doughnut, and series for series the block
does not lay out.list_charts lists the charts,
describe_chart chart=<id> gives every setting, update_chart chart=<id> kind=column legend=none changes only what it names, move_chart chart=<id> at="H20" width=600 moves and
sizes it, and remove_chart chart=<id> takes it away (the data stays) and asks the person
first."Total sales by region and quarter" is a summary, as a pivot table makes: sheets action=summarize range="A1" rowFields=["Region"] columnFields=["Quarter"] valueFields=[{"field": "Amount", "fn": "sum"}] builds it on a new sheet, with grand totals (or
destination="H2", a sheet's name, or 'Report'!B2). fn is sum, count, average, min or max;
filters=[{"field": "Status", "values": ["Paid"]}] counts only some rows, and preview=true
shows its shape first.
Its numbers are live formulas (SUMIFS, COUNTIFS and the like) over the table's whole columns, so
they follow the data as it changes. Its labels do not: after rows come in with a new region, or
the table grows, refresh_summary rewrites it with the labels the data has now. A summary that
inserted or deleted rows or columns have moved is not refreshed in place: summarize again.
list_summaries says where each one is and what it reads.
create_name name=TaxRate refersTo="=0.1" or create_name name=Sales refersTo="Data!B2:B90"
(or refersTo=selection) names a constant or cells, so formulas read =SUM(Sales)*TaxRate;
scope gives a name to one sheet's formulas only. list_names lists them, update_name name=Sales newName=Revenue (or refersTo, comment) changes one, go_to_name name=Sales
selects its cells for the person, and delete_name removes one: formulas that use it show
#NAME?, so find them first.
set_validation range="D2:D90" rule={"type": "list", "items": ["Paid", "Due", "Overdue"]} gives
the cells a dropdown list; "source": "Lists!A2:A9" takes the items from cells instead (for long
lists, or items with commas). Other rules: {"type": "whole", "operator": "between", "min": 1, "max": 10}, decimal, date (yyyy-mm-dd, or a formula like =TODAY()), textLength, or
{"type": "custom", "formula": "=C2>=B2"}. input={"title": "Status", "message": "Pick one"}
shows a message when a cell is selected, and alert={"style": "stop", "message": "Pick from the list"} is what follows a value the rule does not allow (warning lets the person keep it,
none shows nothing). It replaces what the cells took before; get_validation reads it back, and
clear_validation takes it off and asks first.
A comment starts a thread the person can answer; a note is a few words left on a cell.
add_comment cell="B4" text="Is this the March figure?" starts one (the answer gives its id);
reply_to_comment cell="B4" text="...", resolve_comment cell="B4" (resolved=false opens it
again) and delete_comment (a thread by its cell, or one reply by commentId) work on threads,
and list_comments shows them with their replies, authors and ids. What you write is signed
Hermes, so the person sees who asked. A cell holds a comment or a note, not both. Comment threads
stay out of the undo history: say what you added, and delete it when the person wants it gone.
set_note cell="C2" text="Estimate", list_notes and remove_note work like the rest, each one
step to undo.
"What stands out", "anything odd here", "how did we do": read the whole used range (in parts when it is big) and look at totals, averages, the biggest and smallest values, trends over time, outliers, empty or repeated rows, entries spelled two ways, and cells with errors. Answer in a few short points with the numbers and the cells they are in ("March is the only month below target: $8,200 in D4"). Change nothing; offer to highlight, chart, summarize, sort or fix what you found.
Plan the layout first: headers in row 1, one row per item, numbers in their own columns, a total
row at the bottom with formulas. Then make it in two calls: new with the values and formulas,
and one edit for the formats and the frozen header.
sheets action=new name="Lisbon trip budget" values=[["Item", "Planned", "Actual", "Difference"], ["Flights", 640, 612, "=B2-C2"], ["Hotel (4 nights)", 520, 0, "=B3-C3"], ["Food", 300, 0, "=B4-C4"], ["Transport", 80, 0, "=B5-C5"], ["Total", "=SUM(B2:B5)", "=SUM(C2:C5)", "=B6-C6"]]
sheets action=edit edits=[{"op": "format", "range": "A1:D1", "format": {"bold": true, "background": "#e8eefc"}}, {"op": "format", "range": "B2:D6", "format": {"numberFormat": "€#,##0.00"}}, {"op": "format", "range": "A6:D6", "format": {"bold": true, "border": {"edges": "top", "style": "thin"}}}, {"op": "freeze", "rows": 1}]Templates give a workbook its usual shape: budget, expenses, todo, schedule and
invoice (sheets action=new template=budget name="2026 budget"). path saves the new
workbook at once (.xlsx or .csv, never over a file that exists): give it only when the person
said where.
format takes numberFormat ("#,##0.00", "0%", "yyyy-mm-dd", "$#,##0"), bold,
italic, underline, strikethrough, font, size, color, background, align,
verticalAlign, wrap and border ({"edges": "outside", "style": "medium", "color": "#999999"}): sheets action=format range="B2:B40" format={"numberFormat": "$#,##0.00"}.sheets action=sort range="A1:F90" by="Date" header=true (by is a letter, a header or a
number from the range's first column; ascending=false for largest or newest first); sort_by
sorts by several columns.sheets action=filter range="A1:F90" by="Status" values=[["Paid", "Due"]] keeps the rows
showing one of those; condition={"operator": "greaterThan", "value": 100} keeps rows meeting
a test (equal, notEqual, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual), and
clear=true takes the filter off.sheets action=freeze rows=1 keeps the header in view (columns=1 the first column; rows=0 columns=0 unfreezes).add_sheet name="Q2" (index for where), rename_sheet sheet="Sheet1" name="Budget", and
remove_sheet sheet="Old", which deletes everything on it and asks the person first.A range goes into a Herald Docs document as a table, as its cells show: docs action=insert_range workbook="Budget.xlsx" range="A1:D6" document="Trip notes.docx" at=end. A
table from a document comes the other way by reading it (docs action=read) and writing its rows
in one write. list_all finds what is open in both.
sheets action=save. Saving over the workbook's own file asks the person every
time; the first time Herald writes over a file it shows what it cannot keep, and the original
goes to Herald's Office backups.sheets action=save to="~/Documents/Trip budget.xlsx". A
file that exists is replaced only with overwrite=true, which asks first..xlsx as well.sheets action=export_pdf writes the sheet in front as a new PDF in ~/Documents, laid
out as it prints, or to="~/Desktop/Budget.pdf". Say where it went.It makes no pivot tables of its own, and cannot change one made in Excel: Herald keeps it in the
file for Excel to refresh, and summarize makes the same kind of summary in live formulas. Other
parts it cannot make, such as slicers and sparklines, stay in the file as Excel saved them. Say so
plainly, and offer what works.
© iamlukethedev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/herald-os-bridge/skills/herald-sheets of iamlukethedev/Herald-OS.
Open the folder on GitHubat commit 1b35085
Herald Sheets 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 |
|---|---|---|---|---|---|---|
| Herald Sheets this skilliamlukethedev/Herald-OS | 365 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Data Table Managern8n-io/n8n | 207k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| Instrument Data To Allotropeaws-samples/amazon-bedrock-agents-healthcare-lifesciences | 274 | 2 repos | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Markitshift-labs-ai/markit | 1.3k | — | ~299 | Automated safety check: Pass | MIT | |
| Convert Fileduckdb/duckdb-skills | 603 | 1 repos | ~720 | Automated safety check: Notes | MIT | |
| Research Integrity Auditxuzhougeng/wisp-science | 1k | — | ~2.6k | Automated safety check: Pass | AGPL-3.0 |
n8n-io/n8n
Load before calling data-tables or parse-file. An agent skill from n8n-io/n8n.
aws-samples/amazon-bedrock-agents-healthcare-lifesciences
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV.
shift-labs-ai/markit
Convert files and URLs to Markdown. An agent skill from shift-labs-ai/markit.
duckdb/duckdb-skills
Convert any data file to another format: CSV, Parquet, JSON, Excel, GeoJSON, and more.
xuzhougeng/wisp-science
学术审查 / research-integrity screening of a manuscript's figures and reported numbers.
eclipse-rdf4j/rdf4j
Parse JMH result text by finding the first header line that starts with Benchmark and contains Mode and Score, build a structured table for all columns/rows, compare overlapping benchmarks across 2+…
iamlukethedev/Herald-OS
Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks
iamlukethedev/Herald-OS
Make and change presentations in Herald Slides, the presentation editor in Herald OS - a deck from a topic (an outline first, a title slide, one idea a slide, short bullets, speaker notes, a closing…
iamlukethedev/Herald-OS
Make and edit pictures in Herald Canvas, the layered image editor in Herald OS - posters, banners, thumbnails, collages and photo fixes through the canvas tool, with editable text and shape layers…
iamlukethedev/Herald-OS
Write and edit documents in Herald Docs, the word processor in Herald OS - letters, cover letters, CVs, reports, memos, meeting notes, proposals, essays and newsletters drafted from a brief or a…
iamlukethedev/Herald-OS
Explain why a program crashed from its crash report or core dump, and whether it is worth reporting
iamlukethedev/Herald-OS
Find documents such as invoices among badly named files, read them, name them clearly and file them where the person keeps them, with a plan they approve and an undo
Works with
Categories
Work in Herald Sheets, the spreadsheet in Herald OS - read workbooks, write values and formulas (a formula from a description, explaining one, filling it down), fill a column from examples, clean…. Herald Sheets is an agent skill from iamlukethedev/Herald-OS.
Herald Sheets fits situations like: tasks that involve Excel spreadsheets; tasks that involve CSV and tabular files.
Run `npx skills add iamlukethedev/Herald-OS --skill herald-sheets -a claude-code`. Or copy the skill folder (plugins/herald-os-bridge/skills/herald-sheets in iamlukethedev/Herald-OS) into .claude/skills/herald-sheets in your project. Claude Code loads it when a task matches its description.
Run `npx skills add iamlukethedev/Herald-OS --skill herald-sheets -a codex`. Or copy the skill folder (plugins/herald-os-bridge/skills/herald-sheets in iamlukethedev/Herald-OS) into .agents/skills/herald-sheets 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 iamlukethedev/Herald-OS --skill herald-sheets -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/herald-sheets, .gemini/skills/herald-sheets, .github/skills/herald-sheets and .opencode/skills/herald-sheets in your project.
SKILL.md names no scripts, command-line tools or credentials: Herald Sheets is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Herald Sheets 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.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Herald Sheets: Data Table Manager (n8n-io/n8n, 207k stars), Instrument Data To Allotrope (aws-samples/amazon-bedrock-agents-healthcare-lifesciences, 274 stars), Markit (shift-labs-ai/markit, 1.3k stars) and Convert File (duckdb/duckdb-skills, 603 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
iamlukethedev (a GitHub user) maintains it in iamlukethedev/Herald-OS, which has 365 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.
Source: iamlukethedev/Herald-OS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.