audit-xls
Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire model (including…
Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.
$ npx -y skills add anthropics/financial-services --skill verify --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/verifyContext preview
The summary Claude sees to decide when to auto-load this skill.
Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.
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 model (including…
Create professional equity research earnings update reports (8-12 pages, 3,000-5,000 words) analyzing quarterly results for companies already under coverage.…
Build pre-earnings analysis with estimate models, scenario frameworks, and key metrics to watch. Use before a company reports quarterly earnings to prepare…
Update financial models with new data — quarterly earnings, management guidance, macro changes, or revised assumptions. Adjusts estimates, recalculates…
Draft concise morning meeting notes summarizing overnight developments, trade ideas, and key events for coverage stocks. Designed for the 7am morning meeting…
Produce a .xlsx file on disk (headless) instead of driving a live Excel workbook — for managed-agent sessions with no open Office app.