mcpbeat Sign in

Verify Skill for Claude

Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.

1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
33987
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/anthropics/financial-services --skill verify

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

5 sections, as written by the author

Verifying claude-for-msft-365-install

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.

Lint gate

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.

Drive the scripts against a fake $HOME

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.

Prove storage is retained

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.txt

Manifests 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.**

Gotchas

  • The Bash tool runs zsh. Scripts are #!/usr/bin/env bash; test bash-only

behaviour (shopt, glob semantics) inside bash <<'EOF' … EOF, not inline.

  • **PRAGMA integrity_check and SELECT count(*) fail on exported IndexedDB

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.

  • Never claim the .ps1 scripts work without running them on Windows.

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.

  • .ps1 files must be pure ASCII (enforced by scripts/check.py).

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.

  • Probe the arg parser. --flag as the final argument makes shift 2 fail

under set -e and exits 1 with no output; each flag needs a

[ $# -ge 2 ] guard.

Other skills for the same job

different authors, same section of the catalogue
Protocolsio Integration
by christophacham
×4

Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.

16k tokens
Tailored Resume Generator
by frostant
×4

Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances

3k tokens
Excalidraw Diagram Generator
by github
vendor ×3

Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.

36k tokens scripts
Expo Dev Client
by openai
vendor ×3

Build and distribute Expo development clients locally or via TestFlight

961 tokens
Executing Plans
by ZhanlinCui
×3

Use when you have a written implementation plan to execute in a separate session with review checkpoints

542 tokens
Anndata
by christophacham
×3

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

16k tokens
Benchling Integration
by christophacham
×3

Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.

14k tokens
Biopython
by christophacham
×3

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

24k tokens

How to use it

Copy the folder

Take anthropics/financial-services-verify from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.