Agent skill · Audited from source
earnings-preview-single
skill · anthropics/financial-services-pluginsApache-2.0 licenceAudited 29 Oct 2026 · source 1a9a359bc586
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 1a9a359bc586 and observed filesystem and network access and no hard-coded secrets. What it does: Verify changes to the claude-for-msft-365-install admin scripts and commands by driving them against an isolated fake $HOME.
Cite
Cite this page
ModelsAtlas. “earnings-preview-single (anthropics/financial-services-plugins)”. Retrieved 29 Oct 2026. https://modelsatlas.com/skills/anthropics/earnings-preview-single
Trust audit
Audit 0.4.1 · source read 29 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemDeclared6 observations
- NetworkDeclared3 observations
- ShellNone observedNo commands run in the source
- DependenciesNot pinnedSome versions float
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 10 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 2 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (12)
LOWFilesystem / pathfs.traversal · managed-agent-cookbooks/earnings-reviewer/agent.yaml:7
file: ../../plugins/agent-plugins/earnings-reviewer/agents/earnings-reviewer.md
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · managed-agent-cookbooks/earnings-reviewer/agent.yaml:25
- { from_plugin: ../../plugins/agent-plugins/earnings-reviewer }- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · managed-agent-cookbooks/earnings-reviewer/subagents/model-updater.yaml:20
- { path: ../../../plugins/agent-plugins/earnings-reviewer/skills/model-update }- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · managed-agent-cookbooks/earnings-reviewer/subagents/note-writer.yaml:17
- { path: ../../../plugins/agent-plugins/earnings-reviewer/skills/morning-note }- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · managed-agent-cookbooks/earnings-reviewer/subagents/note-writer.yaml:18
- { path: ../../../plugins/agent-plugins/earnings-reviewer/skills/xlsx-author }- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · claude-for-msft-365-install/examples/python-bootstrap/README.md:26
http://127.0.0.1:8080/bootstrap
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWSupply chainsupply.unpinned · claude-for-msft-365-install/examples/python-bootstrap/requirements.txt
fastapi, uvicorn, PyJWT
- Why
- 3 requirement(s) not pinned with ==
- Fix
- pin exact versions
LOWSupply chainsupply.unpinned · plugins/agent-plugins/model-builder/skills/dcf-model/requirements.txt
openpyxl, requests
- Why
- 2 requirement(s) not pinned with ==
- Fix
- pin exact versions
LOWSupply chainsupply.unpinned · plugins/agent-plugins/pitch-agent/skills/dcf-model/requirements.txt
openpyxl, requests
- Why
- 2 requirement(s) not pinned with ==
- Fix
- pin exact versions
LOWSupply chainsupply.unpinned · plugins/vertical-plugins/financial-analysis/skills/dcf-model/requirements.txt
openpyxl, requests
- Why
- 2 requirement(s) not pinned with ==
- Fix
- pin exact versions
INFOPrompt injectionprompt.credential_read · README.md:136
> MCP access may require a subscription or API key from the provider.
- Why
- asks the agent to read credentials
- Fix
- —
INFOPrompt injectionprompt.credential_read · plugins/partner-built/lseg/README.md:61
- Access to the LSEG MCP Server with valid credentials
- Why
- asks the agent to read credentials
- Fix
- —
Audit 0.4.1 · source sha 1a9a359bc586 · 29 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisheranthropics GitHub organizationOwner of the repository this skill is read from
- Source folderanthropics/financial-services-pluginsThe exact folder we audited
- LicenceApache-2.0As the repository states it
- Commit pinned for this verdict1a9a359bc586A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: 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.
---
# 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
```bash
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.
```bash
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`:
```bash
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:
```powershell
$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.Excerpt, first 4,199 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 1a9a359
claude plugin install financial-analysis@claude-for-financial-services claude plugin install pitch-agent@claude-for-financial-services claude plugin install gl-reconciler@claude-for-financial-services claude plugin install market-researcher@claude-for-financial-services claude plugin install investment-banking@claude-for-financial-services claude plugin install equity-research@claude-for-financial-services
git clone https://github.com/anthropics/financial-services-plugins git -C financial-services-plugins checkout 1a9a359bc586
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 1a9a359bc586 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Claude Desktop | Mentioned in its text, not tested | Skills for Claude Desktop · About Claude Desktop |
| GitHub Copilot | Mentioned in its text, not tested | Skills for GitHub Copilot · About GitHub Copilot |
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
1a9a359bc586
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/anthropics/earnings-preview-single/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
obra/superpowers
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions…
obra/superpowers
Use when you have a spec or requirements for a multi-step task, before touching code
obra/superpowers
Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
Add this badge to your README
[](https://modelsatlas.com/skills/anthropics/earnings-preview-single/)
<a href="https://modelsatlas.com/skills/anthropics/earnings-preview-single/"><img src="https://modelsatlas.com/skills/anthropics/earnings-preview-single/badge.svg" alt="ModelsAtlas: SAFE B"></a>
Questions about earnings-preview-single
Is earnings-preview-single safe to install?
What can earnings-preview-single access on my machine?
Which assistants does earnings-preview-single work with?
How current is this page?
Sources
- github.com/anthropics/financial-services-plugins — the audited source at commit 1a9a359bc586 and every finding aboveObserved · 29 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- Is earnings-preview-single safe to install?
- What can earnings-preview-single access on my machine?
- Which assistants does earnings-preview-single work with?