~/.local/bin/claude is a symlink into ~/.local/share/claude/versions/<v>.
Caching only the symlink restored a dangling link on a cache hit, so
`claude` failed with exit 127. Cache the versioned dir too and bump the
cache key (-v2) to discard the broken saved entry.
fix(plugins): hooks.json must be {"hooks": {}} not []; add plugin-validate CI
The empty-array hooks.json in private-equity, financial-analysis,
equity-research and wealth-management caused those plugins to fail to
load ("Hook load failed: expected object, received array"). Replace [] with
the minimal valid {"hooks": {}} object in all four.
Add a plugin-validate workflow that runs the official `claude plugin
validate` over the marketplace manifest and every plugin on each PR and
push, so a malformed manifest fails CI instead of reaching users. The
CLI is installed from the official binary channel and cached, keyed on a
pinned version, so a warm cache skips the download entirely.
* feat(repo): plugin version-bump hook + CI backstop, fix install docs/remote
* docs(claude-in-office): add Wef registry + wef-folder sideload (Windows + macOS) for local debugging
* ci: use actions/checkout@v4 instead of pinned SHA
* docs(claude-in-office): scope sideload cleanup to the specific manifest, not the wef folder
* docs(claude-in-office): scope cache-clear to wef contents with guards, not rm -rf of caches/wef dirs
* docs(claude-in-office): target cache-clear by add-in Id, leave other add-ins in wef untouched
* feat(claude-in-office): add clear-addin-cache scripts (mac/win), ID-targeted, dry-run by default
* fix(claude-in-office): Windows sideload cleanup is registry-based, ID-first; direct edits (no office-addin-dev-settings); document deployed-cache caveat
* docs(claude-in-office): clarify surgical per-ID deletion of local/sideloaded manifests is safe; MS warning applies only to the deployed cache
* feat(claude-in-office): add sideload-addin scripts (mac/win), ID-derived, dry-run by default; debug.md points to script pair
* feat(claude-in-office): sideload installs directly (drop dry-run); dry-run stays only on destructive clear-addin-cache
* docs(claude-in-office): make the post-clear app restart an explicit step, not a buried line
The add-in now accepts entra_scope as a comma/whitespace-separated list and
no longer requires a URI-shaped value (Entra validates scope syntax, not the
build script). Update the docs and the build-manifest validation to match:
- build-manifest.mjs: entra_scope pattern relaxed to any non-blank string;
the graph_client_id pairing check is unchanged.
- manifest.md: document the multi-scope list syntax and the same-resource
constraint; clarify the build script enforces the pairing, not the format.
- bootstrap.md: note scp is a space-delimited list with multiple scopes.
- debug.md: add a Silent SSO / Entra token failures troubleshooting section
(AADSTS50194, entra_scope-without-graph_client_id, silent-then-popup).
build-manifest.mjs now takes a host argument (office | outlook). The
outlook host fetches manifest-outlook-3p.xml, which uses Microsoft's
MailApp schema and cannot share a file with the TaskPaneApp manifest
Excel/Word/PowerPoint use.
- URL_SLOTS regexes are now /g so all three Outlook taskpane URL entries
(FormSettings + V1_0 + V1_1 Resources) receive the config params, not
just the first match.
- New graph_client_id key for orgs that bring their own Entra app for
Microsoft Graph instead of consenting to Anthropic's multi-tenant app.
- aws_* keys with the outlook host fail fast: Bedrock is not currently
supported for Outlook.
- consent.md gains the Outlook Graph admin-consent URL (Mail.ReadWrite,
Calendars.Read, People.Read, User.Read, offline_access) and the
own-Entra-app alternative.
- manifest.md and setup.md document the host arg, the per-host file
split, and route admins to the consent step before generating the
Outlook manifest.
- Move verticals from repo root into plugins/vertical-plugins/ and partner
plugins into plugins/partner-built/
- Add 10 named, self-contained agent plugins under plugins/agent-plugins/
(Pitch Agent, Market Researcher, Earnings Reviewer, Model Builder,
Meeting Prep, GL Reconciler, Month-End Closer, Statement Auditor,
Valuation Reviewer, KYC Screener) — each bundles its own skills so it
installs standalone
- Add managed-agent-cookbooks/ (one per agent) with subagent isolation
and steering examples for /v1/agents deployment
- Add fund-admin and operations verticals so the finance-ops/onboarding
agents ship real domain skills
- Add scripts/ (check.py manifest lint, sync-agent-skills.py,
deploy-managed-agent.sh, orchestrate.py reference loop,
test-cookbooks.sh)
- Add .github/workflows/secret-scan.yml (gitleaks + internal-ref grep)
- Tighten agent tool grants to declared MCPs only — no Bash, WebFetch,
or undeclared mcp__* references in any agent
- Add not-investment-advice disclaimer to README
- Rename claude-in-office to claude-for-msft-365-install (content
unchanged)
Adds the new `otlp_resource_attributes` key (comma-separated k=v, same
format as OTEL_RESOURCE_ATTRIBUTES) to:
- build-manifest.mjs KEYS validator
- manifest.md / bootstrap.md telemetry sections
- update-user-attrs.md key table
Paired with anthropics/office-agent OA-336.
JSON object of extra HTTP headers the add-in attaches to every request
it sends to the configured gateway. Lets enterprise gateways receive
accounting or routing tags without a header-injecting proxy in front.
- build-manifest.mjs: KEYS validator entry
- manifest.md / bootstrap.md / update-user-attrs.md: documented with
example and reserved-header list
Adds examples/python-bootstrap/: a ~80-line FastAPI reference for the
bootstrap endpoint. Validates the Entra ID token, reads oid/groups from
claims, parses X-Claude-User-Agent for the Office host, and returns
skills + mcp_servers via a first-match RULES table in config.py.
Includes mint_dev_token.py (loopback-only RS256 dev tokens),
get_tenant_id.py, requirements.txt, and README.
Also documents the X-Claude-User-Agent request header and recommended
CORS preflight (Allow-Headers: Authorization, X-Claude-User-Agent, *)
in commands/bootstrap.md.
Add azure_resource_name and azure_api_key to the build-manifest KEYS
table so admins can bake Foundry config into the add-in manifest.
Document the Foundry path in setup.md and the keys table in manifest.md.
Adds gateway_api_format (anthropic | bedrock | vertex) to the config key
set so admins can deploy against gateways exposing Bedrock InvokeModel
or Vertex rawPredict pass-through routes instead of /v1/messages.
- build-manifest.mjs: KEYS entry with /^(anthropic|bedrock|vertex)$/
- setup.md: gateway wizard asks for API format; vertex => also capture
gcp_project_id + gcp_region; Step 6 smoke test now has three
format-specific curls (path + body shape differ per format)
- manifest.md / update-user-attrs.md / bootstrap.md: docs for the key
Adds mcp_servers to the recognized KEYS table so admins can bake an
org-wide MCP server list into the manifest URL. Documents the key in
commands/manifest.md alongside the other cross-cutting keys, with a
shell-quoted example and a pointer to bootstrap.md for the full schema
and per-user delivery.
Adds a new section to the /debug skill covering how to attach browser
devtools to the add-in WebView on both platforms. The macOS recipe
includes the three-gate sequence (defaults write, Safari Develop menu,
Sonoma Privacy & Security allowlist) plus the gotcha that Office updates
silently reset the defaults-write flag. Windows covers both WebView2
(right-click or Edge DevTools Preview) and the IE11/Trident legacy path
via IEChooser.exe.
Also adds a triage table row so admins asking 'how do I see the console'
route here directly.
Adds bootstrap_expires_at to the bootstrap endpoint response example
and explains it enables proactive config refresh — the add-in re-calls
the endpoint before expiry. Epoch seconds or milliseconds, auto-detected.
Explains the x-api-key vs Authorization: Bearer choice in the Gateway
section of setup.md, adds the key to manifest.md's per-cloud table, and
updates the Step 6 smoke-test curl with the alternate header form.
Adds gateway_auth_header to the KEYS table so admins can configure
which header carries the gateway token. Accepts "x-api-key" (default)
or "authorization" (sends Authorization: Bearer <token>).
Pairs with add-in support for the same key in CustomerConfig.
Consent is only required when entra_sso=1 (Bedrock or per-user config).
Gateway and Vertex with org-wide config skip it. Updates setup.md flow
and consent.md to reflect this.
Migrated from anthropics/office-agent. Provides /setup, /manifest, /consent,
/update-user-attrs, and /debug commands for M365 admins provisioning the
Claude Office add-in with direct cloud access (Vertex AI, Bedrock, or an
LLM gateway).
Portfolio-wide AI opportunity scanner for operating partners. Ingests
quarterly materials across portcos, runs a go/wait gate on each
(data ready? owner? 30-day pilot?), ranks quick wins by EBITDA impact,
and surfaces replays that hit multiple companies at once.
Substring matching checked 'T' before 'thousand', so 't' matched inside
'thousand' and returned the 1e12 multiplier instead of 1e3. Sort keys by
length descending so longer, more specific units always win.
- Rewrite competitive-analysis: cleaner prose, explain-the-why over imperatives
- Rename check-deck -> ib-check-deck with the same rewrite treatment
- Add deck-refresh: updates figures across an existing deck without rebuilding,
with a four-phase workflow (get data -> find all -> approve -> execute)
Adds critical principles across all Excel model-building skills (dcf-model, lbo-model, comps-analysis, 3-statements, clean-data-xls): prefer live formulas over computed values, verify step-by-step with user, Office JS environment support with merge-cell pitfall fix, minimal blue/grey color palette, and odd-grid sensitivity tables with highlighted base-case center cell. Merges check-model into audit-xls as a scope-based workflow (selection/sheet/model) so there's a single audit entry point.
- clean-data-xls: clean messy spreadsheet data (whitespace, casing,
numbers-as-text, date formats, duplicates, mixed types, encoding)
- audit-xls: audit formulas for accuracy and mistakes; scopes to sheet,
whole model, or selection; reuses check-model for full-workbook audits
- Created partner-built/ directory for plugins maintained by data partners
- Moved lseg/ and spglobal/ into partner-built/
- Updated marketplace.json source paths
- Added Partner-Built Plugins section to README