Skip to main content

eng-effectiveness-metrics-tools

Tools for measuring and tracking engineering effectiveness, with a focus on agentic coding tool adoption.


agentic-adoption-scan

A CLI tool that scans all repositories in a GitHub organization to detect adoption of agentic coding tools (Claude Code, GitHub Copilot, Cursor, MCP servers, evals frameworks, and more). Produces tidy-format CSV data suitable for analysis and visualization.

Install

macOS (Intel and Apple Silicon):

curl -fsSL "https://github.com/posit-dev/eng-effectiveness-metrics-tools/releases/latest/download/agentic-adoption-scan_darwin_$(uname -m | sed 's/x86_64/amd64/').tar.gz" | tar -xz && sudo mv agentic-adoption-scan /usr/local/bin/

Linux (x86_64 and arm64):

curl -fsSL "https://github.com/posit-dev/eng-effectiveness-metrics-tools/releases/latest/download/agentic-adoption-scan_linux_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar -xz && sudo mv agentic-adoption-scan /usr/local/bin/

Via pip/pipx (macOS, Linux, Windows):

pipx install agentic-adoption-scan

Prerequisites

The tool uses the gh CLI for GitHub authentication. Make sure you have it installed and authenticated:

gh auth login

Usage

Scan an organization for agentic tool indicators:

agentic-adoption-scan scan --org your-org --output results.csv

Fetch and analyze content of detected indicators:

agentic-adoption-scan inspect --org your-org --scan-results results.csv --output inspect-results.csv

Generate a customizable indicators config file:

agentic-adoption-scan init-config --output indicators.yaml

Run as an MCP server for Claude Code integration:

agentic-adoption-scan serve

Scan flags

Flag Default Description
--org (required) GitHub organization to scan
--output stdout Output CSV file path
--days 90 Only include repos active in the last N days
--include-archived false Include archived repos
--force false Bypass cache and rescan everything
--cache-dir .agentic-scan-cache Directory for scan state cache
--config Path to custom indicators YAML config
--verbose false Enable verbose logging

What it detects

The tool checks for 25+ built-in indicators across 7 categories:

Category Examples
claude-code CLAUDE.md, .claude/ directory, settings.json, custom commands
github-copilot copilot-instructions.md, .copilot/ directory
cursor .cursorrules, .cursor/rules/ directory
agents-config AGENTS.md, .agents/ directory
mcp mcp.json, .mcp.json, MCP server configs
evals evals directories, promptfoo, inspect_ai, mcp-evals
workflows-ai claude-code-action, Copilot references, AI review actions

You can extend or override these indicators via a YAML config file (init-config generates a starter).

Output format

Scan results are written as tidy CSV — one row per (repo × indicator) observation:

scan_timestamp,org,repo,repo_visibility,repo_language,repo_pushed_at,category,indicator,found,file_path,details

This format makes it easy to filter, pivot, and visualize in R, Python, or any BI tool.

MCP server

The tool can run as an MCP server, exposing tools for use directly within Claude Code:

{
  "mcpServers": {
    "agentic-adoption-scan": {
      "command": "agentic-adoption-scan",
      "args": ["serve"]
    }
  }
}

Available MCP tools: scan_org, inspect_repo, list_indicators, get_repo_summary, get_adoption_summary.

Deploying to Posit Connect

You can deploy the MCP server to Posit Connect so that AI clients across your organization can access it without running anything locally. The connect/ directory contains a Python entry point that wraps the binary for Connect's ASGI runtime.

Prerequisites

  • rsconnect-python installed: pip install rsconnect-python
  • The gh CLI installed and available in PATH on the Connect server (the binary uses it for GitHub API calls)
  • A Posit Connect server URL and API key

1. Set environment variables

In your Connect content's Vars settings (or pass via --environment at deploy time), set:

GITHUB_TOKEN=<your-github-pat>

The gh CLI reads GITHUB_TOKEN automatically, so no interactive gh auth login is needed on the server.

2. Write the manifest

cd connect/
rsconnect write-manifest fastapi --overwrite --entrypoint server:mcp .

This creates connect/manifest.json (and connect/requirements.txt if not already present) for later or CI-driven deployments.

3. Deploy

rsconnect deploy fastapi \
  --server https://your-connect-server.example.com \
  --api-key YOUR_API_KEY \
  --entrypoint server:mcp \
  --title "agentic-adoption-scan" \
  .

Or if you have already saved your server with rsconnect add:

rsconnect deploy fastapi \
  --name your-server-nickname \
  --entrypoint server:mcp \
  --title "agentic-adoption-scan" \
  .

4. Use from Claude Code

Once deployed, add the Connect-hosted MCP server to your Claude Code configuration:

{
  "mcpServers": {
    "agentic-adoption-scan": {
      "type": "streamable-http",
      "url": "https://your-connect-server.example.com/content/<content-id>/mcp"
    }
  }
}

Replace <content-id> with the numeric ID shown in the Connect dashboard for this content item.

Performance tip

Set Min processes to 1 in the content's runtime settings so the server is always warm and avoids cold-start delays when clients connect.


Other scripts

Record a deployment event into GitHub:

./record-deployment.sh posit-dev/eng-effectiveness-metrics-tools main testing

Releases

Releases are fully automated via python-semantic-release on every merge to main. The version bump is determined automatically from Conventional Commit PR titles (enforced by the pr-title workflow):

PR title prefix Version bump
fix: patch — 0.1.0 → 0.1.1
feat: minor — 0.1.1 → 0.2.0
feat!: / BREAKING CHANGE: major — 0.2.0 → 1.0.0
chore:, docs:, refactor:, etc. no release

On every merge to main, semantic-release analyzes commits since the last tag. If there are releasable changes, it creates a CHANGELOG.md entry, commits it, tags the new version (e.g. v0.2.0), and publishes a GitHub release — all in one step. That tag push then triggers the publish workflow, which:

  1. Builds native binaries for macOS (amd64/arm64) and Linux (amd64/arm64) via GoReleaser
  2. Publishes Python wheels for all platforms to PyPI via go-to-wheel

One-time setup required

Deploy key — semantic-release pushes back to main and needs to trigger the publish workflow. The default GITHUB_TOKEN cannot do this, so an SSH deploy key is required:

ssh-keygen -t ed25519 -C "semantic-release" -f deploy_key -N ""
  1. Add deploy_key.pub as a repo Deploy key with write access: Settings → Deploy keys
  2. Add deploy_key (private) as an Actions secret named DEPLOY_KEY: Settings → Secrets and variables → Actions

PyPI Trusted Publisher — the publish workflow uses OIDC Trusted Publishing (no API token needed). Configure a Trusted Publisher on PyPI for this repository pointing to the publish.yml workflow and the pypi environment.

Metadata

Release files for agentic-adoption-scan 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for agentic-adoption-scan 0.1.0
File
agentic_adoption_scan-0.1.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
agentic_adoption_scan-0.1.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
agentic_adoption_scan-0.1.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
agentic_adoption_scan-0.1.0-py3-none-macosx_10_9_x86_64.whl Python 3 none macOS 10.9+ x86-64 Details

Total release size: 61.0 MB

Release files / agentic_adoption_scan-0.1.0-py3-none-win_arm64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-win_arm64.whl
Size 7.3 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
cc567ce6a49838df138c82d212ccd8617afbbc52b89ff63394600058cf2898df
BLAKE2b-256 checksum
How to use checksums
9ae58fb49ee4cc8cb20ae2df1f83ad41e195c0767832c599ade9f55b479b87d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-win_amd64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-win_amd64.whl
Size 8.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
60e473ac977b9d76dd4107522fde44745bbe8eaa19a665ce9f1bf280fb948b5d
BLAKE2b-256 checksum
How to use checksums
970db6c5ca5139146c20e64361d833ae380ff97d0b0098f458579345b7665b66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_x86_64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_x86_64.whl
Size 7.8 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a1b15e8eb33c4b966c4ac04faa63bac7c8c80fd76e1f88ab776f4efcc8eae4f0
BLAKE2b-256 checksum
How to use checksums
0ed9aa3aa778d9adacf7824b4f032ce7e374307e0f158a9228ea115727e19290
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_aarch64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-musllinux_1_2_aarch64.whl
Size 7.3 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
a3f715bd576dea3fdd099efeeb72f8ec117c692f6340705aa9f59dd628c7332d
BLAKE2b-256 checksum
How to use checksums
b62ce63575a2427acc8156729c998da06554000135b967f06af7983e6f257484
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_x86_64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_x86_64.whl
Size 7.8 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
b274cdcda19742f9adcd9f4457b225df58e235896e5eda9c18ef7136242df84a
BLAKE2b-256 checksum
How to use checksums
29fd6b72e573048c3d5da4dfa2723c362d0e65ce776e488587e58299400c0a50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_aarch64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-manylinux_2_17_aarch64.whl
Size 7.3 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b6c86a243b6af32e54968b375bf6afe6b82db214e8e62259b4ed3cb9c3f1b127
BLAKE2b-256 checksum
How to use checksums
f817e26b0edd1c6a9bb2eea1f581875af49656ada311219918e638ab95b77cfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-macosx_11_0_arm64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-macosx_11_0_arm64.whl
Size 7.5 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9e720ba46bfef4dc8b88ca2329659ddf41743cce2f1aebd88953be56d6c3a904
BLAKE2b-256 checksum
How to use checksums
83558900e76eeaf926c556f24073f15dea1929f7b3cd89891a366ea756a08bf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release files / agentic_adoption_scan-0.1.0-py3-none-macosx_10_9_x86_64.whl

Download URL agentic_adoption_scan-0.1.0-py3-none-macosx_10_9_x86_64.whl
Size 8.0 MB
Tags Python 3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
17c6d0085883d00b3498a23a97b6cf8c2f5da610bbdba804343a06bc3fad594f
BLAKE2b-256 checksum
How to use checksums
1e9978158898e62d9149e7ac0d5b428d18970243079f975539c8b8a36f32e78f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

8 release files

0.0.2

8 release files

0.0.1

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page