419 Commits

Author SHA1 Message Date
Noah Zweben
e9b54375b8
Add Apache 2.0 LICENSE to repo root (#1999)
Each internal plugin already carries an Apache 2.0 LICENSE file at its root.
This adds the same license at the repository root for clarity.

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-28 08:21:09 -05:00
Bryan Thompson
fc49e6815f
recommender: add Convex to database/backend MCP coverage (#1981)
Picked up from sethconvex's PR #1966 (auto-closed by membership gate),
split off from #1980 (Convex plugin entry refresh) so the editorial
addition to claude-automation-recommender gets its own review.

Changes:

- SKILL.md: add `convex` to the package.json dep-detection grep, update
  the Database row in the indicator table to name Convex, and add a
  Convex MCP row to the MCP recommendation table.

- references/mcp-servers.md: new "Convex MCP" section in the Databases
  group (Supabase / Convex / PostgreSQL / Neon / Turso), and a row in
  the Detection Patterns quick reference.

Convex publishes its MCP server via the `convex` npm package
(`npx convex mcp start`), exposing tables, function-spec, data,
run-once-query, logs, env list/set/get. Same row pattern as the
existing database/backend MCP entries.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 07:59:33 -05:00
Bryan Thompson
06b6d5b96f
Refresh Convex plugin: rename to convex, bump SHA to v1.0.1, richer metadata (#1980)
* Refresh Convex plugin: rename to `convex`, bump SHA to v1.0.1, richer metadata

Picked up from sethconvex's PR #1966 (auto-closed by membership gate).
Original entry added by Tobin in PR #1918 (2026-05-18).

Changes to the Convex marketplace.json entry:

- **Rename slug** `convex-backend` → `convex` to match the single-brand-word
  convention used by every peer in the database/backend neighborhood
  (`supabase`, `firebase`, `mongodb`, `prisma`, `clickhouse`, `cockroachdb`,
  `cloud-sql-postgresql`, `alloydb`). New `displayName: "Convex"` keeps the
  directory UI label unchanged.

- **Bump SHA pin to `59663a5`** (plugin v1.0.1) — current HEAD of
  `get-convex/convex-backend-skill` `main`. New SHA adds:
  - `agents/convex-expert.md` — subagent encoding non-negotiable Convex code
    rules (object-form syntax, validator requirements, index naming,
    internal-vs-public, schema evolution, resource limits). Loaded only
    when delegated to.
  - `monitors/monitors.json` — runtime-error monitor streaming
    `npx convex logs`, surfacing matched errors as notifications. Self-guards
    on unlinked projects. `when: on-skill-invoke:design` so it only starts
    after the skill is invoked.
  - `.mcp.json` — auto-wires the Convex MCP server
    (`npx -y convex@latest mcp start`, local stdio).
  - Public-facing README (install / how-to-use / what's bundled / capabilities).
  - `paths` gate on the skill — `[convex/**, convex.json, package.json]` for
    auto-invocation precision.
  - `description` / `when_to_use` split on the skill frontmatter.

- **Refresh marketplace entry metadata** — `displayName`, `keywords` (15
  discovery tags), `author.url`, expanded `description`, category changed from
  `development` to `database` (matches every peer), `homepage` repointed at the
  plugin repo (matches the `supabase` pattern).

Verified locally:
- Author affiliation confirmed: `seth@convex.dev` commit email, write access
  to the canonical `get-convex/` org.
- `claude plugin validate`: PASS.
- Static audit: PASS @ 92 (manifest 96, security 93, quality 80, docs 100).
- MCP server is local stdio (`has_remote_mcp=false`) — passes the -official
  add-official Phase 2e gate.

Recommender skill changes from the original PR are split into a follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Re-pin Convex to 5e59870 (post upstream fix merge)

Upstream PR get-convex/convex-backend-skill#1 merged 2026-05-23. The
agents-field array-shape fix now applies; claude plugin validate passes
on both the full plugin (with marketplace.json) and the isolated
plugin.json — including the external-validator gate this PR previously
failed on.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 03:54:06 +01:00
Mohamed Hegazy
2a3dd81146
Merge pull request #2055 from anthropics/fix-windows-agentic-reviewer
security-guidance: enable agentic commit reviewer on Windows
2026-05-27 15:43:11 -07:00
Mohamed Hegazy
c11244778d
Address Windows verification: --prefer-binary + pywin32 bootstrap
The first round of this PR removed SKIP_WIN32, fixed venv_py to use
Scripts/python.exe, and added Lib/site-packages to the consumer glob —
all necessary. Windows verification (Win11 ARM64, Py 3.13, Git Bash)
showed two more blockers, both addressed here.

1. Pip dependency resolver picks unbuildable cryptography on ARM64.

   Without --prefer-binary, pip picks a cryptography version with no
   published ARM64 wheel and tries to build it from source. That needs
   Rust/Cargo, almost never present on user machines → BUILD_FAILED
   with err_kind=other:cryptography. A binary wheel exists for an
   adjacent version (cryptography-46.0.3-cp311-abi3-win_arm64.whl);
   --prefer-binary tells pip to pick it. Cross-platform safe (no-op
   where the latest version already has a wheel).

2. pywin32 .pth files aren't processed by sys.path.insert().

   With the venv built, ensure_agent_sdk.py's post-build probe passes
   (it runs from venv_py, where Python's site.py at startup processes
   pywin32.pth and registers win32/, win32/lib/ plus runs
   pywin32_bootstrap.py to set the DLL search dir). But llm.py runs in
   the hook's SYSTEM Python and adds the venv via sys.path.insert(),
   which doesn't trigger site.py at all. Without the bootstrap, the
   SDK's mcp.client.stdio → mcp.os.win32.utilities chain raises
   ModuleNotFoundError: pywintypes and the agentic reviewer falls back
   to single-shot silently — exactly the symptom this PR is trying to
   fix. The probe says NOOP_VENV; the actual consumer fails. Probe and
   consumer use different Pythons.

   Replicate what site.py would do: after inserting site-packages,
   also insert win32/ and win32/lib/, then exec pywin32_bootstrap.py.
   Pulled into a shared helper _inject_agent_sdk_venv_into_syspath()
   so both consumer sites (3P SDK fallback, agentic_review fallback)
   call the same code — Windows handling stays in one place.

Verified on macOS (POSIX path unchanged):
- Helper end-to-end test: POSIX-layout venv detected + fake package
  imports successfully via the injected path
- Windows-layout venv also detected; win32 branch correctly skipped
  via sys.platform check
- Both files pass py_compile

Credit: @mhegazy verified the previous commit on Win11 ARM64 / Py 3.13
/ Git Bash, surfaced both issues end-to-end, and provided the exact
fix patterns. This commit applies them with the pywin32 part factored
into a shared helper (vs. inlining at both consumer sites).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 15:07:33 -07:00
Mohamed Hegazy
4decd2e3b2
Enable agentic commit reviewer on Windows
The agentic reviewer is silently no-op on Windows today. SessionStart
bootstrap (ensure_agent_sdk.py) short-circuits with SKIP_WIN32 because
the consumer glob in llm.py only matches POSIX venv layout
(lib/pythonX.Y/site-packages). On Windows, venvs use Lib/site-packages
(capital L, no pythonX.Y subdir), so even if a venv got built the
glob wouldn't find its contents.

Result: Windows users on default installs (no system-wide
claude_agent_sdk) get layer 1 (pattern warnings) and layer 2 (single-
shot LLM diff review) but not layer 3 — the cross-file agentic review
that catches IDOR, auth-bypass, cross-file SSRF, and other things that
need to read related files. Plugin description claims layer 3 but it
silently doesn't run.

Three changes:

1. llm.py — extend the consumer glob (2 sites: 3P SDK fallback at
   ~L297, agentic_review fallback at ~L1090) to also match the Windows
   Lib/site-packages layout, so a venv built on Windows is actually
   discoverable.

2. ensure_agent_sdk.py — remove the sys.platform == 'win32' early-exit
   so the SessionStart bootstrap builds the venv on Windows too.
   Outcome code 4 (formerly SKIP_WIN32) is retired but not reused so
   pre-fix telemetry rows still decode correctly.

3. ensure_agent_sdk.py — venv_py path now branches on sys.platform:
   Windows venvs put the interpreter at Scripts\python.exe; POSIX
   uses bin/python. Previously assumed POSIX, so even with the glob
   fix, the post-build SDK-importability probe would fail on Windows.

Verified locally on macOS:
- glob test: both layouts now match (POSIX venv detected, simulated
  Windows venv also detected via the new Lib/site-packages branch)
- both files pass py_compile
- POSIX path unchanged (sys.platform != 'win32' so old branch runs)

Not verified on Windows in this commit — needs an actual Windows
runner to confirm the venv build + SDK import + subprocess plumbing
all work end-to-end. The SDK spawns a child claude.exe; Windows
process plumbing has its own quirks (shell semantics, path escaping)
that may surface separately. Worth a controlled rollout (one-week
soak under env-var opt-in before flipping default).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 14:50:51 -07:00
Mohamed Hegazy
e77ff913ad
Merge pull request #2054 from anthropics/fix-2043-windows-posix-path
security-guidance: convert POSIX script paths to Windows form on Git Bash
2026-05-27 14:49:38 -07:00
Mohamed Hegazy
390c2fe785
Convert POSIX script paths to Windows form before exec on Git Bash
Fixes #2043. On Git Bash for Windows, Claude Code hands script paths to
the shim in POSIX form (`/c/Users/...`). We exec a Windows `python.exe`
(the `python3` Microsoft Store stub fails the probe), and Windows Python
interprets the leading `/` as the root of the current drive — `/c/...`
becomes `C:\c\Users\...` or `D:\c\Users\...` depending on which
drive the shell happens to be on, fails with ENOENT, and every
Edit/Write/MultiEdit blocks until the session restarts.

Convert absolute path args via `cygpath -w` (a Git Bash builtin) before
exec. Guarded by `command -v cygpath` so macOS/Linux fall straight
through unchanged; `cygpath -w` is idempotent on already-Windows paths
so the rare mixed-form case is safe. Only `/*` paths are converted —
Windows-form paths reaching the shim are already openable by python.exe.

Verified locally:
- cygpath absent on macOS → guard skips → POSIX behavior unchanged
- end-to-end shim invocation with a POSIX path on macOS exits 0
- stubbed cygpath -w on /c/Users/test/hook.py produces C:\Users\test\hook.py

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 14:04:09 -07:00
github-actions[bot]
1109c43a9d
Bump 68 plugin SHA pin(s) to upstream HEAD (#2049)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-27 18:09:45 +01:00
Noah Zweben
4c4b3009e0
ci: validate Apache 2.0 LICENSE file exists in every plugin (#2028)
Co-authored-by: Claude <noreply@anthropic.com>
2026-05-27 17:25:23 +01:00
Bryan Thompson
fd06e9957e
Bump carta-* SHA pins (3 plugins) to upstream HEAD (#2052) 2026-05-27 17:23:47 +01:00
Mohamed Hegazy
a8f5f1b3c9
Merge pull request #2041 from anthropics/security-guidance-update
Update security-guidance plugin
2026-05-26 14:07:55 -07:00
Mohamed Hegazy
0bde168648
Update security-guidance plugin 2026-05-26 14:06:52 -07:00
zenexer-ant
1b527e2ee7
ci: migrate scan-plugins.yml to Workload Identity Federation auth (#1991)
* ci: migrate scan-plugins.yml to Workload Identity Federation auth

Replaces the static ANTHROPIC_API_KEY repo secret with Workload
Identity Federation: the scan-plugins shared action mints a GitHub
OIDC token (id-token: write) and the claude CLI exchanges it for a
short-lived bearer. The federation rule is bound to this repository
(repository_id-pinned).

Depends on anthropics/claude-plugins-community#34 (adds the WIF
inputs to the shared action). Pinned to that PR's head SHA; will
re-pin to a main-branch SHA once #34 merges.

Drops the 'Require ANTHROPIC_API_KEY' fail-closed guard — the WIF
inputs are literal in this file, so the action's skip-if-no-auth
path can't trigger. Updates the prompt-injection security comment
to reflect the short-lived bearer model.

* scan-plugins: re-pin to cpc#34 merge commit on main

claude-plugins-community#34 merged at e85f0d65b4fc87f07862e1dcdc467950514414ec — re-pinning from
the PR head SHA to the squash-merge commit on main so the pin survives
any future branch GC.
2026-05-24 14:48:46 -07:00
Bryan Thompson
3449c10cd1
fix(UI5): Rename GitHub repository and bump SHAs (#1976)
Updates ui5 and ui5-typescript-conversion to the renamed upstream
repo UI5/plugins-coding-agents (formerly UI5/plugins-claude) and
bumps both SHA pins to current upstream main.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 10:48:25 -05:00
Tobin South
cb8424c099
Fix MCP URL probe: connection failure was reported as PASS (#1922)
curl writes "000" to -w '%{http_code}' on a connection failure AND exits
nonzero. The previous fallback put the echo inside the command
substitution — both wrote, the captured value was "000000", and the
case statement's 000) arm didn't match, so dead hosts fell through to
PASS. Move the fallback assignment outside the substitution so the
captured value is exactly "000" and connection failures fail.

Also skip entries with an empty url field — those are placeholders
awaiting user config, not dead endpoints, and would false-fail.
2026-05-22 09:57:14 -05:00
github-actions[bot]
1d5ba6426a
Bump 51 plugin SHA pin(s) to upstream HEAD (#1957)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-21 13:51:20 -07:00
Den Delimarsky
6cc16f4b16
Merge pull request #1953 from anthropics/add-plugin/mcp-tunnels
Add mcp-tunnels plugin
2026-05-20 23:16:43 -07:00
Den Delimarsky
529d105a78
Rename mcp-gateway -> mcp-proxy throughout
Aligns the compose service name, local config filename, and all
log/restart commands with the image and binary name. Adds an explicit
-config arg since the image CMD still defaults to the legacy
/etc/mcp-gateway path.

🏠 Remote-Dev: homespace
2026-05-21 06:06:15 +00:00
Den Delimarsky
12482fd9e2
Link to public MCP tunnels docs and use public mcp-proxy image
- Replace doc references with platform.claude.com URLs (overview,
  quickstart, security, deploy-compose, deploy-helm, console,
  troubleshooting, reference, WIF)
- Swap the POC mcp-proxy image for the public registry digest used in
  the published quickstart

🏠 Remote-Dev: homespace
2026-05-21 05:39:34 +00:00
Den Delimarsky
0a6ff87909
Add mcp-tunnels plugin
Adds the /create-docker-mcp-tunnel command, which drives the MCP tunnels
Docker Compose quickstart end to end: preflight checks, certificate
generation, proxy config, cloudflared, an optional sample FastMCP server,
and verification from Managed Agents and the Messages API.

Migrated from anthropic-experimental/mcp-tunnel-skills.

🏠 Remote-Dev: homespace
2026-05-21 05:24:44 +00:00
claude[bot]
d68033bd1a
Bump mercadopago to 63ff263c (v2 + PreToolUse hook gating) (#1949)
Bumps the mercadopago plugin pin from 1de8d97e to 63ff263c (latest main).

v2 replaces the mcp-launcher.sh keychain-read / npx -y mcp-remote
wrapper with a plain type:"http" MCP entry pointing at
https://mcp.mercadopago.com/mcp, and consolidates 13 skills into 4
orchestration skills. The pinned SHA also includes the May 19 fix
that gates the PreToolUse hook on project relevance so it no longer
runs on unrelated projects.

Description updated to match the partner's v2 self-description.

https://claude.ai/code/session_01KRC2Uv6UaFFdrt7sjn45yT

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-20 22:47:38 +01:00
Mohamed Hegazy
bef2b9b246
Merge pull request #1935 from anthropics/fix/quote-claude-plugin-root-paths
fix: quote ${CLAUDE_PLUGIN_ROOT} in hookify and security-guidance hook commands
2026-05-19 17:54:18 -07:00
Mohamed Hegazy
b58bdbf551
fix: quote \${CLAUDE_PLUGIN_ROOT} in hookify and security-guidance hook commands
Paths containing spaces (common on Windows, e.g. C:\Users\Some User\...)
cause shell word-splitting when CLAUDE_PLUGIN_ROOT is unquoted, resulting
in hooks erroring with "No such file or directory" on every tool call.

Wraps the path in double quotes for all five affected hook commands.
Fixes the pattern reported in issue #57946. Closes the fix surfaced in PR #1921.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 17:53:52 -07:00
Bryan Thompson
ae21a93679
Bump snowflake-cortex-code to v3.1.0 (#1932) 2026-05-19 18:55:48 +01:00
Tobin South
6a05dc286d
Add 24 first-party plugins from major-brand orgs (#1919)
Promote first-party plugins from recognizable companies that publish
deep, actively-maintained Claude Code plugins from their official GitHub
orgs. All entries are SHA-pinned to current default-branch HEAD.

Development:
- apollo-skills (Apollo GraphQL): 14 GraphQL skills + Apollo MCP server
- appwrite (Appwrite): 11 SDK skills + 2 commands + dual MCP
- forge-skills (Atlassian): Forge scaffold/review/debug + 2 hosted MCPs
- buildkite (Buildkite): 6 CI/CD skills + hosted MCP
- circle-skills (Circle): 16 USDC/stablecoin dev skills + hosted MCP
- codspeed (CodSpeed): perf profiling skills + remote MCP
- dominodatalab (Domino Data Lab): 22 skills + 3 agents + bundled MCP
- lumen (Ory): local semantic code-search MCP + auto-index hooks
- mcp-apps (Model Context Protocol): MCP Apps SDK skills
- resend (Resend): email API/CLI/React Email skills + bundled MCP
- teamcity-cli (JetBrains): TeamCity CI/CD CLI agent skill
- togetherai-skills (Together AI): 12 inference/training/GPU skills

Database:
- clickhouse-best-practices (ClickHouse): 28 schema/query/ingestion rules
- datahub-skills (DataHub): 12 catalog/lineage/quality skills + 4 agents
- duckdb-skills (DuckDB): 9 file-query/docs/extension skills
- redis-development (Redis): data structures, query engine, vector search

Security:
- duende-skills (Duende): 22 OAuth/OIDC/IdentityServer skills + 2 agents
- workos (WorkOS): AuthKit/SSO/Directory Sync/RBAC router skill

Monitoring:
- rootly (Rootly): 18 incident-management skills + 3 agents + hosted MCP
- sentry-cli (Sentry): Sentry CLI agent skill

Design:
- hyperframes (HeyGen): 15 HTML-to-video framework skills
- runway-api (Runway): 17 video/image/audio generation skills

Productivity / Location:
- hunter (Hunter.io): 9 prospecting skills + remote MCP
- mapbox (Mapbox): 19 geospatial skills + 3 remote MCP servers

Source structure: 19 repo-root plugins (url source), 5 subdirectory
plugins (git-subdir source). All cross-referenced against existing
entries to avoid duplicates.

Two candidates excluded pending upstream fixes:
- launchdarkly: plugin.json has unrecognized 'logo' key (schema error)
- medusa-dev: skill has malformed YAML frontmatter
2026-05-19 08:20:20 -05:00
Tobin South
d42e163958
Bump 25 plugin SHA pins to upstream HEAD (huggingface–railway) (#1914)
* Bump 26 plugin SHA pins to upstream HEAD

* Revert mercadopago SHA bump

The new upstream SHA adds a PreToolUse hook that fires on every
Bash/Edit/Write/Read in all sessions and globally blocks reading .env
files, regardless of project relevance. The policy scan flags this as
out of scope for what the plugin description advertises. Leave at the
prior pin until the upstream gates the hook on project relevance.
2026-05-19 08:19:35 -05:00
Bryan Thompson
4bf08583c3
Add carta-crm and carta-investors plugins (#1877) 2026-05-19 05:04:40 +01:00
Tobin South
9f0275ae44
Add convex-backend plugin (#1918) 2026-05-18 16:56:50 -07:00
Tobin South
0b9a622ecb
Fix broken plugin source configs and bump their SHAs (#1915)
* Fix broken plugin source configs and bump their SHAs

Several external plugins had source configs that no longer matched the
upstream layout, so the automated SHA bump skipped them indefinitely.
Add the missing path field where the manifest moved into a subdirectory,
correct stale ref/commit metadata, and update the skills list for the
one strict:false skills-only entry.

- rc, revenuecat: upstream moved the plugin from repo root into
  revenuecat/. Add path and bump SHA.
- zilliz: plugin moved from repo root into plugins/zilliz/. Add path
  and bump SHA.
- sumup: plugin lives at providers/claude/plugin/ (declared by the
  upstream marketplace.json) but our entry never had a path. Add it
  and bump SHA.
- mintlify: pure SHA bump. Repo layout unchanged between SHAs; the
  upstream remains a marketplace-style repo with no plugin.json, same
  as the currently pinned SHA.
- netsuite-suitecloud (strict:false skills entry): bump SHA and add
  the four new skill directories upstream added since the last pin.
- 42crunch-api-security-testing: ref said v1.0.1 but the pinned SHA
  is actually v1.5.5. Correct the label; the SHA is already current.
- jfrog: commit and sha fields had drifted apart. Set both to
  upstream HEAD.

Each new SHA verified to be on the upstream default branch and the
referenced manifest validated with claude plugin validate.

* Revert mintlify and netsuite-suitecloud changes

The validate-plugins check requires a plugin manifest at the pinned SHA
even for strict:false entries. Neither repo has one at any SHA, so a
SHA bump fails CI. Leave them at the existing pin until either the
upstream adds a manifest or the validator learns to honor strict:false.
2026-05-18 23:33:38 +01:00
Tobin South
b7c0654137
Raise bump cap with verdict cache and skip-and-revert (#1913)
* Cache scan verdicts and drop policy-failing entries from bump PRs

Three changes that together let the nightly bump clear any backlog in a
single run without blocking on a single bad upstream or re-burning Claude
time on already-scanned SHAs:

- bump-plugin-shas.yml: raise max-bumps default 20 -> 130 (above the
  external entry count, so a single run can clear a full backlog) and add
  an explicit 60-min job timeout. The cap was the only thing bounding the
  blast radius of a single policy failure; the changes below take over
  that role so the cap can be lifted.

- scan-plugins.yml: add a verdict cache keyed on (plugin, sha, policy
  hash). The bump action force-resets bump/plugin-shas every night, which
  makes the same SHAs reappear in the diff on consecutive nights — without
  the cache the scan would re-burn ~90s of Claude time per entry per
  night. Cached verdicts (pass and fail) are served from disk; only
  uncached SHAs are scanned. The job still fails on cached failures so
  the required check stays honest.

- revert-failed-bumps.yml (new): after a Scan Plugins workflow_run on
  bump/plugin-shas concludes with a failure, drop just the failing
  entries' source.sha back to main's pin via a follow-up signed commit
  and re-dispatch the scan. The re-dispatch finds only cached-pass
  entries and goes green in seconds. Bounded at 3 passes/night, restricted
  to SHA-only diffs, and aborts if the bump branch was tampered with.

* Harden bump cache and revert workflows after review

- revert-failed-bumps: replace the time-based revert budget (anchored on
  the PR head, which a revert commit immediately replaces — never
  accumulating past 1) with a commit count: every nightly bump force-
  resets to one commit and every revert pass adds exactly one, so
  commits > MAX+1 is the budget without date math, pagination, or
  exposure to comment spoofing.
- revert-failed-bumps: filter the bump PR by head owner so a fork PR
  with a branch named bump/plugin-shas can't be selected.
- revert-failed-bumps: continue-on-error on the artifact download so a
  scan that died before uploading (infra error) doesn't fail the revert
  job — the missing-file guard downstream handles it.
- scan-plugins: add a per-ref concurrency group so concurrent scans
  don't lose one another's cache writes; key the cache on run_attempt
  so a re-run can save its own verdicts.
- scan-plugins: store the full source object in the cache and require
  source equality on lookup, so a repo/path change at the same SHA
  misses the cache instead of getting a stale verdict.
- scan-plugins / revert-failed-bumps: strip markdown control chars,
  wrap model-generated text in code spans (neutralizes auto-linked
  URLs), and redact key-shaped tokens before they reach the step
  summary, artifact, cache, or PR comment.
2026-05-18 20:55:20 +01:00
Tobin South
af4e1ad69e
Bump 21 plugin SHA pins to upstream HEAD (#1911) 2026-05-18 20:55:03 +01:00
Tobin South
de2bcc9411
Bump 27 plugin SHA pins to upstream HEAD (#1912) 2026-05-18 20:52:54 +01:00
Tobin South
e98784f00e
Run plugin SHA bump nightly instead of weekly (#1909)
Upstream plugins move daily; a weekly sweep with a 20-bump cap can fall
behind. Each run force-resets the bump branch, so stale unmerged PRs are
replaced rather than piling up.
2026-05-18 19:53:59 +01:00
Tobin South
237a6b9707
Add CI check for HTTP MCP server URL liveness (#1910)
Walks marketplace.json for vendored plugins, extracts http/sse MCP
server URLs from .mcp.json / mcp.json / plugin.json, and probes each
with HEAD then a JSON-RPC POST fallback. Fails on 404/410 and
connection errors; passes on auth/method errors (expected without
credentials). Runs on PR, daily schedule, and manual dispatch.

External (SHA-pinned) plugins are out of scope — their .mcp.json
isn't checked out here.
2026-05-18 13:24:31 -05:00
github-actions[bot]
0c54d4ac15
Bump 20 plugin SHA pin(s) to upstream HEAD (#1904)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-18 18:52:12 +01:00
Bryan Thompson
61b760aafc
Add save-to-spotify plugin (#1905) 2026-05-18 08:59:59 -07:00
Bryan Thompson
f475d3ce58
Add zoominfo plugin (#1885) 2026-05-17 17:49:38 -07:00
Bryan Thompson
d7b273d2b4
Bump crowdstrike-falcon-foundry SHA to v1.0.0 (#1842)
Pins to the v1.0.0 tag (a6a500c) instead of pre-release HEAD (e7fa026).
2026-05-17 17:49:15 -07:00
Bryan Thompson
b5a156b6ec
Add carta-cap-table plugin (#1876) 2026-05-16 07:55:29 -05:00
Tobin South
32b176e6aa
Bump pagerduty plugin to latest upstream SHA (#1862)
Picks up v1.1.0: new /create-pagerduty-skill command (Early Access).
2026-05-16 07:55:14 -05:00
Bryan Thompson
d8e4105231
Bump vanta-mcp-plugin SHA to 345d86b5 (#1843) 2026-05-16 07:55:04 -05:00
Bryan Thompson
5dbfa0fade
Bump box plugin SHA and enumerate skills (#1845) 2026-05-15 23:54:38 +01:00
Twisha Bansal
1a2f18b05c
chore: modify data-agent-kit-starter-pack plugin details (#1826)
* chore: modify data-agent-kit-starter-pack plugin details

Updated the description and homepage of the data-agent-kit-starter-pack plugin, and changed the SHA.

* update sha for latest commit
2026-05-12 22:59:22 +01:00
Dickson Tsai
1cf022eba1
Fix servicenow-sdk ref: ServiceNow/sdk uses master, not main (#1830)
The ServiceNow/sdk repository's default branch is 'master' and there is
no 'main' branch. The pinned SHA (06adf37) is the current head of
'master'. Update the ref so future SHA bumps target the correct branch.
2026-05-12 18:05:45 +01:00
Morgan Lunt
573ecf32cd
Merge pull request #1820 from anthropics/morganl/code-modernization-plugin
code-modernization: fix pipeline gaps, redesign harden, dry-run hardening
2026-05-12 09:58:41 -07:00
Morgan Lunt
5e4a45001d
code-modernization: harden writes a patch instead of editing legacy; make map/security guidance language-agnostic
- modernize-harden: never edits legacy/ anymore. Writes findings plus a
  reviewed unified diff to analysis/<system>/security_remediation.patch.
  A second security-auditor pass reviews each hunk (RESOLVES / PARTIAL /
  INTRODUCES-RISK) before presenting. The user reviews and applies the
  patch deliberately, then re-runs to verify. This makes every command
  consistent with the recommended deny Edit(legacy/**) workspace setting,
  so the README's exception note is gone.
- modernize-map: restructure the parse-target list around three stack-
  agnostic principles (dispatcher targets are variables; code-storage
  joins live in config; entry points live in deployment descriptors), with
  COBOL/Java/web/CLI examples on equal footing rather than COBOL-dominant.
  Same protections against false dead-code findings, less stack-specific.
- security-auditor agent: rephrase coverage items in stack-neutral terms
  (record layouts/temp datasets, resource ACLs, deployment scripts/job
  definitions, batch input records) so the checklist reads naturally for
  COBOL, Java EE, .NET, and web targets alike.
- README: drop the harden exception note; describe the patch workflow.
2026-05-11 16:46:03 -07:00
Morgan Lunt
22a1b25977
Harden code-modernization plugin from a real CardDemo dry run
Fixes found by running the discovery workflow against the AWS CardDemo
mainframe sample (~50 KLOC of COBOL/CICS/JCL/BMS/VSAM):

- modernize-assess: add scc -> cloc -> find/wc fallback chain with the
  COCOMO-II formula so Step 1 works when scc isn't installed; same for
  portfolio-mode cloc/lizard. Drop the reference to a specific
  agent-spawning tool name (just "in parallel"). Sharpen the structural-
  map subagent prompt: 5-12 domains, subgraph clustering, ~40-edge cap,
  repo-relative paths, dangling-reference check.
- modernize-map: expand the parse-target list with the things a
  literal-minded reader would miss on a real mainframe codebase — CICS
  CSD DEFINE TRANSACTION/FILE for entry points and online file I/O,
  EXEC CICS file ops, SELECT...ASSIGN TO joined with JCL DD,
  EXEC SQL table refs (not JCL DD), SEND/RECEIVE MAP, dynamic
  data-name XCTL resolution, COBOL fixed-format column slicing. Without
  these the dead-code list is wrong (most CICS programs look unreachable).
  Also write a machine-readable topology.json alongside the summary.
- modernize-extract-rules: add a Priority (P0/P1/P2) field with a
  heuristic, and an optional Suspected-defect field. modernize-brief
  reads P0 rules to build the behavior contract, but the Rule Card had
  no priority slot — the chain was broken.
- modernize-brief: read the new P0 tags; flag low-confidence P0 rules as
  SME blockers.
- modernize-reimagine: drop "for the demo" wording.
- security-auditor agent: add mainframe/COBOL coverage items (RACF,
  JCL/PROC creds, BMS field validation, DB2 dynamic SQL, copybook PII)
  and mark web-only items as such so it adapts to the target stack.
- README: add Optional Tooling section and a symlink example for the
  expected layout.
2026-05-11 16:28:27 -07:00
Morgan Lunt
718818146e
Fix code-modernization plugin: align README with commands, fix pipeline gaps
- modernize-brief: read TOPOLOGY.html (what modernize-map actually
  produces) instead of nonexistent TOPOLOGY.md, and tell the user which
  command produces each missing input.
- README: rewrite the Commands section to match actual command behavior —
  correct output filenames, ordering (brief is the synthesis/approval gate
  after discovery, not the first step), agent attributions, and required
  args. Add a workspace-layout note and an explicit callout that
  modernize-harden edits legacy/, which conflicts with the recommended
  deny rule. Reconcile the Overview and Typical Workflow sequences.
- modernize-assess: generalize the production-runtime overlay step so it
  no longer assumes a specific MCP server/tool; mark it optional. Fix
  app/jcl/ -> legacy/$1/jcl/ for layout consistency.
- modernize-map: make TOPOLOGY.html self-contained (load Mermaid from a
  CDN) so it renders in any browser; drop assumptions about an external
  artifact renderer. Generalize the telemetry annotation note.
- business-rules-extractor agent: fix command cross-reference to the
  actual command name.
- plugin.json: include the brief step in the workflow description.
2026-05-11 16:17:59 -07:00
Tobin South
45896c8f2f
Make Scan Plugins a viable required check; auto-dispatch on bump PRs (#1815)
Scan Plugins is meant to gate every change to marketplace.json, but two
gaps made that unenforceable:

1. The bump workflow opens PRs with GITHUB_TOKEN, which GitHub exempts
   from on:pull_request triggers. Weekly bump PRs (e.g. #1809) get no
   scan check at all.
2. The workflow had a paths filter, so a required-check ruleset for
   `scan` would block every PR that doesn't touch marketplace.json
   (no check run = pending forever).

Fixes:

scan-plugins.yml
- Drop the paths filter; replace with a step-level `git diff --quiet`
  early-exit on the same paths. The check now reports on every PR,
  which makes it safe to require.
- Fail closed when ANTHROPIC_API_KEY is unset and a scan is needed.
  The shared action no-ops gracefully in that case (right default for
  community repos), but a required check that silently does nothing is
  a rubber stamp.

bump-plugin-shas.yml
- After the action opens the bump PR, `gh workflow run scan-plugins.yml
  --ref bump/plugin-shas`. workflow_dispatch is exempt from the
  GITHUB_TOKEN recursion guard, and the resulting check run lands on
  the branch HEAD (= PR head), so it satisfies the required check.
- Add `actions: write` so the dispatch is allowed.

Follow-up: add a repo ruleset on main requiring the `scan` check
(integration: github-actions) once this merges.
2026-05-11 15:14:33 -05:00