Skip to content
CAI
Software that uses CAICheck a score

anuraghazra/github-readme-stats

54.0

Adequate · 25 September 2026

7.9k

lines of production code

JavaScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add Gist card and refactor card rendering modules

Introduces a new Gist card component that displays gist metadata (name, description, language, stars, forks) with support for title, icon, text, and background colors, as well as border radius and hide\_border options. The existing repository, stats, top-languages, and wakatime cards are also refactored into separate modules under src/cards, each exporting a render function. The cards/index.js file exports all card renderers, and types.d.ts defines the options for each card type, including new options like number\_format, number\_precision, and layout for the top-languages card.

src/cards · high confidence

Add PAT monitoring and uptime check endpoints

Added two new API endpoints in the status module: a PAT info endpoint (pat-info.js) that returns detailed status of all configured GitHub tokens (valid, expired, exhausted, suspended, or error states), and an uptime check endpoint (up.js) that verifies if the tokens are functional, supporting both boolean and Shields.io badge JSON responses.

api/status · high confidence

Added pre-commit hook to run tests, linting, and staged file checks

A new pre-commit hook has been added to the .husky directory. This hook automatically executes npm test, npm run lint, and npx lint-staged before each commit, ensuring that tests pass, code is linted, and staged files are checked before changes are committed.

.husky · high confidence

Expanded theme selection for cards

The themes documentation and index have been updated to include a significantly larger set of available themes. Users can now choose from dozens of new color schemes—including \rose\_pine\, \catppuccin\_latte\, \catppuccin\_mocha\, \date\_night\, \one\_dark\_pro\, \rose\, \holi\, \neon\, \blue\_navy\, \calm\_pink\, and \ambient\_gradient\—applying them to Stats, Repo, Gist, Top Languages, and WakaTime cards via the \?theme=\ parameter.

themes · high confidence

Introduce automated theme management scripts

Added new scripts to automate theme-related workflows: \close-stale-theme-prs.js\ to automatically close stale theme pull requests, \generate-langs-json.js\ to fetch and update language color data, \generate-theme-doc.js\ to auto-generate the themes README documentation, \preview-theme.js\ to validate and preview theme changes on PRs, and \push-theme-readme.sh\ to commit and push updated theme documentation. These scripts support the CI/CD pipeline for maintaining theme consistency and documentation.

scripts · high confidence

Introduce dedicated fetcher modules for Gist, Repository, Stats, Top Languages, and WakaTime data

The codebase now includes new, dedicated fetcher implementations for retrieving GitHub Gist, Repository, and Stats data, as well as Top Languages and WakaTime statistics. These modules encapsulate the logic for querying the respective APIs (GitHub GraphQL/REST and WakaTime), handling pagination, error states, and data transformation. This change organizes the data-fetching logic into separate, focused files, improving maintainability and clarity for each data source.

src/fetchers · high confidence

Introduces a new ranking system and localization framework

The codebase now includes a new \calculateRank.js\ module that computes a user's rank based on commits, pull requests, issues, reviews, stars, and followers using weighted statistical models. This new ranking logic is integrated into the stats card, which also receives a comprehensive \translations.js\ file providing localized labels for over 40 languages, ensuring the UI displays correctly in the user's preferred language.

src · high confidence

New API endpoints for Gist, Pin, Top Languages, and WakaTime cards

The API now serves SVG cards for Gists, pinned repositories, top languages, and WakaTime stats. Each endpoint (gist, pin, top-langs, wakatime) follows a consistent pattern: it accepts query parameters for customization (colors, themes, layout, locale, caching), validates access and locale, fetches data from the respective source (GitHub Gist API, GitHub Repo API, GitHub/Custom API for languages, WakaTime API), and renders a styled SVG card. This introduces new capabilities to display Gist information, pin specific repositories, show top programming languages with various layouts and filters, and embed WakaTime development statistics, all with consistent styling and caching headers.

api · high confidence

Project initialization and tooling setup

The repository was initialized with a comprehensive set of configuration files to support development and deployment. This includes ESLint and Prettier configurations (.eslintrc.json, eslint.config.mjs, .prettierrc.json), test runners (jest.config.js, jest.bench.config.js, jest.e2e.spec.js), and deployment settings (vercel.json, .vercelignore). The project also includes essential documentation and policy files such as a Code of Conduct, Contributing guidelines, a Security policy, and a LICENSE. Additionally, the Node.js version is specified as 22 via .nvmrc, and the Express server entry point (express.js) is established to route API requests.

(repo-wide) · high confidence

Behavioural changes

Refactored common utilities into modular, type-safe components

The shared codebase in src/common has been reorganized into distinct, single-responsibility modules (Card, I18n, cache, color, error, etc.) with full TypeScript/JSDoc support. This refactoring improves code maintainability and type safety across the application.

src/common · high confidence

Test coverage

Add comprehensive test coverage for core API endpoints and utilities; Add end-to-end tests for Vercel preview instance; Added performance benchmarks for API, rank, gist, and pin modules; Updated WakaTime card snapshot tests.

Dependencies

Update development dependencies and lockfile format

The project's development dependencies have been updated to their latest versions, including eslint (9.39.2), jest (30.2.0), prettier (3.7.3), and lint-staged (16.2.7). The package-lock.json has been upgraded to lockfileVersion 2, and the Node.js engine requirement has been raised to version 22 or higher.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 43 → 54 (+11.1)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 53 → 51 (-1.2)
  • Architecture 94 (new)
  • Maturity 40 → 42 (+1.5)
  • Readiness 37 → 73 (+36.5)
  • Security 72 → 80 (+8.1)

Resolved (70)

  • Change coupling: gist.js ↔ index.js (api/gist.js)
  • Change coupling: gist.js ↔ pin.js (api/gist.js)
  • Change coupling: gist.js ↔ top-langs.js (api/gist.js)
  • Change coupling: gist.js ↔ wakatime.js (api/gist.js)
  • Change coupling: index.js ↔ pin.js (api/index.js)
  • Change coupling: index.js ↔ top-langs.js (api/index.js)
  • Change coupling: index.js ↔ wakatime.js (api/index.js)
  • Change coupling: pin.js ↔ top-langs.js (api/pin.js)
  • Change coupling: pin.js ↔ wakatime.js (api/pin.js)
  • Change coupling: top-langs.js ↔ wakatime.js (api/top-langs.js)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 50 more

New (50)

  • Coverage not measured — JavaScript/TypeScript suite
  • FileTooLong: src/translations.js (src/translations.js)
  • FunctionTooLong: index.default (api/index.js)
  • FunctionTooLong: repo.renderRepoCard (src/cards/repo.js)
  • FunctionTooLong: stats.renderStatsCard (src/cards/stats.js)
  • FunctionTooLong: top-langs.default (api/top-langs.js)
  • FunctionTooLong: top-languages.renderTopLanguages (src/cards/top-languages.js)
  • FunctionTooLong: translations.statCardLocales (src/translations.js)
  • FunctionTooLong: wakatime.default (api/wakatime.js)
  • FunctionTooLong: wakatime.renderWakatimeCard (src/cards/wakatime.js)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 30 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

anuraghazra/github-readme-stats was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 54a7985aeefda00d5eadb55b80c17c7f976c37d2 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-dd72cc24c749.