audit-xls
Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire…
Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.
Claude Code
$ npx -y skills add anthropics/financial-services --skill verify --agent claude-code
Codex
$ npx skills add anthropics/financial-services --skill verify -a codex -y
Cursor
$ npx skills add anthropics/financial-services --skill verify -a cursor -y
Gemini CLI
$ npx skills add anthropics/financial-services --skill verify -a gemini-cli -y
GitHub Copilot
$ npx skills add anthropics/financial-services --skill verify -a github-copilot -y
OpenCode
$ npx skills add anthropics/financial-services --skill verify -a opencode -y
Windsurf
$ npx skills add anthropics/financial-services --skill verify -a windsurf -y
name: verify description: Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.
This plugin is **admin CLI tooling**, not an app. There is nothing to build and no server to boot. The surface is the terminal: `scripts/*.sh` on macOS, `scripts/*.ps1` on Windows.
python3 scripts/check.py # from the REPO ROOT, not the plugin dir bash -n claude-for-msft-365-install/scripts/<script>.sh
`check.py` lints every manifest and self-installs the pre-commit hook that patch-bumps `.claude-plugin/plugin.json`. Run it before committing.
Every macOS script resolves Office paths from `$HOME`, so overriding it gives a throwaway sandbox — you can exercise the destructive `--apply` paths without touching real Office data.
S=<scratchpad>/sandbox for app in Excel Word Powerpoint; do mkdir -p "$S/Library/Containers/com.microsoft.$app/Data/Documents/wef" done printf '<x/>' > "$S/Library/Containers/com.microsoft.Excel/Data/Documents/wef/aaaaaaaa-1111-1111-1111-111111111111.manifest-a.xml" HOME=$S ./scripts/clear-addin-cache.sh # list HOME=$S ./scripts/clear-addin-cache.sh --id <GUID> # dry-run HOME=$S ./scripts/clear-addin-cache.sh --id <GUID> --apply # destructive
Seed at least **two IDs across two apps**, with **mixed upper/lowercase**. Both properties have caught real bugs: cross-app blast radius, and a case-sensitive glob that reported "already clear" and sent admins to a folder-wide wipe.
The load-bearing claim of this plugin is that clearing a manifest never touches the user's chat history. Verify it by snapshot-diffing both trees around the operation, against the **real** `$HOME`:
snap() {
for app in Excel Word Powerpoint; do
find "$HOME/Library/Containers/com.microsoft.$app/Data/Library/WebKit/WebsiteData" \
-type f -exec stat -f '%N %z %m' {} \; 2>/dev/null
find "$HOME/Library/Containers/com.microsoft.$app/Data/Documents/wef" \
-type f -exec stat -f 'WEF %N %z' {} \; 2>/dev/null
done | sort
}
snap > before.txt; <run the script>; snap > after.txt; diff before.txt after.txtManifests live in `Data/Documents/wef`; storage lives in `Data/Library/WebKit/WebsiteData`. Different subtrees — the diff should show only the manifest you removed. **Restore any planted files and re-diff to confirm you left the machine as you found it.**
behaviour (`shopt`, glob semantics) inside `bash <<'EOF' … EOF`, not inline.
files** with `no such collation sequence: IDBKEY`. That is WebKit's custom collation, not corruption — it fails on the source file too. Verify completeness with `SELECT sum(length(value)) FROM Records;` on both sides.
macOS has no PowerShell, so a `.ps1` change verified only here is unverified. Run it on a real Windows host against Windows PowerShell 5.1, and always include a **parse check** before the behavioural ones:
$e = $null
[System.Management.Automation.PSParser]::Tokenize(
(Get-Content -Raw .\clear-addin-cache.ps1), [ref]$e) | Out-Null
if ($e.Count) { $e | ForEach-Object { $_.Message } } else { 'parse ok' }A file can be perfectly fine on macOS and fail to parse outright on Windows (see the ASCII note below), so parsing is the first thing to establish.
Windows PowerShell 5.1 reads a BOM-less `.ps1` as ANSI, so an em dash decodes to mojibake containing `"`, which terminates a string and breaks the parse. `clear-addin-cache.ps1` shipped broken this way and no macOS check caught it.
under `set -e` and exits 1 with **no output**; each flag needs a `[ $# -ge 2 ]` guard.
Reference agents, skills, and data connectors for the financial-services workflows we see most — investment banking, equity research, private equity, and wealth management.
Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire…
Create professional equity research earnings update reports (8-12 pages, 3,000-5,000 words) analyzing quarterly results for…
Build pre-earnings analysis with estimate models, scenario frameworks, and key metrics to watch. Use before a company reports…
Update financial models with new data — quarterly earnings, management guidance, macro changes, or revised assumptions. Adjusts…
Draft concise morning meeting notes summarizing overnight developments, trade ideas, and key events for coverage stocks. Designed…
Produce a .xlsx file on disk (headless) instead of driving a live Excel workbook — for managed-agent sessions with no open Office…
Complete, populate and fill out 3-statement financial model templates (Income Statement, Balance Sheet, Cash Flow Statement) .…
Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a dead-simple picture explainer of how…