Skip to content

AI-tooling detection

BetaRulesetv4 (updated 2026-09-27)RefreshWeekly
This detection is in Beta while we finish a precision study of the CRAN and R population. To have a package left out, use the r-observatory/feedback front door.

Overview

We look inside a package's source repository for visible signs that an AI coding tool has been set up on it, and we record when each sign first appeared. Finding a sign shows the tool was present, not that it wrote any code.

The AI coding tools card in a package page's Repository section

Repository

AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen on or before 2026-03-14
    Seen in the repository: CLAUDE.md, .claude
    Named in .Rbuildignore: CLAUDE.md
    Commits: 12 by its own account · at least 41 crediting it in the message
  • GitHub Copilotfirst seen 2026-05-20
    Seen in the repository: .github/copilot-instructions.md
    Pull request: opened by its own account
  • Cursorfirst seen 2026-06-02
    Pull request it wrote: opened by a project member
Review tools
  • Copilot code review
    Commits: at least 3 accepting its review suggestions
From outside contributors
  • Claude Code
    Pull requests: 2 from outside contributors, first on 2026-05-04, 1 from forks
Models named in its commits
  • Claude Sonnet 4.623 commits · Mar to Jun 2026
  • Claude Opus 4.814 commits · Jun to Jul 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Each tool is listed with the day it was first seen, the files seen in the repository or named in an ignore file, the pull requests it wrote, and how many commits were found. Review tools and outside contributors follow in groups of their own. The models are the ones its commit messages name.

Agent skill directories count here when they belong to the maintainer (.claude/skills or .agents/skills). The second path is not tied to any one product, so it is recorded without naming one. Skills installed for the package's users (inst/skills) are counted under repository practices instead, because they are a deliverable for users, not a sign of how the package was developed.

Searches

We run several searches, because each one sees something the others miss. A package page shows AI tools once one of them has a file seen in the package's repository, a pull request from its account or one it wrote, or a commit by it or crediting it. Every tool found there is then listed with what was found for it, so a tool known only from an ignore-file line can appear beside one. A line in an ignore file alone is counted on the insights page but names no package.

  • Config file or an ignore-file line
    • Tool-specific files or directories in the repository (such as CLAUDE.md or .cursor/), or lines in .gitignore or .Rbuildignore that name them. A file seen in the repository was there when we looked, while an ignore line only names it.
  • Pull request by the tool's account
    • A pull request opened by a known AI agent account. General-purpose bots (Dependabot, Renovate, github-actions) are left out.
  • Pull request the tool wrote
    • A pull request a project member opened, recognised by the note or the branch name the tool writes. A codex/ branch alone is not enough. The description must carry a Codex task link or its Generated with Codex line.
  • Commit by the tool's account
    • Commits by the tool's accounts, counted in every repository each week across every account the tool uses.
  • Commit message naming the tool
    • Commits crediting the tool, such as a co-author credit or a Generated with line, read in every repository's new commits each week and searched through full histories where something was found. The model a credit names is recorded too.
  • Tool name in the author's name
    • A suffix one tool appends to the git author name.

Every search reads every scanned repository each week. The commit searches differ in how far back they read.

Review tools, counted apart

CodeRabbit configuration, a Gemini Code Assist configuration folder, and commits accepting a review suggestion from Copilot or Gemini Code Assist are listed in a group of their own. These tools review or suggest, so they never count as a tool that wrote the package.

Outside contributors

A pull request from a fork, or opened by someone who is not an owner, member or collaborator of the repository, is an outside contributor's. Its tool is shown in a group of its own and never counted as the package's.

Commit counts

Where a search finds something, we keep how many commits it found. Commits by the tool's accounts and commits whose message credits the tool are counted separately and never added together, since one commit can be both. Commits by a tool's accounts count each commit once across all of its accounts. Commits crediting a tool show the largest count among its credit lines.

These are counts of commits, not lines of code. Nothing we collect says how many lines a tool wrote, and a commit that credits a tool may have been mostly written by a person.

Every count is a minimum. A rewritten or squashed history removes commits, and a search that has not reached a repository yet keeps no count. Where a search found commits but kept no count, the package page says so rather than showing a number.

Coverage gaps

Some tools leave nothing behind: Mistral, Codestral, and inline completions like Copilot tab or Cursor tab. A blank for these means invisible, not absent.

Grok Build and Junie read AGENTS.md, so a repository using them may show only as AGENTS.md. When a cloud agent commits under the person's own name, only the note in its pull request shows it. Repositories hosted outside GitHub are not scanned for AI tools.

Every total is a lower bound on visible tooling, well under the real rate of AI use.

Deliberate exclusions

Several things look like AI tooling but are not. The detection is built to leave each of them out.

  • A person named Claude, or a co-author credit with an ordinary email address, is not a bot.
  • Account names that belong to people are never matched, even when they read like a tool's name.
  • A branch named after a tool is not enough on its own.
  • Security fix bots such as Copilot Autofix are left out.
  • A fork or template repository can carry config files inherited from upstream. They are shown, but dated on or before, since the file may be older than the fork.
  • A generic AGENTS.md file or a shared .agents directory is recorded but never enough on its own to name a package.
  • A line in an ignore file that names a tool is not enough on its own either. RStudio 2026.06 and later add lines such as .positai and .posit/assistant themselves when they update a project's ignore files.
  • A commit search match that does not hold the full credit line keeps only an on or before date, and does not name a package unless something else was found for that tool.
  • Hosting or static-analysis configs (Replit, DeepSource) are not AI agent signals.
  • Ignore-file entries are matched as complete lines, so a substring coincidence cannot trigger a false match.

What changed on 2026-10-07

The detection rules changed with the release of 2026-10-07. Every repository's new commits are now read each week, and each tool's accounts are counted in every repository, so counts rose because we look in more places, not because use rose. The AI tooling page says what moved.

Dating a first appearance

When the first matching commit can be walked in the git history, the date is exact. When it cannot, the date is shown as on or before: the real first appearance is that day or earlier. The months beside a model are the dates of the commits that name it.

Interpreting the counts

The earliest date is the earliest sign we found. The tool may have been in use before that. A package with no detection may still use AI tooling in ways that leave nothing visible.

The totals and the commit counts are lower bounds, not a usage rate.

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy