bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
Sheet Geek is a free, open-source AI skill. It reads your spreadsheet, asks what the data can't tell it, and saves the answers inside the file.
SkillsPython · HTMLGitHub @Actual-Intelligence-LabsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Gives any spreadsheet a brain that travels inside the file: reads it with code, asks only what the data can't answer, and writes the answers into a tab any AI can read.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Your AI doesn't know what correlates to what in your spreadsheet. Now it can.
An open-source skill that gives any spreadsheet a brain. The first time your AI opens a sheet, it studies the data with code, asks you only the handful of questions the data can't answer, and writes what it learned into a tab inside the file. Next time anyone opens that file with an AI that reads its tabs, it can start from there. Nobody re-explains the sheet, and nothing lives only in one person's head.Read the full README ↗Your AI doesn't know what correlates to what in your spreadsheet. Now it can.
An open-source skill that gives any spreadsheet a brain. The first time your AI opens a sheet, it studies the data with code, asks you only the handful of questions the data can't answer, and writes what it learned into a tab inside the file. Next time anyone opens that file with an AI that reads its tabs, it can start from there. Nobody re-explains the sheet, and nothing lives only in one person's head.
Sheet Geek was called spreadsheet-brain through version 0.2.0. The studies below tested 0.2.0 under that name (tag v0.2.0); 0.2.1 renames it, and 0.2.2 narrows when it starts, fixes the Claude Code hooks and names its maker in the brain's first note; 0.2.3 hardens it against crafted files, drops the optional web research, saves the map as a file instead of opening a browser, and stops offering a hidden tab; how it reads and asks is unchanged. The _brain tab keeps its format label, spreadsheet-brain 0.1, so every brain reads the same.
_brain tab at the end: what each column means, how things connect, what you told it, what it counted, and what it's only guessing. Every note is labeled and dated. Your data is never touched, and it checks that.demo/try-it/ has two fake workbooks, a SaaS finance model and a hotel's purchases, each with and without a brain, plus its map. Give both versions to any AI, ask the same question, and compare. The brains were built by version 0.2 with an AI playing the owner from a written brief. Both files are among the seven practice files version 0.2 was developed on, so they show it at its best; the results under "How it was tested" come from twelve businesses it never saw. The chat runs quoted in the launch film are in evals/film-chat-runs/.
Claude Code
/plugin marketplace add Actual-Intelligence-Labs/sheet-geek#release
/plugin install sheet-geek@sheet-geek
Then open any spreadsheet in the conversation, or just name one.
claude.ai, Claude desktop: download sheet-geek.zip from Releases, then Settings > Capabilities > Skills > Upload.
ChatGPT (Work mode): download sheet-geek.zip from Releases, then Customize > Skills > Add > Upload from your computer. Or skip the upload: in a Work chat, attach your spreadsheet and paste this repo's link, and ChatGPT clones it and runs it. Then say "Give this spreadsheet a brain" (or type @sheet geek). A plain "take a look" may not start it.
Codex, Cursor, VS Code Copilot, Gemini CLI, and other tools that load Agent Skills: copy skills/sheet-geek (from this repo or sheet-geek.zip) into the tool's skills folder (for example .agents/skills/), and add the snippet from adapters/ for your tool.
Chat apps without code (ChatGPT's regular Chat mode, Gemini Gems, Copilot agents): paste the prompt in references/portable-prompt.md. It carries the method without the code.
Requirements: Python 3.10+ and openpyxl (python3 -m pip install openpyxl). CSV needs nothing else. Works offline.
The skill runs when a request is about understanding, documenting, auditing or handing over a spreadsheet, or when you ask about a file that already has a _brain tab. It does not run on every spreadsheet you mention. In Claude Code, naming a file that already has a brain also adds its notes to the conversation (see the hooks below).
| Read a brain | Run the questions | Write the brain | Map | |
|---|---|---|---|---|
| Claude Code | Yes, loads automatically | Yes, structured questions | Yes, in place with a backup | Yes, as an HTML file |
| claude.ai (skill) | Expected | Expected, as text | Expected, as a copy you download | Expected, as an HTML file |
| ChatGPT (Work mode) | Yes, even without the skill | Yes, as text | Yes, as a copy you download | Yes, as an HTML file |
| Codex, Cursor, VS Code, Gemini CLI | Expected | Expected | Expected | Expected |
| ChatGPT Chat mode, Gemini, Copilot (prompt only) | Usually, if it lists the tabs | Lighter version | You paste a table it gives you | No |
Tested so far: Claude Code on macOS, and ChatGPT Work mode with GPT-6.1 Sol (2026-09-30: on the demo finance model it read the file, asked the same questions, saved the brain into a copy with every original cell unchanged, drew the map, and the brain read back cleanly in Claude; given only this repo's link, it cloned the repo and did the same; a fresh ChatGPT chat with no skill read a brain made in Claude and used the owner's notes). One difference: notes marked "this machine only" live in ChatGPT's temporary workspace and are gone when the chat ends. "Expected" means the tool loads the same open skill format and should work; it becomes "Yes" when someone runs it.
In the _brain tab (travels) | On your machine only (~/.sheet-geek) |
|---|---|
| What each column means, units, what one row is | Remarks it recognizes as private: about people, clients or deals |
| Rules for reading it ("credits count, transfers don't") | Business terms you mention: contract prices, markups, rebate rates (unless you choose to include them) |
| How tabs and columns connect | Your raw answers |
| Counted insights, dated | Backups of the file |
| The other files it links to: name and matching column only | The full map between your files |
The tab is visible so people without AI can read it too. It is hidden only if you ask, and hidden is not private.
Both columns have limits. The private-remarks check is a word filter: it keeps a sentence marked "between us" or "confidential" on your machine, and some remarks judging a person or about HR matters or deals, but it misses many others. Code masks email addresses and phone numbers and does not list the values of columns whose header marks them as people; a column of people under another header (Customer, Guest, Patient) can be listed, and a counted note can name the person or customer with the largest total. Before saving into a file you will share, read the preview ("show every line"), or share a copy without the brain. Sheet Geek is not designed for health records, payment card data, government ID numbers or passwords; please don't use it with them.
Reads: the spreadsheets you share or name, every row, with code on your own machine (or in your AI app's sandbox), a CSV's <name>.brain.json, and its own local index (below). Nothing else on your computer.
Writes:
_brain tab inside a workbook (inside a copy instead, when you ask for one or the file is an upload). A visible brain becomes the tab the file opens on; removing the brain puts that back.<name>.brain.json. The CSV itself is never written to.~/.sheet-geek (~/.spreadsheet-brain if you used it before 0.2.1): the notes, private notes, raw answers, backups, a profile of the data, a log, and the spreadsheets it has worked on.Your data cells are never changed.
Sends: nothing. The code makes no network calls and has no telemetry or usage tracking, sb never starts another program, and the skill does no web searches. The map is one offline HTML file with a content security policy that blocks network access.
Claude Code session hooks (Claude Code only; they run when Python 3.10+ is on your PATH as python3 or python, and on Windows they need Git Bash; otherwise they do nothing): at the start of a session, a hook names up to five files under the current folder that have a saved brain. When a message names an .xlsx, .xlsm or .csv that has a brain (its _brain tab, a CSV's .brain.json, or one kept in the local index), a hook adds that brain's notes to the conversation, or a one-line pointer when they are too long. Hooks never change your files, make no network calls and never add a file to the index; they open the local index (creating ~/.sheet-geek if needed) and update it only when a file with a brain has moved. What they add goes to your AI app with the rest of the conversation. A hook that hits an error stays silent instead of blocking your message.
Credit: the brain's first note ends with "Made with Sheet Geek by Actual Intelligence Labs (actualintelligencelabs.ai).", and its meta row names the tool and version. It is a plain fact, like a "generator" tag, with no link tracking and nothing that identifies you. The meta row's is a random brain id made on your machine so the tool can recognize the file later; it travels only inside the file.
Your AI app keeps its own conversation history under its own policy. Answers you type during the questions are part of that conversation. More in SECURITY.md.
The brain is a plain table any tool can read. See the format.
Two pre-registered studies: each plan was written and frozen before any answer was collected, and every deviation, trial, verdict and script is in evals/. The scripts there use the tool's old folder name, so rerun them from tag v0.2.0. All businesses are synthetic, and all judges are AI models.
Study 2 (confirmatory, version 0.2). Twelve new businesses, built after the tool was frozen by agents that never saw it (a dental practice, a law firm, a coffee roaster, a trucking company and eight more). An agent played each owner from a written brief. Each AI got the same workbook and the same request twice, with and without the brain, in a locked folder; two blind judges from two model families graded both answers.
evals/PREREG-confirmatory.md, evals/rigor-confirmatory/.Before the freeze. Version 0.2 had to capture at least 60% of a frozen list of 96 owner facts on seven practice files (version 0.1: 21%), with every business at least 35% and every brain passing a gate that reads each owner note against the owner's brief. It took six practice runs; the frozen run captured 73.7%. The plan and every run are in dev/v02/.
Study 1 (version 0.1). Four held-out businesses: 7.0 vs 5.1 of 15 with and without the brain, better in 25 of 31 pairs (p = 0.00009), but only 3 of 4 businesses positive (p = 0.11), which is why Study 2 was run. evals/PREREG-2026-09-26.md.
Engineering checks. Writing, updating and removing a brain leaves every sheet of your data byte-identical (the workbook's list of tabs gains the brain's entry, and a visible brain becomes the tab it opens on; removing it puts both back); 1,896 tests, including a seeded generator of synthetic trap workbooks, each trap with a look-alike twin that must stay silent.
@sheet geek. A plain "take a look at this file" may not start it..xlsx (without a password) and ask again.python3 -m pip install openpyxl. CSV files need nothing extra.sb.py graph saves it as one HTML file and names the path. Open it in any browser; it needs no internet.python3 or python (and Git Bash on Windows). Without it they stay silent, and the skill still works when you ask for it.Spreadsheets are untrusted input, and this tool treats them that way: the defenses are in code, not in a prompt. See SECURITY.md.
python -m venv .venv && .venv/bin/pip install openpyxl pytest xlsxwriter
.venv/bin/python demo/make_fixtures.py # fake workbooks with answer keys
.venv/bin/python -m pytest
.venv/bin/python evals/structure.py # deterministic evals against the answer keys
All test data is synthetic. No real company's data is in this repository.
Built by Actual Intelligence Labs, an AI research and implementation lab in Sarasota, Florida. Support: [email protected] or a GitHub issue. The map uses force-graph (MIT); see NOTICE.
id