An open API service indexing awesome lists of open source software.

https://github.com/claude-access/github-tech-scanner

Scans GitHub repos for languages and frameworks — Claude Code skill
https://github.com/claude-access/github-tech-scanner

claude-code claude-skill developer-tools framework-detection github skill-md skill-md-skillsmp skillsmp tech-stack

Last synced: about 13 hours ago
JSON representation

Scans GitHub repos for languages and frameworks — Claude Code skill

Awesome Lists containing this project

README

          

# github-tech-scanner

Scans all active GitHub repositories accessible via a Personal Access Token (PAT) and produces a full inventory of every **language** and **framework** in use — with repo counts, byte-share percentages, and version info where available.

Works as both a **standalone CLI script** and a **Claude Code skill**.

---

## Usage

### Standalone

```bash
pip install -r requirements.txt

python scripts/scan_repos.py --token --verbose
```

### Flags

| Flag | Default | Description |
|---|---|---|
| `--token`, `-t` | `$GITHUB_TOKEN` | GitHub Personal Access Token |
| `--org`, `-o` | _(all accessible)_ | Limit scan to a specific org (e.g. `my-company`) |
| `--active-days`, `-d` | `365` | Only include repos pushed within this many days |
| `--show-repos` | off | List which repos use each language/framework |
| `--json` | off | Emit raw JSON instead of the formatted report |
| `--verbose`, `-v` | off | Print progress to stderr while scanning |

### Examples

```bash
# Scan everything the token can access
python scripts/scan_repos.py --token ghp_xxx --verbose

# Scan a single org only
python scripts/scan_repos.py --token ghp_xxx --org my-company

# Last 6 months, show which repos use each technology
python scripts/scan_repos.py --token ghp_xxx --active-days 180 --show-repos

# JSON output for further processing
python scripts/scan_repos.py --token ghp_xxx --json | jq '.language_bytes'
```

---

## What it detects

### Languages
Uses GitHub's native `/repos/{owner}/{repo}/languages` endpoint — returns byte counts per language, which are aggregated into percentages across all active repos.

### Frameworks (via manifest files)

| File | Ecosystems detected |
|---|---|
| `package.json` | React, Vue, Angular, Next.js, Express, NestJS, Vite, Prisma, … |
| `requirements.txt` | Django, Flask, FastAPI, PyTorch, LangChain, Anthropic SDK, … |
| `pyproject.toml` | Same as above (PEP 621 and Poetry formats) |
| `Gemfile` | Rails, Sinatra, Sidekiq, Devise, … |
| `go.mod` | Gin, Echo, Fiber, GORM, Chi, … |
| `pom.xml` | Spring Boot, Quarkus, Hibernate, Kafka, … |
| `build.gradle` | Spring Boot, Ktor, Micronaut, … |
| `composer.json` | Laravel, Symfony, Doctrine, … |
| `Cargo.toml` | Actix Web, Axum, Tokio, Tauri, Leptos, … |
| `pubspec.yaml` | Flutter, Riverpod, Firebase, … |

---

## Sample output

```
============================================================
GitHub Tech Stack Report — @username
============================================================
Repos scanned: 42 active (of 87 total, active = pushed within 365 days)

── Languages ────────────────────────────────────────────
TypeScript 41.2% ████████ (18 repos)
Python 28.5% █████ (12 repos)
JavaScript 15.3% ███ (9 repos)

── Frameworks & Libraries ───────────────────────────────
React (11 repos) [18.1.0, 18.2.0]
Django (6 repos) [4.2.0]
Express (5 repos)
============================================================
```

---

## Token requirements

| Goal | Required scopes |
|---|---|
| Public repos only | No scopes needed |
| Private repos | `repo` (classic PAT) or `Contents: read` + `Metadata: read` (fine-grained PAT) |
| Org repos | Same as above; token must be authorized for the org (SSO if applicable) |
| Create repos in an org | `repo` + `write:org` (classic PAT) |

Generate a token at: **GitHub → Settings → Developer settings → Personal access tokens**

---

## As a Claude Code skill

This repo is structured as a Claude Code skill. To install it, place the directory under `~/.claude/skills/` and Claude Code will pick it up automatically.

---

## License

MIT — see [LICENSE](LICENSE).