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
- Host: GitHub
- URL: https://github.com/claude-access/github-tech-scanner
- Owner: claude-access
- License: mit
- Created: 2026-04-13T21:06:24.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-13T21:30:40.000Z (3 months ago)
- Last Synced: 2026-04-21T00:44:32.216Z (3 months ago)
- Topics: claude-code, claude-skill, developer-tools, framework-detection, github, skill-md, skill-md-skillsmp, skillsmp, tech-stack
- Language: Python
- Size: 17.6 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- claude-code-skills-zh - github-tech-scanner
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).