Compare commits

..

1 Commits

Author SHA1 Message Date
Mohamed Hegazy
66a63f2c43 security-guidance: probe for a non-PATH 3.10+ interpreter on HOOK_PY_INCOMPATIBLE (2.0.6 → 2.0.7)
Instrument-first for the macOS Python-3.9 cohort.

v2.0.6 telemetry: ~13.6% of macOS sessions (~6,337 users) run on Apple's
Python 3.9 → HOOK_PY_INCOMPATIBLE → the agentic reviewer can't load (needs
3.10+ syntax). That's ~12x macOS's build-failure rate and the single
biggest macOS degradation. sg-python.sh only probes `python3.1x` on PATH,
so these users have nothing newer ON PATH — but they may still have a
3.10+ installed at a standard location that isn't on the hook's PATH
(Homebrew /opt/homebrew, python.org framework, etc.).

Before building an explicit-path interpreter search, size the RECOVERABLE
fraction: `_probe_alt_python()` checks Homebrew / python.org / distro
locations for a 3.10+ binary and emits the highest found as `sdk_alt_py`
(major*100+minor, or 0 = genuinely 3.9-only). Telemetry-only; probed ONLY
on the HOOK_PY_INCOMPATIBLE path, so healthy sessions never run it.

After a data cycle: non-zero sdk_alt_py = recoverable by an explicit-path
search in sg-python.sh; 0 = needs a user-side Python install (the one-time
notice is the only lever). That decides whether the search is worth building.

Verified locally on macOS Python 3.13:
  - py_compile clean; probe returns 314 on this Mac (homebrew 3.14 present).
  - 7 new tests (test_altpython_probe.py): highest-version selection,
    0-when-none (mocked os.access), framework/distro path parsing, only
    counts 3.10+, and emit gated on outcome==HOOK_PY_INCOMPATIBLE.
  - Full suite 575/575 + 2 skipped.

No behavior change — purely additive telemetry on the incompatible path.
Version 2.0.6 -> 2.0.7 per the per-PR-bump policy (#2114).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 12:57:33 -07:00
3 changed files with 118 additions and 162 deletions

View File

@@ -35,7 +35,7 @@
"url": "https://github.com/adobe/skills.git",
"path": "plugins/creative-cloud/adobe-for-creativity",
"ref": "main",
"sha": "2178b523eae8dcc75251829a49b24e62e8af6773"
"sha": "c467bf831064ebda26f39dd30c02d7cce03eb26c"
},
"homepage": "https://github.com/adobe/skills/tree/main/plugins/creative-cloud/adobe-for-creativity"
},
@@ -98,8 +98,8 @@
"homepage": "https://www.airtable.com"
},
{
"name": "airwallex-agentos",
"description": "Bring Airwallex's global financial infrastructure to Claude. Orchestrate actions across your account in plain language, e.g., set up invoices from a PO, onboard suppliers from invoices, and check current cash position across currencies. AgentOS bundles pre-built finance Skills with MCP servers. A public CLI connects your agent to Airwallex's capabilities.",
"name": "airwallex",
"description": "Airwallex CLI plugin for Claude — skills for payments, billing, invoicing, beneficiary creation, card provisioning, and cashflow management.",
"author": {
"name": "Airwallex"
},
@@ -107,7 +107,7 @@
"source": {
"source": "git-subdir",
"url": "https://github.com/airwallex/airwallex-marketplace.git",
"path": "plugins/airwallex-agentos",
"path": "plugins/airwallex",
"ref": "master",
"sha": "683a7536f9445c07439d087607b44b0383b8c41d"
},
@@ -123,7 +123,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/alloydb.git",
"sha": "98bdfce9ab49622f5f4b1428130cc79feb37d93e"
"sha": "bbf4eb3664faf129ab8ff8c4b959d7e59c03d347"
},
"homepage": "https://cloud.google.com/alloydb"
},
@@ -137,7 +137,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/alloydb-omni.git",
"sha": "23f9166ba3950728fb2c48390b2e35cc3ddd3b35"
"sha": "fbf2476630629f32ce0029bbd62d225950fdfd6d"
},
"homepage": "https://github.com/gemini-cli-extensions/alloydb-omni"
},
@@ -150,7 +150,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/amazon-location-service",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -223,7 +223,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -275,7 +275,7 @@
"url": "https://github.com/auth0/agent-skills.git",
"path": "plugins/auth0",
"ref": "main",
"sha": "fcc4f206e938116c2abb44f3484235e6f728ced2"
"sha": "b595bdb9b574569e864eef86c3d48c06e2cf414c"
},
"homepage": "https://auth0.com/docs/quickstart/agent-skills"
},
@@ -291,23 +291,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-agents",
"ref": "main",
"sha": "af9a95cce54248a338f9be95f8ebd41ceafa3b73"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
{
"name": "aws-agents-for-devsecops",
"description": "Investigate incidents, review code and execute UAT for release readiness, scan code for vulnerabilities, and run penetration tests with AWS DevOps Agent and AWS Security Agent.",
"author": {
"name": "Amazon Web Services"
},
"category": "development",
"source": {
"source": "git-subdir",
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-agents-for-devsecops",
"ref": "main",
"sha": "9ad8fe7d729435ae3788a16fdbf308520ee2b78e"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -320,7 +304,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/aws-amplify",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -336,7 +320,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-core",
"ref": "main",
"sha": "af9a95cce54248a338f9be95f8ebd41ceafa3b73"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -352,7 +336,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-data-analytics",
"ref": "main",
"sha": "af9a95cce54248a338f9be95f8ebd41ceafa3b73"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -381,7 +365,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/aws-serverless",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -397,26 +381,10 @@
"url": "https://github.com/awslabs/startups.git",
"path": "advisor/plugins/aws-startup-advisor",
"ref": "main",
"sha": "2e1d603a43b241f13ed40e4d1762f5e4ed744ecc"
"sha": "3eae13125da8cc923f010b19321137efd0e69a66"
},
"homepage": "https://github.com/awslabs/startups"
},
{
"name": "aws-transform",
"description": "Migrate, modernize, and upgrade codebases to AWS. Transforms .NET Framework to .NET 8/10, mainframe COBOL to Java, VMware VMs to EC2, SQL Server to Aurora, and upgrades Java/Python/Node.js versions and AWS SDKs. AWS Transform - continuous modernization analyzes codebases for tech debt, security issues, and upgrade opportunities, then remediates them.",
"author": {
"name": "Amazon Web Services"
},
"category": "migration",
"source": {
"source": "git-subdir",
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/aws-transform",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
{
"name": "azure",
"description": "Transform Claude into an Azure expert. This plugin integrates the Azure MCP server and specialized Azure skills to move beyond generic advice. It enables Claude to perform real-world tasks: listing resources, validating deployments, diagnosing infrastructure issues, and optimizing costs across 50+ Azure services.",
@@ -424,7 +392,7 @@
"source": {
"source": "url",
"url": "https://github.com/microsoft/azure-skills.git",
"sha": "3edfc3e7636d20c43fe7b24e9e6ca2c9e41c4ac7"
"sha": "82492494405b948c8422766ddae390714bbd78ed"
},
"homepage": "https://github.com/microsoft/azure-skills"
},
@@ -476,26 +444,10 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/bigquery-data-analytics.git",
"sha": "4e64d8488e95697a348b88b8ee47f0e676b2544b"
"sha": "9cee2a03105d74648231ed3a5c4a63c4f194790d"
},
"homepage": "https://github.com/gemini-cli-extensions/bigquery-data-analytics"
},
{
"name": "boltz",
"description": "Predict structures, screen molecules and proteins, and design binders with Boltz from Claude Code.",
"author": {
"name": "Boltz"
},
"category": "development",
"source": {
"source": "git-subdir",
"url": "https://github.com/boltz-bio/boltz-api-skills.git",
"path": "plugins/boltz",
"ref": "main",
"sha": "2d2830181a349415a172bdbd5272d84038924da8"
},
"homepage": "https://boltz.bio"
},
{
"name": "box",
"description": "Work with your Box content directly from Claude Code — search files, organize folders, collaborate with your team, and use Box AI to answer questions, summarize documents, and extract data without leaving your workflow.",
@@ -534,7 +486,7 @@
"source": {
"source": "url",
"url": "https://github.com/buildkite/skills.git",
"sha": "ffffb1ed6c82a3b170433572b93d85b764c91bab"
"sha": "e6c7784f46a2c070fdf7e6fe1b61cd3ca0e20166"
},
"homepage": "https://buildkite.com"
},
@@ -550,7 +502,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-cap-table",
"ref": "main",
"sha": "2a60b98af608f1510f57555f54333b4ab3d0d086"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -566,7 +518,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-crm",
"ref": "main",
"sha": "2a60b98af608f1510f57555f54333b4ab3d0d086"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -582,7 +534,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-investors",
"ref": "main",
"sha": "2a60b98af608f1510f57555f54333b4ab3d0d086"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -609,7 +561,7 @@
"source": {
"source": "url",
"url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git",
"sha": "163a581cc1ce279d38d56b2e37e0402c4c9b4510"
"sha": "ed02047ae90f25c4c15adb8fd7e224b963f43135"
},
"homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp"
},
@@ -731,7 +683,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/cloud-sql-mysql.git",
"sha": "4508637f66362b70b75ea6e40d41a7ef8efabcc6"
"sha": "983c804fe7dc58b3e58021960e7e1831a10e08b9"
},
"homepage": "https://github.com/gemini-cli-extensions/cloud-sql-mysql"
},
@@ -759,7 +711,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/cloud-sql-sqlserver.git",
"sha": "e55c1ff46d92dfcfedc6cf1139cf5eb5beb9f02d"
"sha": "8e1490ec8f659a5711655d2fa4241597a63d4883"
},
"homepage": "https://github.com/gemini-cli-extensions/cloud-sql-sqlserver"
},
@@ -852,7 +804,7 @@
"source": {
"source": "url",
"url": "https://github.com/CodSpeedHQ/codspeed.git",
"sha": "b29c40c3c045994c564410c07093cdd8001ab820"
"sha": "9e21a9c0415c848d1c6d7e66c221f7524433899d"
},
"homepage": "https://codspeed.io"
},
@@ -867,20 +819,6 @@
"category": "productivity",
"homepage": "https://github.com/anthropics/claude-plugins-public/tree/main/plugins/commit-commands"
},
{
"name": "confidence",
"description": "Access Confidence feature flags, experiments, and migration tools directly from Claude Code.",
"author": {
"name": "Spotify Confidence"
},
"category": "development",
"source": {
"source": "url",
"url": "https://github.com/spotify/confidence-ai-plugins.git",
"sha": "4854807c4461dba686f2b8b69d0955a83ac6ff7e"
},
"homepage": "https://confidence.spotify.com"
},
{
"name": "context7",
"description": "Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.",
@@ -903,7 +841,7 @@
"source": {
"source": "url",
"url": "https://github.com/get-convex/convex-backend-skill.git",
"sha": "b04d9d3c83bf8446302be95e12cb834fba6fe622"
"sha": "d184f54776d20dd834218b11b83feb42d5e2a065"
},
"homepage": "https://github.com/get-convex/convex-backend-skill",
"keywords": [
@@ -980,7 +918,7 @@
"source": {
"source": "url",
"url": "https://github.com/dash0hq/dash0-agent-plugin.git",
"sha": "9d0f6d3ed65dcd512324f767a49b9d1612ead59d"
"sha": "e1a46f085171787382465b7148070da36127119f"
},
"homepage": "https://dash0.com/"
},
@@ -991,7 +929,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -1005,7 +943,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack.git",
"sha": "0deb62a19fdab2c00ae6c1f7b1359e1c40bd8c6d"
"sha": "65a480a04dc09fe51fab66fde61b1a2baa443741"
},
"homepage": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack"
},
@@ -1015,7 +953,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -1028,7 +966,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/databases-on-aws",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -1070,7 +1008,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/dataproc.git",
"sha": "a8d5220007ae51a7104428acd38748432de597a8"
"sha": "80d126d27d84ded752c84668472dd6f75896fc59"
},
"homepage": "https://github.com/gemini-cli-extensions/dataproc"
},
@@ -1084,7 +1022,7 @@
"source": {
"source": "url",
"url": "https://github.com/datarobot-oss/datarobot-agent-skills.git",
"sha": "5f8979cd971441214066339410aeafeeb6f4c403"
"sha": "6937e65a4f652ecc08b8b53bd7e79f6e3d1f69b3"
},
"homepage": "https://datarobot.com"
},
@@ -1110,7 +1048,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/deploy-on-aws",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -1146,7 +1084,7 @@
"source": {
"source": "url",
"url": "https://github.com/dominodatalab/domino-claude-plugin.git",
"sha": "c2649c78bac350715594352ca61d2df9e3340783"
"sha": "56c3fc39d2f2f26d58d0f27d4dad138b0edec456"
},
"homepage": "https://www.domino.ai"
},
@@ -1174,7 +1112,7 @@
"source": {
"source": "url",
"url": "https://github.com/DuendeSoftware/duende-skills.git",
"sha": "fc252b1747ee45bffd0d8c6007009f7ae637b09b"
"sha": "72e39de9f10c5dafaa7f32f58fcdbd5a8f3e5c14"
},
"homepage": "https://duendesoftware.com"
},
@@ -1212,7 +1150,7 @@
"url": "https://github.com/expo/skills.git",
"path": "plugins/expo",
"ref": "main",
"sha": "b76270a44ce60fd2f1e664d92177e88211722c45"
"sha": "39d50f0caeacec8a17588534bb32aa962c677a3d"
},
"homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md"
},
@@ -1278,7 +1216,7 @@
"source": {
"source": "url",
"url": "https://github.com/firecrawl/firecrawl-claude-plugin.git",
"sha": "e30c89f7b065b29a7283d49a4dcc5e302900fda3"
"sha": "b33447585ac521b091eae672bd4cad4ec1d093f6"
},
"homepage": "https://github.com/firecrawl/firecrawl-claude-plugin.git"
},
@@ -1306,7 +1244,7 @@
"source": {
"source": "url",
"url": "https://github.com/atlassian/forge-skills.git",
"sha": "8c1c2488f213f8f4bf0647b87176c36549e61e3f"
"sha": "c7df956176eb1c2a10ffabc4eaacc5d843d8bede"
},
"homepage": "https://developer.atlassian.com/platform/forge/"
},
@@ -1409,7 +1347,7 @@
"source": {
"source": "url",
"url": "https://github.com/hunter-io/claude-plugin.git",
"sha": "9929ccf4f228171398049633da7afd8f1b65646b"
"sha": "06bcb94a4e6498d8557a4543f8d5c4ea429b0c0a"
},
"homepage": "https://hunter.io"
},
@@ -1423,7 +1361,7 @@
"source": {
"source": "url",
"url": "https://github.com/heygen-com/hyperframes.git",
"sha": "c040e4973a27f8a327e9cae918b94be0d463fd26"
"sha": "3b3ece81d1a0b36038e67e58d9ca620e4a3122e9"
},
"homepage": "https://hyperframes.heygen.com"
},
@@ -1491,7 +1429,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/knowledge-catalog.git",
"sha": "260294e6b662eaccafe1361e88496ea259df79ed"
"sha": "fe4e94035824fa41f7d06426531bbed7bec2520c"
},
"homepage": "https://github.com/gemini-cli-extensions/knowledge-catalog"
},
@@ -1630,7 +1568,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/looker.git",
"sha": "0b4e497ef9839fce0ae1efd40216fee15a1c5e33"
"sha": "ef38964514c9b6634ac9a211d3987222bb36bf6e"
},
"homepage": "https://github.com/gemini-cli-extensions/looker"
},
@@ -1692,7 +1630,7 @@
"source": {
"source": "url",
"url": "https://github.com/lusha-oss/lusha-mcp-plugin.git",
"sha": "aafe0a59cb143d0adc711af2813cd3b9cd5693d0"
"sha": "affbc76b03c1a46c0dffc5b7a374cf7af17b26e8"
},
"homepage": "https://www.lusha.com"
},
@@ -1733,7 +1671,7 @@
"url": "https://github.com/modelcontextprotocol/ext-apps.git",
"path": "plugins/mcp-apps",
"ref": "main",
"sha": "fa1274490873f869c9a084e1abb9cf3031d288c7"
"sha": "ca1d29894fabbd1558885a9ec8620dcb01d7457e"
},
"homepage": "https://modelcontextprotocol.io"
},
@@ -1798,7 +1736,7 @@
"url": "https://github.com/awslabs/startups.git",
"path": "migrate/plugins/migration-to-aws",
"ref": "main",
"sha": "2e1d603a43b241f13ed40e4d1762f5e4ed744ecc"
"sha": "3eae13125da8cc923f010b19321137efd0e69a66"
},
"homepage": "https://github.com/awslabs/startups"
},
@@ -1825,7 +1763,7 @@
"url": "https://github.com/miroapp/miro-ai.git",
"path": "claude-plugins/miro",
"ref": "main",
"sha": "85c2c7347542b3ce185eb1d2793f8d79ad485c63"
"sha": "9d7c3dc0a9a365b298e3808c741c53e2e80d86d1"
},
"homepage": "https://miro.com"
},
@@ -1902,7 +1840,7 @@
"source": {
"source": "url",
"url": "https://github.com/Nimbleway/agent-skills.git",
"sha": "eb97261aa8145fa6d0f45d62d0955805fa06fb91"
"sha": "e72345e283f977d4f7bb4d6d415b5964a385bdf1"
},
"homepage": "https://docs.nimbleway.com/integrations/agent-skills/plugin-installation"
},
@@ -1929,26 +1867,10 @@
"url": "https://github.com/NVIDIA/skills.git",
"path": "plugins/nvidia-skills",
"ref": "main",
"sha": "366564ddf68ad55b3c12a2faee3d2fd3d3de3b36"
"sha": "b0c4c9abca3e0b493d96a1574c9678daf086c4b5"
},
"homepage": "https://github.com/NVIDIA/skills"
},
{
"name": "oracle-ai-data-platform-workbench-engineer-agent",
"description": "Oracle AI Data Platform (AIDP) Workbench engineer agent for Claude Code — a 37-skill agent that operates the full Spark/Delta lakehouse in natural language. Discovers your catalog into a grounding cache, turns plain English into accurate Spark SQL, and runs the lifecycle (CREATE/INSERT/UPDATE/DELETE/MERGE, OPTIMIZE/VACUUM, time-travel). Ingests files, profiles data and sets quality rules, authors and repairs pipelines, provisions clusters, and debugs via the Spark UI. Governs the platform (roles, credential store, Delta Sharing, audit logs), plus native Git, bundles, and MLOps/MLflow. Runs via the official Oracle aidp CLI.",
"author": {
"name": "Oracle"
},
"category": "development",
"source": {
"source": "git-subdir",
"url": "https://github.com/oracle-samples/oracle-aidp-samples.git",
"path": "ai/claude-code-plugins/oracle-ai-data-platform-workbench-engineer-agent",
"ref": "main",
"sha": "13e7a9139b3b62172119c7fc1a63bf4a2eac919d"
},
"homepage": "https://docs.oracle.com/en/cloud/paas/ai-data-platform/index.html"
},
{
"name": "oracle-ai-data-platform-workbench-spark-connectors",
"description": "Oracle AI Data Platform Workbench Spark connectors for Claude Code. 18 connector skills covering every data source workbench customers commonly need: Oracle Autonomous DB family (ALH/ADW/ATP) via wallet/IAM-DB-Token/API-key, ExaCS, Fusion ERP REST, Fusion BICC, EPM Cloud Planning, Essbase 21c, OCI Streaming (Kafka), OCI Object Storage, Apache Iceberg, plus external systems (PostgreSQL, MySQL/HeatWave, SQL Server, Snowflake, Azure ADLS Gen2, AWS S3, generic REST, custom JDBC, Excel). Live-validated on the workbench `tpcds` cluster (Spark 3.5.0): 17 PASS / 4 ship-as-is out of 21 test rows.",
@@ -1961,7 +1883,7 @@
"url": "https://github.com/oracle-samples/oracle-aidp-samples.git",
"path": "ai/claude-code-plugins/oracle-ai-data-platform-workbench-spark-connectors",
"ref": "main",
"sha": "13e7a9139b3b62172119c7fc1a63bf4a2eac919d"
"sha": "fd54df54076da5fa95fdb4a63398d2edb8724edb"
},
"homepage": "https://docs.oracle.com/en/cloud/paas/ai-data-platform/index.html"
},
@@ -1975,7 +1897,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/oracledb.git",
"sha": "6081bf97fc8f1a41c77a7110cb093291a5452a93"
"sha": "56239109760fd8ea838a56c946400347467bfa6d"
},
"homepage": "https://github.com/gemini-cli-extensions/oracledb"
},
@@ -1991,7 +1913,7 @@
"url": "https://github.com/growthxai/output.git",
"path": "coding_assistants/claude/plugins/outputai",
"ref": "main",
"sha": "930738ca247a5ec9cede908d714caa868fbe8709"
"sha": "bd6bd4960b00f340c1e345620a8eb42d6c696e5f"
},
"homepage": "https://output.ai"
},
@@ -2101,7 +2023,7 @@
"source": {
"source": "url",
"url": "https://github.com/PostHog/ai-plugin.git",
"sha": "b6f63b230082e68a67d36af84e90b6522a756f84"
"sha": "071b9b841a987aa93409d4db1499237a5120bc63"
},
"homepage": "https://posthog.com/docs/model-context-protocol"
},
@@ -2233,7 +2155,7 @@
"source": {
"source": "url",
"url": "https://github.com/quarkusio/quarkus-agent-mcp.git",
"sha": "0baae19189bb5c0a74c586e1ba5576d2b503583b"
"sha": "bcab0174a0f3a076a265958d9017da15c1f87d01"
},
"homepage": "https://quarkus.io"
},
@@ -2269,7 +2191,7 @@
"source": "url",
"url": "https://github.com/RevenueCat/rc-claude-code-plugin.git",
"path": "revenuecat",
"sha": "e28ef7dac29c95363b0f8a3152e778f4e1d0725e"
"sha": "e0470e8f5413decb0dc67156057b4b5cfc6df447"
},
"homepage": "https://www.revenuecat.com"
},
@@ -2321,24 +2243,10 @@
"source": "url",
"url": "https://github.com/RevenueCat/rc-claude-code-plugin.git",
"path": "revenuecat",
"sha": "e28ef7dac29c95363b0f8a3152e778f4e1d0725e"
"sha": "e0470e8f5413decb0dc67156057b4b5cfc6df447"
},
"homepage": "https://www.revenuecat.com"
},
{
"name": "rill",
"description": "Skills for developing and querying projects in the Rill business intelligence platform",
"author": {
"name": "Rill Data"
},
"category": "development",
"source": {
"source": "url",
"url": "https://github.com/rilldata/agent-skills.git",
"sha": "9bdc4efa38a9ad419104fc2d1bb3e89529202487"
},
"homepage": "https://docs.rilldata.com/developers/build/ai-configuration"
},
{
"name": "rootly",
"description": "Full-lifecycle incident management: deploy safety, incident response, on-call management, and retrospectives.",
@@ -2420,7 +2328,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/sagemaker-ai",
"ref": "main",
"sha": "46fd59cd1a0751ac15e34754f86f9a06b0900d2c"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -2468,7 +2376,7 @@
"url": "https://github.com/SAP/open-ux-tools.git",
"path": "packages/fiori-mcp-server",
"ref": "main",
"sha": "51365e2da9e26a93b56196af0171f93bcccf5ce5"
"sha": "384fb88f5b4662ec0f7e1ac81689ebccaa9d7cb8"
},
"homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
},
@@ -2507,7 +2415,7 @@
{
"name": "security-guidance",
"description": "Security review for Claude-generated code. Pattern-based warnings on edits, LLM-powered diff review on Stop, and an agentic commit reviewer that catches injection, XSS, SSRF, hardcoded secrets, and 25+ other vulnerability classes.",
"version": "2.0.6",
"version": "2.0.7",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
@@ -2524,7 +2432,7 @@
"source": "git-subdir",
"url": "https://github.com/semgrep/mcp-marketplace.git",
"path": "plugin",
"sha": "6b7cc9dd82e36461ab737d725ef554e370373754"
"sha": "274846f6f9da5f56be53b19170bc008d357142a7"
},
"homepage": "https://github.com/semgrep/mcp-marketplace.git"
},
@@ -2535,7 +2443,7 @@
"source": {
"source": "url",
"url": "https://github.com/getsentry/sentry-for-claude.git",
"sha": "d86aedebf52db128fb081edc46b87ee88affa793"
"sha": "765cca4683e77271900fdf3521a555a04528baaf"
},
"homepage": "https://github.com/getsentry/sentry-for-claude/tree/main"
},
@@ -2551,7 +2459,7 @@
"url": "https://github.com/getsentry/cli.git",
"path": "plugins/sentry-cli",
"ref": "main",
"sha": "a1674824a25e7e6a066f932c2f3746bb0ff70c3b"
"sha": "4fda3dc169b914a8dec53c18d127ccbe67dbbf3e"
},
"homepage": "https://sentry.io"
},
@@ -2704,7 +2612,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/spanner.git",
"sha": "e6a93f9ce95758ce7b7c54330871cfb40e53b976"
"sha": "d4678e2bc04f60f3dfcdb6b916df28e63a0d615f"
},
"homepage": "https://github.com/gemini-cli-extensions/spanner"
},
@@ -2762,7 +2670,7 @@
"source": {
"source": "url",
"url": "https://github.com/obra/superpowers.git",
"sha": "b62616fc12f6a007c6fd5118146821d748da0d33"
"sha": "6fd4507659784c351abbd2bc264c7162cfd386dc"
},
"homepage": "https://github.com/obra/superpowers.git"
},
@@ -2796,7 +2704,7 @@
"source": {
"source": "url",
"url": "https://github.com/JetBrains/teamcity-cli.git",
"sha": "1da7bafc3d34f419397c920172bd12d0a0d81b9d"
"sha": "4865b1b75e77889355393a46dc56a0363ce3330d"
},
"homepage": "https://www.jetbrains.com/teamcity/"
},
@@ -2889,7 +2797,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5",
"ref": "main",
"sha": "60f66f3341cb69ab4f649f1f60d70649bf391be2"
"sha": "80f2d93287054f9d30dd990e842e15bcfca581c9"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -2907,7 +2815,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5-typescript-conversion",
"ref": "main",
"sha": "60f66f3341cb69ab4f649f1f60d70649bf391be2"
"sha": "80f2d93287054f9d30dd990e842e15bcfca581c9"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -3001,7 +2909,7 @@
"source": {
"source": "url",
"url": "https://github.com/wix/skills.git",
"sha": "3210de0af739dd668e1531b8acd9a6a6ec3bf5c4"
"sha": "561315d22a49544d6518d3a753973d3a95dfafcc"
},
"homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills"
},
@@ -3054,7 +2962,7 @@
"url": "https://github.com/zapier/zapier-mcp.git",
"path": "plugins/zapier",
"ref": "main",
"sha": "469b06007824bb859982a95d2dad5caec11e0bf1"
"sha": "ea8ed6b4de66e9bb46c12b3a38da8286e3770ad9"
},
"homepage": "https://github.com/zapier/zapier-mcp/tree/main/plugins/zapier"
},

View File

@@ -1,6 +1,6 @@
{
"name": "security-guidance",
"version": "2.0.6",
"version": "2.0.7",
"description": "Security review for Claude-generated code. Pattern-based warnings on edits, LLM-powered diff review on Stop, and an agentic commit reviewer that catches injection, XSS, SSRF, hardcoded secrets, and 25+ other vulnerability classes.",
"author": {
"name": "David Dworken",

View File

@@ -318,6 +318,46 @@ def _probe_has_pip() -> bool:
return False
def _probe_alt_python() -> int:
"""When the hook interpreter is <3.10 (HOOK_PY_INCOMPATIBLE), look for a
3.10+ interpreter at well-known install locations that aren't necessarily
on the hook's PATH — Homebrew (/opt/homebrew, /usr/local), python.org
framework builds, and the `py`/distro layouts. Returns the HIGHEST version
found encoded as major*100+minor (e.g. 312), or 0 if none.
Purpose (telemetry only, for now): size how many of the macOS Python-3.9
cohort actually HAVE a newer interpreter that sg-python.sh's PATH probe
missed — i.e. how many are RECOVERABLE by an explicit-path search vs.
genuinely 3.9-only. Emitted as sdk_alt_py. Existence-checks the versioned
binaries (cheap); a later explicit-path search would version-verify before
exec'ing. Probed only on the incompatible path, so healthy sessions never
pay for it."""
candidates = []
for minor in (14, 13, 12, 11, 10):
candidates += [
f"/opt/homebrew/bin/python3.{minor}", # Apple-Silicon Homebrew
f"/usr/local/bin/python3.{minor}", # Intel Homebrew / python.org shim
f"/Library/Frameworks/Python.framework/Versions/3.{minor}/bin/python3", # python.org
f"/usr/bin/python3.{minor}", # distro-managed (Linux)
]
best = 0
for path in candidates:
try:
if os.access(path, os.X_OK):
# path name encodes the minor; parse it back to a code
base = os.path.basename(path)
minor = None
if base.startswith("python3."):
minor = int(base.split(".")[1])
elif "/Versions/3." in path:
minor = int(path.split("/Versions/3.")[1].split("/")[0])
if minor is not None:
best = max(best, 300 + minor)
except (OSError, ValueError, IndexError):
continue
return best
def _pip_err_from_stderr(stderr_b):
"""Categorize a pip-install stderr into a known err_kind (the pip subset
of SDK_BOOTSTRAP_ERR_CODES). Used by the --target fallback; mirrors the
@@ -788,6 +828,14 @@ if __name__ == "__main__":
# per healthy session.
if _encode_err_kind(err_kind) == 11:
metrics["sdk_has_pip"] = _probe_has_pip()
# When the hook interpreter is <3.10 (HOOK_PY_INCOMPATIBLE), probe for a
# 3.10+ interpreter at known non-PATH locations. Non-zero sdk_alt_py =
# this user is RECOVERABLE by an explicit-path search in sg-python.sh; 0 =
# genuinely 3.9-only (needs a user install). Sizes the macOS Py-3.9 cohort
# (~13.6% of macOS sessions) before we build the search. Incompatible path
# only — healthy sessions never run it.
if outcome == HOOK_PY_INCOMPATIBLE:
metrics["sdk_alt_py"] = _probe_alt_python()
# Interpreter version (major*100 + minor, e.g. 309 / 312), emitted on
# every bootstrap. Disambiguates the macOS cohort (Apple 3.9 vs a 3.10+
# with broken ensurepip) for both venv_ensurepip_fail AND